def take_action(self, parsed_args): from oio.common.easy_value import convert_size self.log.debug('take_action(%s)', parsed_args) account = self.app.client_manager.account self.take_action_container(parsed_args) # The command is named 'show' but we must call # container_get_properties() because container_show() does # not return system properties (and we need them). data = self.app.client_manager.storage.container_get_properties( account, parsed_args.container, cid=parsed_args.cid, admin_mode=True) sys = data['system'] ctime = float(sys[M2_PROP_CTIME]) / 1000000. bytes_usage = sys.get(M2_PROP_USAGE, 0) objects = sys.get(M2_PROP_OBJECTS, 0) damaged_objects = sys.get(M2_PROP_DAMAGED_OBJECTS, 0) missing_chunks = sys.get(M2_PROP_MISSING_CHUNKS, 0) if parsed_args.formatter == 'table': ctime = int(ctime) bytes_usage = convert_size(int(bytes_usage), unit="B") objects = convert_size(int(objects)) info = { 'account': sys['sys.account'], 'base_name': sys['sys.name'], 'container': sys['sys.user.name'], 'ctime': ctime, 'bytes_usage': bytes_usage, 'quota': sys.get(M2_PROP_QUOTA, "Namespace default"), 'objects': objects, 'damaged_objects': damaged_objects, 'missing_chunks': missing_chunks, 'storage_policy': sys.get(M2_PROP_STORAGE_POLICY, "Namespace default"), 'max_versions': sys.get(M2_PROP_VERSIONING_POLICY, "Namespace default"), 'status': OIO_DB_STATUS_NAME.get(sys.get('sys.status'), "Unknown"), } for k in ('stats.page_count', 'stats.freelist_count', 'stats.page_size'): info[k] = sys.get(k) wasted = (float_value(info['stats.freelist_count'], 0) / float_value(info['stats.page_count'], 1)) wasted_bytes = (int_value(info['stats.freelist_count'], 0) * int_value(info['stats.page_size'], 0)) info['stats.space_wasted'] = "%5.2f%% (est. %s)" % \ (wasted * 100, convert_size(wasted_bytes)) bucket = sys.get(M2_PROP_BUCKET_NAME, None) if bucket is not None: info['bucket'] = bucket delete_exceeding = sys.get(M2_PROP_DEL_EXC_VERSIONS, None) if delete_exceeding is not None: info['delete_exceeding_versions'] = delete_exceeding != '0' for k, v in iteritems(data['properties']): info['meta.' + k] = v return list(zip(*sorted(info.items())))
def test_convert_size(self): size = convert_size(0) self.assertEqual(size, "0") size = convert_size(42) self.assertEqual(size, "42") size = convert_size(1000) self.assertEqual(size, "1.0K") size = convert_size(0, unit="B") self.assertEqual(size, "0B")
def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) data = self.app.client_manager.storage.account_show( account=parsed_args.account) data['account'] = data['id'] del data['id'] if parsed_args.formatter == 'table': from oio.common.easy_value import convert_size data['ctime'] = int(float(data.get('ctime', 0))) data['bytes'] = convert_size(int(data.get('bytes', 0)), unit="B") data['objects'] = convert_size(int(data.get('objects', 0))) return list(zip(*sorted(data.items())))
def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) account = self.app.client_manager.account self.take_action_container(parsed_args) # The command is named 'show' but we must call # container_get_properties() because container_show() does # not return system properties (and we need them). data = self.app.client_manager.storage.container_get_properties( account, parsed_args.container, cid=parsed_args.cid ) sys = data['system'] ctime = float(sys['sys.m2.ctime']) / 1000000. bytes_usage = sys.get('sys.m2.usage', 0) objects = sys.get('sys.m2.objects', 0) damaged_objects = sys.get('sys.m2.objects.damaged', 0) missing_chunks = sys.get('sys.m2.chunks.missing', 0) if parsed_args.formatter == 'table': from oio.common.easy_value import convert_size ctime = int(ctime) bytes_usage = convert_size(int(bytes_usage), unit="B") objects = convert_size(int(objects)) info = { 'account': sys['sys.account'], 'base_name': sys['sys.name'], 'container': sys['sys.user.name'], 'ctime': ctime, 'bytes_usage': bytes_usage, 'quota': sys.get('sys.m2.quota', "Namespace default"), 'objects': objects, 'damaged_objects': damaged_objects, 'missing_chunks': missing_chunks, 'storage_policy': sys.get('sys.m2.policy.storage', "Namespace default"), 'max_versions': sys.get('sys.m2.policy.version', "Namespace default"), 'status': OIO_DB_STATUS_NAME.get(sys.get('sys.status'), "Unknown"), } delete_exceeding = sys.get('sys.m2.policy.version.delete_exceeding', None) if delete_exceeding is not None: info['delete_exceeding_versions'] = delete_exceeding != '0' for k, v in data['properties'].iteritems(): info['meta.' + k] = v return zip(*sorted(info.iteritems()))
def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) reqid = request_id(prefix='CLI-BUCKET-') acct_client = self.app.client_manager.storage.account data = acct_client.bucket_show(parsed_args.bucket, reqid=reqid) if parsed_args.formatter == 'table': from oio.common.easy_value import convert_size data['bytes'] = convert_size(data['bytes']) data['mtime'] = Timestamp(data.get('mtime', 0.0)).isoformat return zip(*sorted(data.items()))
def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) account = self.app.client_manager.account # The command is named 'show' but we must call # container_get_properties() because container_show() does # not return system properties (and we need them). data = self.app.client_manager.storage.container_get_properties( account, parsed_args.container) sys = data['system'] ctime = float(sys['sys.m2.ctime']) / 1000000. bytes_usage = sys.get('sys.m2.usage', 0) objects = sys.get('sys.m2.objects', 0) if parsed_args.formatter == 'table': from oio.common.easy_value import convert_size ctime = int(ctime) bytes_usage = convert_size(int(bytes_usage), unit="B") objects = convert_size(int(objects)) info = { 'account': sys['sys.account'], 'base_name': sys['sys.name'], 'container': sys['sys.user.name'], 'ctime': ctime, 'bytes_usage': bytes_usage, 'quota': sys.get('sys.m2.quota', "Namespace default"), 'objects': objects, 'storage_policy': sys.get('sys.m2.policy.storage', "Namespace default"), 'max_versions': sys.get('sys.m2.policy.version', "Namespace default"), } for k, v in data['properties'].iteritems(): info['meta.' + k] = v return zip(*sorted(info.iteritems()))
def take_action(self, parsed_args): self.log.debug('take_action(%s)', parsed_args) reqid = request_id(prefix='CLI-BUCKET-') acct_client = self.app.client_manager.storage.account metadata = dict() if parsed_args.replicate is not None: metadata[BUCKET_PROP_REPLI_ENABLED] = str(parsed_args.replicate) data = acct_client.bucket_update(parsed_args.bucket, metadata=metadata, to_delete=None, reqid=reqid) if parsed_args.formatter == 'table': from oio.common.easy_value import convert_size data['bytes'] = convert_size(data['bytes']) data['mtime'] = Timestamp(data.get('mtime', 0.0)).isoformat return zip(*sorted(data.items()))