Bug-6346: Allow over-ride of non-module capabilities
[netconf.git] / netconf / sal-netconf-connector / src / test / resources / schemas / netconf-node-topology.yang
1 module netconf-node-topology {
2     namespace "urn:opendaylight:netconf-node-topology";
3     prefix "nettop";
4
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
9     revision "2015-01-14" {
10         description "Initial revision of Topology model";
11     }
12
13     augment "/nt:network-topology/nt:topology/nt:topology-types" {
14         container topology-netconf {
15         }
16     }
17
18     grouping netconf-node-credentials {
19
20         choice credentials {
21             config true;
22             case login-password {
23                 leaf username {
24                     type string;
25                 }
26
27                 leaf password {
28                     type string;
29                 }
30             }
31         }
32     }
33
34     grouping netconf-node-connection-parameters {
35
36         leaf host {
37             type inet:host;
38         }
39
40         leaf port {
41             type inet:port-number;
42         }
43
44         leaf tcp-only {
45             config true;
46             type boolean;
47         }
48
49         leaf schemaless {
50             type boolean;
51             default false;
52         }
53
54         container yang-module-capabilities {
55             config true;
56             leaf override {
57                 type boolean;
58                 default false;
59                 description "Whether to override or merge this list of capabilities with capabilities from device";
60             }
61
62             leaf-list capability {
63                 type string;
64                 description "Set a list of capabilities to override capabilities provided in device's hello message.
65                              Can be used for devices that do not report any yang modules in their hello message";
66             }
67         }
68
69         container non-module-capabilities {
70             config true;
71             leaf override {
72                 type boolean;
73                 default false;
74                 description "Whether to override or merge this list of non-module based capabilities with non-module
75                              based capabilities from device";
76             }
77
78             leaf-list capability {
79                 type string;
80                 description "Set a list of non-module based capabilities to override or merge non-module capabilities
81                              provided in device's hello message. Can be used for devices that do not report or
82                              incorrectly report non-module based capabilities in their hello message";
83             }
84         }
85
86         leaf reconnect-on-changed-schema {
87             config true;
88             type boolean;
89             default false;
90             description "If true, the connector would auto disconnect/reconnect when schemas are changed in the remote device.
91                          The connector subscribes (right after connect) to base netconf notifications and listens for netconf-capability-change notification";
92         }
93
94         leaf connection-timeout-millis {
95             description "Specifies timeout in milliseconds after which connection must be established.";
96             config true;
97             type uint32;
98             default 20000;
99         }
100
101         leaf default-request-timeout-millis {
102             description "Timeout for blocking operations within transactions.";
103             config true;
104             type uint32;
105             default 60000;
106         }
107
108         leaf max-connection-attempts {
109             description "Maximum number of connection retries. Non positive value or null is interpreted as infinity.";
110             config true;
111             type uint32;
112             default 0; // retry forever
113         }
114
115         leaf between-attempts-timeout-millis {
116             description "Initial timeout in milliseconds to wait between connection attempts. Will be multiplied by sleep-factor with every additional attempt";
117             config true;
118             type uint16;
119             default 2000;
120         }
121
122         leaf sleep-factor {
123             config true;
124             type decimal64 {
125                 fraction-digits 1;
126             }
127             default 1.5;
128         }
129
130         // Keepalive configuration
131         leaf keepalive-delay {
132             config true;
133             type uint32;
134             default 120;
135             description "Netconf connector sends keepalive RPCs while the session is idle, this delay specifies the delay between keepalive RPC in seconds
136                          If a value <1 is provided, no keepalives will be sent";
137         }
138
139         leaf concurrent-rpc-limit {
140             config true;
141             type uint16;
142             default 0;
143             description "Limit of concurrent messages that can be send before reply messages are received.
144                          If value <1 is provided, no limit will be enforced";
145         }
146     }
147
148     grouping netconf-node-connection-status {
149
150         leaf connection-status {
151             config false;
152             type enumeration {
153                 enum connecting;
154                 enum connected;
155                 enum unable-to-connect;
156             }
157         }
158
159         container clustered-connection-status {
160             config false;
161             list node-status {
162                 leaf node {
163                     type string;
164                 }
165                 leaf status {
166                     type enumeration {
167                         enum connected;
168                         enum unavailable;
169                         enum failed;
170                     }
171                 }
172             }
173         }
174
175         leaf connected-message {
176             config false;
177             type string;
178         }
179
180         container available-capabilities {
181             config false;
182             list available-capability {
183                 leaf capability {
184                     type string;
185                 }
186                 leaf capability-origin {
187                     type enumeration {
188                         enum user-defined;
189                         enum device-advertised;
190                     }
191                 }
192             }
193         }
194
195         container unavailable-capabilities {
196             config false;
197             list unavailable-capability {
198                 leaf capability {
199                     type string;
200                 }
201
202                 leaf failure-reason {
203                     type enumeration {
204                         enum missing-source;
205                         enum unable-to-resolve;
206                     }
207                 }
208             }
209         }
210
211         container pass-through {
212             when "../connection-status = connected";
213             description
214                 "When the underlying node is connected, its NETCONF context
215                 is available verbatim under this container through the
216                 mount extension.";
217         }
218
219     }
220
221     grouping netconf-schema-storage {
222         leaf schema-cache-directory {
223             config true;
224             type string;
225             default "schema";
226             description "The destination schema repository for yang files relative to the cache directory.  This may be specified per netconf mount
227                          so that the loaded yang files are stored to a distinct directory to avoid potential conflict.";
228         }
229
230         container yang-library {
231             leaf yang-library-url {
232                 config true;
233                 type inet:uri;
234                 description "Yang library to be plugged as additional source provider into the shared schema repository";
235             }
236
237             // credentials for basic http authentication
238             leaf username {
239                 config true;
240                 type string;
241             }
242
243             leaf password {
244                 config true;
245                 type string;
246             }
247         }
248     }
249
250     grouping netconf-node-fields {
251
252         uses netconf-node-credentials;
253
254         uses netconf-node-connection-parameters;
255
256         uses netconf-node-connection-status;
257
258         uses netconf-schema-storage;
259
260     }
261
262     augment "/nt:network-topology/nt:topology/nt:node" {
263         when "../../nt:topology-types/topology-netconf";
264         ext:augment-identifier "netconf-node";
265
266         uses netconf-node-fields;
267     }
268 }