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)
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)
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')