本文整理汇总了Python中karesansui.lib.virt.virt.KaresansuiVirtConnection.search_kvn_networks方法的典型用法代码示例。如果您正苦于以下问题:Python KaresansuiVirtConnection.search_kvn_networks方法的具体用法?Python KaresansuiVirtConnection.search_kvn_networks怎么用?Python KaresansuiVirtConnection.search_kvn_networks使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.virt.virt.KaresansuiVirtConnection
的用法示例。
在下文中一共展示了KaresansuiVirtConnection.search_kvn_networks方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def _GET(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
network_name = param[1]
if not (network_name and host_id):
return web.badrequest()
kvc = KaresansuiVirtConnection()
try:
try:
network = kvc.search_kvn_networks(network_name)[0] # throws KaresansuiVirtException
info = network.get_info()
except KaresansuiVirtException, e:
# network not found
self.logger.debug("Network not found. name=%s" % network_name)
return web.notfound()
finally:
kvc.close()
cidr = '%s/%s' % (info['ip']['address'], info['ip']['netmask'])
network = dict(name=info['name'],
cidr=cidr,
dhcp_start=info['dhcp']['start'],
dhcp_end=info['dhcp']['end'],
forward_dev=info['forward']['dev'],
forward_mode=info['forward']['mode'],
bridge=info['bridge']['name'],
)
self.view.info = info
self.view.network = network
return True
示例2: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def _GET(self, *param, **params):
"""<comment-ja>
ネットワークがアクティブかどうかのステータス
- inactive = 0
- active = 1
</comment-ja>
<comment-en>
TODO: English Comment
</comment-en>
"""
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
# TODO valid
network_name =param[1]
if not network_name:
return web.badrequest()
kvc = KaresansuiVirtConnection()
try:
kvn = kvc.search_kvn_networks(network_name)[0]
status = NETWORK_INACTIVE
if kvn.is_active():
status = NETWORK_ACTIVE
if self.__template__["media"] == 'json':
self.view.status = json_dumps(status)
else:
self.view.status = status
self.__template__.dir = 'hostby1networkby1'
finally:
kvc.close()
return True
示例3: _PUT
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def _PUT(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
# TODO valid
network_name = param[1]
if not network_name:
return web.notfound()
if validates_nw_status(self) is False:
return web.badrequest(self.view.alert)
status = int(self.input.status)
kvc = KaresansuiVirtConnection()
try:
kvn = kvc.search_kvn_networks(network_name)[0]
if status == NETWORK_INACTIVE:
# Stop network
network_start_stop_job(self, host_id, network_name, 'stop')
return web.accepted("/host/%s/network/%s.%s" % (host_id, network_name, self.__template__['media']))
elif status == NETWORK_ACTIVE:
# Start network
network_start_stop_job(self, host_id, network_name, 'start')
return web.accepted("/host/%s/network/%s.%s" % (host_id, network_name, self.__template__['media']))
else:
return web.badrequest()
finally:
kvc.close()
示例4: process
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def process(self):
(opts, args) = getopts()
chkopts(opts)
self.up_progress(10)
conn = KaresansuiVirtConnection(readonly=False)
try:
forward = {"dev": opts.forward_dev,
"mode": opts.forward_mode,
}
bridge = opts.bridge_name
if opts.autostart == "yes":
autostart = True
else:
autostart = False
self.up_progress(20)
try:
conn.update_network(opts.name, opts.cidr, opts.dhcp_start, opts.dhcp_end, forward, bridge, autostart=autostart)
except:
self.logger.error('Failed to update network. - net=%s' % (opts.name))
raise
# The network should be active now.
# If not, we're going to start it up.
active_networks = conn.list_active_network()
if not (opts.name in active_networks):
try:
conn.start_network(opts.name)
except KaresansuiVirtException, e:
# try to bring down existing bridge
kvn = conn.search_kvn_networks(opts.name)[0]
try:
bridge_name = kvn.get_info()['bridge']['name']
except KeyError:
pass
ret, res = execute_command([NETWORK_IFCONFIG_COMMAND, bridge_name, 'down'])
ret, res = execute_command([NETWORK_BRCTL_COMMAND, 'delbr', bridge_name])
# try again
conn.start_network(opts.name)
self.up_progress(10)
self.up_progress(10)
active_networks = conn.list_active_network()
if not (opts.name in active_networks):
raise KssCommandException('Updated network but it\'s dead. - net=%s' % (opts.name))
self.logger.info('Updated network. - net=%s' % (opts.name))
print >>sys.stdout, _('Updated network. - net=%s') % (opts.name)
return True
示例5: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def _GET(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
model = findbyhost1(self.orm, host_id)
uris = available_virt_uris()
if model.attribute == 0 and model.hypervisor == 1:
uri = uris["XEN"]
elif model.attribute == 0 and model.hypervisor == 2:
uri = uris["KVM"]
else:
uri = None
# if input mode then return empty form
if self.is_mode_input():
self.view.host_id = host_id
self.view.network = dict(name='', cidr='',
dhcp_start='', dhcp_end='',
forward_dev='', forward_mode='',
bridge='')
return True
else:
kvc = KaresansuiVirtConnection(uri)
try:
labelfunc = (('active', kvc.list_active_network),
('inactive', kvc.list_inactive_network),
)
# networks = {'active': [], 'inactive': []}
networks = []
for label, func in labelfunc:
for name in func():
try:
network = kvc.search_kvn_networks(name)[0] # throws KaresansuiVirtException
info = network.get_info()
# networks[label].append(info)
if info['is_active']:
info['activity'] = 'Active'
else:
info['activity'] = 'Inactive'
networks.append(info)
except KaresansuiVirtException, e:
# network not found
pass
finally:
kvc.close()
self.view.networks = networks
return True
示例6: process
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def process(self):
(opts, args) = getopts()
chkopts(opts)
self.up_progress(10)
conn = KaresansuiVirtConnection(readonly=False)
try:
active_networks = conn.list_active_network()
inactive_networks = conn.list_inactive_network()
if not (opts.name in active_networks or opts.name in inactive_networks):
raise KssCommandException('Could not find the specified network. - net=%s' % (opts.name))
self.up_progress(10)
try:
conn.stop_network(opts.name)
except KaresansuiVirtException, e:
if opt.force is not True:
raise KssCommandException('Could not stop the specified network. - net=%s' % (opts.name))
self.up_progress(20)
try:
conn.start_network(opts.name)
except KaresansuiVirtException, e:
if opts.force is not True:
raise KssCommandException('Could not start the specified network. - net=%s' % (opts.name))
# try to bring down existing bridge
kvn = conn.search_kvn_networks(opts.name)[0]
try:
bridge_name = kvn.get_info()['bridge']['name']
except KeyError:
pass
ret, res = execute_command([NETWORK_IFCONFIG_COMMAND, bridge_name, 'down'])
ret, res = execute_command([NETWORK_BRCTL_COMMAND, 'delbr', bridge_name])
# try again
conn.start_network(opts.name)
示例7: _POST
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def _POST(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
model = findbyhost1(self.orm, host_id)
uris = available_virt_uris()
if model.attribute == 0 and model.hypervisor == 1:
uri = uris["XEN"]
elif model.attribute == 0 and model.hypervisor == 2:
uri = uris["KVM"]
else:
uri = None
if not validates_network(self):
self.logger.debug("Network creation failed. Did not validate.")
return web.badrequest(self.view.alert)
name = self.input.name
cidr = self.input.cidr
dhcp_start = self.input.dhcp_start
dhcp_end = self.input.dhcp_end
bridge = self.input.bridge
# We support only 'nat' for forward-mode.
forward_mode = ''
if is_param(self.input, 'forward_mode'):
if self.input.forward_mode == 'nat':
forward_mode = 'nat'
try:
autostart = self.input.autostart
except:
autostart = "no"
# Check if the name is available (not already used).
kvc = KaresansuiVirtConnection(uri)
try:
try:
kvc.search_kvn_networks(name)
self.logger.debug("Network name '%s' already used." % name)
url = '%s/%s/%s.part' % (web.ctx.home, web.ctx.path, name)
self.logger.debug("Returning url %s as Location." % url)
return web.conflict(url)
except KaresansuiVirtException, e:
# OK
pass
finally:
kvc.close()
# spin off create job
options = {'dhcp-start': dhcp_start,
'dhcp-end' : dhcp_end,
'bridge-name' : bridge,
'forward-mode' : forward_mode,
'autostart' : autostart,
}
self.logger.debug('spinning off network_create_job name=%s, cidr=%s, options=%s' % (name, cidr, options))
host = findbyhost1(self.orm, host_id)
#network_create_job(self, name, cidr, host, options)
options['name'] = name
options['cidr'] = cidr
_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_CREATE_NETWORK), options)
#_jobgroup = JobGroup('Create network', karesansui.sheconf['env.uniqkey'])
#_jobgroup.jobs.append(Job('Create network', 0, _cmd))
# Job Registration
_jobgroup = JobGroup('Create network: %s' % name, karesansui.sheconf['env.uniqkey'])
_jobgroup.jobs.append(Job('Create network', 0, _cmd))
_machine2jobgroup = m2j_new(machine=host,
jobgroup_id=-1,
uniq_key=karesansui.sheconf['env.uniqkey'],
created_user=self.me,
modified_user=self.me,
)
save_job_collaboration(self.orm,
self.pysilhouette.orm,
_machine2jobgroup,
_jobgroup,
)
self.logger.debug('(Create network) Job group id==%s', _jobgroup.id)
url = '%s/job/%s.part' % (web.ctx.home, _jobgroup.id)
self.logger.debug('Returning Location: %s' % url)
return web.accepted()
示例8: set_libvirt_rules
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import search_kvn_networks [as 别名]
def set_libvirt_rules(self):
kvc = KaresansuiVirtConnection()
try:
for name in kvc.list_active_network():
try:
network = kvc.search_kvn_networks(name)[0]
info = network.get_info()
bridge = info['bridge']['name']
ipaddr = info['ip']['address']
netmask = info['ip']['netmask']
netaddr = NetworkAddress("%s/%s" % (ipaddr,netmask)).get('network')
# nat mode
if info['forward']['mode'] == 'nat':
# rule 1
# -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d ! 192.168.122.0/255.255.255.0 -j MASQUERADE
conditions = {'target':'MASQUERADE',
'source':"%s/%s" % (netaddr,netmask),
'destination':"! %s/%s" % (netaddr,netmask),
}
ids = self._search_rule('nat','POSTROUTING',conditions)
if len(ids) == 0:
id = self._insert_rule('nat','POSTROUTING',1,conditions)
# rule 2
# -A FORWARD -d 192.168.122.0/255.255.255.0 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
conditions = {'target':'ACCEPT',
'destination':"%s/%s" % (netaddr,netmask),
'out-interface':bridge,
}
ids = self._search_rule('filter','FORWARD',conditions)
if len(ids) == 0:
conditions['option'] = '-m state --state RELATED,ESTABLISHED'
id = self._insert_rule('filter','FORWARD',1,conditions)
# rule 3
# -A FORWARD -s 192.168.122.0/255.255.255.0 -i virbr0 -j ACCEPT
conditions = {'target':'ACCEPT',
'source':"%s/%s" % (netaddr,netmask),
'in-interface':bridge,
}
ids = self._search_rule('filter','FORWARD',conditions)
if len(ids) == 0:
id = self._insert_rule('filter','FORWARD',1,conditions)
# rule 4
# -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
# -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
# -A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
# -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
default_port = {'53':['udp','tcp'],
'67':['udp','tcp'],
}
for port,v in default_port.iteritems():
for protocol in v:
conditions = {'target':'ACCEPT',
'protocol':protocol,
'destination-port':port,
'in-interface':bridge,
}
ids = self._search_rule('filter','INPUT',conditions)
if len(ids) == 0:
conditions['option'] = "-m %s" % protocol
id = self._insert_rule('filter','INPUT',1,conditions)
except KaresansuiVirtException, e:
pass
finally:
kvc.close()
return True