本文整理汇总了Python中swift.common.ring.RingBuilder.get_ring方法的典型用法代码示例。如果您正苦于以下问题:Python RingBuilder.get_ring方法的具体用法?Python RingBuilder.get_ring怎么用?Python RingBuilder.get_ring使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类swift.common.ring.RingBuilder
的用法示例。
在下文中一共展示了RingBuilder.get_ring方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: remake_rings
# 需要导入模块: from swift.common.ring import RingBuilder [as 别名]
# 或者: from swift.common.ring.RingBuilder import get_ring [as 别名]
def remake_rings(partpower=16, weight=100, replicas=3, min_part_hours=1, drives=False):
for service in ['object', 'container', 'account']:
builder_file = '/etc/swift/%s.builder' % service
ring_file = '/etc/swift/%s.ring.gz' % service
try:
os.remove(builder_file)
os.remove(ring_file)
except OSError:
pass
builder = RingBuilder(partpower, replicas, min_part_hours)
builder.save(builder_file)
devstrs = _get_builder_strings(service, drives)
for devstr in devstrs:
new_dev = _parse_add_values(devstr, str(weight))
builder.add_dev(new_dev[0])
builder.save(builder_file)
builder.rebalance(builder_file)
builder.get_ring().save(ring_file)
示例2: write_ring
# 需要导入模块: from swift.common.ring import RingBuilder [as 别名]
# 或者: from swift.common.ring.RingBuilder import get_ring [as 别名]
def write_ring(args, devices, builderfile):
# Make an educated guess about the used port. These are the defaults for
# TripleO-based deployments in Mitaka
builder_fname = os.path.basename(builderfile)
if 'account' in builder_fname:
port = 6002
elif 'container' in builder_fname:
port = 6001
elif 'object' in builder_fname:
port = 6000
else:
port = 6000
logging.debug('Set port for new devices to %d' % port)
if not os.path.isfile(builderfile):
logging.info(
'%s not found, creating new builder file', builderfile)
rb = RingBuilder(args.part_power, args.replicas, args.min_part_hours)
else:
logging.info('Using existing builder file %s', builderfile)
rb = RingBuilder.load(builderfile)
# Add all missing devices
for dev in devices:
_dev = rb.search_devs({'meta': dev['meta']})
if not _dev:
dev['weight'] = float(dev.get('size')) / 10**9
dev['region'] = 1
dev['zone'] = 1
dev['port'] = port
dev['replication_ip'] = dev['ip']
dev['replication_port'] = dev['port']
rb.add_dev(dev)
logging.info('Added device %s / %s', dev['ip'], dev['device'])
else:
logging.info(
'Ignoring existing device %s / %s', dev['ip'], dev['device'])
try:
rb.rebalance()
except RingValidationError as exc:
logging.error(exc)
rb.save(builderfile)
ring_file = os.path.splitext(builderfile)[0] + '.ring.gz'
ring_data = rb.get_ring()
ring_data.save(ring_file)
return [builderfile, ring_file]