Пример #1
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ['name', 'status', 'container_format', 'disk_format',
                   'size_min', 'size_max', 'is_public']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    if args.properties:
        property_filter_items = [p.split('=', 1) for p in args.properties]
        filters['properties'] = dict(property_filter_items)

    kwargs = {'filters': filters}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    kwargs['sort_key'] = args.sort_key
    kwargs['sort_dir'] = args.sort_dir
    kwargs['owner'] = args.owner
    if args.all_tenants is True:
        kwargs['is_public'] = None

    images = gc.images.list(**kwargs)

    if args.human_readable:
        def convert_size(image):
            image.size = utils.make_size_human_readable(image.size)
            return image

        images = (convert_size(image) for image in images)

    columns = ['ID', 'Name', 'Disk Format', 'Container Format',
               'Size', 'Status']
    utils.print_list(images, columns)
Пример #2
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ["name", "status", "container_format", "disk_format", "size_min", "size_max", "is_public"]
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    if args.properties:
        property_filter_items = [p.split("=", 1) for p in args.properties]
        filters["properties"] = dict(property_filter_items)

    kwargs = {"filters": filters}
    if args.page_size is not None:
        kwargs["page_size"] = args.page_size

    kwargs["sort_key"] = args.sort_key
    kwargs["sort_dir"] = args.sort_dir
    kwargs["owner"] = args.owner
    if args.all_tenants is True:
        kwargs["is_public"] = None

    images = gc.images.list(**kwargs)

    if args.human_readable:

        def convert_size(image):
            image.size = utils.make_size_human_readable(image.size)
            return image

        images = (convert_size(image) for image in images)

    columns = ["ID", "Name", "Disk Format", "Container Format", "Size", "Status"]
    utils.print_list(images, columns)
Пример #3
0
def do_md_tag_create_multiple(gc, args):
    """Create new metadata definitions tags inside a namespace."""
    delim = args.delim or ','

    tags = []
    names_list = args.names.split(delim)
    for name in names_list:
        name = name.strip()
        if name:
            tags.append(name)

    if not tags:
        utils.exit('Please supply at least one tag name. For example: '
                   '--names Tag1')

    fields = {'tags': tags}
    new_tags = gc.metadefs_tag.create_multiple(args.namespace, **fields)
    columns = ['name']
    column_settings = {
        "description": {
            "max_width": 50,
            "align": "l"
        }
    }
    utils.print_list(new_tags, columns, field_settings=column_settings)
Пример #4
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ["visibility", "member_status", "owner", "checksum", "tag"]
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    if args.properties:
        filter_properties = [prop.split("=", 1) for prop in args.properties]
        if any(len(pair) != 2 for pair in filter_properties):
            utils.exit("Argument --property-filter expected properties in the" " format KEY=VALUE")
        filter_items += filter_properties
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {"filters": filters}
    if args.limit is not None:
        kwargs["limit"] = args.limit
    if args.page_size is not None:
        kwargs["page_size"] = args.page_size

    if args.sort_key:
        kwargs["sort_key"] = args.sort_key
    if args.sort_dir:
        kwargs["sort_dir"] = args.sort_dir
    if args.sort is not None:
        kwargs["sort"] = args.sort
    elif not args.sort_dir and not args.sort_key:
        kwargs["sort_key"] = "name"
        kwargs["sort_dir"] = "asc"

    columns = ["ID", "Name"]

    if args.verbose:
        columns += ["Disk_format", "Container_format", "Size", "Status", "Owner"]

    images = gc.images.list(**kwargs)
    utils.print_list(images, columns)
Пример #5
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ['visibility', 'member_status', 'owner', 'checksum', 'tag']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    if args.properties:
        filter_properties = [prop.split('=', 1) for prop in args.properties]
        if any(len(pair) != 2 for pair in filter_properties):
            utils.exit('Argument --property-filter expected properties in the'
                       ' format KEY=VALUE')
        filter_items += filter_properties
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {'filters': filters}
    if args.limit is not None:
        kwargs['limit'] = args.limit
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    if args.sort_key:
        kwargs['sort_key'] = args.sort_key
    if args.sort_dir:
        kwargs['sort_dir'] = args.sort_dir
    if args.sort is not None:
        kwargs['sort'] = args.sort
    elif not args.sort_dir and not args.sort_key:
        kwargs['sort'] = 'name:asc'

    columns = ['ID', 'Name']

    if args.verbose:
        columns += ['owner', 'status']

    images = gc.images.list(**kwargs)
    utils.print_list(images, columns)
