1 module netconf-node-topology {
2 namespace "urn:opendaylight:netconf-node-topology";
5 import network-topology { prefix nt; revision-date 2013-10-21; }
6 import yang-ext { prefix ext; revision-date "2013-07-09";}
7 import ietf-inet-types { prefix inet; revision-date "2013-07-15"; }
8 import netconf-node-optional { prefix nno; revision-date "2019-06-14"; }
10 revision "2015-01-14" {
11 description "Initial revision of Topology model";
14 augment "/nt:network-topology/nt:topology/nt:topology-types" {
15 container topology-netconf {
16 presence "The presence of the container node indicates a network
21 grouping username-password {
31 grouping netconf-node-credentials {
35 description "Deprecated way of storing credentials, unencrypted.";
38 uses username-password;
41 description "login-password credentials, encrypted.";
43 container login-password {
44 uses username-password;
47 case login-pw-unencrypted {
48 description "login-password credentials, not encrypted.";
50 container login-password-unencrypted {
51 uses username-password;
55 description "key-based authentication, use the id for the pair thats stored in the keystore.";
70 grouping netconf-node-connection-parameters {
77 type inet:port-number;
96 choice specification {
99 leaf-list excluded-versions {
101 description "A list of TLS version names provided in JDK that are not supported by the
102 target netconf device, eg, the netopeer2 simulator does not support the
103 SSLv2Hello. Most of the time, this list need not be set";
115 container yang-module-capabilities {
120 description "Whether to override or merge this list of capabilities with capabilities from device";
123 leaf-list capability {
125 description "Set a list of capabilities to override capabilities provided in device's hello message.
126 Can be used for devices that do not report any yang modules in their hello message";
130 container non-module-capabilities {
135 description "Whether to override or merge this list of non-module based capabilities with non-module
136 based capabilities from device";
139 leaf-list capability {
141 description "Set a list of non-module based capabilities to override or merge non-module capabilities
142 provided in device's hello message. Can be used for devices that do not report or
143 incorrectly report non-module based capabilities in their hello message";
147 leaf reconnect-on-changed-schema {
151 description "If true, the connector would auto disconnect/reconnect when schemas are changed in the remote device.
152 The connector subscribes (right after connect) to base netconf notifications and listens for netconf-capability-change notification";
155 leaf connection-timeout-millis {
156 description "Specifies timeout in milliseconds after which connection must be established.";
162 leaf default-request-timeout-millis {
163 description "Timeout for blocking operations within transactions.";
169 leaf max-connection-attempts {
170 description "Maximum number of connection retries. Non positive value or null is interpreted as infinity.";
173 default 0; // retry forever
176 leaf between-attempts-timeout-millis {
177 description "Initial timeout in milliseconds to wait between connection attempts. Will be multiplied by sleep-factor with every additional attempt";
191 // Keepalive configuration
192 leaf keepalive-delay {
196 description "Netconf connector sends keepalive RPCs while the session is idle, this delay specifies the delay between keepalive RPC in seconds
197 If a value <1 is provided, no keepalives will be sent";
200 leaf concurrent-rpc-limit {
204 description "Limit of concurrent messages that can be send before reply messages are received.
205 If value <1 is provided, no limit will be enforced";
208 leaf actor-response-wait-time {
214 description "Time that slave actor will wait for response from master.";
217 container odl-hello-message-capabilities {
219 leaf-list capability {
221 description "Certain devices are non-accepting of ODL's hello message. This allows specification of
222 a custom ODL hello message based on a list of supported capabilities.";
227 grouping netconf-node-connection-status {
229 leaf connection-status {
234 enum unable-to-connect;
238 container clustered-connection-status {
252 leaf netconf-master-node {
258 leaf connected-message {
263 container available-capabilities {
265 list available-capability {
269 leaf capability-origin {
272 enum device-advertised;
278 container unavailable-capabilities {
280 list unavailable-capability {
285 leaf failure-reason {
288 enum unable-to-resolve;
294 container pass-through {
295 when "../connection-status = connected";
297 "When the underlying node is connected, its NETCONF context
298 is available verbatim under this container through the
304 grouping netconf-schema-storage {
305 leaf schema-cache-directory {
309 description "The destination schema repository for yang files relative to the cache directory. This may be specified per netconf mount
310 so that the loaded yang files are stored to a distinct directory to avoid potential conflict.";
313 container yang-library {
314 leaf yang-library-url {
317 description "Yang library to be plugged as additional source provider into the shared schema repository";
320 // credentials for basic http authentication
333 grouping netconf-node-fields {
335 uses netconf-node-credentials;
337 uses netconf-node-connection-parameters;
339 uses netconf-node-connection-status;
341 uses netconf-schema-storage;
342 uses nno:netconf-node-augmented-optional-fields ;
348 uses netconf-node-fields;
363 augment "/nt:network-topology/nt:topology/nt:node" {
364 when "../../nt:topology-types/topology-netconf";
365 ext:augment-identifier "netconf-node";
367 uses netconf-node-fields;