Skip to content

Commit

Permalink
Merge 1251c2d into b95ae1f
Browse files Browse the repository at this point in the history
  • Loading branch information
fredgan committed Sep 7, 2020
2 parents b95ae1f + 1251c2d commit 6824137
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 33 deletions.
15 changes: 8 additions & 7 deletions ncclient/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def connect_ssh(*args, **kwds):
if session.transport:
session.close()
raise
return Manager(session, device_handler, **manager_params)
return Manager(session, device_handler, manager_params=manager_params)


def connect_ioproc(*args, **kwds):
Expand All @@ -154,7 +154,7 @@ def connect_ioproc(*args, **kwds):
session = third_party_import.IOProc(device_handler)
session.connect()

return Manager(session, device_handler, **manager_params)
return Manager(session, device_handler, manager_params=manager_params)


def connect(*args, **kwds):
Expand Down Expand Up @@ -194,12 +194,13 @@ class Manager(object):
HUGE_TREE_DEFAULT = False
"""Default for `huge_tree` support for XML parsing of RPC replies (defaults to False)"""

def __init__(self, session, device_handler, timeout=30):
def __init__(self, session, device_handler, **kwargs):
manager_params = kwargs.get("manager_params", {})
self._session = session
self._async_mode = False
self._timeout = timeout
self._raise_mode = operations.RaiseMode.ALL
self._huge_tree = self.HUGE_TREE_DEFAULT
self._async_mode = manager_params.get("async_mode", False)
self._timeout = manager_params.get("timeout", 30)
self._raise_mode = manager_params.get("raise_mode", operations.RaiseMode.ALL)
self._huge_tree = manager_params.get("huge_tree", self.HUGE_TREE_DEFAULT)
self._device_handler = device_handler
self._vendor_operations = {}
if device_handler:
Expand Down
68 changes: 42 additions & 26 deletions test/unit/test_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ def test_connect_ioproc(self, mock_ssh):
manager.connect(host='localhost', device_params={'name': 'junos',
'local': True})
mock_ssh.assert_called_once_with(host='localhost',
device_params={'local': True, 'name': 'junos'})
device_params={'local': True, 'name': 'junos'})

@patch('paramiko.proxy.ProxyCommand')
@patch('paramiko.Transport')
Expand All @@ -119,12 +119,12 @@ def test_connect_with_ssh_config(self, mock_session, mock_hex, mock_trans, mock_
ssh_config_path = 'test/unit/ssh_config'

conn = manager.connect(host='fake_host',
port=830,
username='user',
password='password',
hostkey_verify=False,
allow_agent=False,
ssh_config=ssh_config_path)
port=830,
username='user',
password='password',
hostkey_verify=False,
allow_agent=False,
ssh_config=ssh_config_path)

log.debug(mock_proxy.call_args[0][0])
self.assertEqual(mock_proxy.called, 1)
Expand All @@ -147,20 +147,36 @@ def test_ssh2(self, mock_session, mock_hex, mock_trans, mock_socket):
@patch('ncclient.transport.third_party.junos.ioproc.IOProc.connect')
def test_ioproc(self, mock_connect, mock_ioproc):
conn = manager.connect(host='localhost',
port=22,
username='user',
password='password',
timeout=3,
hostkey_verify=False,
device_params={'local': True, 'name': 'junos'},
manager_params={'timeout': 10})
port=22,
username='user',
password='password',
timeout=3,
hostkey_verify=False,
device_params={'local': True, 'name': 'junos'},
manager_params={'timeout': 10})
self.assertEqual(mock_connect.called, 1)
self.assertEqual(conn._timeout, 10)
self.assertEqual(conn._device_handler.device_params, {'local': True, 'name': 'junos'})
self.assertEqual(
conn._device_handler.__class__.__name__,
"JunosDeviceHandler")

@patch('ncclient.transport.SSHSession')
def test_make_manager_params(self, mock_ssh):
conn = manager.connect(host='fake_host',
port=830,
username='user',
password='password',
hostkey_verify=False,
allow_agent=False,
manager_params={'huge_tree': True,
'async_mode': True,
'timeout': 20})
self.assertEqual(conn.timeout, 20)
self.assertTrue(conn.huge_tree)
self.assertTrue(conn.async_mode)


def test_make_device_handler(self):
device_handler = manager.make_device_handler({'name': 'junos'})
self.assertEqual(
Expand Down Expand Up @@ -263,13 +279,13 @@ def test_manager_huge_node(self, mock_rpc, mock_session, default_value):

def _mock_manager(self):
conn = manager.connect(host='10.10.10.10',
port=22,
username='user',
password='password',
timeout=3,
hostkey_verify=False, allow_agent=False,
device_params={'name': 'junos'},
manager_params={'timeout': 10})
port=22,
username='user',
password='password',
timeout=3,
hostkey_verify=False, allow_agent=False,
device_params={'name': 'junos'},
manager_params={'timeout': 10})
return conn

@patch('socket.fromfd')
Expand All @@ -283,11 +299,11 @@ def test_outbound_manager_connected(

def _mock_outbound_manager(self):
conn = manager.connect(host=None,
sock_fd=6,
username='user',
password='password',
device_params={'name': 'junos'},
hostkey_verify=False, allow_agent=False)
sock_fd=6,
username='user',
password='password',
device_params={'name': 'junos'},
hostkey_verify=False, allow_agent=False)
return conn


Expand Down

0 comments on commit 6824137

Please sign in to comment.