Beispiel #1
0
def do_usage_list(cs, args):
    """List usage data for all tenants"""
    dateformat = "%Y-%m-%d"
    rows = [
        "Tenant ID", "Instances", "RAM MB-Hours", "CPU Hours", "Disk GB-Hours"
    ]

    if args.start:
        start = datetime.datetime.strptime(args.start, dateformat)
    else:
        start = (datetime.datetime.today() - datetime.timedelta(weeks=4))

    if args.end:
        end = datetime.datetime.strptime(args.end, dateformat)
    else:
        end = datetime.datetime.tomorrow()

    def simplify_usage(u):
        simplerows = map(lambda x: x.lower().replace(" ", "_"), rows)

        setattr(u, simplerows[0], u.tenant_id)
        setattr(u, simplerows[1], "%d" % len(u.server_usages))
        setattr(u, simplerows[2], "%.2f" % u.total_memory_mb_usage)
        setattr(u, simplerows[3], "%.2f" % u.total_vcpus_usage)
        setattr(u, simplerows[4], "%.2f" % u.total_local_gb_usage)

    usage_list = cs.usage.list(start, end, detailed=True)

    print "Usage from %s to %s:" % (start.strftime(dateformat),
                                    end.strftime(dateformat))

    for usage in usage_list:
        simplify_usage(usage)

    utils.print_list(usage_list, rows)
Beispiel #2
0
def do_network_list(cs, args):
    """
    List networks
    """
    from novaclient import utils
    networks = cs.os_networksv2_python_novaclient_ext.list()
    utils.print_list(networks, ['ID', 'Label', 'CIDR'])
Beispiel #3
0
def do_usage_list(cs, args):
    """List usage data for all tenants"""
    dateformat = "%Y-%m-%d"
    rows = ["Tenant ID", "Instances", "RAM MB-Hours", "CPU Hours",
            "Disk GB-Hours"]

    if args.start:
        start = datetime.datetime.strptime(args.start, dateformat)
    else:
        start = (datetime.datetime.today() -
                 datetime.timedelta(weeks=4))

    if args.end:
        end = datetime.datetime.strptime(args.end, dateformat)
    else:
        end = datetime.datetime.tomorrow()

    def simplify_usage(u):
        simplerows = map(lambda x: x.lower().replace(" ", "_"), rows)

        setattr(u, simplerows[0], u.tenant_id)
        setattr(u, simplerows[1], "%d" % len(u.server_usages))
        setattr(u, simplerows[2], "%.2f" % u.total_memory_mb_usage)
        setattr(u, simplerows[3], "%.2f" % u.total_vcpus_usage)
        setattr(u, simplerows[4], "%.2f" % u.total_local_gb_usage)

    usage_list = cs.usage.list(start, end, detailed=True)

    print "Usage from %s to %s:" % (start.strftime(dateformat),
                                    end.strftime(dateformat))

    for usage in usage_list:
        simplify_usage(usage)

    utils.print_list(usage_list, rows)
def do_instance_action_list(cs, args):
    """List actions on a server."""
    server = _find_server(cs, args)
    actions = cs.instance_action.list(server)
    utils.print_list(actions,
                     ['Action', 'Request_ID', 'Message', 'Start_Time'],
                     sortby_index=3)
Beispiel #5
0
def do_ip_association_list(cs, args):
    """
    List IP associations
    """
    ip_associations = cs.ip_associations_python_novaclient_ext.list(
        args.instance_id)
    utils.print_list(ip_associations, ['ID', 'Address'])
Beispiel #6
0
def do_list(cs, args):
    """List active servers."""
    recurse_zones = args.recurse_zones
    search_opts = {
        'reservation_id': args.reservation_id,
        'recurse_zones': recurse_zones,
        'ip': args.ip,
        'ip6': args.ip6,
        'name': args.name,
        'image': args.image,
        'flavor': args.flavor,
        'status': args.status,
        'host': args.host,
        'instance_name': args.instance_name
    }

    if recurse_zones:
        id_col = 'UUID'
    else:
        id_col = 'ID'

    columns = [id_col, 'Name', 'Status', 'Networks']
    formatters = {'Networks': _format_servers_list_networks}
    utils.print_list(cs.servers.list(search_opts=search_opts), columns,
                     formatters)
