blob: 8d2380e727156384d9dade4bb05dc8beeaa3743a [file] [log] [blame]
Michal Vasko8a4e1462020-05-07 11:32:31 +02001module ietf-netconf-monitoring {
2
3 namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";
4 prefix "ncm";
5
6 import ietf-yang-types { prefix yang; }
7 import ietf-inet-types { prefix inet; }
8
9 organization
10 "IETF NETCONF (Network Configuration) Working Group";
11
12 contact
13 "WG Web: <http://tools.ietf.org/wg/netconf/>
14 WG List: <mailto:netconf@ietf.org>
15
16 WG Chair: Mehmet Ersue
17 <mailto:mehmet.ersue@nsn.com>
18
19 WG Chair: Bert Wijnen
20 <mailto:bertietf@bwijnen.net>
21
22 Editor: Mark Scott
23 <mailto:mark.scott@ericsson.com>
24
25 Editor: Martin Bjorklund
26 <mailto:mbj@tail-f.com>";
27
28 description
29 "NETCONF Monitoring Module.
30 All elements in this module are read-only.
31
32 Copyright (c) 2010 IETF Trust and the persons identified as
33 authors of the code. All rights reserved.
34
35 Redistribution and use in source and binary forms, with or
36 without modification, is permitted pursuant to, and subject
37 to the license terms contained in, the Simplified BSD
38 License set forth in Section 4.c of the IETF Trust's
39 Legal Provisions Relating to IETF Documents
40 (http://trustee.ietf.org/license-info).
41
42 This version of this YANG module is part of RFC 6022; see
43 the RFC itself for full legal notices.";
44
45 revision 2010-10-04 {
46 description
47 "Initial revision.";
48 reference
49 "RFC 6022: YANG Module for NETCONF Monitoring";
50 }
51
52 typedef netconf-datastore-type {
53 type enumeration {
54 enum running;
55 enum candidate;
56 enum startup;
57 }
58 description
59 "Enumeration of possible NETCONF datastore types.";
60 reference
61 "RFC 4741: NETCONF Configuration Protocol";
62 }
63
64 identity transport {
65 description
66 "Base identity for NETCONF transport types.";
67 }
68
69 identity netconf-ssh {
70 base transport;
71 description
72 "NETCONF over Secure Shell (SSH).";
73 reference
74 "RFC 4742: Using the NETCONF Configuration Protocol
75 over Secure SHell (SSH)";
76 }
77
78 identity netconf-soap-over-beep {
79 base transport;
80 description
81 "NETCONF over Simple Object Access Protocol (SOAP) over
82 Blocks Extensible Exchange Protocol (BEEP).";
83 reference
84 "RFC 4743: Using NETCONF over the Simple Object
85 Access Protocol (SOAP)";
86 }
87
88 identity netconf-soap-over-https {
89 base transport;
90 description
91 "NETCONF over Simple Object Access Protocol (SOAP)
92 over Hypertext Transfer Protocol Secure (HTTPS).";
93 reference
94 "RFC 4743: Using NETCONF over the Simple Object
95 Access Protocol (SOAP)";
96 }
97
98 identity netconf-beep {
99 base transport;
100 description
101 "NETCONF over Blocks Extensible Exchange Protocol (BEEP).";
102 reference
103 "RFC 4744: Using the NETCONF Protocol over the
104 Blocks Extensible Exchange Protocol (BEEP)";
105 }
106
107 identity netconf-tls {
108 base transport;
109 description
110 "NETCONF over Transport Layer Security (TLS).";
111 reference
112 "RFC 5539: NETCONF over Transport Layer Security (TLS)";
113 }
114
115 identity schema-format {
116 description
117 "Base identity for data model schema languages.";
118 }
119
120 identity xsd {
121 base schema-format;
122 description
123 "W3C XML Schema Definition.";
124 reference
125 "W3C REC REC-xmlschema-1-20041028:
126 XML Schema Part 1: Structures";
127 }
128
129 identity yang {
130 base schema-format;
131 description
132 "The YANG data modeling language for NETCONF.";
133 reference
134 "RFC 6020: YANG - A Data Modeling Language for the
135 Network Configuration Protocol (NETCONF)";
136 }
137
138 identity yin {
139 base schema-format;
140 description
141 "The YIN syntax for YANG.";
142 reference
143 "RFC 6020: YANG - A Data Modeling Language for the
144 Network Configuration Protocol (NETCONF)";
145 }
146
147 identity rng {
148 base schema-format;
149 description
150 "Regular Language for XML Next Generation (RELAX NG).";
151 reference
152 "ISO/IEC 19757-2:2008: RELAX NG";
153 }
154
155 identity rnc {
156 base schema-format;
157 description
158 "Relax NG Compact Syntax";
159 reference
160 "ISO/IEC 19757-2:2008: RELAX NG";
161 }
162
163 grouping common-counters {
164 description
165 "Counters that exist both per session, and also globally,
166 accumulated from all sessions.";
167
168 leaf in-rpcs {
169 type yang:zero-based-counter32;
170 description
171 "Number of correct <rpc> messages received.";
172 }
173 leaf in-bad-rpcs {
174 type yang:zero-based-counter32;
175 description
176 "Number of messages received when an <rpc> message was expected,
177 that were not correct <rpc> messages. This includes XML parse
178 errors and errors on the rpc layer.";
179 }
180 leaf out-rpc-errors {
181 type yang:zero-based-counter32;
182 description
183 "Number of <rpc-reply> messages sent that contained an
184 <rpc-error> element.";
185 }
186 leaf out-notifications {
187 type yang:zero-based-counter32;
188 description
189 "Number of <notification> messages sent.";
190 }
191 }
192
193 container netconf-state {
194 config false;
195 description
196 "The netconf-state container is the root of the monitoring
197 data model.";
198
199 container capabilities {
200 description
201 "Contains the list of NETCONF capabilities supported by the
202 server.";
203
204 leaf-list capability {
205 type inet:uri;
206 description
207 "List of NETCONF capabilities supported by the server.";
208 }
209 }
210
211 container datastores {
212 description
213 "Contains the list of NETCONF configuration datastores.";
214
215 list datastore {
216 key name;
217 description
218 "List of NETCONF configuration datastores supported by
219 the NETCONF server and related information.";
220
221 leaf name {
222 type netconf-datastore-type;
223 description
224 "Name of the datastore associated with this list entry.";
225 }
226 container locks {
227 presence
228 "This container is present only if the datastore
229 is locked.";
230 description
231 "The NETCONF <lock> and <partial-lock> operations allow
232 a client to lock specific resources in a datastore. The
233 NETCONF server will prevent changes to the locked
234 resources by all sessions except the one that acquired
235 the lock(s).
236
237 Monitoring information is provided for each datastore
238 entry including details such as the session that acquired
239 the lock, the type of lock (global or partial) and the
240 list of locked resources. Multiple locks per datastore
241 are supported.";
242
243 grouping lock-info {
244 description
245 "Lock related parameters, common to both global and
246 partial locks.";
247
248 leaf locked-by-session {
249 type uint32;
250 mandatory true;
251 description
252 "The session ID of the session that has locked
253 this resource. Both a global lock and a partial
254 lock MUST contain the NETCONF session-id.
255
256 If the lock is held by a session that is not managed
257 by the NETCONF server (e.g., a CLI session), a session
258 id of 0 (zero) is reported.";
259 reference
260 "RFC 4741: NETCONF Configuration Protocol";
261 }
262 leaf locked-time {
263 type yang:date-and-time;
264 mandatory true;
265 description
266 "The date and time of when the resource was
267 locked.";
268 }
269 }
270
271 choice lock-type {
272 description
273 "Indicates if a global lock or a set of partial locks
274 are set.";
275
276 container global-lock {
277 description
278 "Present if the global lock is set.";
279 uses lock-info;
280 }
281
282 list partial-lock {
283 key lock-id;
284 description
285 "List of partial locks.";
286 reference
287 "RFC 5717: Partial Lock Remote Procedure Call (RPC) for
288 NETCONF";
289
290 leaf lock-id {
291 type uint32;
292 description
293 "This is the lock id returned in the <partial-lock>
294 response.";
295 }
296 uses lock-info;
297 leaf-list select {
298 type yang:xpath1.0;
299 min-elements 1;
300 description
301 "The xpath expression that was used to request
302 the lock. The select expression indicates the
303 original intended scope of the lock.";
304 }
305 leaf-list locked-node {
306 type instance-identifier;
307 description
308 "The list of instance-identifiers (i.e., the
309 locked nodes).
310
311 The scope of the partial lock is defined by the list
312 of locked nodes.";
313 }
314 }
315 }
316 }
317 }
318 }
319
320 container schemas {
321 description
322 "Contains the list of data model schemas supported by the
323 server.";
324
325 list schema {
326 key "identifier version format";
327
328 description
329 "List of data model schemas supported by the server.";
330
331 leaf identifier {
332 type string;
333 description
334 "Identifier to uniquely reference the schema. The
335 identifier is used in the <get-schema> operation and may
336 be used for other purposes such as file retrieval.
337
338 For modeling languages that support or require a data
339 model name (e.g., YANG module name) the identifier MUST
340 match that name. For YANG data models, the identifier is
341 the name of the module or submodule. In other cases, an
342 identifier such as a filename MAY be used instead.";
343 }
344 leaf version {
345 type string;
346 description
347 "Version of the schema supported. Multiple versions MAY be
348 supported simultaneously by a NETCONF server. Each
349 version MUST be reported individually in the schema list,
350 i.e., with same identifier, possibly different location,
351 but different version.
352
353 For YANG data models, version is the value of the most
354 recent YANG 'revision' statement in the module or
355 submodule, or the empty string if no 'revision' statement
356 is present.";
357 }
358 leaf format {
359 type identityref {
360 base schema-format;
361 }
362 description
363 "The data modeling language the schema is written
364 in (currently xsd, yang, yin, rng, or rnc).
365 For YANG data models, 'yang' format MUST be supported and
366 'yin' format MAY also be provided.";
367 }
368 leaf namespace {
369 type inet:uri;
370 mandatory true;
371 description
372 "The XML namespace defined by the data model.
373
374 For YANG data models, this is the module's namespace.
375 If the list entry describes a submodule, this field
376 contains the namespace of the module to which the
377 submodule belongs.";
378 }
379 leaf-list location {
380 type union {
381 type enumeration {
382 enum "NETCONF";
383 }
384 type inet:uri;
385 }
386 description
387 "One or more locations from which the schema can be
388 retrieved. This list SHOULD contain at least one
389 entry per schema.
390
391 A schema entry may be located on a remote file system
392 (e.g., reference to file system for ftp retrieval) or
393 retrieved directly from a server supporting the
394 <get-schema> operation (denoted by the value 'NETCONF').";
395 }
396 }
397 }
398
399 container sessions {
400 description
401 "The sessions container includes session-specific data for
402 NETCONF management sessions. The session list MUST include
403 all currently active NETCONF sessions.";
404
405 list session {
406 key session-id;
407 description
408 "All NETCONF sessions managed by the NETCONF server
409 MUST be reported in this list.";
410
411 leaf session-id {
412 type uint32 {
413 range "1..max";
414 }
415 description
416 "Unique identifier for the session. This value is the
417 NETCONF session identifier, as defined in RFC 4741.";
418 reference
419 "RFC 4741: NETCONF Configuration Protocol";
420 }
421 leaf transport {
422 type identityref {
423 base transport;
424 }
425 mandatory true;
426 description
427 "Identifies the transport for each session, e.g.,
428 'netconf-ssh', 'netconf-soap', etc.";
429 }
430 leaf username {
431 type string;
432 mandatory true;
433 description
434 "The username is the client identity that was authenticated
435 by the NETCONF transport protocol. The algorithm used to
436 derive the username is NETCONF transport protocol specific
437 and in addition specific to the authentication mechanism
438 used by the NETCONF transport protocol.";
439 }
440 leaf source-host {
441 type inet:host;
442 description
443 "Host identifier of the NETCONF client. The value
444 returned is implementation specific (e.g., hostname,
445 IPv4 address, IPv6 address)";
446 }
447 leaf login-time {
448 type yang:date-and-time;
449 mandatory true;
450 description
451 "Time at the server at which the session was established.";
452 }
453 uses common-counters {
454 description
455 "Per-session counters. Zero based with following reset
456 behaviour:
457 - at start of a session
458 - when max value is reached";
459 }
460 }
461 }
462
463 container statistics {
464 description
465 "Statistical data pertaining to the NETCONF server.";
466
467 leaf netconf-start-time {
468 type yang:date-and-time;
469 description
470 "Date and time at which the management subsystem was
471 started.";
472 }
473 leaf in-bad-hellos {
474 type yang:zero-based-counter32;
475 description
476 "Number of sessions silently dropped because an
477 invalid <hello> message was received. This includes <hello>
478 messages with a 'session-id' attribute, bad namespace, and
479 bad capability declarations.";
480 }
481 leaf in-sessions {
482 type yang:zero-based-counter32;
483 description
484 "Number of sessions started. This counter is incremented
485 when a <hello> message with a <session-id> is sent.
486
487 'in-sessions' - 'in-bad-hellos' =
488 'number of correctly started netconf sessions'";
489 }
490 leaf dropped-sessions {
491 type yang:zero-based-counter32;
492 description
493 "Number of sessions that were abnormally terminated, e.g.,
494 due to idle timeout or transport close. This counter is not
495 incremented when a session is properly closed by a
496 <close-session> operation, or killed by a <kill-session>
497 operation.";
498 }
499 uses common-counters {
500 description
501 "Global counters, accumulated from all sessions.
502 Zero based with following reset behaviour:
503 - re-initialization of NETCONF server
504 - when max value is reached";
505 }
506 }
507 }
508
509 rpc get-schema {
510 description
511 "This operation is used to retrieve a schema from the
512 NETCONF server.
513
514 Positive Response:
515 The NETCONF server returns the requested schema.
516
517 Negative Response:
518 If requested schema does not exist, the <error-tag> is
519 'invalid-value'.
520
521 If more than one schema matches the requested parameters, the
522 <error-tag> is 'operation-failed', and <error-app-tag> is
523 'data-not-unique'.";
524
525 input {
526 leaf identifier {
527 type string;
528 mandatory true;
529 description
530 "Identifier for the schema list entry.";
531 }
532 leaf version {
533 type string;
534 description
535 "Version of the schema requested. If this parameter is not
536 present, and more than one version of the schema exists on
537 the server, a 'data-not-unique' error is returned, as
538 described above.";
539 }
540 leaf format {
541 type identityref {
542 base schema-format;
543 }
544 description
545 "The data modeling language of the schema. If this
546 parameter is not present, and more than one formats of
547 the schema exists on the server, a 'data-not-unique' error
548 is returned, as described above.";
549 }
550 }
551 output {
552 anyxml data {
553 description
554 "Contains the schema content.";
555 }
556 }
557 }
558}