本文整理汇总了Python中karesansui.lib.virt.virt.KaresansuiVirtConnection.get_storage_pool_name_bydomain方法的典型用法代码示例。如果您正苦于以下问题:Python KaresansuiVirtConnection.get_storage_pool_name_bydomain方法的具体用法?Python KaresansuiVirtConnection.get_storage_pool_name_bydomain怎么用?Python KaresansuiVirtConnection.get_storage_pool_name_bydomain使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.virt.virt.KaresansuiVirtConnection
的用法示例。
在下文中一共展示了KaresansuiVirtConnection.get_storage_pool_name_bydomain方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: process
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [as 别名]
def process(self):
(opts, args) = getopts()
chkopts(opts)
self.up_progress(10)
conn = KaresansuiVirtConnection(readonly=False)
try:
uuid = conn.domname_to_uuid(opts.name)
try: # physical
conn.set_domain_name(opts.name)
conn.delete_guest(opts.name, opts.pool, opts.volume)
self.up_progress(20)
except Exception, e:
print >>sys.stderr, '[Warn] Failed to delete the guest OS physical. - dom=%s - detail : %s' \
% (opts.name, str(e.args))
self.logger.warn('Failed to delete the guest OS physical. - dom=%s - detail : %s' \
% (opts.name, str(e.args)))
# Check the presence of residual files
try:
self.up_progress(10)
# /etc
config = ""
hypervisor = conn.get_hypervisor_type()
if hypervisor == "XEN":
config = "%s/%s" % (XEN_VIRT_CONFIG_DIR, opts.name,)
elif hypervisor == "KVM" or hypervisor == "QEMU":
config = "%s/%s" % (KVM_VIRT_CONFIG_DIR, opts.name,)
if os.path.isfile(config) is True:
os.remove(config)
self.logger.info("physical config remove. - path=%s" % config)
self.up_progress(5)
xml_config = '%s/%s.xml' % (VIRT_XML_CONFIG_DIR, opts.name)
if os.path.isfile(xml_config) is True:
os.remove(xml_config)
self.logger.info("physical xml config remove. - path=%s" % xml_config)
self.up_progress(5)
self.logger.info('To remove the storage volume even more.')
tmp_pool = conn.get_storage_pool_name_bydomain(opts.name, 'os')
if tmp_pool:
domains_dir = conn.get_storage_pool_targetpath(tmp_pool[0])
else:
domains_dir = conn.get_storage_pool_targetpath(opts.pool)
disk_image = '%s/%s/images/%s.img' % (domains_dir, opts.name, opts.name,)
if os.path.isfile(disk_image) is True or os.path.islink(disk_image) is True:
os.remove(disk_image)
self.logger.info("physical disk image remove. - path=%s" % disk_image)
self.up_progress(5)
if 0 < len(opts.name.split()): # double check
snapshot_dir = '%s/%s/snapshot' % (domains_dir, opts.name,)
if os.path.isdir(snapshot_dir) is True:
for root, dirs, files in os.walk(snapshot_dir):
for fname in files:
file_path = os.path.join(root, fname)
os.remove(file_path)
self.logger.info("physical snapshots file remove. - file=%s" % file_path)
os.removedirs(snapshot_dir)
self.logger.info("physical snapshots directory remove. - dir=%s" % snapshot_dir)
self.up_progress(5)
if 0 < len(opts.name.split()): # double check
disk_dir = '%s/%s/disk' % (domains_dir, opts.name,)
if os.path.isdir(disk_dir) is True:
for root, dirs, files in os.walk(disk_dir):
for fname in files:
file_path = os.path.join(root, fname)
os.remove(file_path)
self.logger.info("physical disk file remove. - file=%s" % file_path)
os.removedirs(disk_dir)
self.logger.info("physical disk directory remove. - dir=%s" % disk_dir)
self.up_progress(5)
# Delete GuestOS directory
domain_dir = "%s/%s" % (domains_dir, opts.name)
if os.path.isdir(domain_dir) is True:
shutil.rmtree(domain_dir)
self.up_progress(5)
except Exception, e:
print >>sys.stderr, '[Warn] Failed to remove the residual file.. - dom=%s - detail : %s' \
% (opts.name, str(e.args))
self.logger.warn('Failed to remove the residual file.. - dom=%s - detail : %s' \
% (opts.name, str(e.args)))
示例2: GuestBy1
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [as 别名]
class GuestBy1(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, guest_id) = self.chk_guestby1(param)
if self.input.has_key('job_id') is True:
self.view.job_id = self.input.job_id
else:
self.view.job_id = None
if guest_id is None:
return web.notfound()
model = findbyguest1(self.orm, guest_id)
self.kvc = KaresansuiVirtConnection()
if self.is_mode_input() is True:
try:
domname = self.kvc.uuid_to_domname(model.uniq_key)
if not domname:
return web.notfound()
virt = self.kvc.search_kvg_guests(domname)[0]
guest = MergeGuest(model, virt)
self.view.model = guest.info["model"]
return True
except:
self.kvc.close()
raise
else:
try:
domname = self.kvc.uuid_to_domname(model.uniq_key)
if not domname:
return web.notfound()
virt = self.kvc.search_kvg_guests(domname)[0]
guest = MergeGuest(model, virt)
guest_info = guest.info["virt"].get_info()
info = {}
info['memory'] = guest_info["memory"]
info['cpu'] = guest_info["cpuTime"]
info['os'] = guest_info["OSType"]
info['hypervisor'] = guest_info["hypervisor"]
info['type'] = guest_info["VMType"]
info['hv_version'] = guest_info["hv_version"]
disk_info = guest.info["virt"].get_disk_info()
interface_info = guest.info["virt"].get_interface_info()
net_info = guest.info["virt"].get_netinfo()
graphics_info = guest.info["virt"].get_graphics_info()
vcpu_info = guest.info["virt"].get_vcpus_info()
pool_info = []
pool_vols_info = []
already_vols = []
pools = self.kvc.get_storage_pool_name_bydomain(domname)
if len(pools) > 0:
for pool in pools:
pool_obj = self.kvc.search_kvn_storage_pools(pool)[0]
if pool_obj.is_active() is True:
pool_info = pool_obj.get_info()
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()
pool_vols_info = vols_info
if self.__template__["media"] == 'json':
json_guest = guest.get_json(self.me.languages)
self.view.data = json_dumps(
{
"model": json_guest["model"],
"virt": json_guest["virt"],
"autostart": guest.info["virt"].autostart(),
"info": info,
"disk_info": disk_info,
"net_info": net_info,
"interface_info": interface_info,
"pool_info": pool_info,
"pool_vols_info": pool_vols_info,
"graphics_info": graphics_info,
"vcpu_info": vcpu_info,
}
)
else:
self.view.model = guest.info["model"]
self.view.virt = guest.info["virt"]
#.........这里部分代码省略.........
示例3: process
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [as 别名]
def process(self):
(opts, args) = getopts()
chkopts(opts)
self.up_progress(10)
conn = KaresansuiVirtConnection(readonly=False)
try:
# dest storage pool
dest_target_path = conn.get_storage_pool_targetpath(opts.pool)
if not dest_target_path:
raise KssCommandException(
"Could not get the target path of the storage pool. - path=%s" % dest_target_path)
self.dest_disk = "%s/%s/images/%s.img" \
% (dest_target_path, opts.name,opts.name,)
# source storage pool
src_pool = conn.get_storage_pool_name_bydomain(opts.src_name, "os")
if not src_pool:
raise KssCommandException("Source storage pool is not found.")
src_pool_type = conn.get_storage_pool_type(src_pool)
if src_pool_type == 'dir':
raise KssCommandException(
"Storage pool type 'dir' is not. - type=%s" % src_pool_type)
src_target_path = conn.get_storage_pool_targetpath(src_pool[0])
self.src_disk = "%s/%s/images/%s.img" \
% (src_target_path, opts.src_name,opts.src_name,)
if os.path.isfile(self.src_disk) is False:
raise KssCommandException(
'source disk image is not found. - src=%s' % (self.src_disk))
if os.path.isfile(self.dest_disk) is True:
raise KssCommandException(
'destination disk image already exists. - dest=%s' % (self.dest_disk))
self.up_progress(10)
active_storage_pools = conn.list_active_storage_pool()
self.up_progress(10)
if not (opts.pool in active_storage_pools):
raise KssCommandException('Storage pool does not exist. - pool=%s'
% (opts.pool))
try:
active_guests = conn.list_active_guest()
inactive_guests = conn.list_inactive_guest()
# source guestos
if not (opts.src_name in active_guests or opts.src_name in inactive_guests):
raise KssCommandException(
"Unable to get the source guest OS. - src_name=%s" % opts.src_name)
if (opts.name in active_guests or opts.name in inactive_guests):
raise KssCommandException(
"Destination Guest OS is already there. - dest_name=%s" % opts.name)
self.up_progress(10)
conn.replicate_guest(opts.name,
opts.src_name,
opts.pool,
opts.mac,
opts.uuid,
opts.vnc_port)
self.up_progress(40)
except:
self.logger.error('Failed to replicate guest. - src=%s dom=%s' % (opts.src_name,opts.name))
raise
finally:
conn.close()
conn1 = KaresansuiVirtConnection(readonly=False)
try:
self.up_progress(10)
active_guests = conn1.list_active_guest()
inactive_guests = conn1.list_inactive_guest()
if opts.name in active_guests or opts.name in inactive_guests:
self.logger.info('Replicated guest. - src=%s dom=%s' % (opts.src_name,opts.name))
print >>sys.stdout, _('Replicated guest. - src=%s dom=%s') % (opts.src_name,opts.name)
return True
else:
raise KssCommandException(
'Replicate guest not found. - src=%s dom=%s' % (opts.src_name,opts.name))
finally:
conn1.close()
return True
示例4: process
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [as 别名]
def process(self):
(opts, args) = getopts()
chkopts(opts)
self.up_progress(10)
conn = KaresansuiVirtConnection(readonly=False)
try:
try:
src_pool = conn.get_storage_pool_name_bydomain(opts.name, "os")
if not src_pool:
raise KssCommandException("Source storage pool not found. domain=%s" % (opts.name))
if conn.get_storage_pool_type(src_pool) == 'dir':
raise KssCommandException("Storage pool type 'dir' is not. domain=%s" % (opts.name))
src_path = conn.get_storage_pool_targetpath(src_pool[0])
self.domain_dir = "%s/%s" % (src_path, opts.name,)
if os.path.isdir(self.domain_dir) is False:
raise KssCommandException(
'domain directory is not found or not directory. - %s' % (self.domain_dir))
# Model
virt_uuid = conn.domname_to_uuid(opts.name)
model = findby1uniquekey(self.kss_session, virt_uuid)
if not model:
raise KssCommandException("Export data does not exist in the database.")
database = {}
database['attribute'] = model.attribute
database['hypervisor'] = model.hypervisor
database['icon'] = model.icon
database['name'] = model.name
database['notebook'] = {"title" : model.notebook.title,
"value" : model.notebook.value,
}
tags = []
for _tag in model.tags:
tags.append(_tag.name)
database['tags'] = ",".join(tags)
database['uniq_key'] = model.uniq_key
# Snapshot
snapshots = []
kvs = KaresansuiVirtSnapshot(readonly=False)
try:
guest_id = model.id
snapshot_list = kvs.listNames(opts.name)[opts.name]
if len(snapshot_list) > 0:
for snapshot in snapshot_list:
s_model = s_findbyname_guestby1(self.kss_session, snapshot, guest_id)
if s_model is not None:
name = s_model.name
title = s_model.notebook.title
value = s_model.notebook.value
snapshots.append({"name":name, "title":title, "value":value,})
except:
raise KssCommandException("Cannot fetch the information of snapshots correctly.")
kvs.finish()
# Pool
target_dir = ""
if opts.pool:
inactive_storage_pools = conn.list_inactive_storage_pool()
active_storage_pools = conn.list_active_storage_pool()
if not (opts.pool in active_storage_pools or opts.pool in inactive_storage_pools):
raise KssCommandException('Target storage pool does not exist. - pool=%s' % (opts.pool))
pool = conn.search_kvn_storage_pools(opts.pool)
storage_info = pool[0].get_info()
if storage_info["type"] == "dir" and storage_info["target"]["path"] != "":
target_dir = storage_info["target"]["path"]
else:
raise KssCommandException("Target storage pool type is not 'dir'. pool=%s" % (opts.pool))
elif opts.dir:
target_dir = opts.dir
self.up_progress(10)
progresscb = None
if opts.verbose:
try:
from karesansui.lib.progress import ProgressMeter
progresscb = ProgressMeter(command_object=self)
except:
pass
else:
try:
from karesansui.lib.progress import ProgressMeter
progresscb = ProgressMeter(command_object=self,quiet=True)
except:
pass
if opts.title[0:4] == "b64:":
title = base64_decode(opts.title[4:])
else:
title = opts.title
uuid = StrFromUUID(GenUUID())
conn.export_guest(uuid=uuid,
name=opts.name,
#.........这里部分代码省略.........
示例5: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [as 别名]
def _GET(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
kvc = KaresansuiVirtConnection()
try:
# Storage Pool
#inactive_pool = kvc.list_inactive_storage_pool()
inactive_pool = []
active_pool = kvc.list_active_storage_pool()
pools = inactive_pool + active_pool
pools.sort()
if self.is_mode_input() is True: # (*.input)
if not validates_sid(self):
return web.badrequest(self.view.alert)
sid = self.input.sid
model = findbyguest1(self.orm, sid)
if not model:
return web.badrequest()
domname = kvc.uuid_to_domname(model.uniq_key)
src_pools = kvc.get_storage_pool_name_bydomain(domname)
if not src_pools:
return web.badrequest(_("Source storage pool is not found."))
for src_pool in src_pools :
src_pool_type = kvc.get_storage_pool_type(src_pool)
if src_pool_type != 'dir':
return web.badrequest(_("'%s' disk contains the image.") % src_pool_type)
virt = kvc.search_kvg_guests(domname)[0]
if virt.is_active() is True:
return web.badrequest(_("Guest is running. Please stop and try again. name=%s" % domname))
self.view.domname = virt.get_domain_name()
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
self.view.sid = sid
return True
# Exported Guest Info (*.json)
exports = {}
for pool_name in pools:
files = []
pool = kvc.search_kvn_storage_pools(pool_name)
path = pool[0].get_info()["target"]["path"]
if os.path.exists(path):
for _afile in glob.glob("%s/*/info.dat" % (path,)):
param = ExportConfigParam()
param.load_xml_config(_afile)
_dir = os.path.dirname(_afile)
uuid = param.get_uuid()
name = param.get_domain()
created = param.get_created()
title = param.get_title()
if title != "":
title = re.sub("[\r\n]","",title)
if title == "":
title = _('untitled')
if created != "":
created_str = time.strftime("%Y/%m/%d %H:%M:%S", \
time.localtime(float(created)))
else:
created_str = _("N/A")
files.append({"dir": _dir,
"pool" : pool_name,
#"b64dir" : base64_encode(_dir),
"uuid" : uuid,
"name" : name,
"created" : int(created),
"created_str" : created_str,
"title" : title,
})
exports[pool_name] = files
# .json
if self.is_json() is True:
self.view.exports = json_dumps(exports)
else:
self.view.exports = exports
return True
finally:
kvc.close()
示例6: _POST
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [as 别名]
def _POST(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
if not validates_guest_export(self):
return web.badrequest(self.view.alert)
if not validates_sid(self):
return web.badrequest(self.view.alert)
model = findbyguest1(self.orm, self.input.sid)
if not model:
return web.badrequest()
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.conflict(web.ctx.path)
src_pools = kvc.get_storage_pool_name_bydomain(domname)
if not src_pools:
return web.badrequest(_("Source storage pool is not found."))
for src_pool in src_pools :
src_pool_type = kvc.get_storage_pool_type(src_pool)
if src_pool_type != 'dir':
return web.badrequest(_("'%s' disk contains the image.") % src_pool_type)
virt = kvc.search_kvg_guests(domname)[0]
options = {}
options["name"] = virt.get_domain_name()
if is_param(self.input, "pool"):
# disk check
src_pool = kvc.get_storage_pool_name_bydomain(domname, 'os')[0]
src_path = kvc.get_storage_pool_targetpath(src_pool)
src_disk = "%s/%s/images/%s.img" \
% (src_path, options["name"], options["name"])
dest_path = kvc.get_storage_pool_targetpath(self.input.pool)
s_size = os.path.getsize(src_disk) / (1024 * 1024) # a unit 'MB'
if os.access(dest_path, os.F_OK):
if chk_create_disk(dest_path, s_size) is False:
partition = get_partition_info(dest_path, header=False)
return web.badrequest(
_("No space available to create disk image in '%s' partition.") \
% partition[5][0])
#else: # Permission denied
#TODO:check disk space for root
options["pool"] = self.input.pool
if is_param(self.input, "export_title"):
#options["title"] = self.input.export_title
options["title"] = "b64:" + base64_encode(self.input.export_title)
options["quiet"] = None
finally:
kvc.close()
_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_EXPORT_GUEST), options)
# Job Register
cmdname = ["Export Guest", "export guest"]
_jobgroup = JobGroup(cmdname[0], karesansui.sheconf['env.uniqkey'])
_jobgroup.jobs.append(Job('%s command' % cmdname[1], 0, _cmd))
_machine2jobgroup = m2j_new(machine=model,
jobgroup_id=-1,
uniq_key=karesansui.sheconf['env.uniqkey'],
created_user=self.me,
modified_user=self.me,
)
# INSERT
save_job_collaboration(self.orm,
self.pysilhouette.orm,
_machine2jobgroup,
_jobgroup,
)
self.logger.debug("(%s) Job group id==%s" % (cmdname[0],_jobgroup.id))
url = '%s/job/%s.part' % (web.ctx.home, _jobgroup.id)
self.logger.debug('Returning Location: %s' % url)
return web.accepted()
示例7: _POST
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [as 别名]
def _POST(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
if not validates_guest_replicate(self):
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
uuid = string_from_uuid(generate_uuid())
# TODO dest_pool valid
if not validates_src_id(self):
self.logger.debug(self.view.alert)
return web.badrequest(self.view.alert)
src_guest = findbyguest1(self.orm, self.input.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)
# Note
note_title = None
if is_param(self.input, "note_title"):
note_title = self.input.note_title
note_value = None
if is_param(self.input, "note_value"):
note_value = self.input.note_value
_notebook = n_new(note_title, note_value)
# Tag
_tags = None
if is_param(self.input, "tags"):
_tags = []
for x in comma_split(self.input.tags):
_tags.append(t_new(x))
# Icon
icon_filename = None
if is_param(self.input, "icon_filename", empty=True):
icon_filename = self.input.icon_filename
dest_guest = m_new(created_user=self.me,
modified_user=self.me,
uniq_key=uni_force(uuid),
name=self.input.m_name,
attribute=MACHINE_ATTRIBUTE['GUEST'],
hypervisor=src_guest.hypervisor,
notebook=_notebook,
tags=_tags,
icon=icon_filename,
is_deleted=False,
parent=src_guest.parent,
)
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(src_guest.uniq_key)
if not domname: return web.conflict(web.ctx.path)
virt = kvc.search_kvg_guests(domname)[0]
options = {}
options["src-name"] = virt.get_domain_name()
if is_param(self.input, "dest_pool"):
options["pool"] = self.input.dest_pool
if is_param(self.input, "domain_dest_name"):
options["dest-name"] = self.input.domain_dest_name
if is_param(self.input, "vm_vncport"):
options["vnc-port"] = self.input.vm_vncport
if is_param(self.input, "vm_mac"):
options["mac"] = self.input.vm_mac
options["uuid"] = uuid
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)
#.........这里部分代码省略.........
示例8: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_name_bydomain [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