def do_network_list(cs, args):
    """
    List networks
    """
    from novaclient import utils
    networks = cs.os_networksv2_python_novaclient_ext.list()
    utils.print_list(networks, ['ID', 'Label', 'CIDR'])
def _show_maintenance_status(cs, host):
    hv = cs.host_maintenance.get(host)
    host = HostMaintenanceResource(HostMaintenanceManager,
                                   hv.hypervisor_maintenance)

    utils.print_list([host], ['hypervisor_hostname', 'maintenance_status',
                              'maintenance_migration_action'])
def do_instance_action_list(cs, args):
    """List actions on a server."""
    server = utils.find_resource(cs.servers, args.server)
    actions = cs.instance_action.list(server)
    utils.print_list(actions,
                     ['Action', 'Request_ID', 'Message', 'Start_Time'],
                     sortby_index=3)
Beispiel #10
0
def do_list_extensions(client, _args):
    """
    List all the os-api extensions that are available.
    """
    extensions = client.list_extensions.show_all()
    fields = ["Name", "Summary", "Alias", "Updated"]
    utils.print_list(extensions, fields)
def do_host_maintenance(cs, args):
    """Enable maintenance mode for a hypervisor."""
    if not args.set_status:
        if args.migrate or args.target_host:
            raise exceptions.CommandError(_("Need to set --set-status "
                                            "to 'enable' when --migrate "
                                            "or --target-host specified."))
        else:
            return _show_maintenance_status(cs, args.host)

    if "disable" == args.set_status.lower():
        if args.migrate or args.target_host:
            raise exceptions.CommandError(_("No need to specify migrate or "
                                            "target-host when disabling the "
                                            "host maintenance mode."))

    hv = cs.host_maintenance.update(args.host,
                                    args.set_status,
                                    args.migrate,
                                    args.target_host)

    host = HostMaintenanceResource(HostMaintenanceManager,
                                   hv.hypervisor_maintenance)
    utils.print_list([host], ['hypervisor_hostname', 'status',
                              'migrate', 'target-host'])
Beispiel #12
0
def _print_baremetal_nodes_list(nodes):
    """Print the list of baremetal nodes."""

    def _parse_address(fields):
        macs = []
        for interface in fields.interfaces:
            macs.append(interface["address"])
        return ", ".join("%s" % i for i in macs)

    formatters = {"MAC Address": _parse_address}

    _translate_baremetal_node_keys(nodes)
    utils.print_list(
        nodes,
        [
            "ID",
            "Host",
            "Task State",
            "CPUs",
            "Memory_MB",
            "Disk_GB",
            "MAC Address",
            "PM Address",
            "PM Username",
            "PM Password",
            "Terminal Port",
        ],
        formatters=formatters,
    )
def do_host_maintenance(cs, args):
    """Enable maintenance mode for a hypervisor."""
    if not args.set_status:
        if args.migrate or args.target_host:
            raise exceptions.CommandError(
                _("Need to set --set-status "
                  "to 'enable' when --migrate "
                  "or --target-host specified."))
        else:
            return _show_maintenance_status(cs, args.host)

    if "disable" == args.set_status.lower():
        if args.migrate or args.target_host:
            raise exceptions.CommandError(
                _("No need to specify migrate or "
                  "target-host when disabling the "
                  "host maintenance mode."))

    hv = cs.host_maintenance.update(args.host, args.set_status, args.migrate,
                                    args.target_host)

    host = HostMaintenanceResource(HostMaintenanceManager,
                                   hv.hypervisor_maintenance)
    utils.print_list(
        [host], ['hypervisor_hostname', 'status', 'migrate', 'target-host'])
