Netconf Karaf Console Feature

Netconf Karaf Console (odl-netconf-console) is a feature that:

  • Offers a way to externally administer Netconf through Karaf Command Line Interface. Supports CRUD type of operations on netconf-connector.
  • Provides a very user-friendly way to manage Netconf devices.

Gerrit patch details

https://git.opendaylight.org/gerrit/#/q/topic:netconf-cli

Building odl-netconf-console

  1. Check out the latest netconf repository (Boron branch) from  git
  2. Dive into opendaylight/netconf folder
  3. Build the netconf project using "mvn clean install" command.

This will build the netconf-console and the netconf-testtool bundles that we shall need for the following instructions.

Prerequisites

In this Wiki we shall be using netconf-testtool to simulate Netconf devices. More details on testtool can be found here  testtool. Run the "netconf-testtool" to start of Netconf devices. In this example we start 2 Netconf devices.

$ cd netconf/netconf/tools/netconf-testtool/target
$ java -Xmx1G -XX:MaxPermSize=256M -jar netconf-testtool-1.1.0-SNAPSHOT-executable.jar --device-count 2
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0
14:06:32.887 [main] INFO  o.o.n.t.tool.NetconfDeviceSimulator - Starting 2, SSH simulated devices starting on port 17830
14:06:34.337 [main] INFO  o.a.sshd.common.util.SecurityUtils - Trying to register BouncyCastle as a JCE provider
14:06:35.538 [main] INFO  o.a.sshd.common.util.SecurityUtils - BouncyCastle not registered, using the default JCE provider
14:06:35.687 [main] INFO  o.o.n.t.tool.NetconfDeviceSimulator - All simulated devices started successfully from port 17830 to 17831
14:06:44.599 [sshd-netconf-ssh-server-nio-group-thread-1] INFO  o.a.s.server.session.ServerSession - Server session created from /127.0.0.1:61995
14:06:44.704 [sshd-netconf-ssh-server-nio-group-thread-1] INFO  o.a.s.s.k.PEMGeneratorHostKeyProvider - Generating host key...
14:06:44.854 [sshd-netconf-ssh-server-nio-group-thread-5] INFO  o.a.s.s.s.ServerUserAuthService - Session admin@/127.0.0.1:61995 authenticated
14:06:48.488 [sshd-netconf-ssh-server-nio-group-thread-8] INFO  o.a.s.server.session.ServerSession - Server session created from /127.0.0.1:61997
14:06:48.570 [sshd-netconf-ssh-server-nio-group-thread-4] INFO  o.a.s.s.s.ServerUserAuthService - Session admin@/127.0.0.1:61997 authenticated

Running 'odl-netconf-console'

  1. After a successful build run karaf from the Netconf project as shown below. Once you have a karaf instance running, the feature that provides Netconf Karaf CLI needs to be installed.
$ ./karaf/target/assembly/bin/karaf clean
                                                                                           
    ________                       ________                .__  .__       .__     __       
    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \<   |  ||  | |  |/ ___\|  |  \   __\    
    /    |    \  |_> >  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  >   Y  \  |      
    \_______  /   __/ \___  >___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
                                                                                           

Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight.

opendaylight-user@root>feature:install odl-netconf-console

To verify if the feature was installed correctly you could check karaf logs for the below line or also check Karaf console to see if the CLI commands are available

2016-05-31 13:41:00,051 | INFO  | config-pusher    | NetconfConsoleProvider           | 284 - org.opendaylight.netconf.console - 1.1.0.SNAPSHOT | NetconfProvider Session Initiated

opendaylight-user@root>netconf:<HIT_TAB>
netconf:connect-device       netconf:disconnect-device    netconf:list-devices         netconf:show-device          netconf:update-device

You should be able to see five commands as listed above.

Using 'odl-netconf-console' Help

To display command usage type: <command> --help. For example:

opendaylight-user@root>netconf:show-device --help

DESCRIPTION
        netconf:netconf:show-device

	Shows netconf device attributes.

SYNTAX
        netconf:netconf:show-device [options]

OPTIONS
        -i, --ipaddress
                IP address of the netconf device
        -id, --identifier
                Node Identifier of the netconf device
        -p, --port
                Port of the netconf device
        --help
                Display this help message

CLI description and samples

List all Netconf devices

After installing the feature verify if the controller-config connector is up by running "netconf:list-devices" command. This command does not take any arguments and displays basic information (Netconf ID, IP address, Port and the connectivity status of the device) about all the netconf devices connected to the running ODL instance.

