I have had install (probably this module is not istalled by default) odl-netconf-topology (in karaf shell: feature:install odl-netconf-topology ) and after restarting of ODL I can see PE-2 adn xrv-P1 nodes at operational datastore too. Also, I`am able to get config portions of these nodes over REST (Postman). I will try again later with latest version of Junos yang from github (for 16.1 junos release).
Put node to config datastore: PUT http://192.168.5.199:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/PE-2 <node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> <node-id>PE-2</node-id> <host xmlns="urn:opendaylight:netconf-node-topology">172.16.16.2</host> <port xmlns="urn:opendaylight:netconf-node-topology">830</port> <username xmlns="urn:opendaylight:netconf-node-topology">root</username> <password xmlns="urn:opendaylight:netconf-node-topology">passw0rd</password> <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only> <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">0</keepalive-delay> <yang-module-capabilities xmlns="urn:opendaylight:netconf-node-topology"> <capability> http://xml.juniper.net/xnm/1.1/xnm?module=configuration&revision=2014-11-13 </capability> </yang-module-capabilities> </node> Show config datastore: GET http://192.168.5.199:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/ { "topology": [ { "topology-id": "topology-netconf", "node": [ { "node-id": "xrv-P1", "netconf-node-topology:host": "172.16.17.1", "netconf-node-topology:password": "passw0rd", "netconf-node-topology:username": "rmavrichev", "netconf-node-topology:port": 830, "netconf-node-topology:tcp-only": false, "netconf-node-topology:keepalive-delay": 0 }, { "node-id": "PE-2", "netconf-node-topology:pass-through": {}, "netconf-node-topology:keepalive-delay": 0, "netconf-node-topology:host": "172.16.16.2", "netconf-node-topology:password": "passw0rd", "netconf-node-topology:username": "root", "netconf-node-topology:yang-module-capabilities": { "override": false, "capability": [ " http://xml.juniper.net/xnm/1.1/xnm?module=configuration&revision=2014-11-13" ] }, "netconf-node-topology:port": 830, "netconf-node-topology:tcp-only": false } ], "topology-types": { "l3-unicast-igp-topology:l3-unicast-igp-topology": { "ospf-topology:ospf": {}, "isis-topology:isis": {} }, "odl-bgp-topology-types:bgp-linkstate-topology": {}, "odl-bgp-topology-types:bgp-ipv6-reachability-topology": {}, "odl-bgp-topology-types:bgp-ipv4-reachability-topology": {}, "network-topology-pcep:topology-pcep": {}, "netconf-node-topology:topology-netconf": {}, "topology-tunnel-pcep:topology-tunnel-pcep": {}, "topology-tunnel:topology-tunnel": {} } } ] } Operational datastore, node PE-2: GET http://192.168.5.199:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf/node/PE-2 { "node": [ { "node-id": "PE-2", "netconf-node-topology:available-capabilities": { "available-capability": [ "urn:ietf:params:netconf:capability:confirmed-commit:1.0", "urn:ietf:params:netconf:capability:candidate:1.0", "urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0", "urn:ietf:params:netconf:capability:validate:1.0", "http://xml.juniper.net/netconf/junos/1.0", "urn:ietf:params:xml:ns:netconf:base:1.0", "urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file", "urn:ietf:params:netconf:base:1.0", "urn:ietf:params:xml:ns:netconf:capability:validate:1.0", "urn:ietf:params:xml:ns:netconf:capability:candidate:1.0", "( http://xml.juniper.net/xnm/1.1/xnm?revision=2014-11-13)configuration", "http://xml.juniper.net/dmi/system/1.0", "urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file" ] }, "netconf-node-topology:host": "172.16.16.2", "netconf-node-topology:unavailable-capabilities": {}, "netconf-node-topology:connection-status": "connected", "netconf-node-topology:port": 830 } ] } Get config portion of PE-2: GET http://192.168.5.199:8181/restconf/config/network-topology:network-topology/topology/topology-netconf/node/PE-2/yang-ext:mount/configuration:configuration/system/services { "services": { "ssh": { "protocol-version": [ "v2" ] }, "netconf": { "ssh": { "port": 830 } } } } Thanks all for cooperation. 2017-02-20 23:44 GMT+03:00 Evgeny Zobnitsev <e...@fgts.ru>: > Roman, > > The operational datastore is not working for me yet too …. > > What you see in the config datastore ? > > Evgeny > > On 20 Feb 2017, at 20:11, Roman Mavrichev <roman.mavric...@gmail.com> > wrote: > > I tried to remount two devices (Junos and IOS XRv) with new method [0], as > Ryan > said. Junos don`t list his capabilities in hello, so I added it manually > (old but working file from Yang Labs) : > > PUT http://192.168.5.199:8181/restconf/config/network- > topology:network-topology/topology/topology-netconf/node/PE-2 > <node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> > <node-id>PE-2</node-id> > <host xmlns="urn:opendaylight:netconf-node-topology">172.16.16.2</host> > <port xmlns="urn:opendaylight:netconf-node-topology">830</port> > <username xmlns="urn:opendaylight:netconf-node-topology">root</ > username> > <password xmlns="urn:opendaylight:netconf-node-topology"> > passw0rd</password> > <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</ > tcp-only> > <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">0</ > keepalive-delay> > <yang-module-capabilities xmlns="urn:opendaylight: > netconf-node-topology"> > <capability>http://xml.juniper.net/xnm/1.1/xnm? > module=configuration&revision=2014-11-13</capability> > </yang-module-capabilities> > </node> > > PUT http://192.168.5.199:8181/restconf/config/network- > topology:network-topology/topology/topology-netconf/node/xrv-P1 > <node xmlns="urn:TBD:params:xml:ns:yang:network-topology"> > <node-id>xrv-P1</node-id> > <host xmlns="urn:opendaylight:netconf-node-topology">172.16.17.1</host> > <port xmlns="urn:opendaylight:netconf-node-topology">830</port> > <username xmlns="urn:opendaylight:netconf-node-topology"> > rmavrichev</username> > <password xmlns="urn:opendaylight:netconf-node-topology"> > passw0rd</password> > <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</ > tcp-only> > <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">0</ > keepalive-delay> > </node> > > Then, check it: I see these hosts in config datastore: > > GET http://192.168.5.199:8181/restconf/config/network- > topology:network-topology/topology/topology-netconf/ > "topology": [ > { > "topology-id": "topology-netconf", > "node": [ > { > "node-id": "xrv-P1", > "netconf-node-topology:host": "172.16.17.1", > "netconf-node-topology:password": "passw0rd", > "netconf-node-topology:username": "rmavrichev", > "netconf-node-topology:port": 830, > "netconf-node-topology:tcp-only": false, > "netconf-node-topology:keepalive-delay": 0 > }, > { > "node-id": "PE-2", > "netconf-node-topology:pass-through": {}, > "netconf-node-topology:keepalive-delay": 0, > "netconf-node-topology:host": "172.16.16.2", > "netconf-node-topology:password": "passw0rd", > "netconf-node-topology:username": "root", > "netconf-node-topology:yang-module-capabilities": { > "override": false, > "capability": [ > "http://xml.juniper.net/xnm/1.1/xnm?module=configuration& > revision=2014-11-13" > ] > }, > "netconf-node-topology:port": 830, > "netconf-node-topology:tcp-only": false > } > > After that I restarted ODL. > But when I trying to view operational datastore (GET http://192.168.5.199: > 8181/restconf/operational/network-topology:network- > topology/topology/topology-netconf/) - these hosts absent... > > Also, no data about reconfigured hosts xrv-P1 and PE-2 exists int > karaf.log after restart. > > > > > > 2017-02-20 17:51 GMT+03:00 Robert Varga <n...@hq.sk>: > >> On 02/20/2017 03:38 PM, Ryan Goulding wrote: >> > Three things: >> > >> > 1) The restart is needed to initiate re-parse of the yang files and >> > schema context assembly >> > 2) You are mounting using an old method. Please use [0]. Please also >> > consider specifying a custom schema cache so that device yang is honored >> > over ODL yang (just in case). >> > 3) Please attach a log. It is very hard to say without having access to >> > karaf.log. >> >> 4) +netconf-dev :) >> >> Bye, >> Robert >> >> > >> > Regards, >> > >> > Ryan Goulding >> > >> > [0] https://wiki.opendaylight.org/view/OpenDaylight_ >> Controller:Config:Examples:Netconf#Spawning_netconf_ >> connectors_via_topology_configuration >> > >> > On Mon, Feb 20, 2017 at 9:28 AM, Roman Mavrichev >> > <roman.mavric...@gmail.com <mailto:roman.mavric...@gmail.com>> wrote: >> > >> > I got usable NETCONF ODL (0.5.2-Boron-SR2) connector with Junos (VMX >> > 16.1r10). >> > >> > 1. Get yang model for Junos from >> > https://forums.juniper.net/t5/Automation/Yang-Labs-Tools/ >> ta-p/294320 >> > <https://forums.juniper.net/t5/Automation/Yang-Labs-Tools/t >> a-p/294320> >> > (https://forums.juniper.net/jnet/attachments/jnet/Automatio >> n_Scripting/591.2/1/configuration-142.yang.txt >> > <https://forums.juniper.net/jnet/attachments/jnet/Automatio >> n_Scripting/591.2/1/configuration-142.yang.txt>) >> > >> > 2. Put it to cache/schema as configurat...@2014-11-13.yang >> > >> > 3. Restart ODL (I don`t sure what it`s really need, but I did it) >> > >> > 4. Use POSTMAN to add NetconfDevice (POST): >> > <module xmlns="urn:opendaylight:params >> :xml:ns:yang:controller:config"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type> >> > <name>PE-1</name> >> > <address >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">172.16.16.1</address> >> > <port >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">830</port> >> > <username >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">root</username> >> > <password >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">passw0rd</password> >> > <tcp-only >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">false</tcp-only> >> > <yang-module-capabilities >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <capability>http://xml.juniper.net/xnm/1.1/xnm?module= >> configuration&revision=2014-11-13 >> > <http://xml.juniper.net/xnm/1.1/xnm?module=configuration&a >> mp;revision=2014-11-13></capability> >> > </yang-module-capabilities> >> > <event-executor >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:netty">prefix:netty-event-executor</type> >> > <name>global-event-executor</name> >> > </event-executor> >> > <binding-registry >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:md:sal:binding">prefix:binding-broker-osgi-registry</type> >> > <name>binding-osgi-broker</name> >> > </binding-registry> >> > <dom-registry >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:md:sal:dom">prefix:dom-broker-osgi-registry</type> >> > <name>dom-broker</name> >> > </dom-registry> >> > <client-dispatcher >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:config:netconf">prefix:netconf-client-dispatcher</type> >> > <name>global-netconf-dispatcher</name> >> > </client-dispatcher> >> > <processing-executor >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:threadpool">prefix:threadpool</type> >> > <name>global-netconf-processing-executor</name> >> > </processing-executor> >> > <keepalive-executor >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:threadpool">prefix:scheduled-threadpool</type> >> > <name>global-netconf-ssh-scheduled-executor</name> >> > </keepalive-executor> >> > </module> >> > >> > 4. Use POSTMAN to view Netconf topology (GET) >> > http://192.168.5.199:8181/restconf/operational/network-topo >> logy:network-topology/topology/topology-netconf/ >> > <http://192.168.5.199:8181/restconf/operational/network-top >> ology:network-topology/topology/topology-netconf/> >> > , device should have status "connected" with some capabilities like >> > this: >> > { >> > "node-id": "PE-1", >> > "netconf-node-topology:available-capabilities": { >> > "available-capability": [ >> > "urn:ietf:params:netconf:capa >> bility:confirmed-commit:1.0", >> > "urn:ietf:params:netconf:capability:candidate:1.0", >> > >> > "urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0", >> > "urn:ietf:params:netconf:capability:validate:1.0", >> > "http://xml.juniper.net/netconf/junos/1.0 >> > <http://xml.juniper.net/netconf/junos/1.0>", >> > "urn:ietf:params:xml:ns:netconf:base:1.0", >> > >> > "urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol >> =http,ftp,file", >> > "urn:ietf:params:netconf:base:1.0", >> > "urn:ietf:params:xml:ns:netco >> nf:capability:validate:1.0", >> > "urn:ietf:params:xml:ns:netco >> nf:capability:candidate:1.0", >> > >> > "(http://xml.juniper.net/xnm/1.1/xnm?revision=2014-11-13)co >> nfiguration >> > <http://xml.juniper.net/xnm/1.1/xnm?revision=2014-11-13)co >> nfiguration>", >> > "http://xml.juniper.net/dmi/system/1.0 >> > <http://xml.juniper.net/dmi/system/1.0>", >> > >> > "urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file" >> > ] >> > }, >> > "netconf-node-topology:host": "172.16.16.1", >> > "netconf-node-topology:unavailable-capabilities": {}, >> > "netconf-node-topology:connection-status": "connected", >> > "netconf-node-topology:port": 830 >> > }, >> > >> > 5. Try to get some config portion of device via REST (Use POSTMAN: >> > GET >> > http://192.168.5.199:8181/restconf/config/network-topology: >> network-topology/topology/topology-netconf/node/PE-1/ >> yang-ext:mount/configuration:configuration/system/services >> > <http://192.168.5.199:8181/restconf/config/network-topology >> :network-topology/topology/topology-netconf/node/PE-1/ >> yang-ext:mount/configuration:configuration/system/services> >> > ) >> > Result: >> > >> > { >> > "services": { >> > "ssh": { >> > "protocol-version": [ >> > "v2" >> > ] >> > }, >> > "netconf": { >> > "ssh": { >> > "port": 830 >> > } >> > } >> > } >> > } >> > >> > >> > I also tried to use with ODL a newer yang models from Juniper ( >> > available from https://github.com/Juniper/yang/tree/master/16.1 >> > <https://github.com/Juniper/yang/tree/master/16.1>) , >> > configuration.yang and junos-extension.yang, but withous success. >> > I had put it to cache/schema, add revision strings (to filenames and >> > also inside yang file), succesfull register device with ODL - but >> > can`t get any config data. Sad but true. >> > >> > Sample: >> > root@osboxes:~/odl/cache/schema# head -21 >> configurat...@2017-02-20.yang >> > /* >> > * Copyright (c) 2016 Juniper Networks, Inc. >> > * All rights reserved. >> > */ >> > >> > module configuration { >> > namespace "http://yang.juniper.net/yang/1.1/jc >> > <http://yang.juniper.net/yang/1.1/jc>"; >> > prefix jc; >> > import junos-extension { >> > prefix junos; >> > } >> > >> > organization >> > "Juniper Networks, Inc."; >> > >> > description >> > "Junos YANG module for configuration hierarchies"; >> > >> > revision "2017-02-20" { >> > description "Initial revision"; >> > } >> > root@osboxes:~/odl/cache/schema# head -19 >> > junos-extens...@2017-02-20.yang >> > /* >> > * Copyright (c) 2016 Juniper Networks, Inc. >> > * All rights reserved. >> > */ >> > >> > module junos-extension { >> > namespace "http://yang.juniper.net/yang/1.1/je >> > <http://yang.juniper.net/yang/1.1/je>"; >> > prefix junos; >> > >> > organization >> > "Juniper Networks, Inc."; >> > >> > description >> > "This module contains definitions for Junos YANG extensions."; >> > >> > revision "2017-02-20" { >> > description "Initial revision"; >> > } >> > >> > root@osboxes:~/odl/cache/schema# >> > >> > <module xmlns="urn:opendaylight:params >> :xml:ns:yang:controller:config"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type> >> > <name>PE-1</name> >> > <address >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">172.16.16.1</address> >> > <port >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">830</port> >> > <username >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">root</username> >> > <password >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">passw0rd</password> >> > <tcp-only >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">false</tcp-only> >> > <yang-module-capabilities >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <capability >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">http://yang.juniper.net/yang/1.1/je? >> module=junos-extension&revision=2017-02-20 >> > <http://yang.juniper.net/yang/1.1/je?module=junos- >> extension&revision=2017-02-20></capability> >> > <capability >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf">http://yang.juniper.net/yang/1.1/jc? >> module=configuration&revision=2017-02-20 >> > <http://yang.juniper.net/yang/1.1/jc?module= >> configuration&revision=2017-02-20></capability> >> > </yang-module-capabilities> >> > <event-executor >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:netty">prefix:netty-event-executor</type> >> > <name>global-event-executor</name> >> > </event-executor> >> > <binding-registry >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:md:sal:binding">prefix:binding-broker-osgi-registry</type> >> > <name>binding-osgi-broker</name> >> > </binding-registry> >> > <dom-registry >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:md:sal:dom">prefix:dom-broker-osgi-registry</type> >> > <name>dom-broker</name> >> > </dom-registry> >> > <client-dispatcher >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:config:netconf">prefix:netconf-client-dispatcher</type> >> > <name>global-netconf-dispatcher</name> >> > </client-dispatcher> >> > <processing-executor >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:threadpool">prefix:threadpool</type> >> > <name>global-netconf-processing-executor</name> >> > </processing-executor> >> > <keepalive-executor >> > xmlns="urn:opendaylight:params:xml:ns:yang:controller:md: >> sal:connector:netconf"> >> > <type >> > xmlns:prefix="urn:opendaylight:params:xml:ns:yang: >> controller:threadpool">prefix:scheduled-threadpool</type> >> > <name>global-netconf-ssh-scheduled-executor</name> >> > </keepalive-executor> >> > </module> >> > >> > >> > >> > _______________________________________________ >> > controller-dev mailing list >> > controller-dev@lists.opendaylight.org >> > <mailto:controller-dev@lists.opendaylight.org> >> > https://lists.opendaylight.org/mailman/listinfo/controller-dev >> > <https://lists.opendaylight.org/mailman/listinfo/controller-dev> >> > >> > >> > >> > >> > _______________________________________________ >> > controller-dev mailing list >> > controller-dev@lists.opendaylight.org >> > https://lists.opendaylight.org/mailman/listinfo/controller-dev >> > >> >> > <karaf.log>_______________________________________________ > netconf-dev mailing list > netconf-...@lists.opendaylight.org > https://lists.opendaylight.org/mailman/listinfo/netconf-dev > > >
_______________________________________________ controller-dev mailing list controller-dev@lists.opendaylight.org https://lists.opendaylight.org/mailman/listinfo/controller-dev