From: Martin Skorupski Date: Wed, 31 Aug 2022 11:50:18 +0000 (+0000) Subject: Merge changes I11d22718,I359a9bf2 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=62eb3c8d63df42eafe4eaedfbc85f0df05fcbfb0;hp=3e7090a7f7360d3eaf0865fe7d6858e347c9f6a4;p=scp%2Foam%2Fmodeling.git 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