ONOS-7506 update to TAPI 2.0.1

Change-Id: Ib47a4b93c536854cc0ee3c577307ac995ef24c4f
diff --git a/models/tapi/src/main/yang/tapi-notification@2018-02-16.yang b/models/tapi/src/main/yang/tapi-notification@2018-02-16.yang
new file mode 100644
index 0000000..ac259b7
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-notification@2018-02-16.yang
@@ -0,0 +1,535 @@
+module tapi-notification {

+    namespace "urn:onf:otcc:yang:tapi-notification";

+    prefix tapi-notification;

+    import tapi-common {

+        prefix tapi-common;

+    }

+    organization "ONF OTCC (Open Transport Configuration & Control) Project";

+    contact "
+        Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
+        Project List: <mailto:transport-api@opennetworking.org>
+        Editor: Karthik Sethuraman
+                <mailto:karthik.sethuraman@necam.com>";

+    description "

+        This module contains TAPI Notification Model definitions.

+        Source: TapiNotification.uml

+        Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.

+        License: This module is distributed under the Apache License 2.0";

+    revision 2018-02-16 {

+        description "ONF Transport API version 2.0.1
+        This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool version .
+        <https://wiki.opennetworking.org/display/OIMT/IISOMI>
+        Changes in this revision: <https://github.com/OpenNetworkingFoundation/Snowmass-ONFOpenTransport/blob/develop/change-log.md>";

+        reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
+                  <https://github.com/OpenNetworkingFoundation/Snowmass-ONFOpenTransport/tree/develop/UML>";

+    }

+    augment "/tapi-common:context" {

+        uses notification-context;

+        description "Augments the base TAPI Context with NotificationService information";

+    }

+    /***********************

+    * package object-classes

+    **********************/ 

+        grouping notification-subscription-service {

+            list notification {

+                key 'uuid';

+                config false;

+                uses notification;

+                description "none";

+            }

+            container notification-channel {

+                uses notification-channel;

+                description "none";

+            }

+            container subscription-filter {

+                uses subscription-filter;

+                description "none";

+            }

+            leaf subscription-state {

+                type subscription-state;

+                description "none";

+            }

+            leaf-list supported-notification-types {

+                type notification-type;

+                config false;

+                min-elements 1;

+                description "none";

+            }

+            leaf-list supported-object-types {

+                type object-type;

+                config false;

+                min-elements 1;

+                description "none";

+            }

+            uses tapi-common:service-spec;

+            description "none";

+        }

+        grouping subscription-filter {

+            leaf-list requested-notification-types {

+                type notification-type;

+                config false;

+                description "none";

+            }

+            leaf-list requested-object-types {

+                type object-type;

+                config false;

+                description "none";

+            }

+            leaf-list requested-layer-protocols {

+                type tapi-common:layer-protocol-name;

+                config false;

+                description "none";

+            }

+            leaf-list requested-object-identifier {

+                type tapi-common:uuid;

+                config false;

+                description "none";

+            }

+            leaf include-content {

+                type boolean;

+                config false;

+                description "Indicates whether the published Notification includes content or just the Notification Id (which enables retrieval of the notification at the later stage)";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        notification notification {

+            uses notification;

+            description "none";

+        }

+        grouping notification {

+            leaf notification-type {

+                type notification-type;

+                description "none";

+            }

+            leaf target-object-type {

+                type object-type;

+                description "none";

+            }

+            leaf target-object-identifier {

+                type tapi-common:uuid;

+                description "none";

+            }

+            list target-object-name {

+                key 'value-name';

+                min-elements 1;

+                uses tapi-common:name-and-value;

+                description "none";

+            }

+            leaf event-time-stamp {

+                type tapi-common:date-and-time;

+                description "none";

+            }

+            leaf sequence-number {

+                type uint64;

+                config false;

+                description "A monotonous increasing sequence number associated with the notification.

+                    The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";

+            }

+            leaf source-indicator {

+                type source-indicator;

+                description "none";

+            }

+            leaf layer-protocol-name {

+                type tapi-common:layer-protocol-name;

+                description "none";

+            }

+            list changed-attributes {

+                key 'value-name';

+                uses name-and-value-change;

+                description "none";

+            }

+            list additional-info {

+                key 'value-name';

+                uses tapi-common:name-and-value;

+                description "none";

+            }

+            leaf additional-text {

+                type string;

+                description "none";

+            }

+            container tca-info {

+                uses tca-info;

+                description "none";

+            }

+            container alarm-info {

+                uses alarm-info;

+                description "none";

+            }

+            uses tapi-common:resource-spec;

+            description "none";

+        }

+        grouping notification-channel {

+            leaf stream-address {

+                type string;

+                config false;

+                description "The address/location/URI of the channel/stream to which the subscribed notifications are published.

+                    This specifics of this is typically dependent on the implementation protocol & mechanism and hence is typed as a string.";

+            }

+            leaf next-sequence-no {

+                type uint64;

+                config false;

+                description "The sequence number of the next notification that will be published on the channel";

+            }

+            uses tapi-common:local-class;

+            description "none";

+        }

+        grouping notification-context {

+            list notif-subscription {

+                key 'uuid';

+                uses notification-subscription-service;

+                description "none";

+            }

+            list notification {

+                key 'uuid';

+                config false;

+                uses notification;

+                description "none";

+            }

+            description "none";

+        }

+        grouping alarm-info {

+            leaf is-transient {

+                type boolean;

+                config false;

+                description "none";

+            }

+            leaf pervceived-severity {

+                type perceived-serverity-type;

+                config false;

+                description "none";

+            }

+            leaf probable-cause {

+                type string;

+                config false;

+                description "none";

+            }

+            leaf service-affecting {

+                type service-affecting;

+                description "none";

+            }

+            description "none";

+        }

+        grouping tca-info {

+            leaf is-transient {

+                type boolean;

+                config false;

+                description "none";

+            }

+            leaf threshold-crossing {

+                type threshold-crossing-type;

+                description "none";

+            }

+            leaf threshold-parameter {

+                type string;

+                config false;

+                description "none";

+            }

+            leaf threshold-value {

+                type uint64;

+                config false;

+                description "none";

+            }

+            description "none";

+        }

+

+    /***********************

+    * package type-definitions

+    **********************/ 

+        grouping name-and-value-change {

+            leaf value-name {

+                type string;

+                description "The name of the value. The value need not have a name.";

+            }

+            leaf old-value {

+                type string;

+                description "The value";

+            }

+            leaf new-value {

+                type string;

+                description "The value";

+            }

+            description "A scoped name-value triple, including old value and new value";

+        }

+        typedef notification-type {

+            type enumeration {

+                enum OBJECT_CREATION {

+                    description "Not a normal state. The system is unable to determine the correct value.";

+                }

+                enum OBJECT_DELETION {

+                    description "none";

+                }

+                enum ATTRIBUTE_VALUE_CHANGE {

+                    description "none";

+                }

+                enum ALARM_EVENT {

+                    description "none";

+                }

+                enum THRESHOLD_CROSSING_ALERT {

+                    description "none";

+                }

+            }

+            description "List of supported Notifications types.";

+        }

+        typedef object-type {

+            type enumeration {

+                enum TOPOLOGY {

+                    description "none";

+                }

+                enum NODE {

+                    description "none";

+                }

+                enum LINK {

+                    description "none";

+                }

+                enum CONNECTION {

+                    description "none";

+                }

+                enum PATH {

+                    description "none";

+                }

+                enum CONNECTIVITY_SERVICE {

+                    description "none";

+                }

+                enum VIRTUAL_NETWORK_SERVICE {

+                    description "none";

+                }

+                enum PATH_COMPUTATION_SERVICE {

+                    description "none";

+                }

+                enum NODE_EDGE_POINT {

+                    description "none";

+                }

+                enum SERVICE_INTERFACE_POINT {

+                    description "none";

+                }

+                enum CONNECTION_END_POINT {

+                    description "none";

+                }

+                enum MAINTENANCE_ENTITY_GROUP {

+                    description "none";

+                }

+                enum MAINTENANCE_ENTITY {

+                    description "none";

+                }

+                enum MEG_END_POINT {

+                    description "none";

+                }

+                enum MEG_INTERMEDIATE_POINT {

+                    description "none";

+                }

+                enum SWITCH_CONTROL {

+                    description "none";

+                }

+                enum SWITCH {

+                    description "none";

+                }

+                enum ROUTE {

+                    description "none";

+                }

+                enum NODE_RULE_GROUP {

+                    description "none";

+                }

+                enum INTER_RULE_GROUP {

+                    description "none";

+                }

+                enum RULE {

+                    description "none";

+                }

+            }

+            description "The list of TAPI Global Object Class types on which Notifications can be raised.";

+        }

+        typedef source-indicator {

+            type enumeration {

+                enum RESOURCE_OPERATION {

+                    description "none";

+                }

+                enum MANAGEMENT_OPERATION {

+                    description "none";

+                }

+                enum UNKNOWN {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef subscription-state {

+            type enumeration {

+                enum SUSPENDED {

+                    description "none";

+                }

+                enum ACTIVE {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef perceived-serverity-type {

+            type enumeration {

+                enum CRITICAL {

+                    description "none";

+                }

+                enum MAJOR {

+                    description "none";

+                }

+                enum MINOR {

+                    description "none";

+                }

+                enum WARNING {

+                    description "none";

+                }

+                enum CLEARED {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef threshold-crossing-type {

+            type enumeration {

+                enum THRESHOLD_ABOVE {

+                    description "none";

+                }

+                enum THRESHOLD_BELOW {

+                    description "none";

+                }

+                enum CLEARED {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+        typedef service-affecting {

+            type enumeration {

+                enum SERVICE_AFFECTING {

+                    description "none";

+                }

+                enum NOT_SERVICE_AFFECTING {

+                    description "none";

+                }

+                enum UNKNOWN {

+                    description "none";

+                }

+            }

+            description "none";

+        }

+

+    /***********************

+    * package interfaces

+    **********************/ 

+        rpc get-supported-notification-types {

+            description "none";

+            output {

+                leaf-list supported-notification-types {

+                    type notification-type;

+                    min-elements 1;

+                    description "none";

+                }

+                leaf-list supported-object-types {

+                    type object-type;

+                    min-elements 1;

+                    description "none";

+                }

+            }

+        }

+        rpc create-notification-subscription-service {

+            description "none";

+            input {

+                container subscription-filter {

+                    uses subscription-filter;

+                    description "none";

+                }

+                leaf subscription-state {

+                    type subscription-state;

+                    description "none";

+                }

+            }

+            output {

+                container subscription-service {

+                    uses notification-subscription-service;

+                    description "none";

+                }

+            }

+        }

+        rpc update-notification-subscription-service {

+            description "none";

+            input {

+                leaf subscription-id-or-name {

+                    type string;

+                    description "none";

+                }

+                container subscription-filter {

+                    uses subscription-filter;

+                    description "none";

+                }

+                leaf subscription-state {

+                    type subscription-state;

+                    description "none";

+                }

+            }

+            output {

+                container subscription-service {

+                    uses notification-subscription-service;

+                    description "none";

+                }

+            }

+        }

+        rpc delete-notification-subscription-service {

+            description "none";

+            input {

+                leaf subscription-id-or-name {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container subscription-service {

+                    uses notification-subscription-service;

+                    description "none";

+                }

+            }

+        }

+        rpc get-notification-subscription-service-details {

+            description "none";

+            input {

+                leaf subscription-id-or-name {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                container subscription-service {

+                    uses notification-subscription-service;

+                    description "none";

+                }

+            }

+        }

+        rpc get-notification-subscription-service-list {

+            description "none";

+            output {

+                list subscription-service {

+                    uses notification-subscription-service;

+                    description "none";

+                }

+            }

+        }

+        rpc get-notification-list {

+            description "none";

+            input {

+                leaf subscription-id-or-name {

+                    type string;

+                    description "none";

+                }

+                leaf time-period {

+                    type string;

+                    description "none";

+                }

+            }

+            output {

+                list notification {

+                    uses notification;

+                    description "none";

+                }

+            }

+        }

+

+}