Beispiel #14
0
def do_flavor_list(cs, args):
    """Print a list of available 'flavors' (sizes of servers)."""
    flavors = cs.flavors.list()
    _translate_flavor_keys(flavors)
    utils.print_list(flavors, [
        'ID', 'Name', 'Memory_MB', 'Swap', 'Local_GB', 'VCPUs', 'RXTX_Factor'
    ])
def _print_baremetal_nodes_list(nodes):
    """Print the list of baremetal nodes."""
    def _parse_address(fields):
        macs = []
        for interface in fields.interfaces:
            macs.append(interface['address'])
        return ', '.join("%s" % i for i in macs)

    formatters = {'MAC Address': _parse_address}

    _translate_baremetal_node_keys(nodes)
    utils.print_list(nodes, [
        'ID',
        'Host',
        'Task State',
        'CPUs',
        'Memory_MB',
        'Disk_GB',
        'MAC Address',
        'PM Address',
        'PM Username',
        'PM Password',
        'Terminal Port',
    ],
                     formatters=formatters)
Beispiel #16
0
def _print_baremetal_nodes_list(nodes):
    """Print the list of baremetal nodes."""

    def _parse_address(fields):
        macs = []
        for interface in fields.interfaces:
            macs.append(interface['address'])
        return ', '.join("%s" % i for i in macs)

    formatters = {
        'MAC Address': _parse_address
    }

    _translate_baremetal_node_keys(nodes)
    utils.print_list(nodes, [
        'ID',
        'Host',
        'Task State',
        'CPUs',
        'Memory_MB',
        'Disk_GB',
        'MAC Address',
        'PM Address',
        'PM Username',
        'PM Password',
        'Terminal Port',
    ], formatters=formatters)
def do_ip_association_list(cs, args):
    """
    List IP associations
    """
    ip_associations = cs.ip_associations_python_novaclient_ext.list(
        args.instance_id)
    utils.print_list(ip_associations, ['ID', 'Address'])
def do_virtual_interface_list(cs, args):
    """
    Lists the virtual interfaces for an instance
    """
    vifs = cs.os_virtual_interfacesv2_python_novaclient_ext.list(
        args.instance_id)
    utils.print_list(vifs, ["id", "mac_address", "ip_addresses"],
                     formatters={"ip_addresses": ip_address_formatter})
def _print_baremetal_node_interfaces(interfaces):
    """Print interfaces of a baremetal node."""
    utils.print_list(interfaces, [
        'ID',
        'Datapath_ID',
        'Port_No',
        'Address',
    ])
Beispiel #20
0
def do_virtual_interface_list(cs, args):
    """
    Lists the virtual interfaces for an instance
    """
    vifs = cs.os_virtual_interfacesv2_python_novaclient_ext.list(
        args.instance_id)
    utils.print_list(vifs, ["id", "mac_address", "ip_addresses"],
                     formatters={"ip_addresses": ip_address_formatter})
Beispiel #21
0
def do_ipgroup_list(cs, args):
    """Show IP groups."""
    def pretty_server_list(ipgroup):
        return ", ".join(cs.servers.get(id).name for id in ipgroup.servers)

    utils.print_list(cs.ipgroups.list(),
                     fields=['ID', 'Name', 'Server List'],
                     formatters={'Server List': pretty_server_list})
Beispiel #22
0
def _print_baremetal_node_interfaces(interfaces):
    """Print interfaces of a baremetal node."""
    utils.print_list(interfaces, [
        'ID',
        'Datapath_ID',
        'Port_No',
        'Address',
        ])
Beispiel #23
0
def do_ipgroup_list(cs, args):
    """Show IP groups."""
    def pretty_server_list(ipgroup):
        return ", ".join(cs.servers.get(id).name
                         for id in ipgroup.servers)

    utils.print_list(cs.ipgroups.list(),
               fields=['ID', 'Name', 'Server List'],
               formatters={'Server List': pretty_server_list})
