Merge changes I11d22718,I359a9bf2
* changes:
Develop a data model: o1-notify-pnf-registration
Develop a data model: o1-notify-pnf-registration
diff --git a/data-model/yang/published/opnfv/yang-based-event-stream.yang b/data-model/yang/published/opnfv/yang-based-event-stream.yang
new file mode 100644
index 0000000..417061a
--- /dev/null
+++ b/data-model/yang/published/opnfv/yang-based-event-stream.yang
@@ -0,0 +1,244 @@
+module yang-based-event-stream {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:yang-based-event-stream";
+ prefix yes;
+
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+ describe the exchanged data format.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-06-28 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Feature
+ */
+
+ feature event-history {
+ description
+ "This feature means that the server supports local
+ storage (memory, flash, or disk) of send event
+ messages.";
+ }
+
+ /*
+ * Groupings
+ */
+
+ grouping header-grp {
+ leaf domain {
+ type yt:domain-id;
+ mandatory true;
+ description
+ "The eventing domain associated with the event";
+ }
+ leaf event-id {
+ type string {
+ length "1..255";
+ }
+ mandatory true;
+ description
+ "The event key that is unique to the event source.";
+ }
+ leaf event-name {
+ type string;
+ mandatory true;
+ description
+ "A unique event name. A names space ensures the uniqueness
+ between the data-models.";
+ }
+ leaf event-type {
+ type yt:event-type-id;
+ description
+ "Copy from VES description
+ 'for example - applicationNf, guestOS, hostOS, platform.'
+
+ TODO: Open! How should this field by used and what is the
+ difference to 'yes:domain'? From the VES description it looks,
+ more like a VNF type than an event-type.";
+ }
+ leaf last-epoch {
+ type yang:date-and-time;
+ mandatory true;
+ description
+ "The latest time aka epoch time associated with the event from any component.";
+ }
+ leaf nfc-naming-code {
+ type string {
+ length "3";
+ }
+ description
+ "The network function component type, aligned with vfc naming
+ standards.
+
+ TODO: Add a reference to the VFC naming standard.";
+ }
+ leaf nf-naming-code {
+ type string {
+ length "4";
+ }
+ description
+ "The network function type, aligned with network-function (NF)
+ naming standards.
+
+ TODO: Add a reference to the NF naming standard.";
+ }
+ choice nf-vendor {
+ case nf-vendor-private-enterprise-number {
+ leaf nf-vendor-pen {
+ type uint32;
+ description
+ "Network function vendor IANA private enterprise number.";
+ }
+ }
+ case name {
+ leaf nf-vendor-name {
+ type string;
+ description
+ "Network function vendor name according to IANA Private Enterprise Numbers";
+ }
+ }
+ description
+ "The network function vendor can be identified by its name or by its
+ IANA private enterprise number (PEN)";
+ reference
+ "IANA Private Enterprise Numbers
+ http://www.iana.org/assignments/enterprise-numbers/enterprise-numbers";
+ }
+ leaf priority {
+ type yt:priority;
+ mandatory true;
+ description
+ "The event priority to control the processing of the event.";
+ }
+ leaf reporting-entity-id {
+ type yang:uuid;
+ description
+ "The entity reporting the event, for example an OAM VM.";
+ }
+ leaf reporting-entity-name {
+ type string {
+ length "1..255";
+ }
+ mandatory true;
+ description
+ "The name of the entity reporting the event, for example, an EMS
+ name; may be the same as 'source-name'.";
+ }
+ leaf sequence {
+ type uint64;
+ mandatory true;
+ description
+ "Ordering of events communicated by an event source instance or 0, if not needed.";
+ }
+ leaf source-id {
+ type yang:uuid;
+ description
+ "UUID identifying the entity experiencing the event issue.";
+ }
+ leaf source-name {
+ type string;
+ mandatory true;
+ description
+ "The name of the entity experiencing the event issue,";
+ }
+ leaf start-epoch {
+ type yang:date-and-time;
+ mandatory true;
+ description
+ "The earliest time aka epoch time associated with the event from
+ any component.";
+ }
+ description
+ "An object class containing common parameters to all types of
+ events.";
+ }
+
+ grouping event-grp {
+ container header {
+ uses header-grp;
+ description
+ "This contains all the parameters which are common to all
+ events.";
+ }
+ description
+ "An object class defining the data structure of a single
+ event. An event is an asynchronous message send from the system to its
+ manager.";
+ }
+
+ /*
+ * Data
+ */
+
+ container event-history {
+ if-feature "event-history";
+ config false;
+ leaf maximum-number-of-entries {
+ type uint16 {
+ range "10..max";
+ }
+ default "255";
+ description
+ "The maximum number of item in the event list supported by
+ the server.";
+ }
+ list event {
+ description
+ "This contains the set of asynchronous messages.";
+ uses event-grp;
+ }
+ description
+ "The root container of an event log. ";
+ }
+
+ /*
+ * Notifications
+ */
+
+ notification yang-based-event-stream {
+ description
+ "This notification contains list of events.";
+ list event {
+ description
+ "This contains the set of asynchronous messages.";
+ uses event-grp;
+ }
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-attribute-value-change.yang b/data-model/yang/published/opnfv/yes-attribute-value-change.yang
new file mode 100644
index 0000000..75c1a7e
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-attribute-value-change.yang
@@ -0,0 +1,117 @@
+module yes-attribute-value-change {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:attribute-value-change";
+ prefix yavc;
+
+ import yang-based-event-stream {
+ prefix yes;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module contains a collection of YANG definitions for sending an
+ attribute value change notification.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-07-04 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping attribute-value-change-grp {
+ leaf object-reference {
+ type instance-identifier {
+ require-instance false;
+ }
+ mandatory true;
+ description
+ "A reference to the object containing the attribute (leaf).";
+ }
+ container schema {
+ uses yt:schema-grp;
+ description
+ "The YANG module, which defines the type of the attribute
+ identified by its namespace.";
+ }
+ anydata new-value {
+ description
+ "The new value which should be use on client datastores.
+ It must be ensured that the value is defined by a yang module.
+ if the new value is not delivered the manager (NMS;
+ SDN-Controller, SMO, MnS, ...) must send a GET of GET-CONFIG
+ request to the API provider. ";
+ }
+ anydata old-value {
+ description
+ "The new value which should be use on client datastores.
+ It must be ensured that the value is defined by a yang module.";
+ }
+ description
+ "An object class containing pnf-registration specific parameters.";
+ }
+
+ /*
+ * Augmentation of YES
+ */
+ augment "/yes:event-history/yes:event" {
+ when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'yavc:attribute-value-change')" {
+ description
+ "The event header must indicate 'attribute-value-change'.";
+ }
+ if-feature yes:event-history;
+ list attribute-value-change {
+ uses attribute-value-change-grp;
+ description
+ "A single object for specific parameters, used for the any change
+ of value change.";
+ }
+ description
+ "Adds to YES the specifics of attribute-value-change notifications.";
+ }
+
+ augment "/yes:yang-based-event-stream/yes:event" {
+ when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'yavc:attribute-value-change')" {
+ description
+ "The event header must indicate 'attribute-value-change'.";
+ }
+ list attribute-value-change {
+ uses attribute-value-change-grp;
+ description
+ "A single object for specific parameters, used for the any change
+ of value change.";
+ }
+ description
+ "Adds to YES the specifics of attribute-value-change notifications.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-fault.yang b/data-model/yang/published/opnfv/yes-fault.yang
new file mode 100644
index 0000000..08e9bee
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-fault.yang
@@ -0,0 +1,224 @@
+module yes-fault {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:yes-fault";
+ prefix yf;
+
+ import yang-based-event-stream {
+ prefix yes;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import ietf-alarms {
+ prefix al;
+ reference
+ "RFC 8632: A YANG Data Model for Alarm Management";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+ describe the exchanged data format.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-06-28 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Identities
+ */
+ identity fault {
+ base yt:domain-id;
+ description
+ "Indicates, that the event body contains fault(s) related asynchronous
+ message context.";
+ }
+
+ identity category-id {
+ description
+ "Base identity for the alarm category. A unique identification of the
+ alarm category.
+
+ This identity is abstract and MUST NOT be used for alarm categories.";
+ }
+
+ identity license {
+ base category-id;
+ description
+ "The alarm is related to a license.";
+ }
+
+ identity hardware {
+ base category-id;
+ description
+ "The alarm is related to hardware.";
+ }
+
+ identity link {
+ base category-id;
+ description
+ "The alarm is related to telecommunication and/or infrastructure
+ link.";
+ }
+
+ identity routing {
+ base category-id;
+ description
+ "The alarm is related to packet routing.";
+ }
+
+ identity security {
+ base category-id;
+ description
+ "The alarm is related to security.";
+ }
+ identity signaling {
+ base category-id;
+ description
+ "The alarm is related to network signaling.";
+ }
+
+ /*
+ * Type definitions
+ */
+ typedef category-id {
+ type identityref {
+ base category-id;
+ }
+ description
+ "Identifies an alarm category. The description of the alarm category
+ identifier MUST indicate if the alarm category identifier is abstract
+ or not.
+ An abstract alarm category identifier is used as a base for other
+ alarm category ids and will not be used as a value for a category or
+ be present in the fault event.";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping fault-grp {
+ leaf condition {
+ type string {
+ length "255";
+ }
+ mandatory true;
+ description
+ "The alarm condition reported by the network function.";
+ }
+ leaf interface {
+ type al:resource;
+ description
+ "The card, port, channel or interface name of the network function
+ generating the alarm:
+
+ TODO: Shouldn't this leaf be mandatory for alarm correlation?";
+ }
+ leaf category {
+ type category-id;
+ description
+ "Event category, for example: license, link, routing, security,
+ signaling.";
+ }
+ leaf severity {
+ type al:severity-with-clear;
+ mandatory true;
+ description
+ "The event severity.";
+ }
+ leaf source-type {
+ type string {
+ length "255";
+ }
+ mandatory true;
+ description
+ "Type of event source; examples: card, host, other, port,
+ portThreshold, router, slotThreshold, switch, virtualMachine,
+ virtualNetworkFunction.
+
+ TODO: Is this needed? or What is the difference to category?";
+ }
+ leaf specific-problem {
+ type string {
+ length "255";
+ }
+ description
+ "A short description of the alarm or problem.";
+ }
+ leaf network-function-status {
+ type enumeration {
+ enum enabled {
+ description
+ "The network function is operational.";
+ }
+ enum disabled {
+ description
+ "The network function is not operational.";
+ }
+ }
+ description
+ "The operational status of the network function.";
+ }
+ description
+ "An object class containing all fault specific parameters.";
+ }
+
+ /*
+ * Augmentation of YES
+ */
+ augment "/yes:event-history/yes:event" {
+ when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'yf:fault')" {
+ description
+ "The event header must indicate 'fault'.";
+ }
+ if-feature yes:event-history;
+ list fault {
+ uses fault-grp;
+ description
+ "A list for fault objects.";
+ }
+ description
+ "Adds to YES the specifics of fault notifications.";
+ }
+
+ augment "/yes:yang-based-event-stream/yes:event" {
+ when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'yf:fault')" {
+ description
+ "The event header must indicate 'fault'.";
+ }
+ list fault {
+ uses fault-grp;
+ description
+ "A list for fault objects.";
+ }
+ description
+ "Adds to YES the specifics of fault notifications.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-heartbeat.yang b/data-model/yang/published/opnfv/yes-heartbeat.yang
new file mode 100644
index 0000000..fc15ecf
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-heartbeat.yang
@@ -0,0 +1,113 @@
+module yes-heartbeat {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:yes-heartbeat";
+ prefix yh;
+
+ import yang-based-event-stream {
+ prefix yes;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+ describe the exchanged data format.
+ The module yes-heartbeat is only required, if the network function sends
+ HTTP-POST RESTCONF messages to the SMO, otherwise the native NETCONF
+ capabilities will be sufficient.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-06-28 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Identities
+ */
+ identity heartbeat {
+ base yt:domain-id;
+ description
+ "Indicates, that the event body contains heartbeat asynchronous
+ message context.";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping heartbeat-grp {
+ leaf interval {
+ type uint32 {
+ range "60 .. 84600";
+ }
+ units "s";
+ mandatory true;
+ description
+ "The current heartbeat interval in seconds. The minimal heartbeat
+ interval is 1 minute avoiding overloading the management plane
+ network. The maximal interval is 24h to ensure a daily
+ heartbeat.";
+ }
+ description
+ "An object class containing heartbeat specific parameters.";
+ }
+
+ /*
+ * Augmentation of YES
+ */
+ augment "/yes:event-history/yes:event" {
+ when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'yh:heartbeat')" {
+ description
+ "The event header must indicate 'heartbeat'.";
+ }
+ if-feature yes:event-history;
+ container heartbeat {
+ uses heartbeat-grp;
+ description
+ "A single object for heartbeat specific parameters.";
+ }
+ description
+ "Adds to YES the specifics of heartbeat notifications.";
+ }
+
+ augment "/yes:yang-based-event-stream/yes:event" {
+ when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'yh:heartbeat')" {
+ description
+ "The event header must indicate 'heartbeat'.";
+ }
+ container heartbeat {
+ uses heartbeat-grp;
+ description
+ "A single object for heartbeat specific parameters.";
+ }
+ description
+ "Adds to YES the specifics of heartbeat notifications.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-object-creation.yang b/data-model/yang/published/opnfv/yes-object-creation.yang
new file mode 100644
index 0000000..87b0cec
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-object-creation.yang
@@ -0,0 +1,108 @@
+module yes-object-creation {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:object-creation";
+ prefix yoc;
+
+ import yang-based-event-stream {
+ prefix yes;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module contains a collection of YANG definitions for sending an
+ object creation notification.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-07-04 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping object-creation-grp {
+ leaf object-reference {
+ type instance-identifier {
+ require-instance false;
+ }
+ mandatory true;
+ description
+ "A reference to the object containing the attribute (leaf).";
+ }
+ container schema {
+ uses yt:schema-grp;
+ description
+ "The YANG module, which defines the type of the attribute
+ identified by its namespace.";
+ }
+ anydata data {
+ description
+ "A set of data representing the new created object instance.";
+ }
+ description
+ "An object class containing specific parameters of object creation.";
+ }
+
+ /*
+ * Augmentation of YES
+ */
+ augment "/yes:event-history/yes:event" {
+ when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'yoc:object-creation')" {
+ description
+ "The event header must indicate 'object-creation'.";
+ }
+ if-feature yes:event-history;
+ list object-creation {
+ uses object-creation-grp;
+ description
+ "A single object for specific parameters, used for the any object
+ creation (list item or container).";
+ }
+ description
+ "Adds to YES the specifics of object-creation notifications.";
+ }
+
+ augment "/yes:yang-based-event-stream/yes:event" {
+ when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'yoc:object-creation')" {
+ description
+ "The event header must indicate 'object-creation'.";
+ }
+ list object-creation {
+ uses object-creation-grp;
+ description
+ "A single object for specific parameters, used for the any object
+ creation (list item or container).";
+ }
+ description
+ "Adds to YES the specifics of object-creation notifications.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-object-deletion.yang b/data-model/yang/published/opnfv/yes-object-deletion.yang
new file mode 100644
index 0000000..407fb80
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-object-deletion.yang
@@ -0,0 +1,109 @@
+module yes-object-deletion {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:object-deletion";
+ prefix yod;
+
+ import yang-based-event-stream {
+ prefix yes;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module contains a collection of YANG definitions for sending an
+ object creation notification.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-07-04 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping object-deletion-grp {
+ leaf object-reference {
+ type instance-identifier {
+ require-instance false;
+ }
+ mandatory true;
+ description
+ "A reference to the object containing the attribute (leaf).";
+ }
+ container schema {
+ uses yt:schema-grp;
+ description
+ "The YANG module, which defines the type of the attribute
+ identified by its namespace.";
+ }
+ anydata data {
+ description
+ "A set of data representing the deleted object instance.
+ TODO: does this make any sense?";
+ }
+ description
+ "An object class containing parameters for object deletion.";
+ }
+
+ /*
+ * Augmentation of YES
+ */
+ augment "/yes:event-history/yes:event" {
+ when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'yod:object-deletion')" {
+ description
+ "The event header must indicate 'object-deletion'.";
+ }
+ if-feature yes:event-history;
+ list object-deletion {
+ uses object-deletion-grp;
+ description
+ "A single object for specific parameters, used for the any object
+ deletion (list item or container).";
+ }
+ description
+ "Adds to YES the specifics of object-deletion notifications.";
+ }
+
+ augment "/yes:yang-based-event-stream/yes:event" {
+ when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'yod:object-deletion')" {
+ description
+ "The event header must indicate 'object-deletion'.";
+ }
+ list object-deletion {
+ uses object-deletion-grp;
+ description
+ "A single object for specific parameters, used for the any object
+ deletion (list item or container).";
+ }
+ description
+ "Adds to YES the specifics of object-deletion notifications.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-performance-monitoring.yang b/data-model/yang/published/opnfv/yes-performance-monitoring.yang
new file mode 100644
index 0000000..8c8e813
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-performance-monitoring.yang
@@ -0,0 +1,184 @@
+module yes-performance-monitoring {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:yes-performance-monitoring";
+ prefix ypm;
+
+ import yang-based-event-stream {
+ prefix yes;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+ describe the exchanged data format.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-06-28 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Identities
+ */
+ identity performance-monitoring {
+ base yt:domain-id;
+ description
+ "Indicates, that the event body contains performance-monitoring
+ related asynchronous message context.";
+ }
+
+ identity granularity-period-id {
+ description
+ "Base identity for the granularity period. A unique identification of
+ the granularity period. The description of the granularity period
+ value MUST indicate if the granularity period is abstract or not.
+
+ This identity is abstract and MUST NOT be used for granularity
+ period.";
+ }
+
+ identity gp15min {
+ base granularity-period-id;
+ description
+ "Indicates a period length of 900s. The display value is '15min'.";
+ }
+
+ identity gp24h {
+ base granularity-period-id;
+ description
+ "Indicates a period length of maximal 86400s. The display value is
+ '24h'.";
+ }
+
+ /*
+ * Type definitions
+ */
+ typedef granularity-period-type {
+ type identityref {
+ base granularity-period-id;
+ }
+ description
+ "The enumeration with the options for granularity period of the
+ performance measurement data.";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping pm-measurement-grp {
+ leaf pm-key {
+ type yt:performance-measurement-type-id;
+ description
+ "The local identifier of a pm-measurement object.";
+ }
+ leaf pm-value {
+ type yt:pm-value-type;
+ mandatory true;
+ description
+ "The performance measurement value, measured in a certain interval.";
+ }
+ leaf pm-unit {
+ type yt:performance-measurement-unit-id;
+ description
+ "A representing of the unit og the pm-value.";
+ }
+ description
+ "An abstract object class representing a key-value pair for
+ pm-measurement.";
+ }
+
+ grouping performance-monitoring-grp {
+ leaf granularity-period {
+ type granularity-period-type;
+ config false;
+ description
+ "Time period between reset of the underlying counter.";
+ }
+ leaf suspect-interval-flag {
+ type boolean;
+ config false;
+ description
+ "This attribute indicates that the data collected during the interval is suspect.";
+ }
+ leaf period-end-time {
+ type yang:date-and-time;
+ config false;
+ description
+ "Time when the counter values have been recorded and the counter reset.";
+ }
+ list measurement {
+ key pm-key;
+ uses pm-measurement-grp;
+ description
+ "A set of measurement data for this interval.";
+ }
+ description
+ "An object class containing all performance-monitoring specific parameters.";
+ }
+
+ /*
+ * Augmentation of YES
+ */
+ augment "/yes:event-history/yes:event" {
+ when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'ypm:performance-monitoring')" {
+ description
+ "The event header must indicate 'performance-monitoring'.";
+ }
+ if-feature yes:event-history;
+ list performance-monitoring {
+ uses performance-monitoring-grp;
+ description
+ "A list for performance-monitoring objects.";
+ }
+ description
+ "Adds to YES the specifics of performance-monitoring notifications.";
+ }
+
+ augment "/yes:yang-based-event-stream/yes:event" {
+ when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'ypm:performance-monitoring')" {
+ description
+ "The event header must indicate 'performance-monitoring'.";
+ }
+ list performance-monitoring {
+ uses performance-monitoring-grp;
+ description
+ "A list for performance-monitoring objects.";
+ }
+ description
+ "Adds to YES the specifics of performance-monitoring notifications.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-pm-types-g826.yang b/data-model/yang/published/opnfv/yes-pm-types-g826.yang
new file mode 100644
index 0000000..9a268db
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-pm-types-g826.yang
@@ -0,0 +1,97 @@
+module yes-pm-types-g826 {
+
+ yang-version 1.1;
+ namespace "urn:opendaylight:params:xml:ns:yang:yes-pm-types-g826";
+ prefix ypmtg;
+
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+
+ description
+ "This module defines the performance measurement name identities
+ for yang based event streaming.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-04-13 {
+ description
+ "Initial revision";
+ reference
+ "ITU T-REC-G.826 2002-12";
+ }
+
+ // --- typedef
+ identity performance-measurement-type-id {
+ base yt:performance-measurement-type-id;
+ description
+ "An abstract base performance measurement type which must not be
+ used as reference in data objects.";
+ }
+
+ identity errored-block {
+ base performance-measurement-type-id;
+ description
+ "errored block (EB):
+ A block in which one or more bits are in error.";
+ }
+
+ identity errored-second {
+ base performance-measurement-type-id;
+ description
+ "errored second (ES):
+ A one-second period with one or more errored blocks or at least
+ one defect.";
+ }
+
+ identity severely-errored-second {
+ base performance-measurement-type-id;
+ description
+ "severely errored second (SES):
+ A one-second period which contains ≥30% errored blocks or at least
+ one defect. SES is a subset of ES.";
+ }
+
+ identity errored-second-ratio {
+ base performance-measurement-type-id;
+ description
+ "errored second ratio (ESR):
+ The ratio of ES to total seconds in available time during a fixed
+ measurement interval. ";
+ }
+
+ identity severely-errored-second-ratio {
+ base performance-measurement-type-id;
+ description
+ "severely errored second ratio (SESR):
+ The ratio of SES to total seconds in available time during a fixed
+ measurement interval.";
+ }
+
+ identity background-block-error-ratio {
+ base performance-measurement-type-id;
+ description
+ "background block error ratio (BBER):
+ The ratio of Background Block Errors (BBE) to total blocks in
+ available time during a fixed measurement interval.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-pm-types-openroadm.yang b/data-model/yang/published/opnfv/yes-pm-types-openroadm.yang
new file mode 100644
index 0000000..2dea824
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-pm-types-openroadm.yang
@@ -0,0 +1,612 @@
+module yes-pm-types-openroadm {
+
+ yang-version 1.1;
+ namespace "urn:opendaylight:params:xml:ns:yang:yes-pm-types-openroadm";
+ prefix ypmto;
+
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+
+ description
+ "This module defines the performance measurement name identities
+ for yang based event streaming.
+
+ This yang module converts the OpenROADM yang:enumeration into
+ yang:identities.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-04-13 {
+ description
+ "Initial revision";
+ reference
+ "https://jira.onap.org/browse/SDNC-???";
+ }
+
+ // --- typedef
+ identity performance-measurement-type-id {
+ base yt:performance-measurement-type-id;
+ description
+ "An abstract base performance measurement type which must not be used as
+ reference in data objects.";
+ }
+
+ // [sko] no need to define vendor extension - yang augment should be used
+ // SDN Controller will ignore such values.
+ // identity vendorExtension {
+ // base performance-measurement-type-id;
+ // description
+ // "vendor extension";
+ // }
+
+ identity bitErrorRate {
+ base performance-measurement-type-id;
+ description
+ "Bit error rate (BER)";
+ }
+ identity opticalPowerOutput {
+ base performance-measurement-type-id;
+ description
+ "Optical Power Output (OPOUT-OTS, OPOUT-OMS, OPT-OCH). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
+ }
+ identity opticalReturnLoss {
+ base performance-measurement-type-id;
+ description
+ "Optical Return Loss (ORL-OTS) - at MW port(s) B";
+ }
+ identity opticalPowerInput {
+ base performance-measurement-type-id;
+ description
+ "Optical Power Input (OPIN-OTS, OPIN-OMS, OPR-OCH). Total optical power";
+ }
+ identity codeViolations {
+ base performance-measurement-type-id;
+ description
+ "Code Violations (CV)";
+ }
+
+ // [sko] exists already in G826
+ // identity erroredSeconds {
+ // base performance-measurement-type-id;
+ // description
+ // "Errored Seconds (ES)";
+ // }
+
+ // [sko] exists already in G826
+ // identity severelyErroredSeconds {
+ // base performance-measurement-type-id;
+ // description
+ // "Severely Errored Seconds (SES)";
+ // }
+
+ identity unavailableSeconds {
+ base performance-measurement-type-id;
+ description
+ "Unavailable Seconds (UAS)";
+ }
+ identity inFrames {
+ base performance-measurement-type-id;
+ description
+ "In frames (INFRAMES-E)";
+ }
+ identity inFramesErrored {
+ base performance-measurement-type-id;
+ description
+ "In frames errored (INFRAMESERR-E)";
+ }
+ identity outFrames {
+ base performance-measurement-type-id;
+ description
+ "Out frames (OUTFRAMES-E)";
+ }
+ identity erroredSecondsEthernet {
+ base performance-measurement-type-id;
+ description
+ "Errored Seconds Ethernet (ES-E)";
+ }
+ identity severelyErroredSecondsEthernet {
+ base performance-measurement-type-id;
+ description
+ "Severely Errored Seconds, Ethernet (SES-E)";
+ }
+ identity unavailableSecondsEthernet {
+ base performance-measurement-type-id;
+ description
+ "Unavailable Seconds, Ethernet (UAS-E)";
+ }
+ identity erroredBlockCount {
+ base performance-measurement-type-id;
+ description
+ "Errored block count";
+ }
+ identity delay {
+ base performance-measurement-type-id;
+ description
+ "Number of frames between a DMValue toggle event and the received DMp signal value toggle event";
+ }
+ identity defectSeconds {
+ base performance-measurement-type-id;
+ description
+ "Defect Seconds (DS)";
+ }
+ identity backwardIncomingAlignmentError {
+ base performance-measurement-type-id;
+ description
+ "Backward Incoming Alignment Error (BIAE)";
+ }
+ identity incomingAlignmentError {
+ base performance-measurement-type-id;
+ description
+ "Incoming Alignment Error (IAE)";
+ }
+ identity opticalPowerOutputMin {
+ base performance-measurement-type-id;
+ description
+ "Minimum Optical Power Output (OPOUT-OTS). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
+ }
+ identity opticalPowerOutputMax {
+ base performance-measurement-type-id;
+ description
+ "Maximum Optical Power Output (OPOUT-OTS). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
+ }
+ identity opticalPowerOutputAvg {
+ base performance-measurement-type-id;
+ description
+ "Average Optical Power Output (OPOUT-OTS). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
+ }
+ identity opticalPowerInputMin {
+ base performance-measurement-type-id;
+ description
+ "Minimum Optical Power Input (OPIN-OTS). Total optical power";
+ }
+ identity opticalPowerInputMax {
+ base performance-measurement-type-id;
+ description
+ "Maximum Optical Power Input (OPIN-OTS). Total optical power";
+ }
+ identity opticalPowerInputAvg {
+ base performance-measurement-type-id;
+ description
+ "Average Optical Power Input (OPIN-OTS). Total optical power";
+ }
+ identity opticalPowerOutputOSC {
+ base performance-measurement-type-id;
+ description
+ "OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
+ }
+ identity opticalPowerOutputOSCMin {
+ base performance-measurement-type-id;
+ description
+ "Minimum OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
+ }
+ identity opticalPowerOutputOSCMax {
+ base performance-measurement-type-id;
+ description
+ "Maximum OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
+ }
+ identity opticalPowerOutputOSCAvg {
+ base performance-measurement-type-id;
+ description
+ "Average OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
+ }
+ identity opticalPowerInputOSC {
+ base performance-measurement-type-id;
+ description
+ "OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
+ }
+ identity opticalPowerInputOSCMin {
+ base performance-measurement-type-id;
+ description
+ "Minimum OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
+ }
+ identity opticalPowerInputOSCMax {
+ base performance-measurement-type-id;
+ description
+ "Maximum OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
+ }
+ identity opticalPowerInputOSCAvg {
+ base performance-measurement-type-id;
+ description
+ "Average OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
+ }
+ identity preFECCorrectedErrors {
+ base performance-measurement-type-id;
+ description
+ "pFEC corrected Errors";
+ }
+ identity totalOpticalPowerInput {
+ base performance-measurement-type-id;
+ description
+ "Total Optical Power Input.";
+ }
+ identity totalOpticalPowerInputMin {
+ base performance-measurement-type-id;
+ description
+ "Minimum Total Optical Power Input.";
+ }
+ identity totalOpticalPowerInputMax {
+ base performance-measurement-type-id;
+ description
+ "Maximum Total Optical Power Input.";
+ }
+ identity totalOpticalPowerInputAvg {
+ base performance-measurement-type-id;
+ description
+ "Average Total Optical Power Input.";
+ }
+ identity FECCorrectableBlocks {
+ base performance-measurement-type-id;
+ description
+ "FEC Correctable Blocks.";
+ }
+ identity FECUncorrectableBlocks {
+ base performance-measurement-type-id;
+ description
+ "FEC Uncorrectable Blocks.";
+ }
+ identity BIPErrorCounter {
+ base performance-measurement-type-id;
+ description
+ "BIP Error Counter";
+ }
+ identity protectionSwitchingCount {
+ base performance-measurement-type-id;
+ description
+ "Protection Switching Count (PSC)";
+ }
+ identity protectionSwitchingDuration {
+ base performance-measurement-type-id;
+ description
+ "Protection Switching Duration in seconds (PSD)";
+ }
+ identity erroredBlockCountTCM1-up {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM1 up direction.";
+ }
+ identity erroredBlockCountTCM2-up {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM2 up direction.";
+ }
+ identity erroredBlockCountTCM3-up {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM3 up direction.";
+ }
+ identity erroredBlockCountTCM4-up {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM4 up direction.";
+ }
+ identity erroredBlockCountTCM5-up {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM5 up direction.";
+ }
+ identity erroredBlockCountTCM6-up {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM6 up direction.";
+ }
+ identity delayTCM1-up {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM1 up direction.";
+ }
+ identity delayTCM2-up {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM2 up direction.";
+ }
+ identity delayTCM3-up {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM3 up direction.";
+ }
+ identity delayTCM4-up {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM4 up direction.";
+ }
+ identity delayTCM5-up {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM5 up direction.";
+ }
+ identity delayTCM6-up {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM6 up direction.";
+ }
+ identity erroredBlockCountTCM1-down {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM1 down direction.";
+ }
+ identity erroredBlockCountTCM2-down {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM2 down direction.";
+ }
+ identity erroredBlockCountTCM3-down {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM3 down direction.";
+ }
+ identity erroredBlockCountTCM4-down {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM4 down direction.";
+ }
+ identity erroredBlockCountTCM5-down {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM5 down direction.";
+ }
+ identity erroredBlockCountTCM6-down {
+ base performance-measurement-type-id;
+ description
+ "errored Blocks Count on TCM6 down direction.";
+ }
+ identity delayTCM1-down {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM1 down direction.";
+ }
+ identity delayTCM2-down {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM2 down direction.";
+ }
+ identity delayTCM3-down {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM3 down direction.";
+ }
+ identity delayTCM4-down {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM4 down direction.";
+ }
+ identity delayTCM5-down {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM5 down direction.";
+ }
+ identity delayTCM6-down {
+ base performance-measurement-type-id;
+ description
+ "Delay on TCM6 down direction.";
+ }
+ identity partialRateDiscard {
+ base performance-measurement-type-id;
+ description
+ "Discarded packet as a result of policing or rate limiting for subrate ethernet.";
+ }
+ identity erroredSecondsTCM1-up {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM1 up direction.";
+ }
+ identity erroredSecondsTCM2-up {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM2 up direction.";
+ }
+ identity erroredSecondsTCM3-up {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM3 up direction.";
+ }
+ identity erroredSecondsTCM4-up {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM4 up direction.";
+ }
+ identity erroredSecondsTCM5-up {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM5 up direction.";
+ }
+ identity erroredSecondsTCM6-up {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM6 up direction.";
+ }
+ identity severelyErroredSecondsTCM1-up {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM1 up direction.";
+ }
+ identity severelyErroredSecondsTCM2-up {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM2 up direction.";
+ }
+ identity severelyErroredSecondsTCM3-up {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM3 up direction.";
+ }
+ identity severelyErroredSecondsTCM4-up {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM4 up direction.";
+ }
+ identity severelyErroredSecondsTCM5-up {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM5 up direction.";
+ }
+ identity severelyErroredSecondsTCM6-up {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM6 up direction.";
+ }
+ identity unavailableSecondsTCM1-up {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM1 up direction.";
+ }
+ identity unavailableSecondsTCM2-up {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM2 up direction.";
+ }
+ identity unavailableSecondsTCM3-up {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM3 up direction.";
+ }
+ identity unavailableSecondsTCM4-up {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM4 up direction.";
+ }
+ identity unavailableSecondsTCM5-up {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM5 up direction.";
+ }
+ identity unavailableSecondsTCM6-up {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM6 up direction.";
+ }
+ identity erroredSecondsTCM1-down {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM1 down direction.";
+ }
+ identity erroredSecondsTCM2-down {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM2 down direction.";
+ }
+ identity erroredSecondsTCM3-down {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM3 down direction.";
+ }
+ identity erroredSecondsTCM4-down {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM4 down direction.";
+ }
+ identity erroredSecondsTCM5-down {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM5 down direction.";
+ }
+ identity erroredSecondsTCM6-down {
+ base performance-measurement-type-id;
+ description
+ "errored Seconds Count on TCM6 down direction.";
+ }
+ identity severelyErroredSecondsTCM1-down {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM1 down direction.";
+ }
+ identity severelyErroredSecondsTCM2-down {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM2 down direction.";
+ }
+ identity severelyErroredSecondsTCM3-down {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM3 down direction.";
+ }
+ identity severelyErroredSecondsTCM4-down {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM4 down direction.";
+ }
+ identity severelyErroredSecondsTCM5-down {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM5 down direction.";
+ }
+ identity severelyErroredSecondsTCM6-down {
+ base performance-measurement-type-id;
+ description
+ "severely Errored Seconds Count on TCM6 down direction.";
+ }
+ identity unavailableSecondsTCM1-down {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM1 down direction.";
+ }
+ identity unavailableSecondsTCM2-down {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM2 down direction.";
+ }
+ identity unavailableSecondsTCM3-down {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM3 down direction.";
+ }
+ identity unavailableSecondsTCM4-down {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM4 down direction.";
+ }
+ identity unavailableSecondsTCM5-down {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM5 down direction.";
+ }
+ identity unavailableSecondsTCM6-down {
+ base performance-measurement-type-id;
+ description
+ "unavailable Seconds Count on TCM6 down direction.";
+ }
+ identity fecCorrectedCodewords {
+ base performance-measurement-type-id;
+ description
+ "FEC Corrected Codewords Counter";
+ }
+ identity fecUncorrectedCodewords {
+ base performance-measurement-type-id;
+ description
+ "FEC Uncorrected Codewords Counter";
+ }
+ identity fecSymbolErrors {
+ base performance-measurement-type-id;
+ description
+ "FEC Symbol Error Counter";
+ }
+ identity localFaultSeconds {
+ base performance-measurement-type-id;
+ description
+ "Local Fault Seconds";
+ }
+ identity remoteFaultSeconds {
+ base performance-measurement-type-id;
+ description
+ "Remote Fault Seconds";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-pnf-registration.yang b/data-model/yang/published/opnfv/yes-pnf-registration.yang
new file mode 100644
index 0000000..c1dedb9
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-pnf-registration.yang
@@ -0,0 +1,182 @@
+module yes-pnf-registration {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:yes-pnf-registration";
+ prefix ypr;
+
+ import yang-based-event-stream {
+ prefix yes;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import yes-types {
+ prefix yt;
+ reference
+ "wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: YANG data types for Internet addresses and related
+ things.";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+ describe the exchanged data format.
+ The module yes-pnf-registration is only required, if the network function
+ does not support NETCONF CALL HOME but RESTCONF asynchronous messages.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-06-28 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Identities
+ */
+ identity pnf-registration {
+ base yt:domain-id;
+ description
+ "Indicates, that the event body contains pnf-registration asynchronous
+ message context.";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping pnf-registration-grp {
+ // TODO align with ietf-hardware, ONAP AAI, ONF manufactured-thing
+ leaf last-service-date {
+ type yang:date-and-time;
+ description
+ "Date when the field operation stuff way on-side.";
+ }
+ leaf mac-address {
+ type yang:mac-address;
+ description
+ "The MAC address of OAM interface of the network function.";
+ }
+ leaf manufacture-date {
+ type yang:date-and-time;
+ description
+ "Manufacture date of the network function.";
+ }
+ leaf model-number {
+ type string {
+ length "255";
+ }
+ description
+ "Version of the network function from vendor.";
+ }
+ leaf oam-host {
+ type inet:host;
+ description
+ "The m-plane fully qualified domain name (host) or IP address to
+ be used by the manager to contact the PNF.";
+ }
+ leaf oam-port {
+ type inet:port-number;
+ description
+ "The port number the PNF listens for OAM commands..";
+ }
+ leaf serial-number {
+ type string {
+ length "255";
+ }
+ description
+ "The serial number of the network function.";
+ }
+ leaf software-version {
+ type string {
+ length "255";
+ }
+ description
+ "The active software version running on the network function.";
+ }
+ leaf family {
+ type string {
+ length "255";
+ }
+ description
+ "The general type of hardware.";
+ }
+ leaf network-function-type {
+ type string {
+ length "255";
+ }
+ description
+ "Vendor name for the network function";
+ }
+ leaf vendor-name {
+ type string {
+ length "255";
+ }
+ description
+ "The company name of manufacturer.";
+ }
+ description
+ "An object class containing pnf-registration specific parameters.";
+ }
+
+ /*
+ * Augmentation of YES
+ */
+ augment "/yes:event-history/yes:event" {
+ when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'ypr:pnf-registration')" {
+ description
+ "The event header must indicate 'pnf-registration'.";
+ }
+ if-feature yes:event-history;
+ container pnf-registration {
+ uses pnf-registration-grp;
+ description
+ "A single object for specific parameters, used for the registration of
+ physical network functions (PNF).";
+ }
+ description
+ "Adds to YES the specifics of pnf-registration notifications.";
+ }
+
+ augment "/yes:yang-based-event-stream/yes:event" {
+ when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'ypr:pnf-registration')" {
+ description
+ "The event header must indicate 'pnf-registration'.";
+ }
+ container pnf-registration {
+ uses pnf-registration-grp;
+ description
+ "A single object for specific parameters, used for the registration of
+ physical network functions (PNF).";
+ }
+ description
+ "Adds to YES the specifics of pnf-registration notifications.";
+ }
+}
diff --git a/data-model/yang/published/opnfv/yes-types.yang b/data-model/yang/published/opnfv/yes-types.yang
new file mode 100644
index 0000000..bcb14e6
--- /dev/null
+++ b/data-model/yang/published/opnfv/yes-types.yang
@@ -0,0 +1,326 @@
+module yes-types {
+ yang-version 1.1;
+ namespace "urn:opnfv:params:xml:ns:yang:yes-types";
+ prefix yt;
+
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
+ organization
+ "Open Platform for NFV (OPNFV) - Virtual Event Streaming (VES) project";
+ contact
+ "wiki.opnfv.org/display/ves";
+ description
+ "This module contains common type definitions and groupings of the
+ yang-based-event-stream (YES). Such definitions could be used also outside of
+ YES if appropriate.
+
+ Copyright 2020 highstreet technologies GmbH and others.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-06-28 {
+ description
+ "Initial version";
+ reference
+ "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+ VES: wiki.opnfv.org/display/ves/VES+Home
+ docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+ YES: wiki.opnfv.org/display/ves/VES+goes+YES";
+ }
+
+ /*
+ * Identities
+ */
+
+ identity domain-id {
+ description
+ "Base identity for the event domain. A unique identification of the
+ event domain.
+
+ This identity is abstract and MUST NOT be used for domains.";
+ }
+
+ identity event-type-id {
+ description
+ "Base identity for the event type. A unique identification of the
+ event type.
+
+ This identity is abstract and MUST NOT be used for event types.";
+ }
+
+ identity application {
+ base event-type-id;
+ description
+ "Indicates that the event is raised by a software application.";
+ reference
+ "https://en.wikipedia.org/wiki/Application_software";
+ }
+
+ identity micro-service {
+ base event-type-id;
+ description
+ "Indicates that the event is raised by a software micro-service.";
+ reference
+ "https://en.wikipedia.org/wiki/Microservices";
+ }
+
+ identity guest-operating-system {
+ base event-type-id;
+ description
+ "Indicates that the event is raised by the operating system of a
+ guest virtual network function.";
+ }
+
+ identity host-operating-system {
+ base event-type-id;
+ description
+ "Indicates that the event is raised by the operating system of a
+ host system running virtual network functions.";
+ }
+
+ identity platform {
+ base event-type-id;
+ description
+ "Indicates that the event is raised by the cloud and/or data center
+ itself.";
+ }
+
+ identity physical-network-function {
+ base event-type-id;
+ description
+ "Indicates that the event is raised by a physical network function.";
+ }
+
+ identity performance-measurement-type-id {
+ description
+ "Base identity for performance measurement types. A unique identification
+ of the performance measurement value, not including the resource.
+ Different resources can share performance measurement types. If the
+ resource reports the same performance measurement type, it is to be
+ considered to be the same performance measurement.
+
+ This identity is abstract and MUST NOT be used for performance
+ measurement.";
+ }
+
+ identity performance-measurement-unit-id {
+ description
+ "Base identity for performance measurement units.
+
+ This identity is abstract and MUST NOT be used for performance
+ measurement.";
+ }
+
+ identity celsius {
+ base performance-measurement-unit-id;
+ description
+ "°C: Grad Celsius";
+ }
+
+ identity dBm {
+ base performance-measurement-unit-id;
+ description
+ "dBm is unit of level used to indicate that a power ratio is expressed in
+ decibels (dB) with reference to one milliwatt (mW).";
+ }
+
+ identity dB {
+ base performance-measurement-unit-id;
+ description
+ "dB: decibels";
+ }
+
+ identity fahrenheit {
+ base performance-measurement-unit-id;
+ description
+ "°F: Grad Fahrenheit";
+ }
+
+ identity mW {
+ base performance-measurement-unit-id;
+ description
+ "mW: milliwatt";
+ }
+
+ identity kHz {
+ base performance-measurement-unit-id;
+ description
+ "kHz: kilohertz";
+ }
+
+ /*
+ * Type definitions
+ */
+
+ typedef domain-id {
+ type identityref {
+ base domain-id;
+ }
+ description
+ "Identifies an event domain. The description of the domain
+ identifier MUST indicate if the domain identifier is abstract or not.
+ An abstract domain identifier is used as a base for other domain ids
+ and will not be used as a value for a domain or be present in
+ the event.";
+ }
+
+ typedef event-type-id {
+ type identityref {
+ base event-type-id;
+ }
+ description
+ "Identifies an event type. The description of the event type
+ MUST indicate if the event type is abstract or not.
+ An abstract event type is used as a base for other event types
+ and will not be used as a value for an event.";
+ }
+
+ typedef pm-value-type {
+ type union {
+ type uint64;
+ type int64;
+ type decimal64 {
+ fraction-digits 2;
+ }
+ type decimal64 {
+ fraction-digits 17;
+ }
+ }
+ description
+ "Inspired and copied from OpenROADM. A generic type definition
+ for performance monitoring values.";
+ }
+
+ typedef performance-measurement-type-id {
+ type identityref {
+ base performance-measurement-type-id;
+ }
+ description
+ "Identifies an performance-measurement type. The description of the
+ performance measurement type id MUST indicate if the performance
+ measurement type is abstract or not. An abstract performance measurement
+ type is used as a base for other performance measurement type ids
+ and will not be used as a value for an performance measurement or be
+ present in the performance measurement inventory.";
+ }
+
+ typedef performance-measurement-unit-id {
+ type identityref {
+ base performance-measurement-unit-id;
+ }
+ description
+ "Identifies an performance-measurement unit. The description of the
+ performance measurement unit id MUST indicate if the performance
+ measurement unit is abstract or not. An abstract performance measurement
+ unit is used as a base for other performance measurement unit ids
+ and will not be used as a value for an performance measurement or be
+ present in the performance measurement inventory.";
+ }
+
+ typedef priority {
+ type enumeration {
+ enum high {
+ description
+ "Indicates the highest priority of an event. This value SHOULD
+ be used only in very rare cases, where it must be ensured,
+ that the event SHOULD be processed immediately by-passing any
+ queue. ";
+ }
+ enum medium {
+ description
+ "This value SHOULD be used to indicate that the event SHOULD
+ be processed faster than default. ";
+ }
+ enum normal {
+ description
+ "The default value of a event priority.";
+ }
+ enum low {
+ description
+ "Indicates that such event can be process, when the processing
+ system is idle.";
+ }
+ }
+ description
+ "A non-extensible enumeration defining the different priority levels.
+ In case of resource constrainer and overload scenarios an event with
+ a higher priority SHOULD be handled first.";
+ }
+
+ typedef resource {
+ type union {
+ type instance-identifier {
+ require-instance false;
+ }
+ type yang:object-identifier;
+ type string;
+ type yang:uuid;
+ }
+ description
+ "This is an identification of the event emitting resource, such as an
+ interface. It should be as fine-grained as possible both to
+ guide the operator and to guarantee uniqueness of the event emitting
+ resource.
+
+ If the resource is modeled in YANG, this type will
+ be an instance-identifier.
+
+ If the resource is an SNMP object, the type will be an
+ object-identifier.
+
+ If the resource is anything else, for example a distinguished
+ name or a CIM path, this type will be a string.
+
+ If the alarming object is identified by a UUID use the uuid
+ type. Be cautious when using this type, since a UUID is hard
+ to use for an operator.
+
+ If the server supports several models, the precedence should
+ be in the order as given in the union definition.";
+ reference
+ "RRC 8632: Type Definition 'resource'";
+ }
+
+ /*
+ * Groupings
+ */
+
+ grouping schema-grp {
+ leaf namespace {
+ type string {
+ length "1..255";
+ }
+ mandatory true;
+ description
+ "The (YANG-) schema namespace as as unique reference.";
+ }
+ leaf module {
+ type string {
+ length "1..255";
+ }
+ description
+ "The (YANG-) module name.";
+ }
+ leaf revision {
+ type yang:date-and-time;
+ description
+ "The revision date of the (YANG-) schema.";
+ }
+ description
+ "An object class to reference a (YANG-) schema.";
+ }
+}
diff --git a/data-model/yang/working/o-ran-sc/template/iana-hardware.yang b/data-model/yang/working/o-ran-sc/template/iana-hardware.yang
index 39d3b0e..d3eeca7 120000
--- a/data-model/yang/working/o-ran-sc/template/iana-hardware.yang
+++ b/data-model/yang/working/o-ran-sc/template/iana-hardware.yang
@@ -1 +1 @@
-../../../published/ietf/iana-hardware.yang
\ No newline at end of file
+../../../published/ietf/iana-hardware@2018-03-13.yang
\ No newline at end of file
diff --git a/data-model/yang/working/o-ran-sc/template/ietf-alarms.yang b/data-model/yang/working/o-ran-sc/template/ietf-alarms.yang
index 24bb77a..6cc91d0 120000
--- a/data-model/yang/working/o-ran-sc/template/ietf-alarms.yang
+++ b/data-model/yang/working/o-ran-sc/template/ietf-alarms.yang
@@ -1 +1 @@
-../../../published/ietf/ietf-alarms.yang
\ No newline at end of file
+../../../published/ietf/ietf-alarms@2019-09-11.yang
\ No newline at end of file
diff --git a/data-model/yang/working/o-ran-sc/template/ietf-hardware.yang b/data-model/yang/working/o-ran-sc/template/ietf-hardware.yang
index ff01a3c..858050a 120000
--- a/data-model/yang/working/o-ran-sc/template/ietf-hardware.yang
+++ b/data-model/yang/working/o-ran-sc/template/ietf-hardware.yang
@@ -1 +1 @@
-../../../published/ietf/ietf-hardware.yang
\ No newline at end of file
+../../../published/ietf/ietf-hardware@2018-03-13.yang
\ No newline at end of file
diff --git a/data-model/yang/working/o-ran-sc/template/ietf-inet-types.yang b/data-model/yang/working/o-ran-sc/template/ietf-inet-types.yang
index 9f90ca6..c7ed68d 120000
--- a/data-model/yang/working/o-ran-sc/template/ietf-inet-types.yang
+++ b/data-model/yang/working/o-ran-sc/template/ietf-inet-types.yang
@@ -1 +1 @@
-../../../published/ietf/ietf-inet-types.yang
\ No newline at end of file
+../../../published/ietf/ietf-inet-types@2013-07-15.yang
\ No newline at end of file
diff --git a/data-model/yang/working/o-ran-sc/template/ietf-interfaces.yang b/data-model/yang/working/o-ran-sc/template/ietf-interfaces.yang
index a2954d0..de28fbe 120000
--- a/data-model/yang/working/o-ran-sc/template/ietf-interfaces.yang
+++ b/data-model/yang/working/o-ran-sc/template/ietf-interfaces.yang
@@ -1 +1 @@
-../../../published/ietf/ietf-interfaces.yang
\ No newline at end of file
+../../../published/ietf/ietf-interfaces@2018-02-20.yang
\ No newline at end of file
diff --git a/data-model/yang/working/o-ran-sc/template/ietf-yang-types.yang b/data-model/yang/working/o-ran-sc/template/ietf-yang-types.yang
index 2353b09..2eb3eac 120000
--- a/data-model/yang/working/o-ran-sc/template/ietf-yang-types.yang
+++ b/data-model/yang/working/o-ran-sc/template/ietf-yang-types.yang
@@ -1 +1 @@
-../../../published/ietf/ietf-yang-types.yang
\ No newline at end of file
+../../../published/ietf/ietf-yang-types@2013-07-15.yang
\ No newline at end of file