Пример #6
0
    def test_print_list_with_list_no_unicode(self):
        class Struct(object):
            def __init__(self, **entries):
                self.__dict__.update(entries)

        # test for removing 'u' from lists in print_list output
        columns = ['ID', 'Tags']
        images = [Struct(**{'id': 'b8e1c57e-907a-4239-aed8-0df8e54b8d2d',
                  'tags': [u'Name1', u'Tag_123', u'veeeery long']})]
        saved_stdout = sys.stdout
        try:
            sys.stdout = output_list = six.StringIO()
            utils.print_list(images, columns)

        finally:
            sys.stdout = saved_stdout

        self.assertEqual('''\
+--------------------------------------+--------------------------------------+
| ID                                   | Tags                                 |
+--------------------------------------+--------------------------------------+
| b8e1c57e-907a-4239-aed8-0df8e54b8d2d | ['Name1', 'Tag_123', 'veeeery long'] |
+--------------------------------------+--------------------------------------+
''',
                         output_list.getvalue())
Пример #7
0
def do_image_list(gc, args):
    """List images you can access."""
    kwargs = {}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size
    images = gc.images.list(**kwargs)
    columns = ['ID', 'Name']
    utils.print_list(images, columns)
Пример #8
0
def do_member_create(gc, args):
    """Create member for a given image."""
    if not (args.image_id and args.member_id):
        utils.exit("Unable to create member. Specify image_id and member_id")
    else:
        member = gc.image_members.create(args.image_id, args.member_id)
        member = [member]
        columns = ["Image ID", "Member ID", "Status"]
        utils.print_list(member, columns)
Пример #9
0
def do_member_update(gc, args):
    """Update the status of a member for a given image."""
    if not (args.image_id and args.member_id and args.member_status):
        utils.exit("Unable to update member. Specify image_id, member_id and" " member_status")
    else:
        member = gc.image_members.update(args.image_id, args.member_id, args.member_status)
        member = [member]
        columns = ["Image ID", "Member ID", "Status"]
        utils.print_list(member, columns)
Пример #10
0
    def test_prettytable(self):
        class Struct(object):
            def __init__(self, **entries):
                self.__dict__.update(entries)

        # test that the prettytable output is wellformatted (left-aligned)
        columns = ["ID", "Name"]
        val = ["Name1", "another", "veeeery long"]
        images = [Struct(**{"id": i ** 16, "name": val[i]}) for i in range(len(val))]

        saved_stdout = sys.stdout
        try:
            sys.stdout = output_list = six.StringIO()
            utils.print_list(images, columns)

            sys.stdout = output_dict = six.StringIO()
            utils.print_dict(
                {
                    "K": "k",
                    "Key": "veeeeeeeeeeeeeeeeeeeeeeee"
                    "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
                    "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
                    "eeeeeeeeeeeery long value",
                },
                max_column_width=60,
            )

        finally:
            sys.stdout = saved_stdout

        self.assertEqual(
            """\
+-------+--------------+
| ID    | Name         |
+-------+--------------+
|       | Name1        |
| 1     | another      |
| 65536 | veeeery long |
+-------+--------------+
""",
            output_list.getvalue(),
        )

        self.assertEqual(
            """\
+----------+--------------------------------------------------------------+
| Property | Value                                                        |
+----------+--------------------------------------------------------------+
| K        | k                                                            |
| Key      | veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee |
|          | eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee |
|          | ery long value                                               |
+----------+--------------------------------------------------------------+
""",
            output_dict.getvalue(),
        )
Пример #11
0
def do_explain(gc, args):
    """Describe a specific model."""
    try:
        schema = gc.schemas.get(args.model)
    except exc.HTTPNotFound:
        utils.exit("Unable to find requested model '%s'" % args.model)
    else:
        formatters = {"Attribute": lambda m: m.name}
        columns = ["Attribute", "Description"]
        utils.print_list(schema.properties, columns, formatters)
Пример #12
0
def do_explain(gc, args):
    """Describe a specific model."""
    try:
        schema = gc.schemas.get(args.model)
    except exc.SchemaNotFound:
        utils.exit('Unable to find requested model \'%s\'' % args.model)
    else:
        formatters = {'Attribute': lambda m: m.name}
        columns = ['Attribute', 'Description']
        utils.print_list(schema.properties, columns, formatters)