def _show_maintenance_status(cs, host):
    hv = cs.host_maintenance.get(host)
    host = HostMaintenanceResource(HostMaintenanceManager,
                                   hv.hypervisor_maintenance)

    utils.print_list([host], [
        'hypervisor_hostname', 'maintenance_status',
        'maintenance_migration_action'
    ])
Beispiel #25
0
def _print_flavor_list(flavors):
    _translate_flavor_keys(flavors)
    utils.print_list(flavors, [
        'ID',
        'Name',
        'Memory_MB',
        'Swap',
        'Local_GB',
        'VCPUs',
        'RXTX_Factor'])
def do_instance_action_list(cs, args):
    """List actions on a server."""
    if cs.api_version < api_versions.APIVersion("2.21"):
        server = shell._find_server(cs, args.server)
    else:
        server = shell._find_server(cs, args.server, raise_if_notfound=False)
    actions = cs.instance_action.list(server)
    utils.print_list(actions,
                     ['Action', 'Request_ID', 'Message', 'Start_Time'],
                     sortby_index=3)
Beispiel #27
0
 def test_print_unicode_list(self):
     objs = [_FakeResult("k", '\u2026')]
     utils.print_list(objs, ["Name", "Value"])
     s = '\u2026'
     self.assertEqual('+------+-------+\n'
                      '| Name | Value |\n'
                      '+------+-------+\n'
                      '| k    | %s     |\n'
                      '+------+-------+\n' % s,
                      sys.stdout.getvalue())
def do_host_evacuate(cs, args):
    """Evacuate all instances from failed host."""
    hypervisors = cs.hypervisors.search(args.host, servers=True)
    response = []
    for hyper in hypervisors:
        if hasattr(hyper, "servers"):
            for server in hyper.servers:
                response.append(_server_evacuate(cs, server, args))

    utils.print_list(response, ["Server UUID", "Evacuate Accepted", "Error Message"])
def do_instance_action_list(cs, args):
    """List actions on a server."""
    if cs.api_version < api_versions.APIVersion("2.21"):
        server = shell._find_server(cs, args.server)
    else:
        server = shell._find_server(cs, args.server, raise_if_notfound=False)
    actions = cs.instance_action.list(server)
    utils.print_list(actions,
                     ['Action', 'Request_ID', 'Message', 'Start_Time'],
                     sortby_index=3)
Beispiel #30
0
def do_image_list(cs, args):
    """Print a list of available images to boot from."""
    server_list = {}
    for server in cs.servers.list():
        server_list[server.id] = server.name
    image_list = cs.images.list()
    for i in range(len(image_list)):
        if hasattr(image_list[i], 'serverId'):
            image_list[i].serverId = server_list[image_list[i].serverId] + \
            ' (' + str(image_list[i].serverId) + ')'
    utils.print_list(cs.images.list(), ['ID', 'Name', 'serverId', 'Status'])
Beispiel #31
0
def do_canary_query(cs, args):
    """ Query a Canary host for monitoring stats. """
    kwargs = \
    {
        "from_time" : args.from_time,
        "to_time" : args.to_time,
        "cf" : args.cf,
        "resolution" : args.resolution
    }
    utils.print_list(cs.canary.query(args.host, args.metric, **kwargs),
        ["timestamp", "cf", "value"])
Beispiel #32
0
def do_get_vnc_console(cs, args):
    """Get a vnc console to a server."""
    server = _find_server(cs, args.server)
    data = server.get_vnc_console(args.console_type)

    class VNCConsole:
        def __init__(self, console_dict):
            self.type = console_dict['type']
            self.url = console_dict['url']

    utils.print_list([VNCConsole(data['console'])], ['Type', 'Url'])
Beispiel #33
0
def do_host_servers_migrate(cs, args):
    """Migrate all instances of the specified host to other available hosts."""
    hypervisors = cs.hypervisors.search(args.host, servers=True)
    response = []
    for hyper in hypervisors:
        if hasattr(hyper, 'servers'):
            for server in hyper.servers:
                response.append(_server_migrate(cs, server))

    utils.print_list(response,
                     ["Server UUID", "Migration Accepted", "Error Message"])
