cloudshell-cli 4.0.6__py2.py3-none-any.whl → 4.1.2__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,13 @@
2
2
  # -*- coding: utf-8 -*-
3
3
  import sys
4
4
  from abc import ABCMeta, abstractmethod
5
+ from collections import defaultdict
5
6
 
7
+ from cloudshell.cli.factory.session_factory import (
8
+ CloudInfoAccessKeySessionFactory,
9
+ GenericSessionFactory,
10
+ SessionFactory,
11
+ )
6
12
  from cloudshell.cli.service.cli import CLI
7
13
  from cloudshell.cli.session.ssh_session import SSHSession
8
14
  from cloudshell.cli.session.telnet_session import TelnetSession
@@ -16,39 +22,33 @@ else:
16
22
 
17
23
 
18
24
  class CLIServiceConfigurator(object):
19
- REGISTERED_SESSIONS = (SSHSession, TelnetSession)
20
-
21
- def __init__(self, resource_config, logger, cli=None, registered_sessions=None):
25
+ REGISTERED_SESSIONS = (CloudInfoAccessKeySessionFactory(SSHSession), TelnetSession)
26
+ """Using factories instead of """
27
+
28
+ def __init__(
29
+ self,
30
+ resource_config,
31
+ logger,
32
+ cli=None,
33
+ registered_sessions=None,
34
+ access_key=None,
35
+ access_key_passphrase=None,
36
+ ):
22
37
  """Initialize CLI service configurator.
23
38
 
24
39
  :param cloudshell.shell.standards.resource_config_generic_models.GenericCLIConfig resource_config: # noqa: E501
25
40
  :param logging.Logger logger:
26
41
  :param cloudshell.cli.service.cli.CLI cli:
27
42
  :param registered_sessions: Session types and order
43
+ :param access_key: access key for the resource
44
+ :param access_key_passphrase: access key passphrase for the resource
28
45
  """
29
46
  self._cli = cli or CLI()
30
47
  self._resource_config = resource_config
31
48
  self._logger = logger
32
49
  self._registered_sessions = registered_sessions or self.REGISTERED_SESSIONS
33
-
34
- @property
35
- def _username(self):
36
- return self._resource_config.user
37
-
38
- @property
39
- @lru_cache()
40
- def _password(self):
41
- return self._resource_config.password
42
-
43
- @property
44
- def _resource_address(self):
45
- """Resource IP."""
46
- return self._resource_config.address
47
-
48
- @property
49
- def _port(self):
50
- """Connection port property, to open socket on."""
51
- return self._resource_config.cli_tcp_port
50
+ self._access_key = access_key
51
+ self._access_key_passphrase = access_key_passphrase
52
52
 
53
53
  @property
54
54
  def _cli_type(self):
@@ -58,29 +58,28 @@ class CLIServiceConfigurator(object):
58
58
  @property
59
59
  @lru_cache()
60
60
  def _session_dict(self):
61
- return {sess.SESSION_TYPE.lower(): [sess] for sess in self._registered_sessions}
61
+ session_dict = defaultdict(list)
62
+ for sess in self._registered_sessions:
63
+ session_dict[sess.SESSION_TYPE.lower()].append(sess)
64
+ return session_dict
62
65
 
63
66
  def _on_session_start(self, session, logger):
64
- """Perform some default commands when session just opened.
65
-
66
- Like 'no logging console'
67
- """
68
67
  pass
69
68
 
70
- @property
71
- @lru_cache()
72
- def _session_kwargs(self):
73
- return {
74
- "host": self._resource_address,
75
- "username": self._username,
76
- "password": self._password,
77
- "port": self._port,
78
- "on_session_start": self._on_session_start,
79
- }
69
+ def initialize_session(self, session):
70
+ if not isinstance(session, SessionFactory):
71
+ session = GenericSessionFactory(session)
72
+ return session.init_session(
73
+ self._resource_config,
74
+ self._logger,
75
+ on_session_start=self._on_session_start,
76
+ access_key=self._access_key,
77
+ access_key_passphrase=self._access_key_passphrase,
78
+ )
80
79
 
