def human_readable(self): """Return a formatted visibility string :rtype: A string formatted to public/private """ if self._value: return utils.format_size(self._value) else: return ''
def take_action(self, parsed_args): image_client = self.app.client_manager.image image = utils.find_resource( image_client.images, parsed_args.image, ) if parsed_args.human_readable: image['size'] = utils.format_size(image['size']) info = _format_image(image) return zip(*sorted(six.iteritems(info)))
def take_action(self, parsed_args): image_client = self.app.client_manager.image image = utils.find_resource( image_client.images, parsed_args.image, ) if parsed_args.human_readable: image['size'] = utils.format_size(image['size']) info = _format_image(image) return zip(*sorted(six.iteritems(info)))
def test_format_size(self): self.assertEqual("999", utils.format_size(999)) self.assertEqual("100K", utils.format_size(100000)) self.assertEqual("2M", utils.format_size(2000000)) self.assertEqual("16.4M", utils.format_size(16361280)) self.assertEqual("1.6G", utils.format_size(1576395005)) self.assertEqual("0", utils.format_size(None))
def take_action(self, parsed_args): image_client = self.app.client_manager.image image = utils.find_resource( image_client.images, parsed_args.image, ) info = {} info.update(image._info) if parsed_args.human_readable: if 'size' in info: info['size'] = utils.format_size(info['size']) info['properties'] = utils.format_dict(info.get('properties', {})) return zip(*sorted(six.iteritems(info)))
def test_format_size(self): self.assertEqual("999", utils.format_size(999)) self.assertEqual("100K", utils.format_size(100000)) self.assertEqual("2M", utils.format_size(2000000)) self.assertEqual( "16.4M", utils.format_size(16361280) ) self.assertEqual( "1.6G", utils.format_size(1576395005) ) self.assertEqual("0", utils.format_size(None))
def _format_image(image, human_readable=False): """Format an image to make it more consistent with OSC operations.""" info = {} properties = {} # the only fields we're not including is "links", "tags" and the properties fields_to_show = [ 'status', 'name', 'container_format', 'created_at', 'size', 'disk_format', 'updated_at', 'visibility', 'min_disk', 'protected', 'id', 'file', 'checksum', 'owner', 'virtual_size', 'min_ram', 'schema' ] # TODO(gtema/anybody): actually it should be possible to drop this method, # since SDK already delivers a proper object image = image.to_dict(ignore_none=True, original_names=True) # split out the usual key and the properties which are top-level for key in image: if key in fields_to_show: info[key] = image.get(key) elif key == 'tags': continue # handle this later elif key == 'properties': # NOTE(gtema): flatten content of properties properties.update(image.get(key)) elif key != 'location': properties[key] = image.get(key) if human_readable: info['size'] = utils.format_size(image['size']) # format the tags if they are there info['tags'] = format_columns.ListColumn(image.get('tags')) # add properties back into the dictionary as a top-level key if properties: info['properties'] = format_columns.DictColumn(properties) return info