def do_host_servers_migrate(cs, args):
    """Migrate all instances of the specified host to other available hosts."""
    hypervisors = cs.hypervisors.search(args.host, servers=True)
    response = []
    for hyper in hypervisors:
        if hasattr(hyper, 'servers'):
            for server in hyper.servers:
                response.append(_server_migrate(cs, server))

    utils.print_list(response,
                     ["Server UUID", "Migration Accepted", "Error Message"])
Beispiel #35
0
def do_volume_list(cs, args):
    """List all the volumes."""
    volumes = cs.volumes.list()
    _translate_volume_keys(volumes)

    # Create a list of servers to which the volume is attached
    for vol in volumes:
        servers = [server.get('serverId') for server in vol.attachments]
        setattr(vol, 'attached_to', ','.join(map(str, servers)))
    utils.print_list(volumes,
                     ['ID', 'Status', 'Display Name', 'Size', 'Attached to'])
def do_host_evacuate_live(cs, args):
    """Live migrate all instances of the specified host
    to other available hosts.
    """
    hypervisors = cs.hypervisors.search(args.host, servers=True)
    response = []
    for hyper in hypervisors:
        for server in getattr(hyper, "servers", []):
            response.append(_server_live_migrate(cs, server, args))

    utils.print_list(response, ["Server UUID", "Live Migration Accepted", "Error Message"])
Beispiel #37
0
def do_host_evacuate(cs, args):
    """Evacuate all instances from failed host."""
    hypervisors = cs.hypervisors.search(args.host, servers=True)
    response = []
    for hyper in hypervisors:
        if hasattr(hyper, 'servers'):
            for server in hyper.servers:
                response.append(_server_evacuate(cs, server, args))

    utils.print_list(response,
                     ["Server UUID", "Evacuate Accepted", "Error Message"])
Beispiel #38
0
def do_volume_list(cs, args):
    """List all the volumes."""
    volumes = cs.volumes.list()
    _translate_volume_keys(volumes)

    # Create a list of servers to which the volume is attached
    for vol in volumes:
        servers = [server.get('serverId') for server in vol.attachments]
        setattr(vol, 'attached_to', ','.join(map(str, servers)))
    utils.print_list(volumes, ['ID', 'Status', 'Display Name',
                        'Size', 'Attached to'])
Beispiel #39
0
def do_get_vnc_console(cs, args):
    """Get a vnc console to a server."""
    server = _find_server(cs, args.server)
    data = server.get_vnc_console(args.console_type)

    class VNCConsole:
        def __init__(self, console_dict):
            self.type = console_dict['type']
            self.url = console_dict['url']

    utils.print_list([VNCConsole(data['console'])], ['Type', 'Url'])
Beispiel #40
0
 def _dump_timings(self, timings):
     class Tyme(object):
         def __init__(self, url, seconds):
             self.url = url
             self.seconds = seconds
     results = [Tyme(url, end - start) for url, start, end in timings]
     total = 0.0
     for tyme in results:
         total += tyme.seconds
     results.append(Tyme("Total", total))
     utils.print_list(results, ["url", "seconds"], sortby_index=None)
Beispiel #41
0
def do_image_list(cs, args):
    """Print a list of available images to boot from."""
    server_list = {}
    for server in cs.servers.list():
        server_list[server.id] = server.name
    image_list = cs.images.list()
    for i in range(len(image_list)):
        if hasattr(image_list[i], 'serverId'):
            image_list[i].serverId = server_list[image_list[i].serverId] + \
            ' (' + str(image_list[i].serverId) + ')'
    utils.print_list(image_list, ['ID', 'Name', 'serverId', 'Status'])
def do_host_evacuate_live(cs, args):
    """Live migrate all instances of the specified host
    to other available hosts.
    """
    hypervisors = cs.hypervisors.search(args.host, servers=True)
    response = []
    for hyper in hypervisors:
        for server in getattr(hyper, 'servers', []):
            response.append(_server_live_migrate(cs, server, args))

    utils.print_list(
        response, ["Server UUID", "Live Migration Accepted", "Error Message"])