81
80
  def _defined_sessions(self):
82
81
  return [
83
- sess(**self._session_kwargs)
82
+ self.initialize_session(sess)
84
83
  for sess in self._session_dict.get(
85
84
  self._cli_type.lower(), self._registered_sessions
86
85
  )
@@ -96,7 +96,6 @@ class SwitchCliHandler(CliHandlerImpl):
96
96
  session.hardware_expect("exit", EnableCommandMode.PROMPT, logger)
97
97
 
98
98
  def enter_enable_mode(self, session, logger):
99
-
100
99
  enable_password = get_attribute_by_name(
101
100
  attribute_name="Enable Password", context=self._context
102
101
  )
@@ -13,7 +13,6 @@ class CliCommandMode(CommandMode):
13
13
  EXIT_COMMAND = "exit"
14
14
 
15
15
  def __init__(self, context):
16
-
17
16
  CommandMode.__init__(
18
17
  self,
19
18
  CliCommandMode.PROMPT,
File without changes
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/python
2
+ # -*- coding: utf-8 -*-
3
+ from abc import ABCMeta, abstractmethod
4
+
5
+ ABC = ABCMeta("ABC", (object,), {"__slots__": ()})
6
+
7
+
8
+ class SessionFactory(ABC):
9
+ """Session factory.
10
+
11
+ Help to initialize session for specified session class.
12
+ """
13
+
14
+ def __init__(self, session_class):
15
+ """:param session_class: Session class."""
16
+ self.session_class = session_class
17
+
18
+ @abstractmethod
19
+ def init_session(
20
+ self,
21
+ resource_config,
22
+ logger,
23
+ on_session_start=None,
24
+ access_key=None,
25
+ access_key_passphrase=None,
26
+ ):
27
+ """Initialize session instance.
28
+
29
+ Encapsulate the logic of the session instance creation.
30
+ :param resource_config:
31
+ :param logging.Logger logger:
32
+ :param on_session_start: function that will be called on session start
33
+ :param access_key: access key for the resource
34
+ :param access_key_passphrase: access key passphrase for the resource
35
+ """
36
+ raise NotImplementedError
37
+
38
+
39
+ class GenericSessionFactory(SessionFactory):
40
+ def init_session(
41
+ self,
42
+ resource_config,
43
+ logger,
44
+ on_session_start=None,
45
+ access_key=None,
46
+ access_key_passphrase=None,
47
+ ):
48
+ return self.session_class(
49
+ **self._session_kwargs(
50
+ resource_config,
51
+ logger,
52
+ on_session_start,
53
+ access_key,
54
+ access_key_passphrase,
55
+ )
56
+ )
57
+
58
+ @property
59
+ def SESSION_TYPE(self):
60
+ return self.session_class.SESSION_TYPE
61
+
62
+ def _session_kwargs(
63
+ self,
64
+ resource_config,
65
+ logger,
66
+ on_session_start,
67
+ access_key,
68
+ access_key_passphrase,
69
+ ):
70
+ return {
71
+ "host": resource_config.address,
72
+ "username": resource_config.user,
73
+ "password": resource_config.password,
74
+ "port": resource_config.cli_tcp_port,
75
+ "on_session_start": on_session_start,
76
+ }
77
+
78
+
79
+ class CloudInfoAccessKeySessionFactory(GenericSessionFactory):
80
+ def _session_kwargs(
81
+ self,
82
+ resource_config,
83
+ logger,
84
+ on_session_start,
85
+ access_key,
86
+ access_key_passphrase,
87
+ ):
88
+ return {
89
+ "host": resource_config.address,
90
+ "username": resource_config.user,
91
+ "password": resource_config.password,
92
+ "port": resource_config.cli_tcp_port,
93
+ "pkey": access_key,
94
+ "pkey_passphrase": access_key_passphrase,
95
+ "on_session_start": on_session_start,
96
+ }
@@ -35,7 +35,7 @@ class CommandModeHelper(NodeOperations):
35
35
 
36
36
  :rtype: OrderedDict
37
37
  """
38
- # noqa
38
+
39
39
  def _get_child_nodes(command_node):
40
40
  return reduce(
41
41
  lambda x, y: x + _get_child_nodes(y),
@@ -60,7 +60,7 @@ class CommandModeHelper(NodeOperations):
60
60
 
61
61
  :rtype: dict
62
62
  """
63
- # noqa
63
+
64
64
  def _create_child_modes(instance, child_dict):
65
65
  instance_dict = {}
66
66
  for mode_type in child_dict:
@@ -308,7 +308,6 @@ class ExpectSession(Session, ABC):
308
308
  self._loop_detector_max_combination_length,
309
309
  )
310
310
  while retries == 0 or retries_count < retries:
311
-
312
311
  read_buffer = self._receive_all(timeout, logger)
313
312
 
314
313
  if read_buffer:
@@ -38,7 +38,6 @@ class SCPISession(TCPSession):
38
38
  remove_command_from_output=True,
39
39
  **optional_args
40
40
  ):
