本文整理汇总了Python中karesansui.lib.virt.virt.KaresansuiVirtConnection.list_used_vnc_port方法的典型用法代码示例。如果您正苦于以下问题:Python KaresansuiVirtConnection.list_used_vnc_port方法的具体用法?Python KaresansuiVirtConnection.list_used_vnc_port怎么用?Python KaresansuiVirtConnection.list_used_vnc_port使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.virt.virt.KaresansuiVirtConnection
的用法示例。
在下文中一共展示了KaresansuiVirtConnection.list_used_vnc_port方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Guest
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import list_used_vnc_port [as 别名]
class Guest(Rest):
def _post(self, f):
ret = Rest._post(self, f)
if hasattr(self, "kvc") is True:
self.kvc.close()
return ret
@auth
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()
self.kvc = KaresansuiVirtConnection()
try: # libvirt connection scope -->
# Storage Pool
#inactive_pool = self.kvc.list_inactive_storage_pool()
inactive_pool = []
active_pool = self.kvc.list_active_storage_pool()
pools = inactive_pool + active_pool
pools.sort()
if not pools:
return web.badrequest('One can not start a storage pool.')
# Output .input
if self.is_mode_input() is True:
self.view.pools = pools
pools_info = {}
pools_vols_info = {}
pools_iscsi_blocks = {}
already_vols = []
guests = []
guests += self.kvc.list_inactive_guest()
guests += self.kvc.list_active_guest()
for guest in guests:
already_vol = self.kvc.get_storage_volume_bydomain(domain=guest,
image_type=None,
attr='path')
if already_vol:
already_vols += already_vol.keys()
for pool in pools:
pool_obj = self.kvc.search_kvn_storage_pools(pool)[0]
if pool_obj.is_active() is True:
pools_info[pool] = pool_obj.get_info()
blocks = None
if pools_info[pool]['type'] == 'iscsi':
blocks = self.kvc.get_storage_volume_iscsi_block_bypool(pool)
if blocks:
pools_iscsi_blocks[pool] = []
vols_obj = pool_obj.search_kvn_storage_volumes(self.kvc)
vols_info = {}
for vol_obj in vols_obj:
vol_name = vol_obj.get_storage_volume_name()
vols_info[vol_name] = vol_obj.get_info()
if blocks:
if vol_name in blocks and vol_name not in already_vols:
pools_iscsi_blocks[pool].append(vol_obj.get_info())
pools_vols_info[pool] = vols_info
self.view.pools_info = pools_info
self.view.pools_vols_info = pools_vols_info
self.view.pools_iscsi_blocks = pools_iscsi_blocks
bridge_prefix = {
"XEN":"xenbr",
"KVM":KVM_BRIDGE_PREFIX,
}
self.view.host_id = host_id
self.view.DEFAULT_KEYMAP = DEFAULT_KEYMAP
self.view.DISK_NON_QEMU_FORMAT = DISK_NON_QEMU_FORMAT
self.view.DISK_QEMU_FORMAT = DISK_QEMU_FORMAT
self.view.hypervisors = {}
self.view.mac_address = {}
self.view.keymaps = {}
self.view.phydev = {}
self.view.virnet = {}
used_ports = {}
for k,v in MACHINE_HYPERVISOR.iteritems():
if k in available_virt_mechs():
self.view.hypervisors[k] = v
uri = uris[k]
mem_info = self.kvc.get_mem_info()
active_networks = self.kvc.list_active_network()
used_vnc_ports = self.kvc.list_used_vnc_port()
bus_types = self.kvc.bus_types
self.view.bus_types = bus_types
self.view.max_mem = mem_info['host_max_mem']
self.view.free_mem = mem_info['host_free_mem']
#.........这里部分代码省略.........
示例2: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import list_used_vnc_port [as 别名]
def _GET(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
if not validates_src_id(self):
self.view.alert = "Failed to get the id of source domain."
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
src_id = self.input.src_id
if self.is_mode_input() is False:
return web.nomethod()
self.view.src_id = src_id
self.view.mac_address = generate_mac_address()
src_guest = findbyguest1(self.orm, src_id)
if not src_guest:
self.view.alert = "Failed to get the data of source domain."
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
kvc = KaresansuiVirtConnection()
try:
# Storage Pool
#inactive_pool = self.kvc.list_inactive_storage_pool()
inactive_pool = []
active_pool = kvc.list_active_storage_pool()
pools = inactive_pool + active_pool
pools.sort()
domname = kvc.uuid_to_domname(src_guest.uniq_key)
# TODO 対応するストレージボリュームにiscsiがあった場合はエラーにする
src_pools = kvc.get_storage_pool_name_bydomain(domname)
if not src_pools:
self.view.alert = _("Source storage pool is not found.")
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
for src_pool in src_pools :
src_pool_type = kvc.get_storage_pool_type(src_pool)
if src_pool_type != 'dir':
self.view.alert = _("'%s' disk contains the image.") % (src_pool_type)
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
non_iscsi_pool = []
for pool in pools:
if kvc.get_storage_pool_type(pool) != 'iscsi':
non_iscsi_pool.append(pool)
self.view.pools = non_iscsi_pool
virt = kvc.search_kvg_guests(domname)[0]
if virt.is_active() is True:
self.view.alert = _("Guest is running. Please stop and try again. name=%s" % domname)
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
self.view.domain_src_name = virt.get_domain_name()
used_ports = kvc.list_used_vnc_port()
self.view.vnc_port = next_number(VNC_PORT_MIN_NUMBER,PORT_MAX_NUMBER,used_ports)
finally:
kvc.close()
return True
示例3: _POST
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import list_used_vnc_port [as 别名]
#.........这里部分代码省略.........
src_pools = kvc.get_storage_pool_name_bydomain(domname)
if not src_pools:
self.view.alert = _("Source storage pool is not found.")
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
for src_pool in src_pools :
src_pool_type = kvc.get_storage_pool_type(src_pool)
if src_pool_type != 'dir':
self.view.alert = _("'%s' disk contains the image.") % src_pool_type
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
# disk check
target_pool = kvc.get_storage_pool_name_bydomain(domname, 'os')[0]
target_path = kvc.get_storage_pool_targetpath(target_pool)
src_disk = "%s/%s/images/%s.img" % \
(target_path, options["src-name"], options["src-name"])
s_size = os.path.getsize(src_disk) / (1024 * 1024) # a unit 'MB'
if os.access(target_path, os.F_OK):
if chk_create_disk(target_path, s_size) is False:
partition = get_partition_info(target_path, header=False)
self.view.alert = _("No space available to create disk image in '%s' partition.") % partition[5][0]
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
#else: # Permission denied
#TODO:check disk space for root
active_guests = kvc.list_active_guest()
inactive_guests = kvc.list_inactive_guest()
used_vnc_ports = kvc.list_used_vnc_port()
used_mac_addrs = kvc.list_used_mac_addr()
conflict_location = "%s/host/%d/guest/%d.json" \
% (web.ctx.homepath, src_guest.parent_id, src_guest.id)
# source guestos
if not (options["src-name"] in active_guests or options["src-name"] in inactive_guests):
return web.conflict(conflict_location, "Unable to get the source guest.")
# Check on whether value has already been used
# destination guestos
if (options["dest-name"] in active_guests or options["dest-name"] in inactive_guests):
return web.conflict(conflict_location, "Destination guest %s is already there." % options["dest-name"])
# VNC port number
if(int(self.input.vm_vncport) in used_vnc_ports):
return web.conflict(conflict_location, "VNC port %s is already used." % self.input.vm_vncport)
# MAC address
if(self.input.vm_mac in used_mac_addrs):
return web.conflict(conflict_location, "MAC address %s is already used." % self.input.vm_mac)
# Replicate Guest
order = 0 # job order
disk_jobs = [] # Add Disk
volume_jobs = [] # Create Storage Volume
for disk in virt.get_disk_info():
if disk['type'] != 'file':
self.view.alert = _("The type of the storage pool where the disk is to be added must be 'file'. dev=%s") % disk['target']['dev']
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
disk_pool = kvc.get_storage_pool_name_byimage(disk['source']['file'])
if not disk_pool:
self.view.alert = _("Can not find the storage pool.")
示例4: _PUT
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import list_used_vnc_port [as 别名]
def _PUT(self, *param, **params):
"""<comment-ja>
Japanese Comment
</comment-ja>
<comment-en>
TODO: English Comment
</comment-en>
"""
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None: return web.notfound()
if not validates_display(self):
return web.badrequest(self.view.alert)
model = findbyguest1(self.orm, guest_id)
# virt
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.conflict(web.ctx.path)
virt = kvc.search_kvg_guests(domname)[0]
info = virt.get_graphics_info()["setting"]
used_ports = kvc.list_used_vnc_port()
origin_port = info["port"]
finally:
kvc.close()
options = {}
options["name"] = domname
if self.input.change_passwd == "random":
options["random-passwd"] = None
elif self.input.change_passwd == "empty":
options["passwd"] = ""
options["port"] = self.input.port
options["listen"] = self.input.listen
options["keymap"] = self.input.keymap
if int(self.input.port) != origin_port and int(self.input.port) in used_ports:
return web.badrequest("VNC port number has been already used by other service. - port=%s" % (self.input.port,))
_cmd = dict2command("%s/%s" % (karesansui.config['application.bin.dir'],
VIRT_COMMAND_SET_VNC),
options)
cmdname = 'Set vnc'
_jobgroup = JobGroup(cmdname, karesansui.sheconf['env.uniqkey'])
_jobgroup.jobs.append(Job('%s command' % cmdname, 0, _cmd))
_machine2jobgroup = m2j_new(machine=model,
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,
)
return web.created(None)