Beispiel #43
0
def do_image_list(cs, args):
    """Print a list of available images to boot from."""
    image_list = cs.images.list()

    def parse_server_name(image):
        try:
            return image.server['id']
        except (AttributeError, KeyError):
            return ''

    fmts = {'Server': parse_server_name}
    utils.print_list(image_list, ['ID', 'Name', 'Status', 'Server'], fmts)
Beispiel #44
0
def _print_backup_list(backups):
    class Backup:
        def __init__(self, id, ts, schedules):
            self.id = id
            self.timestamp = ts
            self.schedules = schedules

    columns = ['ID', 'Timestamp', 'Schedules']
    objs = map(lambda b: \
        Backup(b['uuid'], b['veta_backup_at'], b['veta_backup_ids']),
            backups)
    utils.print_list(objs, columns, sortby_index=1)
Beispiel #45
0
def do_flavor_list(cs, args):
    """Print a list of available 'flavors' (sizes of servers)."""
    flavors = cs.flavors.list()
    _translate_flavor_keys(flavors)
    utils.print_list(flavors, [
        'ID',
        'Name',
        'Memory_MB',
        'Swap',
        'Local_GB',
        'VCPUs',
        'RXTX_Factor'])
Beispiel #46
0
def do_image_list(cs, args):
    """Print a list of available images to boot from."""
    image_list = cs.images.list()

    def parse_server_name(image):
        try:
            return image.server['id']
        except (AttributeError, KeyError):
            return ''

    fmts = {'Server': parse_server_name}
    utils.print_list(image_list, ['ID', 'Name', 'Status', 'Server'], fmts)
Beispiel #47
0
 def test_print_unicode_list(self):
     objs = [_FakeResult("k", u'\u2026')]
     utils.print_list(objs, ["Name", "Value"])
     if six.PY3:
         s = u'\u2026'
     else:
         s = encodeutils.safe_encode(u'\u2026')
     self.assertEqual('+------+-------+\n'
                      '| Name | Value |\n'
                      '+------+-------+\n'
                      '| k    | %s     |\n'
                      '+------+-------+\n' % s,
                      sys.stdout.getvalue())
Beispiel #48
0
 def test_print_unicode_list(self):
     objs = [_FakeResult("k", u'\u2026')]
     utils.print_list(objs, ["Name", "Value"])
     if six.PY3:
         s = u'\u2026'
     else:
         s = encodeutils.safe_encode(u'\u2026')
     self.assertEqual('+------+-------+\n'
                      '| Name | Value |\n'
                      '+------+-------+\n'
                      '| k    | %s     |\n'
                      '+------+-------+\n' % s,
                      sys.stdout.getvalue())
def _print_migrations(migrations):
    fields = ['Source Node', 'Dest Node', 'Source Compute', 'Dest Compute',
              'Dest Host', 'Status', 'Instance UUID', 'Old Flavor',
              'New Flavor', 'Created At', 'Updated At']

    def old_flavor(migration):
        return migration.old_instance_type_id

    def new_flavor(migration):
        return migration.new_instance_type_id

    formatters = {'Old Flavor': old_flavor, 'New Flavor': new_flavor}

    utils.print_list(migrations, fields, formatters)
Beispiel #50
0
def _print_migrations(migrations):
    fields = ['Source Node', 'Dest Node', 'Source Compute', 'Dest Compute',
            'Dest Host', 'Status', 'Instance UUID', 'Old Flavor',
            'New Flavor', 'Created At', 'Updated At']

    def old_flavor(migration):
        return migration.old_instance_type_id

    def new_flavor(migration):
        return migration.new_instance_type_id

    formatters = {'Old Flavor': old_flavor, 'New Flavor': new_flavor}

    utils.print_list(migrations, fields, formatters)