41
-
42
41
  if ";:system:error?" not in command.lower():
43
42
  command += ";:system:error?"
44
43
 
@@ -1,3 +1,5 @@
1
+ from io import StringIO
2
+
1
3
  import paramiko
2
4
  from scp import SCPClient
3
5
 
@@ -22,6 +24,7 @@ class SSHSession(ExpectSession, ConnectionParams):
22
24
  port=None,
23
25
  on_session_start=None,
24
26
  pkey=None,
27
+ pkey_passphrase=None,
25
28
  *args,
26
29
  **kwargs
27
30
  ):
@@ -36,6 +39,7 @@ class SSHSession(ExpectSession, ConnectionParams):
36
39
  self.username = username
37
40
  self.password = password
38
41
  self.pkey = pkey
42
+ self.pkey_passphrase = pkey_passphrase
39
43
 
40
44
  self._handler = None
41
45
  self._current_channel = None
@@ -52,6 +56,7 @@ class SSHSession(ExpectSession, ConnectionParams):
52
56
  self.username == other.username,
53
57
  self.password == other.password,
54
58
  self.pkey == other.pkey,
59
+ self.pkey_passphrase == other.pkey_passphrase,
55
60
  ]
56
61
  )
57
62
 
@@ -80,7 +85,7 @@ class SSHSession(ExpectSession, ConnectionParams):
80
85
  banner_timeout=30,
81
86
  allow_agent=False,
82
87
  look_for_keys=False,
83
- pkey=self.pkey,
88
+ pkey=self._get_pkey_object(self.pkey, self.pkey_passphrase, logger),
84
89
  )
85
90
  except Exception as e:
86
91
  logger.exception("Failed to initialize session:")
@@ -161,3 +166,18 @@ class SSHSession(ExpectSession, ConnectionParams):
161
166
  sftp.putfo(file_stream, dest_pathname)
162
167
  sftp.chmod(dest_pathname, int(dest_permissions, base=8))
163
168
  sftp.close()
169
+
170
+ @staticmethod
171
+ def _get_pkey_object(key_material, passphrase, logger):
172
+ """Try to detect private key type and return paramiko.PKey object."""
173
+ if not key_material:
174
+ return None
175
+
176
+ for cls in [paramiko.RSAKey, paramiko.DSSKey, paramiko.ECDSAKey]:
177
+ try:
178
+ key = cls.from_private_key(StringIO(key_material), password=passphrase)
179
+ except paramiko.ssh_exception.SSHException as e:
180
+ # Invalid key, try other key type
181
+ logger.warning(e)
182
+ else:
183
+ return key
@@ -5,7 +5,6 @@ from cloudshell.cli.session.expect_session import ExpectSession
5
5
 
