本文整理汇总了Python中karesansui.lib.virt.virt.KaresansuiVirtConnection.get_storage_pool_sourcedevicepath方法的典型用法代码示例。如果您正苦于以下问题:Python KaresansuiVirtConnection.get_storage_pool_sourcedevicepath方法的具体用法?Python KaresansuiVirtConnection.get_storage_pool_sourcedevicepath怎么用?Python KaresansuiVirtConnection.get_storage_pool_sourcedevicepath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.virt.virt.KaresansuiVirtConnection
的用法示例。
在下文中一共展示了KaresansuiVirtConnection.get_storage_pool_sourcedevicepath方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _GET
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_sourcedevicepath [as 别名]
def _GET(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None:
return web.notfound()
self.view.host_id = host_id
# Pool
try:
kvc = KaresansuiVirtConnection()
inactive_pool = kvc.list_inactive_storage_pool()
active_pool = kvc.list_active_storage_pool()
pools = inactive_pool + active_pool
pools.sort()
self.view.pools = pools
pools_info = []
for pool in pools:
pool_obj = kvc.search_kvn_storage_pools(pool)[0]
pools_info.append(pool_obj.get_info())
if pool_obj.is_active() is True:
vols_obj = pool_obj.search_kvn_storage_volumes(kvc)
vols_info = []
for vol_obj in vols_obj:
vols_info.append(vol_obj.get_info())
finally:
kvc.close()
self.view.pools_info = pools_info
if self.is_mode_input() is True:
# .input
try:
kvc = KaresansuiVirtConnection()
already_iqn = []
for pool in pools:
pool_iqn = kvc.get_storage_pool_sourcedevicepath(pool)
if pool_iqn:
already_iqn.append(pool_iqn)
finally:
kvc.close()
network_storages = get_iscsi_cmd(self, host_id)
if network_storages is False:
self.logger.debug("Get iSCSI command failed. Return to timeout")
return web.internalerror("Internal Server Error. (Timeout)")
available_network_storages = []
for i in range(len(network_storages)):
if network_storages[i]["iqn"] not in already_iqn and network_storages[i]["activity"] == 1:
available_network_storages.append(network_storages[i])
self.view.network_storages = available_network_storages
self.view.pool_types = (STORAGE_POOL_TYPE["TYPE_DIR"], STORAGE_POOL_TYPE["TYPE_ISCSI"])
return True
示例2: validates_pool_iscsi
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_sourcedevicepath [as 别名]
def validates_pool_iscsi(obj, now_pools):
checker = Checker()
check = True
_ = obj._
checker.errors = []
if is_param(obj.input, "pool_name"):
check = (
checker.check_string(_("Storage Pool Name"), obj.input.pool_name, CHECK_EMPTY | CHECK_ONLYSPACE, None)
and check
)
if obj.input.pool_name in now_pools:
check = False
checker.add_error(_('%s "%s" already exists.') % (_("Storage Pool Name"), obj.input.pool_name))
else:
check = False
checker.add_error(_('"%s" is required.') % _("Storage Pool Name"))
if is_param(obj.input, "pool_target_iscsi"):
check = (
checker.check_string(_("iSCSI Target"), obj.input.pool_target_iscsi, CHECK_EMPTY | CHECK_ONLYSPACE, None)
and check
)
try:
kvc = KaresansuiVirtConnection()
for pool_name in now_pools:
pool_iqn = kvc.get_storage_pool_sourcedevicepath(pool_name)
if obj.input.pool_target_iscsi == pool_iqn:
check = False
checker.add_error(
_('Storagepool iSCSI target IQN "%s" is already being used.') % (obj.input.pool_target_iscsi)
)
finally:
kvc.close()
else:
check = False
checker.add_error(_('"%s" is required.') % _("iSCSI Target"))
obj.view.alert = checker.errors
return check
示例3: _PUT
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_sourcedevicepath [as 别名]
def _PUT(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
if not validates_network_storage(self):
self.logger.debug("Network storage change status failed. Did not validate.")
return web.badrequest(self.view.alert)
host = findbyhost1(self.orm, host_id)
if is_param(self.input, "iqn"):
iqn = self.input.iqn
else:
self.logger.debug("Network storage change status failed. Target IQN not found.")
return web.badrequest()
options = {'iqn' : iqn}
job_order = 0
if is_param(self.input, "status"):
status = self.input.status
else:
self.logger.debug("Network storage change status failed. Status type not found.")
return web.badrequest()
if is_param(self.input, "host") and is_param(self.input, "port"):
host = self.input.host
port = self.input.port
else:
self.logger.debug("Network storage change status failed. Target host and port not found.")
return web.badrequest()
active_used_pool = []
inactive_used_pool = []
kvc = KaresansuiVirtConnection()
try:
dev_symlink_list = get_filelist(ISCSI_DEVICE_DIR)
dev_symlink_list.sort()
symlink_regexp = re.compile("^%s/%s" % (re.escape(ISCSI_DEVICE_DIR), re.escape(ISCSI_DEVICE_NAME_TPL % (host, port, iqn))))
active_pools = kvc.list_active_storage_pool()
inactive_pools = kvc.list_inactive_storage_pool()
now_pools = active_pools + inactive_pools
for pool in now_pools:
pool_type = kvc.get_storage_pool_type(pool)
if pool_type == "iscsi":
if iqn == kvc.get_storage_pool_sourcedevicepath(pool):
if pool in active_pools:
active_used_pool.append(pool)
if pool in inactive_pools:
inactive_used_pool.append(pool)
elif pool_type == "fs":
if symlink_regexp.match(kvc.get_storage_pool_sourcedevicepath(pool)):
if pool in active_pools:
active_used_pool.append(pool)
if pool in inactive_pools:
inactive_used_pool.append(pool)
if status == NETWORK_STORAGE_STOP:
for pool in active_used_pool:
if kvc.is_used_storage_pool(name=pool, active_only=True) is True:
self.logger.debug("Stop iSCSI failed. Target iSCSI is used by guest.")
return web.badrequest("Target iSCSI is used by guest.")
finally:
kvc.close()
if status == NETWORK_STORAGE_START:
network_storage_cmd = ISCSI_COMMAND_START
cmd_name = u'Start iSCSI'
jobgroup = JobGroup(cmd_name, karesansui.sheconf['env.uniqkey'])
for pool in inactive_used_pool:
pool_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_START_STORAGE_POOL),
{"name" : pool})
pool_cmdname = "Start Storage Pool"
jobgroup.jobs.append(Job('%s command' % pool_cmdname, 1, pool_cmd))
job_order = 0
elif status == NETWORK_STORAGE_STOP:
network_storage_cmd = ISCSI_COMMAND_STOP
cmd_name = u'Stop iSCSI'
jobgroup = JobGroup(cmd_name, karesansui.sheconf['env.uniqkey'])
for pool in active_used_pool:
pool_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DESTROY_STORAGE_POOL),
{"name" : pool})
pool_cmdname = "Stop Storage Pool"
jobgroup.jobs.append(Job('%s command' % pool_cmdname, 0, pool_cmd))
job_order = 1
else:
return web.internalerror('Internal Server Error. (Param)')
_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], network_storage_cmd), options)
jobgroup.jobs.append(Job('%s command' % cmd_name, job_order, _cmd))
#.........这里部分代码省略.........
示例4: _DELETE
# 需要导入模块: from karesansui.lib.virt.virt import KaresansuiVirtConnection [as 别名]
# 或者: from karesansui.lib.virt.virt.KaresansuiVirtConnection import get_storage_pool_sourcedevicepath [as 别名]
def _DELETE(self, *param, **params):
host_id = self.chk_hostby1(param)
if host_id is None: return web.notfound()
host = findbyhost1(self.orm, host_id)
if is_param(self.input, "iqn"):
iqn = self.input.iqn
else:
self.logger.debug("Network storage delete failed. Target IQN not found.")
return web.badrequest()
options = {'iqn' : iqn}
job_order = 0
cmd_name = u'Delete iSCSI'
jobgroup = JobGroup(cmd_name, karesansui.sheconf['env.uniqkey'])
if is_param(self.input, "host") and is_param(self.input, "port"):
host = self.input.host
port = self.input.port
used_pool = []
active_used_pool = []
kvc = KaresansuiVirtConnection()
try:
dev_symlink_list = get_filelist(ISCSI_DEVICE_DIR)
dev_symlink_list.sort()
symlink_regexp = re.compile("^%s/%s" % (re.escape(ISCSI_DEVICE_DIR), re.escape(ISCSI_DEVICE_NAME_TPL % (host, port, iqn))))
pools = kvc.list_active_storage_pool() + kvc.list_inactive_storage_pool()
for pool in pools:
pool_type = kvc.get_storage_pool_type(pool)
if pool_type == "iscsi":
if iqn == kvc.get_storage_pool_sourcedevicepath(pool):
used_pool.append(pool)
pool_objs = kvc.search_kvn_storage_pools(pool)
if pool_objs[0].is_active():
active_used_pool.append(pool)
elif pool_type == "fs":
if symlink_regexp.match(kvc.get_storage_pool_sourcedevicepath(pool)):
used_pool.append(pool)
pool_objs = kvc.search_kvn_storage_pools(pool)
if pool_objs[0].is_active():
active_used_pool.append(pool)
finally:
kvc.close()
for pool in active_used_pool:
stop_pool_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DESTROY_STORAGE_POOL),
{"name" : pool})
stop_pool_cmdname = "Stop Storage Pool"
jobgroup.jobs.append(Job('%s command' % stop_pool_cmdname, 0, stop_pool_cmd))
job_order = 1
for pool in used_pool:
delete_pool_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], VIRT_COMMAND_DELETE_STORAGE_POOL),
{"name" : pool})
delete_pool_cmdname = "Delete Storage Pool"
jobgroup.jobs.append(Job('%s command' % delete_pool_cmdname, job_order, delete_pool_cmd))
job_order = 2
_cmd = dict2command(
"%s/%s" % (karesansui.config['application.bin.dir'], ISCSI_COMMAND_DELETE), options)
jobgroup.jobs.append(Job('%s command' % cmd_name, job_order, _cmd))
host = findbyhost1(self.orm, host_id)
_machine2jobgroup = m2j_new(machine=host,
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()