Пример #13
0
def do_image_tag_update(gc, args):
    """Update an image with the given tag."""
    if not (args.image_id and args.tag_value):
        utils.exit("Unable to update tag. Specify image_id and tag_value")
    else:
        gc.image_tags.update(args.image_id, args.tag_value)
        image = gc.images.get(args.image_id)
        image = [image]
        columns = ["ID", "Tags"]
        utils.print_list(image, columns)
Пример #14
0
def do_md_tag_list(gc, args):
    """List metadata definitions tags inside a specific namespace."""
    tags = gc.metadefs_tag.list(args.namespace)
    columns = ['name']
    column_settings = {
        "description": {
            "max_width": 50,
            "align": "l"
        }
    }
    utils.print_list(tags, columns, field_settings=column_settings)
Пример #15
0
def do_md_object_list(gc, args):
    """List metadata definitions objects inside a specific namespace."""
    objects = gc.metadefs_object.list(args.namespace)
    columns = ['name', 'description']
    column_settings = {
        "description": {
            "max_width": 50,
            "align": "l"
        }
    }
    utils.print_list(objects, columns, field_settings=column_settings)
Пример #16
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ['visibility', 'member_status', 'owner', 'checksum', 'tag']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {'filters': filters}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    images = gc.images.list(**kwargs)
    columns = ['ID', 'Name']
    utils.print_list(images, columns)