6
6
 
7
7
  class TCPSession(ExpectSession, ConnectionParams):
8
-
9
8
  SESSION_TYPE = "TCP"
10
9
  BUFFER_SIZE = 1024
11
10
 
@@ -99,4 +99,4 @@ class TelnetSession(ExpectSession, ConnectionParams):
99
99
  self._handler.get_socket().settimeout(timeout)
100
100
 
101
101
  def _read_byte_data(self):
102
- self._handler.read_some()
102
+ return self._handler.read_some()
@@ -1,12 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudshell-cli
3
- Version: 4.0.6
3
+ Version: 4.1.2
4
4
  Summary: QualiSystems CloudShell CLI support package
5
5
  Home-page: http://www.qualisystems.com/
6
6
  Author: QualiSystems
7
7
  Author-email: info@qualisystems.com
8
- License: UNKNOWN
9
- Platform: UNKNOWN
10
8
  Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, <4
11
9
  License-File: LICENSE
12
10
  Requires-Dist: paramiko (<2.7,>=2.6)
@@ -20,5 +18,4 @@ Requires-Dist: cryptography (<37,>=3.3) ; python_version > "3.7"
20
18
  Requires-Dist: PyNaCl (>=1.5) ; python_version > "3.7"
21
19
  Requires-Dist: six ; python_version > "3.7"
22
20
 
23
- UNKNOWN
24
-
21
+ QualiSystems CloudShell CLI support package
@@ -1,7 +1,7 @@
1
1
  cloudshell/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk,76
2
2
  cloudshell/cli/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk,76
3
3
  cloudshell/cli/cli.py,sha256=R8DLCNeHyLF45q8EOOZTUrHtH_aE3mkxKon44GnND_I,376
4
- cloudshell/cli/configurator.py,sha256=TkYgIGKRAL0PEFG3CHVQ7SsWdMH-LqHcOpbW97gQEgY,3583
4
+ cloudshell/cli/configurator.py,sha256=_rMD7YC23tH4HE47Pbq6bK-gV5VKNJp2mnYxMCPi3lI,3810
5
5
  cloudshell/cli/session_pool_context_manager.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  cloudshell/cli/command_template/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk,76
7
7
  cloudshell/cli/command_template/command_template.py,sha256=WEIkA2JzdIbRl5d_2n28PdTwFmUzefvkpqNvSvVUTfA,1909
@@ -10,19 +10,21 @@ cloudshell/cli/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
10
10
  cloudshell/cli/examples/cli_demo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  cloudshell/cli/examples/cli_demo/connect_to_AWS/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  cloudshell/cli/examples/cli_demo/connect_to_AWS/runnur.py,sha256=9Eu-CIJBfkLvIbPkDbGGg3TL5KsXh3JHIILVRmsdyMs,1550
13
- cloudshell/cli/examples/cli_demo/connect_to_switch/SwitchClihandler.py,sha256=liJpxVA7yl_6EziTB2e-yvK1_jShRvpQoeb1z5HpUrk,4349
13
+ cloudshell/cli/examples/cli_demo/connect_to_switch/SwitchClihandler.py,sha256=_Sp5Mz2kZSgz3mkHOUNF6r5DGaFiGIW7VEZPtaRwr1M,4348
14
14
  cloudshell/cli/examples/cli_demo/connect_to_switch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  cloudshell/cli/examples/cli_demo/connect_to_switch/runner.py,sha256=O6q2d2OohQebK1cXNiUI82HHuVhMwLyLH-IOya7arTw,1662
16
16
  cloudshell/cli/examples/cli_demo/connect_to_ubuntu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  cloudshell/cli/examples/cli_demo/connect_to_ubuntu/readfrom.txt,sha256=wiGZ60IyMGEV8vKebN8xJkJ66DeOm_c2TsRwxmg70xQ,3104
