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)
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)
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))