本文整理汇总了Python中karesansui.lib.virt.virt.KaresansuiVirtConnection.get_storage_pool_name_byimage方法的典型用法代码示例。如果您正苦于以下问题:Python KaresansuiVirtConnection.get_storage_pool_name_byimage方法的具体用法?Python KaresansuiVirtConnection.get_storage_pool_name_byimage怎么用?Python KaresansuiVirtConnection.get_storage_pool_name_byimage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.virt.virt.KaresansuiVirtConnection
的用法示例。
在下文中一共展示了KaresansuiVirtConnection.get_storage_pool_name_byimage方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GuestBy1
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_byimage [as 别名]
#.........这里部分代码省略.........
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None:
return web.notfound()
model = findbyguest1(self.orm, guest_id)
self.kvc = KaresansuiVirtConnection()
try:
domname = self.kvc.uuid_to_domname(model.uniq_key)
if not domname:
self.logger.info("Did not exist in libvirt. - guestid=%s" % model.id)
logical_delete(self.orm, model)
# TODO ファイルシステムにゴミが残るので、delete_guest.pyを実行する必要がある。
self.orm.commit()
return web.nocontent()
kvg_guest = self.kvc.search_kvg_guests(domname)
if not kvg_guest:
return web.badrequest(_("Guest not found. - name=%s") % domname)
else:
kvg_guest = kvg_guest[0]
if kvg_guest.is_active():
return web.badrequest(_("Can not delete a running guest OS. - name=%s") % domname)
# jobs order
order = 0
jobs = []
os_storage = {}
for disk in kvg_guest.get_disk_info():
if disk['type'] == 'file': # type="dir"
# delete_storage_volume
pool = self.kvc.get_storage_pool_name_byimage(disk['source']['file'])
if not pool:
return web.badrequest(_("Can not find the storage pool image. - target=%s") % (disk['source']['file']))
else:
pool = pool[0]
disk_volumes = self.kvc.get_storage_volume_bydomain(domname, 'disk', 'key')
volume = None
for key in disk_volumes.keys():
if disk['source']['file'] == os.path.realpath(disk_volumes[key]):
volume = key # disk image
use = DISK_USES['DISK']
if volume is None: # os image
os_volume = self.kvc.get_storage_volume_bydomain(domname, 'os', 'key')
if not os_volume:
return web.badrequest(_("OS storage volume for guest could not be found. domname=%s") % domname)
if disk['source']['file'] == os.path.realpath(os_volume.values()[0]):
use = DISK_USES['IMAGES']
volume = os_volume.keys()[0]
os_storage["pool"] = pool
os_storage["volume"] = volume
continue # OS delete command to do "VIRT_COMMAND_DELETE_GUEST" image.
jobs.append(delete_storage_volume(self,
volume,
pool,
order,
use))
order += 1
# delete_disk
示例2: _DELETE
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_byimage [as 别名]
def _DELETE(self, *param, **params):
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None: return web.notfound()
if is_int(param[2]) is False:
return web.badrequest()
disk_id = int(param[2])
model = findbyguest1(self.orm, guest_id)
if not model: return web.notfound()
# 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]
guest = MergeGuest(model, virt)
disk_info = virt.get_disk_info()[disk_id]
if disk_info['source'].has_key('file'):
pool_type = 'file'
volume_rpath = disk_info['source']['file']
elif disk_info['source'].has_key('dev'):
pool_type = 'iscsi'
volume_rpath = disk_info['source']['dev']
pool_name = kvc.get_storage_pool_name_byimage(volume_rpath)
if not pool_name:
return web.badrequest(_("Storage pool not found."))
else:
pool_name = pool_name[0]
pool_type = kvc.get_storage_pool_type(pool_name)
order = 0
volume_job = None
if pool_type != 'iscsi':
disk_volumes = kvc.get_storage_volume_bydomain(domname, 'disk', 'key')
volume = None
for key in disk_volumes.keys():
if volume_rpath == os.path.realpath(disk_volumes[key]):
volume = key
if volume is None:
return web.badrequest(_("Storage volume can not be found."))
volume_job = delete_storage_volume(self,
key,
pool_name,
order,
use=DISK_USES["DISK"]
)
order += 1
finally:
kvc.close()
target = disk_info["target"]["dev"]
self.logger.debug('spinning off delete_disk_job dom=%s, target=%s' % (domname, target))
disk_job = delete_disk_job(self, domname, target, order)
if setexec_delete_disk(self, model, disk_job, volume_job) is True:
return web.accepted()
else:
return False
示例3: _POST
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_byimage [as 别名]
#.........这里部分代码省略.........
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.")
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
else:
disk_pool = disk_pool[0]
disk_volumes = kvc.get_storage_volume_bydomain(domname, 'disk', 'key')
volume = None
for key in disk_volumes.keys():
if disk['source']['file'] == os.path.realpath(disk_volumes[key]):
volume = key # disk image
if volume is None: # os image
continue
disk_uuid = string_from_uuid(generate_uuid())
volume_jobs.append(replicate_storage_volume(self,
domname,
disk_pool,
volume,
self.input.domain_dest_name,
#self.input.dest_pool,
disk_pool, # orig
disk_uuid,
order))
order += 1
disk_jobs.append(create_disk_job(self,
dest_guest,
self.input.domain_dest_name,