Merge pull request #1 from bcwaldon/v1.1-formatting

V1.1 formatting fixes
This commit is contained in:
Brian Lamar 2011-08-04 12:29:02 -07:00
commit b2f339be54
3 changed files with 49 additions and 36 deletions

@ -39,5 +39,3 @@ def print_dict(d):
pt.aligns = ['l', 'l']
[pt.add_row(list(r)) for r in d.iteritems()]
pt.printt(sortby='Property')

@ -105,34 +105,17 @@ class Server(base.Resource):
self.manager.revert_resize(self)
@property
def public_ip(self):
def networks(self):
"""
Shortcut to get this server's primary public IP address.
Generate a simplified list of addresses
"""
networks = {}
try:
public_addresses = self.addresses["public"]
except KeyError:
public_addresses = None
if public_addresses is None or len(public_addresses) == 0:
return ""
else:
return public_addresses
@property
def private_ip(self):
"""
Shortcut to get this server's primary private IP address.
"""
try:
private_addresses = self.addresses["private"]
except KeyError:
private_addresses = None
if private_addresses is None or len(private_addresses) == 0:
return ""
else:
return private_addresses
for network_label, address_list in self.addresses.items():
networks[network_label] = [a['addr'] for a in address_list]
return networks
except Exception:
return {}
class ServerManager(local_base.BootingManagerWithFind):

@ -75,7 +75,20 @@ def do_boot(cs, args):
name, image, flavor, metadata, files = _boot(cs, args)
server = cs.servers.create(args.name, image, flavor,
meta=metadata, files=files)
utils.print_dict(server._info)
info = server._info
flavor = info.get('flavor', {})
flavor_id = flavor.get('id', '')
info['flavor'] = _find_flavor(cs, flavor_id).name
image = info.get('image', {})
image_id = image.get('id', '')
info['image'] = _find_image(cs, image_id).name
info.pop('links', None)
info.pop('addresses', None)
utils.print_dict(info)
def _boot(cs, args):
@ -203,12 +216,28 @@ def do_list(cs, args):
'name': args.name,
'server_name': args.server_name,
'display_name': args.display_name}
if recurse_zones:
to_print = ['UUID', 'Name', 'Status', 'Public IP', 'Private IP']
id_col = 'UUID'
else:
to_print = ['ID', 'Name', 'Status', 'Public IP', 'Private IP']
utils.print_list(cs.servers.list(search_opts=search_opts),
to_print)
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 _format_servers_list_networks(server):
output = []
for (network, addresses) in server.networks.items():
if len(addresses) == 0:
continue
addresses_csv = ', '.join(addresses)
group = "%s=%s" % (network, addresses_csv)
output.append(group)
return '; '.join(output)
@utils.arg('--hard',
dest='reboot_type',
@ -277,11 +306,11 @@ def do_show(cs, args):
"""Show details about the given server."""
s = _find_server(cs, args.server)
networks = s.networks
info = s._info.copy()
addresses = info.pop('addresses', [])
for addrtype in addresses:
ips = map(lambda x: x['addr'], addresses[addrtype])
info['%s ip' % addrtype] = ', '.join(ips)
for network_label, address_list in networks.items():
info['%s network' % network_label] = ', '.join(address_list)
flavor = info.get('flavor', {})
flavor_id = flavor.get('id', '')
@ -291,6 +320,9 @@ def do_show(cs, args):
image_id = image.get('id', '')
info['image'] = _find_image(cs, image_id).name
info.pop('links', None)
info.pop('addresses', None)
utils.print_dict(info)
@utils.arg('server', metavar='<server>', help='Name or ID of server.')