Beispiel #1
0
    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))
Beispiel #5
0
    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)))
Beispiel #6
0
 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