Merge "compute: Fix weird option definition for 'server ssh'"

This commit is contained in:
Zuul 2021-12-25 10:54:18 +00:00 committed by Gerrit Code Review
commit ba935590f4
2 changed files with 81 additions and 29 deletions

View File

@ -4462,51 +4462,26 @@ class SshServer(command.Command):
help=_('Server (name or ID)'),
)
parser.add_argument(
'--login',
'--login', '-l',
metavar='<login-name>',
help=_('Login name (ssh -l option)'),
)
parser.add_argument(
'-l',
dest='login',
metavar='<login-name>',
help=argparse.SUPPRESS,
)
parser.add_argument(
'--port',
'--port', '-p',
metavar='<port>',
type=int,
help=_('Destination port (ssh -p option)'),
)
parser.add_argument(
'-p',
metavar='<port>',
dest='port',
type=int,
help=argparse.SUPPRESS,
)
parser.add_argument(
'--identity',
'--identity', '-i',
metavar='<keyfile>',
help=_('Private key file (ssh -i option)'),
)
parser.add_argument(
'-i',
metavar='<filename>',
dest='identity',
help=argparse.SUPPRESS,
)
parser.add_argument(
'--option',
'--option', '-o',
metavar='<config-options>',
help=_('Options in ssh_config(5) format (ssh -o option)'),
)
parser.add_argument(
'-o',
metavar='<option>',
dest='option',
help=argparse.SUPPRESS,
)
ip_group = parser.add_mutually_exclusive_group()
ip_group.add_argument(
'-4',

View File

@ -8265,6 +8265,83 @@ class TestServerShow(TestServer):
exceptions.CommandError, self.cmd.take_action, parsed_args)
@mock.patch('openstackclient.compute.v2.server.os.system')
class TestServerSsh(TestServer):
def setUp(self):
super().setUp()
self.cmd = server.SshServer(self.app, None)
self.app.client_manager.auth_ref = mock.Mock()
self.app.client_manager.auth_ref.username = 'cloud'
self.attrs = {
'addresses': {
'public': [
{
'addr': '192.168.1.30',
'OS-EXT-IPS-MAC:mac_addr': '00:0c:29:0d:11:74',
'OS-EXT-IPS:type': 'fixed',
'version': 4,
},
],
},
}
self.server = compute_fakes.FakeServer.create_one_server(
attrs=self.attrs, methods=self.methods,
)
self.servers_mock.get.return_value = self.server
def test_server_ssh_no_opts(self, mock_exec):
arglist = [
self.server.name,
]
verifylist = [
('server', self.server.name),
('login', None),
('port', None),
('identity', None),
('option', None),
('ipv4', False),
('ipv6', False),
('address_type', 'public'),
('verbose', False),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
self.assertIsNone(result)
mock_exec.assert_called_once_with('ssh cloud@192.168.1.30')
def test_server_ssh_opts(self, mock_exec):
arglist = [
self.server.name,
'-l', 'username',
'-p', '2222',
]
verifylist = [
('server', self.server.name),
('login', 'username'),
('port', 2222),
('identity', None),
('option', None),
('ipv4', False),
('ipv6', False),
('address_type', 'public'),
('verbose', False),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args)
self.assertIsNone(result)
mock_exec.assert_called_once_with(
'ssh -p 2222 username@192.168.1.30'
)
class TestServerStart(TestServer):
def setUp(self):