本文整理汇总了Python中karesansui.lib.virt.virt.KaresansuiVirtConnection.uuid_to_domname方法的典型用法代码示例。如果您正苦于以下问题:Python KaresansuiVirtConnection.uuid_to_domname方法的具体用法?Python KaresansuiVirtConnection.uuid_to_domname怎么用?Python KaresansuiVirtConnection.uuid_to_domname使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.virt.virt.KaresansuiVirtConnection
的用法示例。
在下文中一共展示了KaresansuiVirtConnection.uuid_to_domname方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _GET(self, *param, **params):
_prep_console()
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None: return web.notfound()
model = findbyguest1(self.orm, guest_id)
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.notfound()
dom = kvc.search_guests(domname)[0]
document = XMLParse(dom.XMLDesc(1))
self.view.graphics_port = XMLXpath(document,
'/domain/devices/graphics/@port')
self.view.xenname = XMLXpath(document,
'/domain/name/text()')
finally:
kvc.close()
h_model = findbyhost1(self.orm, host_id)
try:
from karesansui.lib.utils import get_ifconfig_info
device = KVM_BRIDGE_PREFIX + "0"
self.view.host_ipaddr = get_ifconfig_info(device)[device]["ipaddr"]
except:
try:
self.view.host_ipaddr = h_model.hostname.split(":")[0].strip()
except:
self.view.host_ipaddr = socket.gethostbyname(socket.gethostname())
return True
示例2: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _GET(self, *param, **params):
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None: return web.notfound()
model = findbyguest1(self.orm, guest_id)
# virt
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.notfound()
virt = kvc.search_kvg_guests(domname)[0]
info = virt.get_graphics_info()
self.view.checked_listen_all = ""
self.view.checked_listen_lo = "checked"
try:
if info["setting"]["listen"] == "0.0.0.0":
self.view.checked_listen_all = "checked"
self.view.checked_listen_lo = ""
except:
pass
self.view.VMType = virt.get_info()['VMType']
self.view.keymaps = eval("get_keymaps(%s_KEYMAP_DIR)" % self.view.VMType.upper())
self.view.info = info
self.view.guest = model
finally:
kvc.close()
return True
示例3: _DELETE
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [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.notfound()
nic_id = int(param[2])
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]
guest = MergeGuest(model, virt)
nic_info = virt.get_interface_info()[nic_id]
finally:
kvc.close()
mac = nic_info["mac"]["address"]
self.logger.debug('spinning off delete_nic_job dom=%s, mac=%s' % (domname, mac))
if delete_nic_job(self,model,domname,mac) is True:
return web.accepted()
else:
return False
示例4: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _GET(self, *param, **params):
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None: return web.notfound()
model = findbyguest1(self.orm, guest_id)
# virt
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.notfound()
virt = kvc.search_kvg_guests(domname)[0]
vcpus_info = virt.get_vcpus_info()
self.view.max_vcpus_limit = kvc.get_max_vcpus()
self.view.max_vcpus = vcpus_info['bootup_vcpus']
self.view.vcpus_limit = vcpus_info['max_vcpus']
self.view.vcpus = vcpus_info['vcpus']
self.view.cpuTime = virt.get_info()['cpuTime']
self.view.hypervisor = virt.get_info()['hypervisor']
self.view.guest = model
finally:
kvc.close()
return True
示例5: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _GET(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)
# virt
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.notfound()
virt = kvc.search_kvg_guests(domname)[0]
guest = MergeGuest(model, virt)
self.view.guest = guest
self.view.disk_info = virt.get_disk_info()[disk_id]
finally:
kvc.close()
return True
示例6: _PUT
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [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 is_param(self.input, "memory"):
memory = int(self.input.memory)
else:
memory = None
max_memory = int(self.input.max_memory)
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_info()
# maxMem = info["maxMem"]
now_memory = info["memory"]
mem_info = kvc.get_mem_info()
nodeinfo = kvc.get_nodeinfo()
finally:
kvc.close()
# valid
# if (mem_info["host_free_mem"] + (now_memory / 1024)) < memory:
# return web.badrequest("Memory value is greater than the maximum memory value. - memory=%s" % self.input.memory)
options = {}
options["name"] = domname
options["maxmem"] = max_memory
if memory is None:
options["memory"] = max_memory
else:
options["memory"] = memory
_cmd = dict2command("%s/%s" % (karesansui.config["application.bin.dir"], VIRT_COMMAND_SET_MEMORY), options)
cmdname = "Set memory"
_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.accepted(url=web.ctx.path)
示例7: _PUT
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _PUT(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.notfound()
nic_id = int(param[2])
if not validates_nicby1(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]
guest = MergeGuest(model, virt)
old_mac = virt.get_interface_info()[nic_id]["mac"]["address"]
nic_info = virt.get_interface_info()
finally:
kvc.close()
new_mac = self.input.mac_address
if old_mac != new_mac:
f_chk = True
for x in nic_info:
if x["mac"]["address"] == new_mac:
f_chk = False
break
if f_chk is False:
return web.badrequest(_("Specified MAC address is already defined."))
self.logger.debug(
"spinning off change_mac_job dom=%s, from_mac=%s, to_mac=%s" % (domname, old_mac, new_mac)
)
if change_mac_job(self, model, domname, old_mac, new_mac) is True:
return web.accepted(url=web.ctx.path)
else:
return False
else:
return web.accepted(url=web.ctx.path)
示例8: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _GET(self, *param, **params):
java_dir = karesansui.dirname + "/static/java"
self.view.applet_dst_path = java_dir + "/VncViewer.jar"
self.view.applet_src_path = _get_applet_source_path()
self.view.found_applet_located = os.path.exists(self.view.applet_dst_path)
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None:
return web.notfound()
model = findbyguest1(self.orm, guest_id)
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname:
return web.notfound()
dom = kvc.search_guests(domname)[0]
document = XMLParse(dom.XMLDesc(1))
self.view.graphics_port = XMLXpath(document, "/domain/devices/graphics/@port")
self.view.xenname = XMLXpath(document, "/domain/name/text()")
finally:
kvc.close()
h_model = findbyhost1(self.orm, host_id)
try:
from karesansui.lib.utils import get_ifconfig_info
device = KVM_BRIDGE_PREFIX + "0"
self.view.host_ipaddr = get_ifconfig_info(device)[device]["ipaddr"]
except:
try:
self.view.host_ipaddr = h_model.hostname.split(":")[0].strip()
except:
self.view.host_ipaddr = socket.gethostbyname(socket.gethostname())
return True
示例9: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _GET(self, *param, **params):
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None: return web.notfound()
model = findbyguest1(self.orm, guest_id)
# virt
kvc = KaresansuiVirtConnection()
try:
domname = kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.notfound()
virt = kvc.search_kvg_guests(domname)[0]
self.view.info = virt.get_info()
#self.view.mem_info = kvc.get_mem_info()
self.view.nodeinfo = kvc.get_nodeinfo()
self.view.guest = model
self.view.hypervisor = self.view.info['hypervisor']
finally:
kvc.close()
return True
示例10: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
def _GET(self, *param, **params):
"""<comment-ja>
virDomainState
- VIR_DOMAIN_NOSTATE = 0
- VIR_DOMAIN_RUNNING = 1
- VIR_DOMAIN_BLOCKED = 2
- VIR_DOMAIN_PAUSED = 3
- VIR_DOMAIN_SHUTDOWN = 4
- VIR_DOMAIN_SHUTOFF = 5
- VIR_DOMAIN_CRASHED = 6
</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()
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)
if self.__template__["media"] == 'json':
self.view.status = json_dumps(virt[0].status())
else:
self.view.status = virt[0].status()
finally:
kvc.close()
#self.__template__.dir = 'guestby1'
return True
示例11: _DELETE
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [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
示例12: _PUT
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [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_cpu(self):
return web.badrequest(self.view.alert)
if is_param(self.input, 'vcpus'):
vcpus = int(self.input.vcpus)
else:
vcpus = None
max_vcpus = int(self.input.max_vcpus)
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]
vcpus_info = virt.get_vcpus_info()
max_vcpus_limit = kvc.get_max_vcpus()
vcpus_limit = vcpus_info['max_vcpus']
finally:
kvc.close()
if max_vcpus_limit < max_vcpus:
return web.badrequest("%s is greater than the maximum number supported for guest. - max_vcpus_limit=%d max_vcpus=%d" \
% (_('Maximum Number of Virtual CPUs'), self.input.max_vcpus_limit,self.input.max_vcpus,))
if vcpus is not None:
if vcpus_limit < vcpus:
return web.badrequest("%s is greater than the maximum number supported for guest. - vcpus_limit=%d vcpus=%d" \
% (_('Number of Virtual CPUs'), self.input.vcpus_limit,self.input.vcpus,))
options = {}
options["name"] = domname
if vcpus is not None:
options["vcpus"] = vcpus
options["max-vcpus"] = max_vcpus
_cmd = dict2command("%s/%s" % (karesansui.config['application.bin.dir'],
VIRT_COMMAND_SET_VCPUS),
options)
cmdname = 'Set cpu'
_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.accepted()
示例13: _POST
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [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)
#.........这里部分代码省略.........
示例14: GuestBy1Job
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [as 别名]
class GuestBy1Job(Rest):
@auth
def _GET(self, *param, **params):
(host_id, guest_id) = self.chk_guestby1(param)
if guest_id is None: return web.notfound()
model = findbyguest1(self.orm, guest_id)
# virt
self.kvc = KaresansuiVirtConnection()
try:
domname = self.kvc.uuid_to_domname(model.uniq_key)
if not domname: return web.notfound()
finally:
self.kvc.close()
(check, edit) = validates_jobsearch(self)
if check is False:
return web.badrequest(self.view.alert)
if edit is True:
# user search
users = findbyname_BM(self.orm, self.input.user)
users_id = []
for user in users:
users_id.append(user.id)
if is_empty(self.input.start):
start = None
else:
start = str2datetime(self.input.start,
DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0])
if is_empty(self.input.end):
end = None
else:
end = str2datetime(self.input.end,
DEFAULT_LANGS[self.me.languages]['DATE_FORMAT'][0],True)
# machine search
m_m2js = m2mj_findbyguest(self.orm,
guest_id,
start,
end,
users_id,
)
if not m_m2js:
self.logger.debug("Search m_m2js failed. "
"Did not exist m_m2js that in accord with these query. "
"guest_id %s, start %s, end %s, users_id %s" % (guest_id, start, end, users_id))
return web.nocontent()
self.view.m_m2js = m_m2js
self.view.user = self.input.user
self.view.status = self.input.status
self.view.start = self.input.start
self.view.end = self.input.end
jobgroup_ids = []
for m_m2j in m_m2js:
jobgroup_ids.append(m_m2j[1].jobgroup_id)
jobgroup_status = self.input.status
if is_empty(jobgroup_status):
jobgroup_status = None
jobgroups = jg_findbyalltype(self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"],
jobgroup_ids, jobgroup_status, desc=True)
if not jobgroups:
self.logger.debug("Search jobgroups failed. "
"Did not exist jobgroups that in accord with these query."
"jobgroup_ids %s, jobgroup_status %s" % (jobgroup_ids, jobgroup_status))
return web.nocontent()
else:
m_m2js = m2mj_findbyguest(self.orm, guest_id)
self.view.m_m2js = m_m2js
self.view.user = ''
self.view.status = ''
self.view.start = ''
self.view.end = ''
jobgroup_ids = []
for m_m2j in m_m2js:
jobgroup_ids.append(m_m2j[1].jobgroup_id)
jobgroups = jg_findbyalltype(self.pysilhouette.orm, JOBGROUP_TYPE["SERIAL"],
jobgroup_ids, desc=True)
self.view.JOBGROUP_STATUS = JOBGROUP_STATUS
self.view.HYPERVISOR = MACHINE_HYPERVISOR
if self.input.has_key('p') is True:
if validates_page(self) is True:
start = int(self.input.p)
else:
return web.badrequest(self.view.alert)
else:
start = 0
#.........这里部分代码省略.........
示例15: _POST
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import uuid_to_domname [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()