Format server addresses
This replaces server.nics with server.addresses. Change-Id: Iefb3189f4174163eab0ddbcce66b6af00e44043d
This commit is contained in:
parent
fa710a1766
commit
2faea31cb6
@ -31,6 +31,21 @@ from moganclient.common.i18n import _
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def _addresses_formatter(network_client, networks):
|
||||||
|
output = []
|
||||||
|
for (network, addresses) in networks.items():
|
||||||
|
if not addresses:
|
||||||
|
continue
|
||||||
|
addrs = [addr['addr'] for addr in addresses]
|
||||||
|
network_data = network_client.find_network(
|
||||||
|
network, ignore_missing=False)
|
||||||
|
net_ident = network_data.name or network_data.id
|
||||||
|
addresses_csv = ', '.join(addrs)
|
||||||
|
group = "%s=%s" % (net_ident, addresses_csv)
|
||||||
|
output.append(group)
|
||||||
|
return '; '.join(output)
|
||||||
|
|
||||||
|
|
||||||
class ServersActionBase(command.Command):
|
class ServersActionBase(command.Command):
|
||||||
def _get_parser_with_action(self, prog_name, action):
|
def _get_parser_with_action(self, prog_name, action):
|
||||||
parser = super(ServersActionBase, self).get_parser(prog_name)
|
parser = super(ServersActionBase, self).get_parser(prog_name)
|
||||||
@ -296,15 +311,20 @@ class ListServer(command.Lister):
|
|||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
@staticmethod
|
def _addresses_formatter(self, networks):
|
||||||
def _nics_formatter(nics):
|
output = []
|
||||||
return_info = []
|
network_client = self.app.client_manager.network
|
||||||
for nics in nics:
|
for (network, addresses) in networks.items():
|
||||||
port_ips = []
|
if not addresses:
|
||||||
for fixed_ip in nics['fixed_ips']:
|
continue
|
||||||
port_ips.append(fixed_ip['ip_address'])
|
addrs = [addr['addr'] for addr in addresses]
|
||||||
return_info.append(', '.join(port_ips))
|
network_data = network_client.find_network(
|
||||||
return '; '.join(return_info)
|
network, ignore_missing=False)
|
||||||
|
net_ident = network_data.name or network_data.id
|
||||||
|
addresses_csv = ', '.join(addrs)
|
||||||
|
group = "%s=%s" % (net_ident, addresses_csv)
|
||||||
|
output.append(group)
|
||||||
|
return '; '.join(output)
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
bc_client = self.app.client_manager.baremetal_compute
|
bc_client = self.app.client_manager.baremetal_compute
|
||||||
@ -327,7 +347,7 @@ class ListServer(command.Lister):
|
|||||||
"name",
|
"name",
|
||||||
"status",
|
"status",
|
||||||
"power_state",
|
"power_state",
|
||||||
"nics",
|
"addresses",
|
||||||
"image_uuid",
|
"image_uuid",
|
||||||
"flavor_uuid",
|
"flavor_uuid",
|
||||||
"availability_zone",
|
"availability_zone",
|
||||||
@ -345,13 +365,14 @@ class ListServer(command.Lister):
|
|||||||
"uuid",
|
"uuid",
|
||||||
"name",
|
"name",
|
||||||
"status",
|
"status",
|
||||||
"nics",
|
"addresses",
|
||||||
"image_uuid",
|
"image_uuid",
|
||||||
)
|
)
|
||||||
|
|
||||||
data = bc_client.server.list(detailed=True,
|
data = bc_client.server.list(detailed=True,
|
||||||
all_projects=parsed_args.all_projects)
|
all_projects=parsed_args.all_projects)
|
||||||
formatters = {'nics': self._nics_formatter,
|
|
||||||
|
formatters = {'addresses': self._addresses_formatter,
|
||||||
'metadata': utils.format_dict}
|
'metadata': utils.format_dict}
|
||||||
return (column_headers,
|
return (column_headers,
|
||||||
(utils.get_item_properties(
|
(utils.get_item_properties(
|
||||||
@ -379,9 +400,13 @@ class ShowServer(command.ShowOne):
|
|||||||
)
|
)
|
||||||
# Special mapping for columns to make the output easier to read:
|
# Special mapping for columns to make the output easier to read:
|
||||||
# 'metadata' --> 'properties'
|
# 'metadata' --> 'properties'
|
||||||
|
network_client = self.app.client_manager.network
|
||||||
data._info.update(
|
data._info.update(
|
||||||
{
|
{
|
||||||
'properties': utils.format_dict(data._info.pop('metadata')),
|
'properties': utils.format_dict(data._info.pop('metadata')),
|
||||||
|
'addresses': _addresses_formatter(
|
||||||
|
network_client,
|
||||||
|
data._info.pop('addresses')),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -249,11 +249,11 @@ class FakeServer(object):
|
|||||||
attrs = attrs or {}
|
attrs = attrs or {}
|
||||||
attrs_data = copy.deepcopy(attrs)
|
attrs_data = copy.deepcopy(attrs)
|
||||||
networks = attrs_data.pop('networks', [])
|
networks = attrs_data.pop('networks', [])
|
||||||
nics = []
|
addresses = {}
|
||||||
for network in networks:
|
for network in networks:
|
||||||
nics.append({'netowrk_id': network.get('uuid'),
|
addresses[network.get('name')] = [
|
||||||
'port_id': uuidutils.generate_uuid()})
|
{"addr": "11.0.0.6", "type": "fixed"}]
|
||||||
attrs_data["nics"] = nics
|
attrs_data["addresses"] = addresses
|
||||||
|
|
||||||
# Set default attribute
|
# Set default attribute
|
||||||
server_info = {
|
server_info = {
|
||||||
@ -265,20 +265,7 @@ class FakeServer(object):
|
|||||||
"links": [],
|
"links": [],
|
||||||
"name": "server-name-" + uuidutils.generate_uuid(
|
"name": "server-name-" + uuidutils.generate_uuid(
|
||||||
dashed=False),
|
dashed=False),
|
||||||
"nics": [{
|
"addresses": {},
|
||||||
"network_id": uuidutils.generate_uuid(),
|
|
||||||
"port_id": uuidutils.generate_uuid(),
|
|
||||||
"floating_ip": '',
|
|
||||||
"port_type": '',
|
|
||||||
"mac_address": "52:54:00:cc:ed:87",
|
|
||||||
"fixed_ips": [{
|
|
||||||
"subnet_id": uuidutils.generate_uuid(),
|
|
||||||
"ip_address": "11.0.0.6"
|
|
||||||
}, {
|
|
||||||
"subnet_id": uuidutils.generate_uuid(),
|
|
||||||
"ip_address": "fdaa:67c7:e09e:0:5054:ff:fecc:ed87"
|
|
||||||
}]
|
|
||||||
}],
|
|
||||||
"updated_at": None,
|
"updated_at": None,
|
||||||
"uuid": "server-id-" + uuidutils.generate_uuid(
|
"uuid": "server-id-" + uuidutils.generate_uuid(
|
||||||
dashed=False),
|
dashed=False),
|
||||||
|
@ -30,6 +30,7 @@ class TestServer(test_base.TestBaremetalComputeV1):
|
|||||||
fake_server = fakes.FakeServer.create_one_server()
|
fake_server = fakes.FakeServer.create_one_server()
|
||||||
|
|
||||||
columns = (
|
columns = (
|
||||||
|
'addresses',
|
||||||
'availability_zone',
|
'availability_zone',
|
||||||
'created_at',
|
'created_at',
|
||||||
'description',
|
'description',
|
||||||
@ -39,12 +40,12 @@ class TestServer(test_base.TestBaremetalComputeV1):
|
|||||||
'max_count',
|
'max_count',
|
||||||
'min_count',
|
'min_count',
|
||||||
'name',
|
'name',
|
||||||
'nics',
|
|
||||||
'properties',
|
'properties',
|
||||||
'updated_at',
|
'updated_at',
|
||||||
'uuid')
|
'uuid')
|
||||||
|
|
||||||
data = (
|
data = (
|
||||||
|
fake_server.addresses,
|
||||||
fake_server.availability_zone,
|
fake_server.availability_zone,
|
||||||
fake_server.created_at,
|
fake_server.created_at,
|
||||||
fake_server.description,
|
fake_server.description,
|
||||||
@ -54,7 +55,6 @@ class TestServer(test_base.TestBaremetalComputeV1):
|
|||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
fake_server.name,
|
fake_server.name,
|
||||||
fake_server.nics,
|
|
||||||
fake_server.updated_at,
|
fake_server.updated_at,
|
||||||
fake_server.uuid)
|
fake_server.uuid)
|
||||||
|
|
||||||
@ -133,6 +133,7 @@ class TestServerCreate(TestServer):
|
|||||||
data=called_data)
|
data=called_data)
|
||||||
self.assertEqual(self.columns, columns)
|
self.assertEqual(self.columns, columns)
|
||||||
expected_data = (
|
expected_data = (
|
||||||
|
fk_server.addresses,
|
||||||
fk_server.availability_zone,
|
fk_server.availability_zone,
|
||||||
fk_server.created_at,
|
fk_server.created_at,
|
||||||
fk_server.description,
|
fk_server.description,
|
||||||
@ -142,7 +143,6 @@ class TestServerCreate(TestServer):
|
|||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
fk_server.name,
|
fk_server.name,
|
||||||
fk_server.nics,
|
|
||||||
utils.format_dict(fk_server.metadata),
|
utils.format_dict(fk_server.metadata),
|
||||||
fk_server.updated_at,
|
fk_server.updated_at,
|
||||||
fk_server.uuid)
|
fk_server.uuid)
|
||||||
@ -272,24 +272,27 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestServerList, self).setUp()
|
super(TestServerList, self).setUp()
|
||||||
self.cmd = server.ListServer(self.app, None)
|
self.cmd = server.ListServer(self.app, None)
|
||||||
fake_return_net = [{
|
network_obj = mock.Mock()
|
||||||
"network_id": "f31af5a2-f14d-4007-b2e5-abeb82429b87",
|
network_obj.name = 'private'
|
||||||
"port_id": "99845c22-6268-46c1-b068-1dbcb8adaf68",
|
self.app.client_manager.network = mock.Mock()
|
||||||
"floating_ip": '',
|
self.app.client_manager.network.find_network = \
|
||||||
"port_type": '',
|
mock.Mock(return_value=network_obj)
|
||||||
"mac_address": "52:54:00:cc:ed:87",
|
fake_return_net = {
|
||||||
"fixed_ips": [{
|
"private": [
|
||||||
"subnet_id": "5a324b29-9aca-43d8-a6c3-31986dda95b5",
|
{
|
||||||
"ip_address": "172.24.4.4"
|
"addr": "172.24.4.4",
|
||||||
}, {
|
"type": "fixed"
|
||||||
"subnet_id": "9baceab1-40ec-4c53-ad83-530a625bddb1",
|
},
|
||||||
"ip_address": "2001:db8::a"
|
{
|
||||||
}]
|
"addr": "2001:db8::a",
|
||||||
}]
|
"type": "fixed"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
self.fake_servers = fakes.FakeServer.create_servers(
|
self.fake_servers = fakes.FakeServer.create_servers(
|
||||||
attrs={'status': 'active', 'power_state': 'power on'}, count=3)
|
attrs={'status': 'active', 'power_state': 'power on'}, count=3)
|
||||||
for s in self.fake_servers:
|
for s in self.fake_servers:
|
||||||
setattr(s, 'nics', fake_return_net)
|
setattr(s, 'addresses', fake_return_net)
|
||||||
self.list_columns = (
|
self.list_columns = (
|
||||||
"UUID",
|
"UUID",
|
||||||
"Name",
|
"Name",
|
||||||
@ -314,7 +317,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
self.fake_servers[i].uuid,
|
self.fake_servers[i].uuid,
|
||||||
self.fake_servers[i].name,
|
self.fake_servers[i].name,
|
||||||
self.fake_servers[i].status,
|
self.fake_servers[i].status,
|
||||||
'172.24.4.4, 2001:db8::a',
|
'private=172.24.4.4, 2001:db8::a',
|
||||||
self.fake_servers[i].image_uuid,
|
self.fake_servers[i].image_uuid,
|
||||||
) for i in range(3))
|
) for i in range(3))
|
||||||
|
|
||||||
@ -323,7 +326,7 @@ class TestServerList(test_base.TestBaremetalComputeV1):
|
|||||||
self.fake_servers[i].name,
|
self.fake_servers[i].name,
|
||||||
self.fake_servers[i].status,
|
self.fake_servers[i].status,
|
||||||
self.fake_servers[i].power_state,
|
self.fake_servers[i].power_state,
|
||||||
'172.24.4.4, 2001:db8::a',
|
'private=172.24.4.4, 2001:db8::a',
|
||||||
self.fake_servers[i].image_uuid,
|
self.fake_servers[i].image_uuid,
|
||||||
self.fake_servers[i].flavor_uuid,
|
self.fake_servers[i].flavor_uuid,
|
||||||
self.fake_servers[i].availability_zone,
|
self.fake_servers[i].availability_zone,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user