Exemplo n.º 1
0
def action_list():
    ksclient = Keystone(options.config, debug=options.debug, log=logger)
    status = 'deactivated' if options.deactive else 'active'
    filters = {'status': status, 'visibility': options.visibility, 'tag': tags}
    logger.debug('=> filter: %s' % filters)
    images = glclient.get_images(filters=filters)
    out_image = {'header': 'Image list (id, name, created_at)'}
    if options.format == 'text':
        printer.output_dict(out_image)
    count = 0
    for image in images:
        out_image = {'name': image.name, 'created': image.created_at, 'id': image.id}
        if options.detailed and image.visibility == 'private':
            access = glclient.get_access(image.id)
            if access:
                access_list = list()
                for member in access:
                    project = ksclient.get_by_id('project', member['member_id'])
                    if project:
                        access_list.append(project.name)
                out_image['projects'] = access_list
        if options.detailed and hasattr(image, 'depricated'):
            out_image['depricated'] = image.depricated
        if options.detailed:
            out_image['tags'] = image.tags
        one_line = False if options.detailed else True
        printer.output_dict(out_image, sort=True, one_line=one_line)
        count += 1
    out_image = {'header': 'Image count', 'count': count}
    printer.output_dict(out_image)
Exemplo n.º 2
0
def action_list():
    ksclient = Keystone(options.config, debug=options.debug, log=logger)
    status = 'deactivated' if options.deactive else 'active'
    filters = {'status': status, 'visibility': options.visibility, 'tag': tags}
    logger.debug('=> filter: %s' % filters)
    images = glclient.get_images(filters=filters)
    out_image = {'header': 'Image list (id, name, created_at)'}
    if options.format == 'text':
        printer.output_dict(out_image)
    count = 0
    for image in images:
        out_image = {
            'name': image.name,
            'created': image.created_at,
            'id': image.id
        }
        if options.detailed and image.visibility == 'private':
            access = glclient.get_access(image.id)
            if access:
                access_list = list()
                for member in access:
                    project = ksclient.get_by_id('project',
                                                 member['member_id'])
                    if project:
                        access_list.append(project.name)
                out_image['projects'] = access_list
        if options.detailed and hasattr(image, 'depricated'):
            out_image['depricated'] = image.depricated
        if options.detailed:
            out_image['tags'] = image.tags
        one_line = False if options.detailed else True
        printer.output_dict(out_image, sort=True, one_line=one_line)
        count += 1
    out_image = {'header': 'Image count', 'count': count}
    printer.output_dict(out_image)
Exemplo n.º 3
0
    def prettyprint_project_instances(project, options, logger, regions):
        out_str = ''
        instances_total = 0
        instances = dict()

        # Get Instances
        for region in regions:
            # Initiate Nova object
            nc = utils.get_client(Nova, options, logger, region)

            # Get a list of instances in project
            instances[region] = nc.get_project_instances(project_id=project.id)
            for instance in instances[region]:
                instances_total += 1

        # Print Instances table
        if instances_total > 0:
            kc = Keystone(options.config, debug=options.debug)
            kc.set_dry_run(options.dry_run)
            kc.set_domain(options.domain)

            table_instances = PrettyTable()
            table_instances.field_names = [
                'id', 'name', 'status', 'owner', 'IPv4', 'IPv6', 'region',
                'flavor', 'image [status]'
            ]
            table_instances.align['id'] = 'l'
            table_instances.align['name'] = 'l'
            table_instances.align['status'] = 'l'
            table_instances.align['owner'] = 'l'
            table_instances.align['IPv4'] = 'l'
            table_instances.align['IPv6'] = 'l'
            table_instances.align['region'] = 'l'
            table_instances.align['flavor'] = 'l'
            table_instances.align['image [status]'] = 'l'
            for region in regions:
                # Initiate Glance object
                gc = utils.get_client(Glance, options, logger, region)
                for instance in instances[region]:
                    if len(instance.addresses.keys()) > 0:
                        network = instance.addresses.keys()[0]
                        ipv4_list = []
                        ipv6_list = []
                        for interface in instance.addresses[network]:
                            if interface['version'] == 4:
                                ipv4_list.append(interface['addr'])
                            if interface['version'] == 6:
                                ipv6_list.append(interface['addr'])
                        ipv4_addresses = ", ".join(ipv4_list)
                        ipv6_addresses = ", ".join(ipv6_list)
                    else:
                        ipv4_addresses = 'None'
                        ipv6_addresses = 'None'
                    if 'id' not in instance.image:
                        image_name = 'UNKNOWN'
                        image_status = 'N/A'
                    else:
                        filters = {'id': instance.image['id']}
                        image = gc.find_image(filters=filters, limit=1)
                        if len(image) == 1:
                            image_name = image[0]['name']
                            image_status = image[0]['status']
                        else:
                            image_name = 'UNKNOWN'
                            image_status = 'N/A'
                    user = kc.get_by_id('user', instance.user_id)
                    owner = user.name if user else '(deleted-user)'
                    row = []
                    row.append(instance.id)
                    row.append(instance.name)
                    row.append(instance.status)
                    row.append(owner)
                    row.append(ipv4_addresses)
                    row.append(ipv6_addresses)
                    row.append(region)
                    row.append(instance.flavor["original_name"])
                    row.append("%s [%s]" % (image_name, image_status))
                    table_instances.add_row(row)
            out_str += "\n  Instances (%d): \n" % instances_total
            out_str += table_instances.get_string() + "\n"

        return out_str.encode('utf-8')