本文整理汇总了Python中rbd.RBD.namespace_exists方法的典型用法代码示例。如果您正苦于以下问题:Python RBD.namespace_exists方法的具体用法?Python RBD.namespace_exists怎么用?Python RBD.namespace_exists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rbd.RBD
的用法示例。
在下文中一共展示了RBD.namespace_exists方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: refresh_rbd_stats_pools
# 需要导入模块: from rbd import RBD [as 别名]
# 或者: from rbd.RBD import namespace_exists [as 别名]
def refresh_rbd_stats_pools(self, pools):
self.log.debug('refreshing rbd pools %s' % (pools))
rbd = RBD()
counters_info = self.rbd_stats['counters_info']
for pool_name, cfg_ns_names in pools.items():
try:
pool_id = self.rados.pool_lookup(pool_name)
with self.rados.open_ioctx(pool_name) as ioctx:
if pool_id not in self.rbd_stats['pools']:
self.rbd_stats['pools'][pool_id] = {'images': {}}
pool = self.rbd_stats['pools'][pool_id]
pool['name'] = pool_name
pool['ns_names'] = cfg_ns_names
if cfg_ns_names:
nspace_names = list(cfg_ns_names)
else:
nspace_names = [''] + rbd.namespace_list(ioctx)
for nspace_name in pool['images']:
if nspace_name not in nspace_names:
del pool['images'][nspace_name]
for nspace_name in nspace_names:
if (nspace_name and
not rbd.namespace_exists(ioctx, nspace_name)):
self.log.debug('unknown namespace %s for pool %s' %
(nspace_name, pool_name))
continue
ioctx.set_namespace(nspace_name)
if nspace_name not in pool['images']:
pool['images'][nspace_name] = {}
namespace = pool['images'][nspace_name]
images = {}
for image_meta in RBD().list2(ioctx):
image = {'n': image_meta['name']}
image_id = image_meta['id']
if image_id in namespace:
image['c'] = namespace[image_id]['c']
else:
image['c'] = [[0, 0] for x in counters_info]
images[image_id] = image
pool['images'][nspace_name] = images
except Exception as e:
self.log.error('failed listing pool %s: %s' % (pool_name, e))
self.rbd_stats['pools_refresh_time'] = time.time()