opendaylight-user@root>netconf:list-devices
NETCONF ID        | NETCONF IP | NETCONF Port | Status   
---------------------------------------------------------
controller-config | 127.0.0.1  | 1830         | connected

Connect to a Netconf Device

In order to connect a Netconf device to ODL, use "netconf:connect-device" command and provide the IP, Port, Login credentials - all of which are mandatory arguments for successfully adding a netconf connector. Optionally if you wish to specify the device ID yourself that can also be passed to the CLI as an argument. If no device ID is passed the feature assigns a randomly generated UUID.

opendaylight-user@root>netconf:connect-device -i 127.0.0.1 -p 17831 -U admin -P admin
Netconf connector added succesfully
opendaylight-user@root>netconf:connect-device -i 127.0.0.1 -p 17830 -U admin -P admin -id test
Netconf connector added succesfully
opendaylight-user@root>netconf:list-devices
NETCONF ID                       | NETCONF IP | NETCONF Port | Status    
-------------------------------------------------------------------------
87b31eaad1634bb080025ef35fcc831d | 127.0.0.1  | 17831        | connected
test                             | 127.0.0.1  | 17830        | connected
controller-config                | 127.0.0.1  | 1830         | connected 

Show a Netconf device attributes

Use "netconf:show-device" command to list the attributes of a Netconf device. "netconf:show-device" command accepts either IP and Port OR the device ID to list the attributes. For example:

opendaylight-user@root>netconf:show-device -i 127.0.0.1 -p 17830
NETCONF ID | NETCONF IP | NETCONF Port | Status    | Available Capabilities                                                                                              
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test       | 127.0.0.1  | 17830        | Connected | (urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types                                    
           |            |              |           | urn:ietf:params:netconf:capability:candidate:1.0                                                                    
           |            |              |           | urn:ietf:params:netconf:base:1.1                                                                                    
           |            |              |           | urn:ietf:params:netconf:base:1.0                                                                                    
           |            |              |           | (urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2010-09-24)ietf-yang-types                                    
           |            |              |           | (urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension
           |            |              |           | urn:ietf:params:netconf:capability:exi:1.0                                                                          
           |            |              |           | (urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring                    
opendaylight-user@root>netconf:show-device -id test
NETCONF ID | NETCONF IP | NETCONF Port | Status    | Available Capabilities                                                                                              
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test       | 127.0.0.1  | 17830        | Connected | (urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24)ietf-inet-types                                    
           |            |              |           | urn:ietf:params:netconf:capability:candidate:1.0                                                                    
           |            |              |           | urn:ietf:params:netconf:base:1.1                                                                                    
           |            |              |           | urn:ietf:params:netconf:base:1.0                                                                                    
           |            |              |           | (urn:ietf:params:xml:ns:yang:ietf-yang-types?revision=2010-09-24)ietf-yang-types                                    
           |            |              |           | (urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension?revision=2013-12-10)ietf-netconf-monitoring-extension
           |            |              |           | urn:ietf:params:netconf:capability:exi:1.0                                                                          
           |            |              |           | (urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?revision=2010-10-04)ietf-netconf-monitoring                    

Update Netconf device attributes

In order to update device attributes (IP, port, credentials) use the "netconf:update-device" command. Note that, for update command the device ID, username and password are mandatory arguments to pass. For example: to update the username and password specify new username and password as below.

opendaylight-user@root>netconf:update-device -id test -U admin -P admin -nU test -nP test
NETCONF node: test updated successfully.
opendaylight-user@root>netconf:list-devices
NETCONF ID                       | NETCONF IP | NETCONF Port | Status   
------------------------------------------------------------------------
87b31eaad1634bb080025ef35fcc831d | 127.0.0.1  | 17831        | connected
test                             | 127.0.0.1  | 17830        | connected
controller-config                | 127.0.0.1  | 1830         | connected

Disconnect from a Netconf device

Use "netconf:disconnect-device" command in order to remove a netconf connector. "netconf:disconnect-device" command accepts either IP and Port OR the device ID for disconnection to happen.

opendaylight-user@root>netconf:disconnect-device -i 127.0.0.1 -p 17830
OR
opendaylight-user@root>netconf:disconnect-device -id test
Netconf connector disconnected succesfully
opendaylight-user@root>netconf:list-devices
NETCONF ID                       | NETCONF IP | NETCONF Port | Status    
-------------------------------------------------------------------------
87b31eaad1634bb080025ef35fcc831d | 127.0.0.1  | 17831        | connected
controller-config                | 127.0.0.1  | 1830         | connected 
  • No labels