Update project version for Chlorine release train
[transportpce.git] / tapimodels / src / main / yang / tapi-notification@2018-12-10.yang
1 module tapi-notification {
2     namespace "urn:onf:otcc:yang:tapi-notification";
3     prefix tapi-notification;
4     import tapi-common {
5         prefix tapi-common;
6     }
7     organization "ONF OTCC (Open Transport Configuration & Control) Project";
8     contact "
9          Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
10          Project List: <mailto:transport-api@opennetworking.org>
11          Editor: Karthik Sethuraman
12                  <mailto:karthik.sethuraman@necam.com>";
13     description "
14         This module contains TAPI Notification Model definitions.
15         Source: TapiNotification.uml
16         - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
17         - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
18           <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
19           and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
20           <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
21         - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
22           As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
23         - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
24           The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
25           YANG models included in this release may not be backward compatible with previous TAPI releases.
26         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
27         License: This module is distributed under the Apache License 2.0";
28     revision 2018-12-10 {
29         description "ONF Transport API version 2.1.1.
30                    Changes included in this TAPI release (v2.1.1) are listed in
31                    <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
32         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
33                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
34     }
35     revision 2018-10-16 {
36         description "ONF Transport API version 2.1.0.
37                    Changes included in this TAPI release (v2.1.0) are listed in
38                    <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
39         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
40                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
41     }
42     revision 2018-03-07 {
43         description "ONF Transport API version 2.0.2
44         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
45         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
46         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
47                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
48     }
49     revision 2018-02-16 {
50         description "ONF Transport API version 2.0.1
51         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
52         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
53         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
54                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
55     }
56     revision 2018-01-02 {
57         description "ONF Transport API version 2.0.0
58         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
59         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
60         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
61                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
62     }
63     augment "/tapi-common:context" {
64         container notification-context {
65             uses notification-context;
66             description "Augments the base TAPI Context with NotificationService information";
67         }
68         description "Augments the base TAPI Context with NotificationService information";
69     }
70
71    /**************************
72     * package object-classes
73     **************************/
74     grouping notification-subscription-service {
75         list notification {
76             key 'uuid';
77             config false;
78             uses notification;
79             description "none";
80         }
81         container notification-channel {
82             uses notification-channel;
83             description "none";
84         }
85         container subscription-filter {
86             uses subscription-filter;
87             description "none";
88         }
89         leaf subscription-state {
90             type subscription-state;
91             description "none";
92         }
93         leaf-list supported-notification-types {
94             type notification-type;
95             config false;
96             min-elements 1;
97             description "none";
98         }
99         leaf-list supported-object-types {
100             type object-type;
101             config false;
102             min-elements 1;
103             description "none";
104         }
105         uses tapi-common:service-spec;
106         description "none";
107     }
108     grouping subscription-filter {
109         leaf-list requested-notification-types {
110             type notification-type;
111             config false;
112             description "none";
113         }
114         leaf-list requested-object-types {
115             type object-type;
116             config false;
117             description "none";
118         }
119         leaf-list requested-layer-protocols {
120             type tapi-common:layer-protocol-name;
121             config false;
122             description "none";
123         }
124         leaf-list requested-object-identifier {
125             type tapi-common:uuid;
126             config false;
127             description "none";
128         }
129         leaf include-content {
130             type boolean;
131             config false;
132             description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";
133         }
134         uses tapi-common:local-class;
135         description "none";
136     }
137     notification notification {
138         uses notification;
139         description "none";
140     }
141     grouping notification {
142         leaf notification-type {
143             type notification-type;
144             description "none";
145         }
146         leaf target-object-type {
147             type object-type;
148             description "none";
149         }
150         leaf target-object-identifier {
151             type tapi-common:uuid;
152             description "none";
153         }
154         list target-object-name {
155             key 'value-name';
156             min-elements 1;
157             uses tapi-common:name-and-value;
158             description "none";
159         }
160         leaf event-time-stamp {
161             type tapi-common:date-and-time;
162             description "none";
163         }
164         leaf sequence-number {
165             type uint64;
166             config false;
167             description "A monotonous increasing sequence number associated with the notification.
168                 The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";
169         }
170         leaf source-indicator {
171             type source-indicator;
172             description "none";
173         }
174         leaf layer-protocol-name {
175             type tapi-common:layer-protocol-name;
176             description "none";
177         }
178         list changed-attributes {
179             key 'value-name';
180             uses name-and-value-change;
181             description "none";
182         }
183         list additional-info {
184             key 'value-name';
185             uses tapi-common:name-and-value;
186             description "none";
187         }
188         leaf additional-text {
189             type string;
190             description "none";
191         }
192         container tca-info {
193             uses tca-info;
194             description "none";
195         }
196         container alarm-info {
197             uses alarm-info;
198             description "none";
199         }
200         uses tapi-common:resource-spec;
201         description "none";
202     }
203     grouping notification-channel {
204         leaf stream-address {
205             type string;
206             config false;
207             description "The address/location/URI of the channel/stream to which the subscribed notifications are published.
208                 This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";
209         }
210         leaf next-sequence-no {
211             type uint64;
212             config false;
213             description "The sequence number of the next notification that will be published on the channel";
214         }
215         uses tapi-common:local-class;
216         description "none";
217     }
218     grouping notification-context {
219         list notif-subscription {
220             key 'uuid';
221             uses notification-subscription-service;
222             description "none";
223         }
224         list notification {
225             key 'uuid';
226             config false;
227             uses notification;
228             description "none";
229         }
230         description "none";
231     }
232     grouping alarm-info {
233         leaf is-transient {
234             type boolean;
235             config false;
236             description "none";
237         }
238         leaf perceived-severity {
239             type perceived-severity-type;
240             config false;
241             description "none";
242         }
243         leaf probable-cause {
244             type string;
245             config false;
246             description "none";
247         }
248         leaf service-affecting {
249             type service-affecting;
250             description "none";
251         }
252         description "none";
253     }
254     grouping tca-info {
255         leaf is-transient {
256             type boolean;
257             config false;
258             description "none";
259         }
260         leaf threshold-crossing {
261             type threshold-crossing-type;
262             description "none";
263         }
264         leaf threshold-parameter {
265             type string;
266             config false;
267             description "none";
268         }
269         leaf threshold-value {
270             type uint64;
271             config false;
272             description "none";
273         }
274         leaf perceived-severity {
275             type perceived-tca-severity;
276             description "none";
277         }
278         leaf measurement-interval {
279             type tapi-common:date-and-time;
280             description "none";
281         }
282         leaf suspect-interval-flag {
283             type boolean;
284             description "none";
285         }
286         description "none";
287     }
288
289    /**************************
290     * package type-definitions
291     **************************/
292     grouping name-and-value-change {
293         leaf value-name {
294             type string;
295             description "The name of the value. The value need not have a name.";
296         }
297         leaf old-value {
298             type string;
299             description "The value";
300         }
301         leaf new-value {
302             type string;
303             description "The value";
304         }
305         description "A scoped name-value triple, including old value and new value";
306     }
307     typedef notification-type {
308         type enumeration {
309             enum OBJECT_CREATION {
310                 description "Not a normal state. The system is unable to determine the correct value.";
311             }
312             enum OBJECT_DELETION {
313                 description "none";
314             }
315             enum ATTRIBUTE_VALUE_CHANGE {
316                 description "none";
317             }
318             enum ALARM_EVENT {
319                 description "none";
320             }
321             enum THRESHOLD_CROSSING_ALERT {
322                 description "none";
323             }
324         }
325         description "List of supported Notifications types.";
326     }
327     typedef object-type {
328         type enumeration {
329             enum TOPOLOGY {
330                 description "none";
331             }
332             enum NODE {
333                 description "none";
334             }
335             enum LINK {
336                 description "none";
337             }
338             enum CONNECTION {
339                 description "none";
340             }
341             enum PATH {
342                 description "none";
343             }
344             enum CONNECTIVITY_SERVICE {
345                 description "none";
346             }
347             enum VIRTUAL_NETWORK_SERVICE {
348                 description "none";
349             }
350             enum PATH_COMPUTATION_SERVICE {
351                 description "none";
352             }
353             enum NODE_EDGE_POINT {
354                 description "none";
355             }
356             enum SERVICE_INTERFACE_POINT {
357                 description "none";
358             }
359             enum CONNECTION_END_POINT {
360                 description "none";
361             }
362             enum MAINTENANCE_ENTITY_GROUP {
363                 description "none";
364             }
365             enum MAINTENANCE_ENTITY {
366                 description "none";
367             }
368             enum MEG_END_POINT {
369                 description "none";
370             }
371             enum MEG_INTERMEDIATE_POINT {
372                 description "none";
373             }
374             enum SWITCH_CONTROL {
375                 description "none";
376             }
377             enum SWITCH {
378                 description "none";
379             }
380             enum ROUTE {
381                 description "none";
382             }
383             enum NODE_RULE_GROUP {
384                 description "none";
385             }
386             enum INTER_RULE_GROUP {
387                 description "none";
388             }
389             enum RULE {
390                 description "none";
391             }
392             enum OAM_JOB {
393                 description "none";
394             }
395         }
396         description "The list of TAPI Global Object Class types on which Notifications can be raised.";
397     }
398     typedef source-indicator {
399         type enumeration {
400             enum RESOURCE_OPERATION {
401                 description "none";
402             }
403             enum MANAGEMENT_OPERATION {
404                 description "none";
405             }
406             enum UNKNOWN {
407                 description "none";
408             }
409         }
410         description "none";
411     }
412     typedef subscription-state {
413         type enumeration {
414             enum SUSPENDED {
415                 description "none";
416             }
417             enum ACTIVE {
418                 description "none";
419             }
420         }
421         description "none";
422     }
423     typedef perceived-severity-type {
424         type enumeration {
425             enum CRITICAL {
426                 description "none";
427             }
428             enum MAJOR {
429                 description "none";
430             }
431             enum MINOR {
432                 description "none";
433             }
434             enum WARNING {
435                 description "none";
436             }
437             enum CLEARED {
438                 description "none";
439             }
440         }
441         description "none";
442     }
443     typedef threshold-crossing-type {
444         type enumeration {
445             enum THRESHOLD_ABOVE {
446                 description "none";
447             }
448             enum THRESHOLD_BELOW {
449                 description "none";
450             }
451             enum CLEARED {
452                 description "none";
453             }
454         }
455         description "none";
456     }
457     typedef service-affecting {
458         type enumeration {
459             enum SERVICE_AFFECTING {
460                 description "none";
461             }
462             enum NOT_SERVICE_AFFECTING {
463                 description "none";
464             }
465             enum UNKNOWN {
466                 description "none";
467             }
468         }
469         description "none";
470     }
471     typedef perceived-tca-severity {
472         type enumeration {
473             enum WARNING {
474                 description "none";
475             }
476             enum CLEAR {
477                 description "none";
478             }
479         }
480         description "none";
481     }
482
483    /**************************
484     * package interfaces
485     **************************/
486     rpc get-supported-notification-types {
487         description "none";
488         output {
489             leaf-list supported-notification-types {
490                 type notification-type;
491                 min-elements 1;
492                 description "none";
493             }
494             leaf-list supported-object-types {
495                 type object-type;
496                 min-elements 1;
497                 description "none";
498             }
499         }
500     }
501     rpc create-notification-subscription-service {
502         description "none";
503         input {
504             container subscription-filter {
505                 uses subscription-filter;
506                 description "none";
507             }
508             leaf subscription-state {
509                 type subscription-state;
510                 description "none";
511             }
512         }
513         output {
514             container subscription-service {
515                 uses notification-subscription-service;
516                 description "none";
517             }
518         }
519     }
520     rpc update-notification-subscription-service {
521         description "none";
522         input {
523             leaf subscription-id-or-name {
524                 type string;
525                 description "none";
526             }
527             container subscription-filter {
528                 uses subscription-filter;
529                 description "none";
530             }
531             leaf subscription-state {
532                 type subscription-state;
533                 description "none";
534             }
535         }
536         output {
537             container subscription-service {
538                 uses notification-subscription-service;
539                 description "none";
540             }
541         }
542     }
543     rpc delete-notification-subscription-service {
544         description "none";
545         input {
546             leaf subscription-id-or-name {
547                 type string;
548                 description "none";
549             }
550         }
551         output {
552             container subscription-service {
553                 uses notification-subscription-service;
554                 description "none";
555             }
556         }
557     }
558     rpc get-notification-subscription-service-details {
559         description "none";
560         input {
561             leaf subscription-id-or-name {
562                 type string;
563                 description "none";
564             }
565         }
566         output {
567             container subscription-service {
568                 uses notification-subscription-service;
569                 description "none";
570             }
571         }
572     }
573     rpc get-notification-subscription-service-list {
574         description "none";
575         output {
576             list subscription-service {
577                 key 'uuid';
578                 uses notification-subscription-service;
579                 description "none";
580             }
581         }
582     }
583     rpc get-notification-list {
584         description "none";
585         input {
586             leaf subscription-id-or-name {
587                 type string;
588                 description "none";
589             }
590             leaf time-period {
591                 type string;
592                 description "none";
593             }
594         }
595         output {
596             list notification {
597                 key 'uuid';
598                 uses notification;
599                 description "none";
600             }
601         }
602     }
603 }