18
- cloudshell/cli/examples/cli_demo/connect_to_ubuntu/runnur.py,sha256=UbenZbxu67_rMh3G7g53r_3nNE4r0EXjhNU6sQh7qEc,1515
18
+ cloudshell/cli/examples/cli_demo/connect_to_ubuntu/runnur.py,sha256=AsHKNWW2EUDymdRgjVHvUfZtYAmU9CJrQd4zDYZGDtg,1514
19
+ cloudshell/cli/factory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ cloudshell/cli/factory/session_factory.py,sha256=Le49pA3q-xI7awM7MRhC3J6ahLusjMpG15wrntJBFyY,2601
19
21
  cloudshell/cli/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
22
  cloudshell/cli/service/cli.py,sha256=W0ET3ATrarXuyMV7rd6-0CaKd9hn6VSuiu8hKeIqrjM,1024
21
23
  cloudshell/cli/service/cli_exception.py,sha256=xa-vFfGzUjkHFQ_3R84hgfhQ0bLLSfawFU_Y9fzn3eg,62
22
24
  cloudshell/cli/service/cli_service.py,sha256=Opf4eDqWMiEn8AqEtc9TbT0cfvs3BjmL7STv80sOOGc,739
23
25
  cloudshell/cli/service/cli_service_impl.py,sha256=es8xWFlcGb1MOr5MQVH8sSdC9GNbofZpS-sNoCXR_hQ,5542
24
26
  cloudshell/cli/service/command_mode.py,sha256=i3FOBFWEt_pcJjdiN-IZzlmy_FCsNl-EB5vM2t1w6oY,6425
25
- cloudshell/cli/service/command_mode_helper.py,sha256=u7lOI2tvAZ8026m81RCpFr0wFbMCQlJnD-SO_uFrlLM,2634
27
+ cloudshell/cli/service/command_mode_helper.py,sha256=5hiYGvatlKXspXnyfx_8DAl4GBJbzqmfOsxLwZCMvWo,2606
26
28
  cloudshell/cli/service/node.py,sha256=L6LcZKKHELmVDX9DW7TToOEHY5pm_7YeYuxVqESFXWA,1987
27
29
  cloudshell/cli/service/session_manager.py,sha256=iLO7aEglkqY3eVTocIyYqb569KvCum9zkKglxgBgc_I,711
28
30
  cloudshell/cli/service/session_manager_impl.py,sha256=FabZWrbLzW_7rAkbTUdDeddaIcZGE7mpesMmDK9OFcE,2290
@@ -31,13 +33,13 @@ cloudshell/cli/service/session_pool_context_manager.py,sha256=jK_dNX1i0fCkm6SoCg
31
33
  cloudshell/cli/service/session_pool_manager.py,sha256=yt-2loMkR1h3dwBovXzFV6D4AmNqI3kQr6m6sZ4t7vo,4449
32
34
  cloudshell/cli/session/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk,76
33
35
  cloudshell/cli/session/connection_params.py,sha256=dELSeIeGb8dXIbUDfCUTXkEvNTdhCp66caGsqiV85kE,1122
34
- cloudshell/cli/session/expect_session.py,sha256=ReY0uqDsCm4cXeHvH_8DWMTRLrBcTmu65wXD6-BkA5M,15053
35
- cloudshell/cli/session/scpi_session.py,sha256=8hBSMTYnwecICn6tCPruE7bPD5dGVSyqwv1GfEpnASw,2023
36
+ cloudshell/cli/session/expect_session.py,sha256=6VDSoAhfX7THgeaQP8aDmtPjMNEY_SOz3OzrsC4nC5A,15052
37
+ cloudshell/cli/session/scpi_session.py,sha256=GKG9XiE1wL1mfnZRDhpkPfFy56gAr05gphECODhQR2s,2022
36
38
  cloudshell/cli/session/session.py,sha256=cfwFUKhhZmUvtXUSZcZbpvIqmOvwCoYvfDAbzC3NeAw,1247
