Example #1
0
    def run_netconf(username, device, rpc, lock=False):
        """ Execute Netconf request """

        plat = device.get('platform', None)
        if plat is not None and plat not in ['', 'other']:
            params = {'name': plat}
        else:
            params = {}

        session = NCClient(device['host'], device['port'], device['user'],
                           device['passwd'], params)

        # If rpc is not provided, return capabilities
        if rpc is None or rpc == '':
            return session.get_capability()
        return session.run(rpc, lock)
Example #2
0
    def run_netconf(username, device, rpc, lock=False):
        """ Execute Netconf request """

        plat = device.get('platform', None)
        if plat is not None and plat not in ['', 'other']:
            params = {'name' : plat}
        else:
            params = {}

        session = NCClient(device['host'], device['port'],
                           device['user'], device['passwd'], params)

        # If rpc is not provided, return capabilities
        if rpc is None or rpc == '':
            return session.get_capability()
        return session.run(rpc, lock)
Example #3
0
    def run_request(request):
        """
        Execute a RPC request using NCClient
        """

        request = ET.fromstring(request)
        rpc = None
        auth = None
        device = None
        for child in request:
            tag = child.xpath('local-name()')
            if tag == 'metadata':
                auth = child.find('netconf-auth')
                host = auth.get('host', None)
                port = int(auth.get('port', 830))
                user = auth.get('user', None)
                passwd = auth.get('passwd', None)
                dev = child.find('device-auth')
                device = auth.get('platform', None)
            elif tag == 'rpc':
                rpc = child

        if auth is None:
            logging.error("Device information is not provided in request payload")
            reply = ET.Element('reply')
            reply.text = 'Device info missing'
            return reply

        logging.debug("IP  : %s,  Port: %s" % (host, port))
        logging.debug("User: %s,  PWD:  %s" % (user, passwd))

        params = None
        if device is not None:
            params = {'name' : device}

        if rpc is None:
            session = NCClient(host, port, user, passwd, params)
            return session.get_capability()

        logging.debug("RPC: " + ET.tostring(rpc))
        session = NCClient(host, port, user, passwd, params)
        return session.run(ET.tostring(rpc))