module tapi-notification { yang-version "1.1"; namespace "urn:onf:otcc:yang:tapi-notification"; prefix tapi-notification; import tapi-common { prefix tapi-common; revision-date 2022-11-21; } organization "ONF OTCC (Open Transport Configuration & Control) Project"; contact " Project Web: Project List: Editor: Karthik Sethuraman Andrea Mazzini Arturo Mayoral Nigel Davis Ramon Casellas "; description " This module contains TAPI Notification Model definitions. Source: TapiNotification.uml - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK. - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool] and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines] - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts. As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts. - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases. The YANG model backward compatibility criteria are outlined in section 11 of . YANG models included in this release may not be backward compatible with previous TAPI releases. Copyright (c) 2022 Open Networking Foundation (ONF). All rights reserved. License: This module is distributed under the Apache License 2.0."; revision 2022-11-21 { description "ONF Transport API version 2.4.0 RC1. Changes included in this TAPI release (v2.4.0) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2021-09-24 { description "ONF Transport API version 2.3.1. Changes included in this TAPI release (v2.3.1) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2021-08-04 { description "ONF Transport API version 2.3. Changes included in this TAPI release (v2.3) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2021-05-24 { description "ONF Transport API version 2.3 RC1. Changes included in this TAPI release (v2.3) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2020-04-23 { description "ONF Transport API version 2.1.3. Changes included in this TAPI release (v2.1.3) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2019-07-16 { description "ONF Transport API version 2.1.2. Changes included in this TAPI release (v2.1.2) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2019-03-31 { description "ONF Transport API version 2.2-RC1. Changes included in this TAPI release (v2.2) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2018-12-10 { description "ONF Transport API version 2.1.1. Changes included in this TAPI release (v2.1.1) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2018-10-16 { description "ONF Transport API version 2.1.0. Changes included in this TAPI release (v2.1.0) are listed in "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model "; } revision 2018-03-07 { description "ONF Transport API version 2.0.2 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool. Changes in this revision: "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model "; } 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. Changes in this revision: "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model "; } revision 2018-01-02 { description "ONF Transport API version 2.0.0 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool. Changes in this revision: "; reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model "; } augment "/tapi-common:context" { container notification-context { uses notification-context; description "Augments the base TAPI Context with NotificationService model."; } description "Augments the base TAPI Context with NotificationService model."; } augment "/tapi-common:context/tapi-notification:notification-context/tapi-notification:event-notification" { container attribute-value-change { uses attribute-value-change; description "none"; } description "none"; } augment "/tapi-common:context/tapi-notification:notification-context/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "OBJECT_TYPE_PROFILE")'; container profile { uses tapi-common:profile; description "none"; } description "none"; } augment "/tapi-notification:event-notification" { container attribute-value-change { uses attribute-value-change; description "none"; } description "none"; } augment "/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "OBJECT_TYPE_PROFILE")'; container profile { uses tapi-common:profile; description "none"; } description "none"; } augment "/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "OBJECT_TYPE_SERVICE_INTERFACE_POINT")'; container service-interface-point { uses tapi-common:service-interface-point; description "none"; } description "none"; } augment "/tapi-common:context/tapi-notification:notification-context/tapi-notification:event-notification" { when 'derived-from-or-self(tapi-notification:target-object-type, "OBJECT_TYPE_SERVICE_INTERFACE_POINT")'; container service-interface-point { uses tapi-common:service-interface-point; description "none"; } description "none"; } /************************** * package object-classes **************************/ grouping notification-subscription-service { list notification { key 'uuid'; config false; uses notification; description "The Notification instances associated to this NotificationSubscriptionService instance."; } list event-notification { key 'uuid'; uses event-notification; description "The EventNotification instances associated to this NotificationSubscriptionService instance."; } container notification-channel { config false; uses notification-channel; description "The NotificationChannel instance of this NotificationSubscriptionService instance."; } list subscription-filter { key 'local-id'; uses subscription-filter; description "The SubscriptionFilter instance of this NotificationSubscriptionService instance."; } leaf subscription-state { type subscription-state; description "The SubscriptionState value."; } uses tapi-common:global-class; description "A NotificationSubscriptionService represents an 'intent-like' request for the notification subscription. The NotificationSubscriptionService is a container for subscription request details."; } grouping subscription-filter { leaf-list requested-notification-types { type notification-type; description "The requested NotificationType value(s)."; } leaf-list requested-object-types { type tapi-common:object-type; description "The requested ObjectType value(s)."; } leaf-list requested-layer-protocols { type tapi-common:layer-protocol-name; description "The requested layer protocol value(s)."; } leaf-list requested-object-identifier { type tapi-common:uuid; description "The requested object identifier (UUID) value(s)."; } leaf include-content { type boolean; 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 "A SubscriptionFilter represents an 'intent-like' request for the filters of the related notification subscription. The SubscriptionFilter is a container for filter request details."; } 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. The format 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 "The channel/stream to which the subscribed notifications are published."; } grouping notification-context { list notif-subscription { key 'uuid'; uses notification-subscription-service; description "The included NotificationSubscriptionService instances."; } list notification { key 'uuid'; config false; uses notification; description "The included Notification instances."; } list event-notification { key 'uuid'; config false; uses event-notification; description "The included Event Notification instances."; } description "This object class represents the scope of control that a particular SDN controller has with respect to a particular network, specifically regarding the notification description. An instance of this class includes its NotificationSubscriptionService and Notification instances."; } grouping attribute-value-change { leaf changed-attributes { type string; config false; description "The list of relevant changed attributes and their values."; } description "Object notification related information."; } /************************** * package notifications **************************/ notification notification { uses notification; description "none"; } grouping notification { leaf notification-type { type notification-type; description "The Notification type."; } leaf target-object-type { type tapi-common:object-type; description "The Notification instance is related to the object instance with this ObjectType value."; } leaf target-object-identifier { type tapi-common:uuid; description "The Notification instance is related to the object instance with this UUID value."; } list target-object-name { key 'value-name'; min-elements 1; uses tapi-common:name-and-value; description "The Notification instance is related to the object instance with this list of names."; } leaf event-time-stamp { type tapi-common:date-and-time; description "The best knowledge of the time of the event which originated this Notification instance."; } leaf sequence-number { type uint64; config false; description "A monotonous increasing sequence number associated with the Notification instances. 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 "The possible source of this Notification instance."; } leaf layer-protocol-name { type tapi-common:layer-protocol-name; description "The Notification instance is related to a resource with this layer protocol value."; } leaf layer-protocol-qualifier { type tapi-common:layer-protocol-qualifier; description "The Notification instance is related to a resource with this layer protocol qualifier value."; } list changed-attributes { key 'value-name'; uses name-and-value-change; description "The list of relevant changed attributes and their values."; } list additional-info { key 'value-name'; uses tapi-common:name-and-value; description "Name and value list available for unspecified content."; } leaf additional-text { type string; description "Text available for unspecified content."; } uses tapi-common:global-class; description "The Notification signal. OMG UML(R) Version 2.5.1: 'A Signal is a specification of a kind of communication between objects in which a reaction is asynchronously triggered in the receiver without a reply. The data carried by the communication are represented as attributes of the Signal.'"; } notification event-notification { uses event-notification; description "none"; } grouping event-notification { leaf target-object-type { type tapi-common:object-type; description "The Notification instance is related to the object instance (of a global class - with UUID) with this ObjectType value. Alternatively, the Notification is related to the object instance of a local class, whose global object has this ObjectType value."; } leaf target-object-identifier { type tapi-common:uuid; description "The Notification instance is related to the object instance (of a global class) with this UUID value. Alternatively, the Notification is related to the object instance of a local class, whose global object has this UUID value."; } leaf target-local-object-type { type tapi-common:object-type; description "The Notification instance is related to the object instance of a local class, whose global object has targetObjectType value."; } leaf target-local-object-identifier { type string; description "The Notification instance is related to the object instance of a local class, whose global object has targetObjectIdentifier value."; } leaf target-object-dri { type string; description "Data Resource Identifier of the target object as per RFC 8040."; } list target-object-name { key 'value-name'; uses tapi-common:name-and-value; description "The Notification instance is related to the object instance with this list of names."; } leaf event-notification-type { type notification-type; description "none"; } leaf event-time-stamp { type tapi-common:date-and-time; description "The best knowledge of the time of the event which originated this Notification instance."; } leaf sequence-number { type uint64; description "A monotonous increasing sequence number associated with the Notification instances. 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 "The possible source of this Notification instance."; } leaf layer-protocol-name { type tapi-common:layer-protocol-name; description "The Notification instance is related to a resource with this layer protocol value."; } leaf-list layer-protocol-qualifier { type tapi-common:layer-protocol-qualifier; description "The Notification instance is related to a resource with these layer protocol qualifier values."; } list additional-info { key 'value-name'; uses tapi-common:name-and-value; description "none"; } uses tapi-common:global-class; description "The Notification signal. OMG UML(R) Version 2.5.1: 'A Signal is a specification of a kind of communication between objects in which a reaction is asynchronously triggered in the receiver without a reply. The data carried by the communication are represented as attributes of the Signal.'"; } /************************** * package type-definitions **************************/ identity NOTIFICATION_TYPE { description "none"; } identity NOTIFICATION_TYPE_OBJECT_CREATION { base NOTIFICATION_TYPE; description "The notification of an object instance creation event."; } identity NOTIFICATION_TYPE_OBJECT_DELETION { base NOTIFICATION_TYPE; description "The notification of an object instance deletion event."; } identity NOTIFICATION_TYPE_ATTRIBUTE_VALUE_CHANGE { base NOTIFICATION_TYPE; description "The notification of an attribute value change event."; } identity NOTIFICATION_OBJECT_TYPE { base tapi-common:OBJECT_TYPE; description "none"; } identity NOTIFICATION_OBJECT_TYPE_NOTIFICATION_SUBSCRIPTION_SERVICE { base NOTIFICATION_OBJECT_TYPE; description "The NotificationSubscriptionService class."; } 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 old value."; } leaf new-value { type string; description "The new value."; } description "A scoped name-value triple, including old value and new value."; } typedef notification-type { type identityref { base NOTIFICATION_TYPE; } description "List of supported notification types."; } typedef source-indicator { type enumeration { enum RESOURCE_OPERATION { description "The notification has been raised as a consequence of a generic state change of resource(s) in the managed network."; } enum MANAGEMENT_OPERATION { description "The notification has been raised as a consequence of a management operation."; } enum UNKNOWN { description "Unknown source of the notification."; } } description "The possible source of the notification."; } typedef subscription-state { type enumeration { enum SUSPENDED { description "The subscription is suspended."; } enum ACTIVE { description "The subscription is active."; } } description "The SubscriptionState types."; } typedef notification-object-type { type identityref { base NOTIFICATION_OBJECT_TYPE; } description "The list of TAPI Notification Global Object Class types on which Notification signals can be raised."; } /************************** * package interfaces **************************/ rpc get-supported-notification-types { description "none"; output { leaf-list supported-notification-types { type notification-type; min-elements 1; description "The requested list of supported NotificationType values."; } leaf-list supported-object-types { type tapi-common:object-type; min-elements 1; description "The requested list of supported ObjectType values."; } } } rpc create-notification-subscription-service { description "none"; input { leaf uuid { type tapi-common:uuid; description "UUID of the NotificationSubscriptionService instance to be created. UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } list name { key 'value-name'; uses tapi-common:name-and-value; description "List of names of the NotificationSubscriptionService instance to be created. The value(s) is (are) unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity."; } container subscription-filter { uses subscription-filter; description "The parameters of the SubscriptionFilter instance to be associated to the NotificationSubscriptionService instance under creation."; } leaf subscription-state { type subscription-state; description "The subscription state of the NotificationSubscriptionService instance to be created."; } } output { container subscription-service { uses notification-subscription-service; description "The created NotificationSubscriptionService instance."; } } } rpc update-notification-subscription-service { description "none"; input { leaf uuid { type tapi-common:uuid; description "UUID of the NotificationSubscriptionService instance to be updated. UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } list name { key 'value-name'; uses tapi-common:name-and-value; description "List of names of the NotificationSubscriptionService instance to be updated. The value(s) is (are) unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity."; } container subscription-filter { uses subscription-filter; description "The (updated) parameters of the SubscriptionFilter instance to be associated to the NotificationSubscriptionService instance under update."; } leaf subscription-state { type subscription-state; description "The (updated) subscription state of the NotificationSubscriptionService instance under update."; } } output { container subscription-service { uses notification-subscription-service; description "The updated NotificationSubscriptionService instance."; } } } rpc delete-notification-subscription-service { description "none"; input { leaf uuid { type tapi-common:uuid; description "UUID of the NotificationSubscriptionService instance to be deleted. UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } } } rpc get-notification-subscription-service-details { description "none"; input { leaf uuid { type tapi-common:uuid; description "UUID of the NotificationSubscriptionService instance. UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } } output { container subscription-service { uses notification-subscription-service; description "The requested NotificationSubscriptionService instance."; } } } rpc get-notification-subscription-service-list { description "none"; output { list subscription-service { key 'uuid'; uses notification-subscription-service; description "The requested list of NotificationSubscriptionService instances."; } } } rpc get-notification-list { description "none"; input { leaf subscription-id { type tapi-common:uuid; description "UUID of the parent NotificationSubscriptionService instance. UUID: An identifier that is universally unique within an identifier space, where the identifier space is itself globally unique, and immutable. An UUID carries no semantics with respect to the purpose or state of the entity. UUID here uses string representation as defined in RFC 4122. The canonical representation uses lowercase characters. Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12} Example of a UUID in string representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; } container time-range { uses tapi-common:time-range; description "The time window of requested Notification instances."; } } output { list notification { key 'uuid'; uses notification; description "The requested list of Notification instances."; } } } }