Пример #17
0
def do_md_namespace_list(gc, args):
    """List metadata definitions namespaces."""
    filter_keys = ["resource_types", "visibility"]
    filter_items = [(key, getattr(args, key, None)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {"filters": filters}
    if args.page_size is not None:
        kwargs["page_size"] = args.page_size

    namespaces = gc.metadefs_namespace.list(**kwargs)
    columns = ["namespace"]
    utils.print_list(namespaces, columns)
    def print_images(self):
        columns = ['ID', 'Name', 'Disk Format',
                   'Container Format', 'Size', 'Status']
        tenant_images = self.glance.image_list(owner=self.glance.project_id)
        snapshots = []
        images = []
        for image in tenant_images:
            if 'image_type' in image.properties:
                if image.properties['image_type'] == "snapshot":
                    snapshots.append(image)
            else:
                images.append(image)
        print('\n\nTENANT IMAGES')
        glance_utils.print_list(images, columns)

        print('\n\nTENANT SNAPSHOTS')
        glance_utils.print_list(snapshots, columns)

        tenant_images = self.glance.image_list()
        shared_images_ids = \
            self.glance.image_member_list(self.glance.project_id)

        print('\n\nSHARED IMAGES')
        tenant_images_1 = []
        for simg in shared_images_ids:
            for img in tenant_images:
                if img.id == simg.image_id:
                    tenant_images_1.append(img)
        glance_utils.print_list(tenant_images_1, columns)

        print('\n\nALL AVAILABLE IMAGES')
        tenant_images = self.glance.image_list()
        glance_utils.print_list(tenant_images, columns)
Пример #19
0
def do_member_list(gc, args):
    if args.image_id and args.tenant_id:
        print 'Unable to filter members by both --image-id and --tenant-id.'
        sys.exit(1)
    elif args.image_id:
        kwargs = {'image': args.image_id}
    elif args.tenant_id:
        kwargs = {'member': args.tenant_id}
    else:
        print 'Unable to list all members. Specify --image-id or --tenant-id'
        sys.exit(1)

    members = gc.image_members.list(**kwargs)
    columns = ['Image ID', 'Member ID', 'Can Share']
    utils.print_list(members, columns)
Пример #20
0
def do_image_list(gc, args):
    """List images."""
    filter_keys = ['name', 'status', 'container_format', 'disk_format',
               'size_min', 'size_max']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    if args.properties:
        property_filter_items = [p.split('=', 1) for p in args.properties]
        filters['properties'] = dict(property_filter_items)

    images = gc.images.list(filters=filters)
    columns = ['ID', 'Name', 'Disk Format', 'Container Format',
               'Size', 'Status']
    utils.print_list(images, columns)
Пример #21
0
    def test_prettytable(self):
        class Struct(object):
            def __init__(self, **entries):
                self.__dict__.update(entries)

        # test that the prettytable output is wellformatted (left-aligned)
        columns = ['ID', 'Name']
        val = ['Name1', 'another', 'veeeery long']
        images = [Struct(**{'id': i ** 16, 'name': val[i]})
                  for i in range(len(val))]

        saved_stdout = sys.stdout
        try:
            sys.stdout = output_list = six.StringIO()
            utils.print_list(images, columns)

            sys.stdout = output_dict = six.StringIO()
            utils.print_dict({'K': 'k', 'Key': 'veeeeeeeeeeeeeeeeeeeeeeee'
                              'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
                              'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
                              'eeeeeeeeeeeery long value'},
                             max_column_width=60)

        finally:
            sys.stdout = saved_stdout

        self.assertEqual('''\
+-------+--------------+
| ID    | Name         |
+-------+--------------+
|       | Name1        |
| 1     | another      |
| 65536 | veeeery long |
+-------+--------------+
''',
                         output_list.getvalue())

        self.assertEqual('''\
+----------+--------------------------------------------------------------+
| Property | Value                                                        |
+----------+--------------------------------------------------------------+
| K        | k                                                            |
| Key      | veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee |
|          | eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee |
|          | ery long value                                               |
+----------+--------------------------------------------------------------+
''',
                         output_dict.getvalue())
Пример #22
0
def do_member_list(gc, args):
    """Describe sharing permissions by image or tenant."""
    if args.image_id and args.tenant_id:
        print("Unable to filter members by both --image-id and --tenant-id.")
        sys.exit(1)
    elif args.image_id:
        kwargs = {"image": args.image_id}
    elif args.tenant_id:
        kwargs = {"member": args.tenant_id}
    else:
        print("Unable to list all members. Specify --image-id or --tenant-id")
        sys.exit(1)

    members = gc.image_members.list(**kwargs)
    columns = ["Image ID", "Member ID", "Can Share"]
    utils.print_list(members, columns)
Пример #23
0
def do_member_list(gc, args):
    """Describe sharing permissions by image or tenant."""
    if args.image_id and args.tenant_id:
        utils.exit('Unable to filter members by both --image-id and'
                   ' --tenant-id.')
    elif args.image_id:
        kwargs = {'image': args.image_id}
    elif args.tenant_id:
        kwargs = {'member': args.tenant_id}
    else:
        utils.exit('Unable to list all members. Specify --image-id or'
                   ' --tenant-id')

    members = gc.image_members.list(**kwargs)
    columns = ['Image ID', 'Member ID', 'Can Share']
    utils.print_list(members, columns)
Пример #24
0
def do_member_list(gc, args):
    """Describe sharing permissions by image or tenant."""
    if args.image_id and args.tenant_id:
        utils.exit('Unable to filter members by both --image-id and'
                   ' --tenant-id.')
    elif args.image_id:
        kwargs = {'image': args.image_id}
    elif args.tenant_id:
        kwargs = {'member': args.tenant_id}
    else:
        utils.exit('Unable to list all members. Specify --image-id or'
                   ' --tenant-id')

    members = gc.image_members.list(**kwargs)
    columns = ['Image ID', 'Member ID', 'Can Share']
    utils.print_list(members, columns)
Пример #25
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ['visibility', 'member_status', 'owner', 'checksum', 'tag']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    if args.properties:
        filter_properties = [prop.split('=', 1) for prop in args.properties]
        if any(len(pair) != 2 for pair in filter_properties):
            utils.exit('Argument --property-filter expected properties in the'
                       ' format KEY=VALUE')
        filter_items += filter_properties
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {'filters': filters}
    if args.limit is not None:
        kwargs['limit'] = args.limit
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    if args.sort_key:
        kwargs['sort_key'] = args.sort_key
    if args.sort_dir:
        kwargs['sort_dir'] = args.sort_dir
    if args.sort is not None:
        kwargs['sort'] = args.sort
    elif not args.sort_dir and not args.sort_key:
        kwargs['sort_key'] = 'name'
        kwargs['sort_dir'] = 'asc'

    columns = ['ID', 'Name']

    if args.verbose:
        columns += [
            'Store', 'Disk_format', 'Container_format', 'Size', 'Status',
            'Cache Size', 'Raw Cache', 'Owner'
        ]

    images = gc.images.list(**kwargs)

    def add_attributes(image):
        image.raw_cache = getattr(image, "cache_raw_status", "")
        image.cache_size = getattr(image, "cache_raw_size", "")
        return image

    images = (add_attributes(image) for image in images)

    utils.print_list(images, columns)
Пример #26
0
def do_task_list(gc, args):
    """List tasks you can access."""
    filter_keys = ['type', 'status']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {'filters': filters}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    kwargs['sort_key'] = args.sort_key
    kwargs['sort_dir'] = args.sort_dir

    tasks = gc.tasks.list(**kwargs)

    columns = ['ID', 'Type', 'Status', 'Owner']
    utils.print_list(tasks, columns)
    def test_prettytable(self):
        class Struct:
            def __init__(self, **entries):
                self.__dict__.update(entries)

        # test that the prettytable output is wellformatted (left-aligned)
        columns = ['ID', 'Name']
        val = ['Name1', 'another', 'veeeery long']
        images = [
            Struct(**{
                'id': i**16,
                'name': val[i]
            }) for i in range(len(val))
        ]

        saved_stdout = sys.stdout
        try:
            sys.stdout = output_list = StringIO.StringIO()
            utils.print_list(images, columns)

            sys.stdout = output_dict = StringIO.StringIO()
            utils.print_dict({'K': 'k', 'Key': 'Value'})

        finally:
            sys.stdout = saved_stdout

        self.assertEqual(
            output_list.getvalue(), '''\
+-------+--------------+
| ID    | Name         |
+-------+--------------+
|       | Name1        |
| 1     | another      |
| 65536 | veeeery long |
+-------+--------------+
''')

        self.assertEqual(
            output_dict.getvalue(), '''\
+----------+-------+
| Property | Value |
+----------+-------+
| K        | k     |
| Key      | Value |
+----------+-------+
''')
Пример #28
0
def do_task_list(gc, args):
    """List tasks you can access."""
    filter_keys = ['type', 'status']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {'filters': filters}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    kwargs['sort_key'] = args.sort_key
    kwargs['sort_dir'] = args.sort_dir

    tasks = gc.tasks.list(**kwargs)

    columns = ['ID', 'Type', 'Status', 'Owner']
    utils.print_list(tasks, columns)
Пример #29
0
def do_task_list(gc, args):
    """List tasks you can access."""
    filter_keys = ["type", "status"]
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {"filters": filters}
    if args.page_size is not None:
        kwargs["page_size"] = args.page_size

    kwargs["sort_key"] = args.sort_key
    kwargs["sort_dir"] = args.sort_dir

    tasks = gc.tasks.list(**kwargs)

    columns = ["ID", "Type", "Status", "Owner"]
    utils.print_list(tasks, columns)
Пример #30
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ['name', 'status', 'container_format', 'disk_format',
               'size_min', 'size_max']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    if args.properties:
        property_filter_items = [p.split('=', 1) for p in args.properties]
        filters['properties'] = dict(property_filter_items)

    kwargs = {'filters': filters}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size
    images = gc.images.list(**kwargs)
    columns = ['ID', 'Name', 'Disk Format', 'Container Format',
               'Size', 'Status']
    utils.print_list(images, columns)
Пример #31
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = [
        'name', 'status', 'container_format', 'disk_format', 'size_min',
        'size_max', 'is_public', 'changes_since'
    ]
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    filters = dict([item for item in filter_items if item[1] is not None])

    if 'changes_since' in filters:
        filters['changes-since'] = filters.pop('changes_since')

    if args.properties:
        property_filter_items = [p.split('=', 1) for p in args.properties]
        if any(len(pair) != 2 for pair in property_filter_items):
            utils.exit('Argument --property-filter requires properties in the'
                       ' format KEY=VALUE')

        filters['properties'] = dict(property_filter_items)

    kwargs = {'filters': filters}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    kwargs['sort_key'] = args.sort_key
    kwargs['sort_dir'] = args.sort_dir
    kwargs['owner'] = args.owner
    if args.all_tenants is True:
        kwargs['is_public'] = None

    images = gc.images.list(**kwargs)

    if args.human_readable:

        def convert_size(image):
            image.size = utils.make_size_human_readable(image.size)
            return image

        images = (convert_size(image) for image in images)

    columns = [
        'ID', 'Name', 'Disk Format', 'Container Format', 'Size', 'Status'
    ]
    utils.print_list(images, columns)
Пример #32
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ['visibility', 'member_status', 'owner', 'checksum', 'tag']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    if args.properties:
        filter_properties = [prop.split('=', 1) for prop in args.properties]
        if False in (len(pair) == 2 for pair in filter_properties):
            utils.exit('Argument --property-filter expected properties in the'
                       ' format KEY=VALUE')
        filter_items += filter_properties
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {'filters': filters}
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    images = gc.images.list(**kwargs)
    columns = ['ID', 'Name']
    utils.print_list(images, columns)
Пример #33
0
def do_md_tag_create_multiple(gc, args):
    """Create new metadata definitions tags inside a namespace."""
    delim = args.delim or ','

    tags = []
    names_list = args.names.split(delim)
    for name in names_list:
        name = name.strip()
        if name:
            tags.append(name)

    if not tags:
        utils.exit('Please supply at least one tag name. For example: '
                   '--names Tag1')

    fields = {'tags': tags}
    new_tags = gc.metadefs_tag.create_multiple(args.namespace, **fields)
    columns = ['name']
    column_settings = {"description": {"max_width": 50, "align": "l"}}
    utils.print_list(new_tags, columns, field_settings=column_settings)
Пример #34
0
def do_image_list(gc, args):
    """List images you can access."""
    filter_keys = ['visibility', 'member_status', 'owner', 'checksum', 'tag']
    filter_items = [(key, getattr(args, key)) for key in filter_keys]
    if args.properties:
        filter_properties = [prop.split('=', 1) for prop in args.properties]
        if False in (len(pair) == 2 for pair in filter_properties):
            utils.exit('Argument --property-filter expected properties in the'
                       ' format KEY=VALUE')
        filter_items += filter_properties
    filters = dict([item for item in filter_items if item[1] is not None])

    kwargs = {'filters': filters}
    if args.limit is not None:
        kwargs['limit'] = args.page_size
    if args.page_size is not None:
        kwargs['page_size'] = args.page_size

    images = gc.images.list(**kwargs)
    columns = ['ID', 'Name']
    utils.print_list(images, columns)
Пример #35
0
def do_md_tag_list(gc, args):
    """List metadata definitions tags inside a specific namespace."""
    tags = gc.metadefs_tag.list(args.namespace)
    columns = ['name']
    column_settings = {"description": {"max_width": 50, "align": "l"}}
    utils.print_list(tags, columns, field_settings=column_settings)
Пример #36
0
def do_md_property_list(gc, args):
    """List metadata definitions properties inside a specific namespace."""
    properties = gc.metadefs_property.list(args.namespace)
    columns = ["name", "title", "type"]
    utils.print_list(properties, columns)
Пример #37
0
def do_md_namespace_resource_type_list(gc, args):
    """List resource types associated to specific namespace."""
    resource_types = gc.metadefs_resource_type.get(args.namespace)
    utils.print_list(resource_types, ["name", "prefix", "properties_target"])
Пример #38
0
def do_md_resource_type_list(gc, args):
    """List available resource type names."""
    resource_types = gc.metadefs_resource_type.list()
    utils.print_list(resource_types, ["name"])
Пример #39
0
def do_md_property_list(gc, args):
    """List metadata definitions properties inside a specific namespace."""
    properties = gc.metadefs_property.list(args.namespace)
    columns = ['name', 'title', 'type']
    utils.print_list(properties, columns)
Пример #40
0
def do_md_namespace_resource_type_list(gc, args):
    """List resource types associated to specific namespace."""
    resource_types = gc.metadefs_resource_type.get(args.namespace)
    utils.print_list(resource_types, ['name', 'prefix', 'properties_target'])
Пример #41
0
def do_explain(gc, args):
    """Describe a specific model."""
    schema = gc.schemas.get(args.name)
    columns = ['Name', 'Description']
    utils.print_list(schema.properties, columns)
Пример #42
0
def do_member_list(gc, args):
    """Describe sharing permissions by image."""

    members = gc.image_members.list(args.image_id)
    columns = ["Image ID", "Member ID", "Status"]
    utils.print_list(members, columns)
Пример #43
0
def do_md_resource_type_list(gc, args):
    """List available resource type names."""
    resource_types = gc.metadefs_resource_type.list()
    utils.print_list(resource_types, ['name'])
Пример #44
0
def do_image_list(gc, args):
    """List images."""
    images = gc.images.list()
    columns = ['ID', 'Name']
    utils.print_list(images, columns)
Пример #45
0
def do_member_list(gc, args):
    """Describe sharing permissions by image."""

    members = gc.image_members.list(args.image_id)
    columns = ['Image ID', 'Member ID', 'Status']
    utils.print_list(members, columns)
Пример #46
0
def do_md_object_list(gc, args):
    """List metadata definitions objects inside a specific namespace."""
    objects = gc.metadefs_object.list(args.namespace)
    columns = ['name', 'description']
    column_settings = {"description": {"max_width": 50, "align": "l"}}
    utils.print_list(objects, columns, field_settings=column_settings)