37
39
  cloudshell/cli/session/session_exceptions.py,sha256=b6xHCJlQ7zXrESbG6DJvFQ8q_JE_OAZHZ2rHya9M62g,430
38
- cloudshell/cli/session/ssh_session.py,sha256=U-4CKMdsKFDQ2jMgwZ21bmlrxVgFHe24EFThRjmAa5s,4993
39
- cloudshell/cli/session/tcp_session.py,sha256=ZmfxCFwZ04lqVzSf7vPOPyP98KNolxry9ECO-vx_ooQ,1569
40
- cloudshell/cli/session/telnet_session.py,sha256=mEeOV7jFugzVxyT82gWkh7Ok6oDtJC0wQmy4Pdp0g5Y,2891
40
+ cloudshell/cli/session/ssh_session.py,sha256=hjrGTJF9Jl8VlwS8-BuGdMFqtHS5KxvVRzF7nPEyADk,5791
41
+ cloudshell/cli/session/tcp_session.py,sha256=q_T7TkvmYDl5kaTTIUKL2Zaxzg-hnJMfOAUDxpRCPB8,1568
42
+ cloudshell/cli/session/telnet_session.py,sha256=q7FzaGvJYGX-zkAWLfXj0_ppvTjWVF825SlDOR9Pu_0,2898
41
43
  cloudshell/cli/session/tl1_session.py,sha256=IxOl7Mtu2cw-lnKjmanqI-IVx2-PWYRTtOPPimSwRDU,3244
42
44
  cloudshell/cli/session/helper/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk,76
43
45
  cloudshell/cli/session/helper/normalize_buffer.py,sha256=WHjiasTXOPr4bLM3X_rf2sFGYNw35Q2eSrH2RiJWbPs,798
@@ -58,10 +60,10 @@ tests/cli/session/__init__.py,sha256=qEFeq3yuf3lQKVseALmL8aPM8fpCS54B_5pry00M3hk
58
60
  tests/cli/session/test_connection_params.py,sha256=qyxVfD990VMzb8Yi9lLkEVpVOFjpxXLhxvsXRLZniFI,2234
59
61
  tests/cli/session/test_expect_session.py,sha256=pg9Nz7dDRLTY-sFIn_ikaDi-wHc9iqZ1ZZeiwN2acFE,14848
60
62
  tests/cli/session/test_expect_session_py3.py,sha256=14QxAFJTN6F-jYYnXskoVhAjM9sBBqMe1y2Run7a_FI,387
61
- tests/cli/session/test_ssh_session.py,sha256=K5Xulu_M7ziuROcm1A6piR0Bz4HugYAOgdJdxhgpksg,21836
63
+ tests/cli/session/test_ssh_session.py,sha256=GVdzlSN22zuiZuJLmgoq3Yus3Nt94QDR4iUPyPBRauo,21772
62
64
  tests/cli/session/test_telnet_session.py,sha256=Yrg7KeYn-piIuMLAwPP80HkFIafDxJrTIue5u7BXnPc,3802
63
- cloudshell_cli-4.0.6.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
64
- cloudshell_cli-4.0.6.dist-info/METADATA,sha256=6Bgt3TEsPLrVIAOhjRNeTQvWucI70hNMLeXNOyEd5UM,897
65
- cloudshell_cli-4.0.6.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
66
- cloudshell_cli-4.0.6.dist-info/top_level.txt,sha256=L6C4-nnYVKqlsqCQ3HQ98myc8tI977N4Jxb-DHJSECc,17
67
- cloudshell_cli-4.0.6.dist-info/RECORD,,
65
+ cloudshell_cli-4.1.2.dist-info/LICENSE,sha256=xllut76FgcGL5zbIRvuRc7aezPbvlMUTWJPsVr2Sugg,11358
66
+ cloudshell_cli-4.1.2.dist-info/METADATA,sha256=G-sSMTqRijqZ6dk1CY8o2mFwttRNoZEdmqeG3MCLM2k,897
67
+ cloudshell_cli-4.1.2.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
68
+ cloudshell_cli-4.1.2.dist-info/top_level.txt,sha256=L6C4-nnYVKqlsqCQ3HQ98myc8tI977N4Jxb-DHJSECc,17
69
+ cloudshell_cli-4.1.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.1)
2
+ Generator: bdist_wheel (0.38.4)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
@@ -443,9 +443,6 @@ class TestSshSession(TestCase):
443
443
  )