Beispiel #51
0
    def test_print_list_sort_by_none(self):
        objs = [_FakeResult("k1", 1),
                _FakeResult("k3", 3),
                _FakeResult("k2", 2)]

        utils.print_list(objs, ["Name", "Value"], sortby_index=None)

        self.assertEqual('+------+-------+\n'
                         '| Name | Value |\n'
                         '+------+-------+\n'
                         '| k1   | 1     |\n'
                         '| k3   | 3     |\n'
                         '| k2   | 2     |\n'
                         '+------+-------+\n',
                         sys.stdout.getvalue())
Beispiel #52
0
def _print_baremetal_nodes_list(nodes):
    """Print the list of baremetal nodes."""
    _translate_baremetal_node_keys(nodes)
    utils.print_list(nodes, [
        'ID',
        'Host',
        'CPUs',
        'Memory_MB',
        'Disk_GB',
        'MAC Address',
        'PM Address',
        'PM Username',
        'PM Password',
        'Terminal Port',
        ])
def _print_baremetal_nodes_list(nodes):
    """Print the list of baremetal nodes."""
    _translate_baremetal_node_keys(nodes)
    utils.print_list(nodes, [
        'ID',
        'Host',
        'CPUs',
        'Memory_MB',
        'Disk_GB',
        'MAC Address',
        'PM Address',
        'PM Username',
        'PM Password',
        'Terminal Port',
    ])
Beispiel #54
0
    def test_print_list_sort_by_integer(self):
        objs = [_FakeResult("k1", 1), _FakeResult("k3", 2), _FakeResult("k2", 3)]

        utils.print_list(objs, ["Name", "Value"], sortby_index=1)

        self.assertEqual(
            sys.stdout.getvalue(),
            "+------+-------+\n"
            "| Name | Value |\n"
            "+------+-------+\n"
            "| k1   | 1     |\n"
            "| k3   | 2     |\n"
            "| k2   | 3     |\n"
            "+------+-------+\n",
        )
Beispiel #55
0
def _print_secgroup_rules(rules):
    class FormattedRule:
        def __init__(self, obj):
            items = (obj if isinstance(obj, dict) else obj._info).items()
            for k, v in items:
                if k == 'ip_range':
                    v = v.get('cidr')
                elif k == 'group':
                    k = 'source_group'
                    v = v.get('name')
                if v == None:
                    v = ''

                setattr(self, k, v)

    rules = [FormattedRule(rule) for rule in rules]
    utils.print_list(
        rules,
        ['IP Protocol', 'From Port', 'To Port', 'IP Range', 'Source Group'])
Beispiel #56
0
def do_list(cs, args):
    """List active servers."""
    recurse_zones = args.recurse_zones
    search_opts = {
        'reservation_id': args.reservation_id,
        'fixed_ip': args.fixed_ip,
        'recurse_zones': recurse_zones,
        'ip': args.ip,
        'ip6': args.ip6,
        'name': args.name,
        'image': args.image,
        'flavor': args.flavor,
        'status': args.status,
        'host': args.host,
        'instance_name': args.instance_name
    }
    if recurse_zones:
        to_print = ['UUID', 'Name', 'Status', 'Public IP', 'Private IP']
    else:
        to_print = ['ID', 'Name', 'Status', 'Public IP', 'Private IP']
    utils.print_list(cs.servers.list(search_opts=search_opts), to_print)
Beispiel #57
0
def _print_migrations(cs, migrations):
    fields = ['Source Node', 'Dest Node', 'Source Compute', 'Dest Compute',
              'Dest Host', 'Status', 'Instance UUID', 'Old Flavor',
              'New Flavor', 'Created At', 'Updated At']

    def old_flavor(migration):
        return migration.old_instance_type_id

    def new_flavor(migration):
        return migration.new_instance_type_id

    def migration_type(migration):
        return migration.migration_type

    formatters = {'Old Flavor': old_flavor, 'New Flavor': new_flavor}

    if cs.api_version >= api_versions.APIVersion("2.23"):
        fields.insert(0, "Id")
        fields.append("Type")
        formatters.update({"Type": migration_type})

    utils.print_list(migrations, fields, formatters)