Usage

Command Line Tool

To get the capabilities of a server:

$ netconf-client --hello --host example.com

To request config from a server that has your key:

$ netconf-client --host example.com <<<"<get-config/>"

Development

To use netconf in a project:

import netconf

Netconf Client

To open a session to server:

from netconf.client import NetconfSSHSession

session = NetconfSSHSession(host, port, username, password)

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")
# ...