本文整理汇总了Python中karesansui.lib.virt.virt.KaresansuiVirtConnection.replicate_guest方法的典型用法代码示例。如果您正苦于以下问题:Python KaresansuiVirtConnection.replicate_guest方法的具体用法?Python KaresansuiVirtConnection.replicate_guest怎么用?Python KaresansuiVirtConnection.replicate_guest使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.virt.virt.KaresansuiVirtConnection
的用法示例。
在下文中一共展示了KaresansuiVirtConnection.replicate_guest方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: process
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import replicate_guest [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