Merge "Add support for showing network info of specified server"
This commit is contained in:
commit
aa875a3181
@ -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))
|
||||
|
@ -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)
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user