444
444
  )
445
445
 
446
- pkey = paramiko.RSAKey.from_private_key(
447
- StringIO(KEY_WITH_PASSPHRASE), password=KEY_PASSPHRASE
448
- )
449
446
  self.assertFalse(
450
447
  self._instance.__eq__(
451
448
  SSHSession(
@@ -454,23 +451,22 @@ class TestSshSession(TestCase):
454
451
  "",
455
452
  port=self._port,
456
453
  on_session_start=self._on_session_start,
457
- pkey=pkey,
454
+ pkey=KEY_WITH_PASSPHRASE,
455
+ pkey_passphrase=KEY_PASSPHRASE,
458
456
  )
459
457
  )
460
458
  )
461
459
 
462
460
  @patch("cloudshell.cli.session.ssh_session.ExpectSession")
463
461
  def test_eq_rsa(self, expect_session):
464
- pkey = paramiko.RSAKey.from_private_key(
465
- StringIO(KEY_WITH_PASSPHRASE), password=KEY_PASSPHRASE
466
- )
467
462
  self._instance = SSHSession(
468
463
  self._hostname,
469
464
  self._username,
470
465
  self._password,
471
466
  port=self._port,
472
467
  on_session_start=self._on_session_start,
473
- pkey=pkey,
468
+ pkey=KEY_WITH_PASSPHRASE,
469
+ pkey_passphrase=KEY_PASSPHRASE,
474
470
  )
475
471
 
476
472
  self.assertTrue(
@@ -481,7 +477,8 @@ class TestSshSession(TestCase):
481
477
  self._password,
482
478
  port=self._port,
483
479
  on_session_start=self._on_session_start,
484
- pkey=pkey,
480
+ pkey=KEY_WITH_PASSPHRASE,
481
+ pkey_passphrase=KEY_PASSPHRASE,
485
482
  )
486
483
  )
487
484
  )
@@ -640,16 +637,13 @@ class TestSshSession(TestCase):
640
637
  "",
641
638
  port=server.port,
642
639
  on_session_start=self._on_session_start,
643
- pkey=pkey,
640
+ pkey=KEY_WITH_PASSPHRASE,
641
+ pkey_passphrase=KEY_PASSPHRASE,
644
642
  )
645
643
  self._instance.connect(">", logger=Mock())
646
644
  self._instance.hardware_expect("dummy command", ">", Mock())
647
645
 
648
646
  def test_rsa_failure(self):
649
- pkey = paramiko.RSAKey.from_private_key(
650
- StringIO(KEY_WITH_PASSPHRASE), password=KEY_PASSPHRASE
651
- )
652
-
653
647
  server = SSHServer(user2key={})
654
648
 
655
649
  with self.assertRaises(SSHSessionException):
@@ -659,7 +653,8 @@ class TestSshSession(TestCase):
659
653
  "",
660
654
  port=server.port,
661
655
  on_session_start=self._on_session_start,
662
- pkey=pkey,
656
+ pkey=KEY_WITH_PASSPHRASE,
657
+ pkey_passphrase=KEY_PASSPHRASE,
663
658
  )
664
659
  self._instance.connect(">", logger=Mock())
665
660
  self._instance.hardware_expect("dummy command", ">", Mock())