@@ -8265,6 +8265,83 @@ def test_show_topology_pre_v278(self):
82658265 exceptions .CommandError , self .cmd .take_action , parsed_args )
82668266
82678267
8268+ @mock .patch ('openstackclient.compute.v2.server.os.system' )
8269+ class TestServerSsh (TestServer ):
8270+
8271+ def setUp (self ):
8272+ super ().setUp ()
8273+
8274+ self .cmd = server .SshServer (self .app , None )
8275+
8276+ self .app .client_manager .auth_ref = mock .Mock ()
8277+ self .app .client_manager .auth_ref .username = 'cloud'
8278+
8279+ self .attrs = {
8280+ 'addresses' : {
8281+ 'public' : [
8282+ {
8283+ 'addr' : '192.168.1.30' ,
8284+ 'OS-EXT-IPS-MAC:mac_addr' : '00:0c:29:0d:11:74' ,
8285+ 'OS-EXT-IPS:type' : 'fixed' ,
8286+ 'version' : 4 ,
8287+ },
8288+ ],
8289+ },
8290+ }
8291+ self .server = compute_fakes .FakeServer .create_one_server (
8292+ attrs = self .attrs , methods = self .methods ,
8293+ )
8294+ self .servers_mock .get .return_value = self .server
8295+
8296+ def test_server_ssh_no_opts (self , mock_exec ):
8297+ arglist = [
8298+ self .server .name ,
8299+ ]
8300+ verifylist = [
8301+ ('server' , self .server .name ),
8302+ ('login' , None ),
8303+ ('port' , None ),
8304+ ('identity' , None ),
8305+ ('option' , None ),
8306+ ('ipv4' , False ),
8307+ ('ipv6' , False ),
8308+ ('address_type' , 'public' ),
8309+ ('verbose' , False ),
8310+ ]
8311+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
8312+
8313+ result = self .cmd .take_action (parsed_args )
8314+
8315+ self .assertIsNone (result )
8316+ mock_exec .assert_called_once_with ('ssh cloud@192.168.1.30' )
8317+
8318+ def test_server_ssh_opts (self , mock_exec ):
8319+ arglist = [
8320+ self .server .name ,
8321+ '-l' , 'username' ,
8322+ '-p' , '2222' ,
8323+ ]
8324+ verifylist = [
8325+ ('server' , self .server .name ),
8326+ ('login' , 'username' ),
8327+ ('port' , 2222 ),
8328+ ('identity' , None ),
8329+ ('option' , None ),
8330+ ('ipv4' , False ),
8331+ ('ipv6' , False ),
8332+ ('address_type' , 'public' ),
8333+ ('verbose' , False ),
8334+ ]
8335+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
8336+
8337+ result = self .cmd .take_action (parsed_args )
8338+
8339+ self .assertIsNone (result )
8340+ mock_exec .assert_called_once_with (
8341+ 'ssh -p 2222 username@192.168.1.30'
8342+ )
8343+
8344+
82688345class TestServerStart (TestServer ):
82698346
82708347 def setUp (self ):
0 commit comments