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 {
19 grouping username-password {
29 grouping netconf-node-credentials {
33 description "Deprecated way of storing credentials, unencrypted.";
36 uses username-password;
39 description "login-password credentials, encrypted.";
41 container login-password {
42 uses username-password;
45 case login-pw-unencrypted {
46 description "login-password credentials, not encrypted.";
48 container login-password-unencrypted {
49 uses username-password;
53 description "key-based authentication, use the id for the pair thats stored in the keystore.";
68 grouping netconf-node-connection-parameters {
75 type inet:port-number;
93 choice specification {
96 leaf-list excluded-versions {
98 description "A list of TLS version names provided in JDK that are not supported by the
99 target netconf device, eg, the netopeer2 simulator does not support the
100 SSLv2Hello. Most of the time, this list need not be set";
112 container yang-module-capabilities {
117 description "Whether to override or merge this list of capabilities with capabilities from device";
120 leaf-list capability {
122 description "Set a list of capabilities to override capabilities provided in device's hello message.
123 Can be used for devices that do not report any yang modules in their hello message";
127 container non-module-capabilities {
132 description "Whether to override or merge this list of non-module based capabilities with non-module
133 based capabilities from device";
136 leaf-list capability {
138 description "Set a list of non-module based capabilities to override or merge non-module capabilities
139 provided in device's hello message. Can be used for devices that do not report or
140 incorrectly report non-module based capabilities in their hello message";
144 leaf reconnect-on-changed-schema {
148 description "If true, the connector would auto disconnect/reconnect when schemas are changed in the remote device.
149 The connector subscribes (right after connect) to base netconf notifications and listens for netconf-capability-change notification";
152 leaf connection-timeout-millis {
153 description "Specifies timeout in milliseconds after which connection must be established.";
159 leaf default-request-timeout-millis {
160 description "Timeout for blocking operations within transactions.";
166 leaf max-connection-attempts {
167 description "Maximum number of connection retries. Non positive value or null is interpreted as infinity.";
170 default 0; // retry forever
173 leaf between-attempts-timeout-millis {
174 description "Initial timeout in milliseconds to wait between connection attempts. Will be multiplied by sleep-factor with every additional attempt";
188 // Keepalive configuration
189 leaf keepalive-delay {
193 description "Netconf connector sends keepalive RPCs while the session is idle, this delay specifies the delay between keepalive RPC in seconds
194 If a value <1 is provided, no keepalives will be sent";
197 leaf concurrent-rpc-limit {
201 description "Limit of concurrent messages that can be send before reply messages are received.
202 If value <1 is provided, no limit will be enforced";
205 leaf actor-response-wait-time {
211 description "Time that slave actor will wait for response from master.";
214 container odl-hello-message-capabilities {
216 leaf-list capability {
218 description "Certain devices are non-accepting of ODL's hello message. This allows specification of
219 a custom ODL hello message based on a list of supported capabilities.";
224 grouping netconf-node-connection-status {
226 leaf connection-status {
231 enum unable-to-connect;
235 container clustered-connection-status {
249 leaf netconf-master-node {
255 leaf connected-message {
260 container available-capabilities {
262 list available-capability {
266 leaf capability-origin {
269 enum device-advertised;
275 container unavailable-capabilities {
277 list unavailable-capability {
282 leaf failure-reason {
285 enum unable-to-resolve;
291 container pass-through {
292 when "../connection-status = connected";
294 "When the underlying node is connected, its NETCONF context
295 is available verbatim under this container through the
301 grouping netconf-schema-storage {
302 leaf schema-cache-directory {
306 description "The destination schema repository for yang files relative to the cache directory. This may be specified per netconf mount
307 so that the loaded yang files are stored to a distinct directory to avoid potential conflict.";
310 container yang-library {
311 leaf yang-library-url {
314 description "Yang library to be plugged as additional source provider into the shared schema repository";
317 // credentials for basic http authentication
330 grouping netconf-node-fields {
332 uses netconf-node-credentials;
334 uses netconf-node-connection-parameters;
336 uses netconf-node-connection-status;
338 uses netconf-schema-storage;
339 uses nno:netconf-node-augmented-optional-fields ;
345 uses netconf-node-fields;
360 augment "/nt:network-topology/nt:topology/nt:node" {
361 when "../../nt:topology-types/topology-netconf";
362 ext:augment-identifier "netconf-node";
364 uses netconf-node-fields;