Development Usage¶
Netconf Client¶
Sessions¶
To open a session to server:
from netconf.client import NetconfSSHSession
session = NetconfSSHSession(host, port, username, password)
config = session.get_config()
# ...
To open a session with a context manager:
from netconf.client import connect_ssh
with connect_ssh(host, port, username, password) as session:
config = session.get_config()
# ...
To close a session:
session.close()
State¶
To get the operational state from a server:
config = session.get()
To get a specific selection of state using xpath from a server:
config = session.get(select="/devices/device[name='RouterA']")
To get a specific selection of state using XML subtree filter from a server:
config = session.get(select="<devices><device><name>RouterA</name></device></devices>")
Config¶
To get the running config from a server:
config = session.get_config()
To get candidate config from a server:
config = session.get_config(source="candidate")
To get a specific selection of config using xpath from a server:
config = session.get_config(select="/devices/device[name='RouterA']")
To get a specific selection of config using XML subtree filter from a server:
config = session.get_config(select="<devices><device><name>RouterA</name></device></devices>")
To send and RPC to a server:
rpcout = session.send_rpc("<my-rpc/>")
Netconf Server¶
To create a simple server listening on port 830 that handles one RPC <my-cool-rpc>
:
from netconf import nsmap_update, server
import netconf.util as ncutil
MODEL_NS = "urn:my-urn:my-model"
nsmap_update({'pfx': MODEL_NS})
class MyServer (object):
def __init__ (self, user, pw):
controller = server.SSHUserPassController(username=user, password=pw)
self.server = server.NetconfSSHServer(server_ctl=controller, server_methods=self)
def nc_append_capabilities(self, caps):
ncutil.subelm(caps, "capability").text = MODEL_NS
def rpc_my_cool_rpc (self, session, rpc, *params):
data = ncutil.elm("data")
data.append(ncutil.leaf_elm("pfx:result", "RPC result string"))
return data
# ...
server = MyServer("myuser", "mysecert")
# ...