Merge "Add support for showing network info of specified server"

This commit is contained in:
Jenkins 2017-03-30 03:27:21 +00:00 committed by Gerrit Code Review
commit aa875a3181
4 changed files with 58 additions and 0 deletions

View File

@ -16,6 +16,7 @@
"""Mogan v1 Baremetal server action implementations"""
import json
import logging
from osc_lib.cli import parseractions
@ -436,3 +437,37 @@ class UnLockServer(ServersActionBase):
def take_action(self, parsed_args):
self._action_multiple_items(parsed_args, 'unlock', 'set_lock_state',
lock_state=False)
class ShowServerNetworkInfo(command.Lister):
"""Display baremetal server's network info"""
def get_parser(self, prog_name):
parser = super(ShowServerNetworkInfo, self).get_parser(prog_name)
parser.add_argument(
'server',
metavar='<server>',
help=_("Baremetal server to display its network information (name "
"or UUID)")
)
return parser
def take_action(self, parsed_args):
bc_client = self.app.client_manager.baremetal_compute
server = utils.find_resource(
bc_client.server,
parsed_args.server,
)
data = bc_client.server.get_network_info(server.uuid)
info = data._info
nics = []
for port_id in list(info):
nic = {'port_id': port_id}
nic.update(info[port_id])
nics.append(nic)
columns = ('network', 'port_id', 'mac_address', 'fixed_ips',
'floatingip', 'port_type')
formatters = {'fixed_ips': lambda s: json.dumps(s, indent=4)}
return (columns,
(utils.get_dict_properties(
s, columns, formatters=formatters) for s in nics))

View File

@ -636,3 +636,21 @@ class TestServerUnLock(TestServerLockActionBase):
mock_update_all, mock_find):
self._test_server_lock_more_than_one_partly_failed(
mock_update_all, mock_find)
@mock.patch.object(server_mgr.ServerManager, 'get_network_info')
@mock.patch.object(server_mgr.ServerManager, 'get')
class TestServerShowNetInfo(TestServer):
def setUp(self):
super(TestServerShowNetInfo, self).setUp()
self.cmd = server.ShowServerNetworkInfo(self.app, None)
self.fake_server = fakes.FakeServer.create_one_server()
def test_server_netinfo_show(self, mock_get, mock_netinfo):
args = [self.fake_server.uuid]
verify_args = [('server', self.fake_server.uuid)]
mock_get.return_value = self.fake_server
parsed_args = self.check_parser(self.cmd, args, verify_args)
self.cmd.take_action(parsed_args)
mock_get.assert_called_once_with(self.fake_server.uuid)
mock_netinfo.assert_called_once_with(self.fake_server.uuid)

View File

@ -71,3 +71,7 @@ class ServerManager(base.ManagerWithFind):
def set_lock_state(self, server_id, lock_state):
url = '/instances/%s/states/lock' % base.getid(server_id)
return self._update_all(url, data={'target': lock_state})
def get_network_info(self, server_id):
url = '/instances/%s/networks' % base.getid(server_id)
return self._get(url, response_key='ports')

View File

@ -47,6 +47,7 @@ openstack.baremetal_compute.v1 =
baremetal_server_reboot = moganclient.osc.v1.server:RebootServer
baremetal_server_update = moganclient.osc.v1.server:UpdateServer
baremetal_server_unlock = moganclient.osc.v1.server:UnLockServer
baremetal_server_netinfo = moganclient.osc.v1.server:ShowServerNetworkInfo
baremetal_availability_zone_list = moganclient.osc.v1.availability_zone:ListAvailabilityZone