connections.netconf

Netconf Connection Plugin.

Attributes

CONNECTION_NAME

Classes

Netconf

This plugin connects to the device via NETCONF using ncclient library.

Module Contents

connections.netconf.CONNECTION_NAME = 'netconf'
class connections.netconf.Netconf

This plugin connects to the device via NETCONF using ncclient library.

Inventory:

<https://ncclient.readthedocs.io/en/latest/transport.html#ncclient.transport.SSHSession.connect>`_

Example on how to configure a device to use netconfig without using an ssh agent and without verifying the keys:: — nc_device:

hostname: “192.168.16.20” username: “admin” password: “admin” port: 2022 connection_options:

netconf:
extras:

allow_agent: False hostkey_verify: False device_params:

name: “sros”

Then it can be used like::
>>> from nornir import InitNornir
>>> from nornir.core.task import Result, Task
>>>
>>> nr = InitNornir(
>>>    inventory={
>>>        "options": {
>>>            "hosts": {
>>>                "rtr00": {
>>>                    "hostname": "localhost",
>>>                    "username": "admin",
>>>                    "password": "admin",
>>>                    "port": 65030,
>>>                    "platform": "whatever",
>>>                    "connection_options": {
>>>                        "netconf": {"extras": {"hostkey_verify": False}}
>>>                    },
>>>                }
>>>           }
>>>        }
>>>    }
>>>)
>>>
>>>
>>> def netconf_code(task: Task) -> Result:
>>>    manager = task.host.get_connection("netconf", task.nornir.config)
>>>
>>>    # get running config and system state
>>>    print(manager.get())
>>>
>>>    # get only hostname
>>>    print(manager.get(filter=("xpath", "/sys:system/sys:hostname")))
>>>
>>>    # get candidate config
>>>    print(manager.get_config("candidate"))
>>>
>>>    # lock
>>>    print(manager.lock("candidate"))
>>>
>>>    # edit configuration
>>>    res = manager.edit_config(
>>>        "candidate",
>>>        "<sys:system><sys:hostname>asd</sys:hostname></sys:system>",
>>>        default_operation="merge",
>>>    )
>>>    print(res)
>>>
>>>    print(manager.commit())
>>>
>>>    # unlock
>>>    print(manager.unlock("candidate"))
>>>
>>>    return Result(result="ok", host=task.host)
>>>
>>>
>>> nr.run(task=netconf_code)
open(hostname: str, username: str, password: str | None, port: int | None = 830, platform: str | None = 'default', extras: Dict[str, Any] | None = None, configuration: Dict[str, Any] | None = None) None

Open NETCONF connection.

close() None

Close.