Beispiel #1
0
    def __init__(self, *args, **kwargs):
        '''
        __init__ instantiates a single connection instance.
        '''
        # set defaults
        kwargs.setdefault('timeout', 30)

        # instanciate BaseConnection
        # (could use super...)
        BaseConnection.__init__(self, *args, **kwargs)

        # shortwire Ncclient device handling portion
        # and create just the DeviceHandler
        device_handler = DefaultDeviceHandler()

        # create the session instance
        session = transport.SSHSession(device_handler)

        # load known_hosts file (if available)
        session.load_known_hosts()

        # instanciate ncclient Manager
        # (can't use super due to mro change)
        manager.Manager.__init__(self, session = session,
                                       device_handler = device_handler,
                                       timeout = self.timeout)
class TestDefaultDevice(unittest.TestCase):
    def setUp(self):
        self.obj = DefaultDeviceHandler()

    def test_get_capabilties(self):
        self.assertEqual(self.obj.get_capabilities(), capabilities)

    def test_get_ssh_subsystem_names(self):
        self.assertEqual(self.obj.get_ssh_subsystem_names(), ["netconf"])

    def test_perform_qualify_check(self):
        self.assertTrue(self.obj.perform_qualify_check())

    def test_handle_raw_dispatch(self):
        self.assertFalse(self.obj.handle_raw_dispatch(None))

    def test_handle_connection_exceptions(self):
        self.assertFalse(self.obj.handle_connection_exceptions(None))
Beispiel #3
0
class TestDefaultDevice(unittest.TestCase):

    def setUp(self):
        self.obj = DefaultDeviceHandler()

    def test_get_capabilties(self):
        self.assertEqual(self.obj.get_capabilities(), capabilities)

    def test_get_ssh_subsystem_names(self):
        self.assertEqual(self.obj.get_ssh_subsystem_names(), ["netconf"])

    def test_perform_qualify_check(self):
        self.assertTrue(self.obj.perform_qualify_check())

    def test_handle_raw_dispatch(self):
        self.assertFalse(self.obj.handle_raw_dispatch(None))

    def test_handle_connection_exceptions(self):
        self.assertFalse(self.obj.handle_connection_exceptions(None))
Beispiel #4
0
class TestDefaultDevice(unittest.TestCase):

    def setUp(self):
        self.obj = DefaultDeviceHandler()

    def test_get_capabilties(self):
        self.assertEqual(self.obj.get_capabilities(), capabilities)

    def test_get_ssh_subsystem_names(self):
        self.assertEqual(self.obj.get_ssh_subsystem_names(), ["netconf"])

    def test_perform_qualify_check(self):
        self.assertTrue(self.obj.perform_qualify_check())

    def test_handle_raw_dispatch(self):
        self.assertFalse(self.obj.handle_raw_dispatch(None))

    def test_handle_connection_exceptions(self):
        self.assertFalse(self.obj.handle_connection_exceptions(None))

    def test_is_rpc_error_exempt_1(self):
        self.assertFalse(self.obj.is_rpc_error_exempt(None))

    def test_is_rpc_error_exempt_2(self):
        self.obj._exempt_errors_exact_match = ["test_exempt"]
        self.assertTrue(self.obj.is_rpc_error_exempt("  Test_Exempt"))

    def test_is_rpc_error_exempt_3(self):
        self.obj._exempt_errors_startwith_wildcard_match = ["test_exempt"]
        self.assertTrue(self.obj.is_rpc_error_exempt("*Test_Exempt"))

    def test_is_rpc_error_exempt_4(self):
        self.obj._exempt_errors_endwith_wildcard_match = ["test_exempt"]
        self.assertTrue(self.obj.is_rpc_error_exempt("Test_Exempt*"))

    def test_is_rpc_error_exempt_5(self):
        self.obj._exempt_errors_full_wildcard_match = ["test_exempt"]
        self.assertTrue(self.obj.is_rpc_error_exempt("*Test_Exempt*"))
Beispiel #5
0
    def test_rawrpc(self):
        from ncclient.operations.retrieve import GetReply

        h = DefaultDeviceHandler()
        self.rawrpc = yang.connector.netconf.RawRPC(
            session=transport.SSHSession(h), device_handler=h)
        self.rawrpc._event = MyEvent()
        self.rawrpc._session = MySSHSession()
        reply_raw = '''
            <rpc-reply message-id="101"
             xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" >
            <data>
            <native xmlns="http://cisco.com/ns/yang/ned/ios">
            <version>16.3</version>
            </native>
            </data>
            </rpc-reply>
            '''
        self.rawrpc._reply = GetReply(reply_raw)
        r = '''
             <rpc message-id="101"
              xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
             <get>
             <filter>
             <native xmlns="http://cisco.com/ns/yang/ned/ios">
             <version>
             </version>
             </native>
             </filter>
             </get>
             </rpc>
            '''
        generated_value = self.rawrpc._request(r).xml
        expected_value = '''
            <rpc-reply message-id="101"
             xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" >
            <data>
            <native xmlns="http://cisco.com/ns/yang/ned/ios">
            <version>16.3</version>
            </native>
            </data>
            </rpc-reply>
            '''
        self.assertEqual(generated_value, expected_value)
Beispiel #6
0
def connect(*args, **kwargs):
    """
    Initialize a :class:`ModelDevice` over the SSH transport.
    For documentation of arguments see :meth:`ncclient.transport.SSHSession.connect`.
    The underlying :class:`ncclient.transport.SSHSession` is created with
        :data:`CAPABILITIES`. It is first instructed to
        :meth:`~ncclient.transport.SSHSession.load_known_hosts` and then
        all the provided arguments are passed directly to its implementation
        of :meth:`~ncclient.transport.SSHSession.connect`.
    """

    device_handler = DefaultDeviceHandler()
    session = transport.SSHSession(device_handler)
    if "hostkey_verify" not in kwargs or kwargs["hostkey_verify"]:
        session.load_known_hosts()

    try:
       session.connect(*args, **kwargs)
    except Exception as ex:
        if session.transport:
            session.close()
        raise
    return ModelDevice(session, device_handler, **kwargs)
Beispiel #7
0
 def setUp(self):
     self.obj = DefaultDeviceHandler()