This page describes how to generate NETCONF emulator from your own YANG.
Download NETCONF emulator boilerplate from here: https://drive.google.com/drive/folders/1Md2zGKBKuIMnhTlYhiVSVhIeU-1fGqK6
$ ls emulator-oc-xt3300 Dockerfile emulator/ src/ |
Put the installer (confd-basic-X.X.linux.i686.installer.bin) into the boilerplate
$ ls emulator-oc-xt3300 Dockerfile confd-basic-6.6.linux.i686.installer.bin* emulator/ src/ |
Open Dockerfile and edit the version of ConfD Basic
$ cat emulator-oc-xt3300/Dockerfile FROM i386/ubuntu:xenial EXPOSE 830 COPY confd-basic-6.6.linux.i686.installer.bin /opt # Edit here WORKDIR /opt RUN apt update \ && apt install -y openssh-client make \ && ./confd-basic-6.6.linux.i686.installer.bin confd COPY emulator /opt/emulator COPY src /opt/src RUN cd confd && . ./confdrc \ && cd ../emulator && make && ./setup.sh WORKDIR /opt/emulator ENTRYPOINT ["./entry.sh"] |
Put your own YANG files into src/yang/
$ ls emulator-oc-xt3300/src/yang iana-if-type@2016-11-23.yang openconfig-interfaces@2016-05-26.yang openconfig-terminal-device@2016-12-22.yang ietf-interfaces@2014-05-08.yang openconfig-optical-amplifier@2016-03-31.yang openconfig-transport-line-common@2016-03-31.yang ietf-yang-types@2013-07-15.yang openconfig-platform-transceiver@2016-12-22.yang openconfig-transport-types@2016-12-22.yang openconfig-extensions@2015-10-09.yang openconfig-platform-types@2016-06-06.yang openconfig-types@2017-01-13.yang openconfig-if-ethernet@2016-12-22.yang openconfig-platform@2016-06-06.yang put-your-yangs-here |
Username / password are set as admin/admin.
If you want to check that your docker instance works correctly and is healthy, you can use NETCONF client emulator like netconf-console command and send "hello" request to emulator.
If emulator responds "hello" message correctly, it works fine! And also you can see the loaded yang models from the <capabilities> in the hello reply message.
$ netconf-console --host=localhost --port=830 -u admin -p admin --hello <?xml version="1.0" encoding="UTF-8"?> <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <capabilities> <capability>urn:ietf:params:netconf:base:1.0</capability> <capability>urn:ietf:params:netconf:base:1.1</capability> <capability>urn:ietf:params:netconf:capability:candidate:1.0</capability> <capability>urn:ietf:params:netconf:capability:confirmed-commit:1.0</capability> <capability>urn:ietf:params:netconf:capability:confirmed-commit:1.1</capability> <capability>urn:ietf:params:netconf:capability:xpath:1.0</capability> <capability>urn:ietf:params:netconf:capability:validate:1.0</capability> <capability>urn:ietf:params:netconf:capability:validate:1.1</capability> <capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capability> <capability>urn:ietf:params:netconf:capability:with-defaults:1.0?basic-mode=explicit&also-supported=report-all-tagged</capability> <capability>urn:ietf:params:netconf:capability:yang-library:1.0?revision=2016-06-21&module-set-id=206f40597ee8e8d35d0f0e10eebccb9e</capability> <capability>http://tail-f.com/ns/netconf/actions/1.0</capability> <capability>http://tail-f.com/ns/netconf/extensions</capability> <capability>http://openconfig.net/yang/interfaces?module=openconfig-interfaces&revision=2016-05-26</capability> <capability>http://openconfig.net/yang/interfaces/ethernet?module=openconfig-if-ethernet&revision=2016-12-22</capability> <capability>http://openconfig.net/yang/openconfig-ext?module=openconfig-extensions&revision=2015-10-09</capability> <capability>http://openconfig.net/yang/openconfig-types?module=openconfig-types&revision=2017-01-13</capability> <capability>http://openconfig.net/yang/optical-amplfier?module=openconfig-optical-amplifier&revision=2016-03-31</capability> <capability>http://openconfig.net/yang/platform?module=openconfig-platform&revision=2016-06-06</capability> <capability>http://openconfig.net/yang/platform-types?module=openconfig-platform-types&revision=2016-06-06</capability> <capability>http://openconfig.net/yang/platform/transceiver?module=openconfig-platform-transceiver&revision=2016-12-22</capability> <capability>http://openconfig.net/yang/terminal-device?module=openconfig-terminal-device&revision=2016-12-22</capability> <capability>http://openconfig.net/yang/transport-line-common?module=openconfig-transport-line-common&revision=2016-03-31</capability> <capability>http://openconfig.net/yang/transport-types?module=openconfig-transport-types&revision=2016-12-22</capability> <capability>http://tail-f.com/ns/aaa/1.1?module=tailf-aaa&revision=2015-06-16</capability> <capability>http://tail-f.com/ns/common/query?module=tailf-common-query&revision=2017-12-15</capability> <capability>http://tail-f.com/ns/kicker?module=tailf-kicker&revision=2017-09-28</capability> <capability>http://tail-f.com/yang/acm?module=tailf-acm&revision=2013-03-07</capability> <capability>http://tail-f.com/yang/common?module=tailf-common&revision=2018-03-01</capability> <capability>http://tail-f.com/yang/common-monitoring?module=tailf-common-monitoring&revision=2013-06-14</capability> <capability>http://tail-f.com/yang/confd-monitoring?module=tailf-confd-monitoring&revision=2013-06-14</capability> <capability>http://tail-f.com/yang/netconf-monitoring?module=tailf-netconf-monitoring&revision=2016-11-24</capability> <capability>http://tail-f.com/yang/xsd-types?module=tailf-xsd-types&revision=2017-11-20</capability> <capability>urn:ietf:params:xml:ns:yang:iana-crypt-hash?module=iana-crypt-hash&revision=2014-08-06&features=crypt-hash-sha-512,crypt-hash-sha-256,crypt-hash-md5</capability> <capability>urn:ietf:params:xml:ns:yang:iana-if-type?module=iana-if-type&revision=2016-11-23</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-inet-types?module=ietf-inet-types&revision=2013-07-15</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-interfaces?module=ietf-interfaces&revision=2014-05-08&features=pre-provisioning,if-mib,arbitrary-names</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-acm?module=ietf-netconf-acm&revision=2012-02-22</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring?module=ietf-netconf-monitoring&revision=2010-10-04</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-notifications?module=ietf-netconf-notifications&revision=2012-02-06</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-yang-library?module=ietf-yang-library&revision=2016-06-21</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-yang-types?module=ietf-yang-types&revision=2013-07-15</capability> <capability>urn:ietf:params:xml:ns:netconf:base:1.0?module=ietf-netconf&revision=2011-06-01</capability> <capability>urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults?module=ietf-netconf-with-defaults&revision=2011-06-01</capability> </capabilities> <session-id>32</session-id> </hello> |
You can use confd cli by docker-exec as follows:
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d2bbbe7d1046 tapi-emulator "./entry.sh" 13 seconds ago Up 11 seconds 0.0.0.0:12031->830/tcp reverent_stonebraker $ docker exec -it d2bb ./cli Welcome to ConfD Basic The CLI may only be used during product development. Commercial use of the CLI is prohibited. You must disable the CLI in confd.conf for production. For more information, visit http://www.tail-f.com. admin connected from 127.0.0.1 using console on d2bbbe7d1046 Confd# |
The detailed command and usage of confd-cli, please check the confd official manual.
To test onos device configuration function, you need to setup default configuration of this NETCONF emulator. There are no device specific default configuration, so you need to set the configuration for device interfaces, ports, components, and any other configuration which are assumed to be installed initially. You can use confd-cli or some NETCONF client tool like netconf-console.
You can check the current configuration using confd-cli:
Confd#show running-config aaa authentication users user admin uid 9001 gid 100 password $1$bzzVbo51$qwwplzIooQG4PKiKHmJoS. ssh_keydir /var/confd/homes/admin/.ssh homedir /var/confd/homes/admin ! ... |