Add Transport-API Yang models.
Change-Id: Iaca69b8bd1adbd899b0b6faf255f2e202a80a927
diff --git a/models/tapi/src/main/yang/tapi-notification.yang b/models/tapi/src/main/yang/tapi-notification.yang
new file mode 100644
index 0000000..1ca3f52
--- /dev/null
+++ b/models/tapi/src/main/yang/tapi-notification.yang
@@ -0,0 +1,497 @@
+module tapi-notification {
+ namespace "urn:onf:params:xml:ns:yang:tapi-notification";
+ prefix tapi-notification;
+ import tapi-common {
+ prefix tapi-common;
+ }
+ organization "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
+ contact "
+ WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
+ WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
+ WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
+ Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
+ description "none";
+ revision 2017-05-31 {
+ description "TAPI SDK 2.0-alpha";
+ reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
+ }
+ 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 "The orientation of flow at the Port of a Forwarding entity";
+ }
+ 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";
+ }
+ }
+ description "The orientation of flow at the Port of a Forwarding entity";
+ }
+ 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";
+ }
+ }
+ }
+
+}