From 6acde90a961973476c8f1bb26b4527a9129e098c Mon Sep 17 00:00:00 2001 From: Zhenguo Niu Date: Mon, 15 May 2017 17:41:43 +0800 Subject: [PATCH] Add get serial console support Change-Id: Ia3281ef791d8f5b6ec7f45a11defbd95646689c3 --- moganclient/osc/v1/server.py | 36 ++++++++++++++++++++++++++++++++++++ moganclient/v1/server.py | 5 +++++ setup.cfg | 1 + 3 files changed, 42 insertions(+) diff --git a/moganclient/osc/v1/server.py b/moganclient/osc/v1/server.py index 9cf7e6c..ac83c64 100644 --- a/moganclient/osc/v1/server.py +++ b/moganclient/osc/v1/server.py @@ -602,3 +602,39 @@ class RemoveFloatingIP(command.Command): bc_client.server.remove_floating_ip(server.uuid, parsed_args.ip_address) + + +class ShowConsoleURL(command.ShowOne): + _description = _("Show server's remote console URL") + + def get_parser(self, prog_name): + parser = super(ShowConsoleURL, self).get_parser(prog_name) + parser.add_argument( + 'server', + metavar='', + help=_("Server to show URL (name or ID)") + ) + type_group = parser.add_mutually_exclusive_group() + type_group.add_argument( + '--serial', + dest='url_type', + action='store_const', + const='serial', + help=_("Show serial console URL"), + ) + 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_serial_console(server.uuid) + if not data: + return ({}, {}) + + info = {} + info.update(data.console) + return zip(*sorted(info.items())) diff --git a/moganclient/v1/server.py b/moganclient/v1/server.py index 7d23e7c..06b0f15 100644 --- a/moganclient/v1/server.py +++ b/moganclient/v1/server.py @@ -137,3 +137,8 @@ class ServerManager(base.ManagerWithFind): url = '/servers/%(server)s/networks/floatingips/%(ip)s' % { 'server': base.getid(server_id), 'ip': ip_address} return self._delete(url) + + def get_serial_console(self, server_id): + url = '/servers/%(server)s/serial_console' % { + 'server': base.getid(server_id)} + return self._get(url) diff --git a/setup.cfg b/setup.cfg index 234e947..f709543 100644 --- a/setup.cfg +++ b/setup.cfg @@ -50,6 +50,7 @@ openstack.baremetal_compute.v1 = baremetal_server_netinfo = moganclient.osc.v1.server:ShowServerNetworkInfo baremetal_server_add_floating_ip = moganclient.osc.v1.server:AddFloatingIP baremetal_server_remove_floating_ip = moganclient.osc.v1.server:RemoveFloatingIP + baremetal_console_url_show = moganclient.osc.v1.server:ShowConsoleURL baremetal_availability_zone_list = moganclient.osc.v1.availability_zone:ListAvailabilityZone baremetal_keypair_create = moganclient.osc.v1.keypair:CreateKeyPair baremetal_keypair_show = moganclient.osc.v1.keypair:ShowKeyPair