diff --git a/doc/source/command-objects/console-url.rst b/doc/source/command-objects/console-url.rst index 7993a7bf..166d0a9e 100644 --- a/doc/source/command-objects/console-url.rst +++ b/doc/source/command-objects/console-url.rst @@ -30,6 +30,18 @@ Show server's remote console URL Show SPICE console URL +.. option:: --rdp + + Show RDP console URL + +.. option:: --serial + + Show serial console URL + +.. option:: --mks + + Show WebMKS console URL + .. describe:: Server to show URL (name or ID) diff --git a/openstackclient/compute/v2/console.py b/openstackclient/compute/v2/console.py index 74bed441..02be99d5 100644 --- a/openstackclient/compute/v2/console.py +++ b/openstackclient/compute/v2/console.py @@ -96,6 +96,27 @@ class ShowConsoleURL(command.ShowOne): const='spice-html5', help=_("Show SPICE console URL") ) + type_group.add_argument( + '--rdp', + dest='url_type', + action='store_const', + const='rdp-html5', + help=_("Show RDP console URL"), + ) + type_group.add_argument( + '--serial', + dest='url_type', + action='store_const', + const='serial', + help=_("Show serial console URL"), + ) + type_group.add_argument( + '--mks', + dest='url_type', + action='store_const', + const='webmks', + help=_("Show WebMKS console URL"), + ) return parser def take_action(self, parsed_args): @@ -110,6 +131,12 @@ class ShowConsoleURL(command.ShowOne): data = server.get_vnc_console(parsed_args.url_type) if parsed_args.url_type in ['spice-html5']: data = server.get_spice_console(parsed_args.url_type) + if parsed_args.url_type in ['rdp-html5']: + data = server.get_rdp_console(parsed_args.url_type) + if parsed_args.url_type in ['serial']: + data = server.get_serial_console(parsed_args.url_type) + if parsed_args.url_type in ['webmks']: + data = server.get_mks_console() if not data: return ({}, {}) diff --git a/openstackclient/tests/compute/v2/test_console.py b/openstackclient/tests/compute/v2/test_console.py index 6be08126..fe4f26ae 100644 --- a/openstackclient/tests/compute/v2/test_console.py +++ b/openstackclient/tests/compute/v2/test_console.py @@ -147,3 +147,50 @@ class TestConsoleUrlShow(TestConsole): old_fake_server.get_vnc_console.assert_called_once_with('novnc') self.assertEqual(old_columns, columns) self.assertEqual(old_data, data) + + def test_console_url_show_with_rdp(self): + arglist = [ + '--rdp', + 'foo_vm', + ] + verifylist = [ + ('url_type', 'rdp-html5'), + ('server', 'foo_vm'), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + columns, data = self.cmd.take_action(parsed_args) + self.fake_server.get_rdp_console.assert_called_once_with( + 'rdp-html5') + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) + + def test_console_url_show_with_serial(self): + arglist = [ + '--serial', + 'foo_vm', + ] + verifylist = [ + ('url_type', 'serial'), + ('server', 'foo_vm'), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + columns, data = self.cmd.take_action(parsed_args) + self.fake_server.get_serial_console.assert_called_once_with( + 'serial') + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) + + def test_console_url_show_with_mks(self): + arglist = [ + '--mks', + 'foo_vm', + ] + verifylist = [ + ('url_type', 'webmks'), + ('server', 'foo_vm'), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + columns, data = self.cmd.take_action(parsed_args) + self.fake_server.get_mks_console.assert_called_once_with() + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) diff --git a/releasenotes/notes/bug-1605088-fea9347336764469.yaml b/releasenotes/notes/bug-1605088-fea9347336764469.yaml new file mode 100644 index 00000000..15e0bc45 --- /dev/null +++ b/releasenotes/notes/bug-1605088-fea9347336764469.yaml @@ -0,0 +1,4 @@ +--- +features: + - Support to get server ``rdp``, ``serial``, ``mks`` type console url. + [Bug `1605088 `_]