+module org-openroadm-common-service-types {
+ namespace "http://org/openroadm/common/service/types";
+ prefix org-openroadm-common-service-types;
+
+ import ietf-yang-types {
+ prefix yang;
+ revision-date 2013-07-15;
+ }
+ import ietf-inet-types {
+ prefix inet;
+ revision-date 2013-07-15;
+ }
+ import org-openroadm-routing-constraints {
+ prefix org-openroadm-routing-constraints;
+ revision-date 2019-03-29;
+ }
+ import org-openroadm-topology {
+ prefix org-openroadm-topology;
+ revision-date 2019-05-31;
+ }
+ import org-openroadm-common-equipment-types {
+ prefix org-openroadm-common-equipment-types;
+ revision-date 2018-11-30;
+ }
+ import org-openroadm-common-state-types {
+ prefix org-openroadm-common-state-types;
+ revision-date 2018-11-30;
+ }
+ import org-openroadm-common-node-types {
+ prefix org-openroadm-common-node-types;
+ revision-date 2018-11-30;
+ }
+ import org-openroadm-resource-types {
+ prefix org-openroadm-resource-types;
+ revision-date 2018-11-30;
+ }
+ import org-openroadm-otn-common-types {
+ prefix org-openroadm-otn-common-types;
+ revision-date 2018-11-30;
+ }
+ import org-openroadm-common-types {
+ prefix org-openroadm-common-types;
+ revision-date 2019-05-31;
+ }
+ import org-openroadm-equipment-states-types {
+ prefix org-openroadm-equipment-states-types;
+ revision-date 2018-11-30;
+ }
+ import org-openroadm-service-format {
+ prefix org-openroadm-service-format;
+ revision-date 2019-05-31;
+ }
+
+ organization
+ "Open ROADM MSA";
+ contact
+ "OpenROADM.org";
+ description
+ "YANG definitions of common service types.
+
+ Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
+ All other rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation and/or
+ other materials provided with the distribution.
+ * Neither the Members of the Open ROADM MSA Agreement nor the names of its
+ contributors may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE";
+
+ revision 2019-05-31 {
+ description
+ "Version 5.1.0";
+ }
+ revision 2019-03-29 {
+ description
+ "Version 5.0.0";
+ }
+ revision 2018-11-30 {
+ description
+ "Version 4.1.0";
+ }
+ revision 2018-09-28 {
+ description
+ "Version 4.0.0";
+ }
+ revision 2018-05-30 {
+ description
+ "Version 3.1.0";
+ }
+ revision 2018-03-30 {
+ description
+ "Version 3.0.0";
+ }
+ revision 2017-12-15 {
+ description
+ "Version 2.2";
+ }
+ revision 2017-09-29 {
+ description
+ "Version 2.1";
+ }
+ revision 2017-07-28 {
+ description
+ "Version 2.0.1 - added revision-date to imports";
+ }
+ revision 2017-06-26 {
+ description
+ "Version 2.0";
+ }
+ revision 2016-10-14 {
+ description
+ "Version 1.2";
+ }
+
+ identity service-resiliency-type-identity {
+ description
+ "A unique resiliency type identification of the service.";
+ }
+
+ identity unprotected {
+ base service-resiliency-type-identity;
+ description
+ "the service is not protected in the OpenROADM layer";
+ }
+
+ identity unprotected-diversely-routed {
+ base service-resiliency-type-identity;
+ description
+ "the service is not protected in the OpenROADM layer, but may be protected in a higher layer
+ a coupled service that may be routed partially or fully disjointly is defined";
+ }
+
+ identity protected {
+ base service-resiliency-type-identity;
+ description
+ "the service is protected in the OpenROADM layer : the protection is handled
+ autonomously in this layer";
+ }
+
+ identity restorable {
+ base service-resiliency-type-identity;
+ description
+ "the service can be restored autonomously in the OpenROADM layer";
+ }
+
+ identity external-trigger-restorable {
+ base service-resiliency-type-identity;
+ description
+ "the service can be restored in the OpenROADM layer, but the restoration is triggered
+ at a higher layer through service models' rpc";
+ }
+
+ typedef rpc-actions {
+ type enumeration {
+ enum "service-create" {
+ value 1;
+ }
+ enum "service-feasibility-check" {
+ value 2;
+ }
+ enum "service-delete" {
+ value 3;
+ }
+ enum "equipment-notification" {
+ value 4;
+ }
+ enum "temp-service-create" {
+ value 5;
+ }
+ enum "temp-service-delete" {
+ value 6;
+ }
+ enum "service-roll" {
+ value 7;
+ }
+ enum "service-reconfigure" {
+ value 8;
+ }
+ enum "service-restoration" {
+ value 9;
+ }
+ enum "service-reversion" {
+ value 10;
+ }
+ enum "service-reroute" {
+ value 11;
+ }
+ enum "service-reroute-confirm" {
+ value 12;
+ }
+ enum "network-re-optimization" {
+ value 13;
+ }
+ enum "service-feasibility-check-bulk" {
+ value 14;
+ }
+ enum "ber-test" {
+ value 15;
+ }
+ }
+ description
+ "rpc-actions include all the rpc methods";
+ }
+
+ typedef ethernet-encoding-type {
+ type enumeration {
+ enum "10GBASE-W" {
+ value 1;
+ }
+ enum "10GBASE-R" {
+ value 2;
+ }
+ }
+ }
+
+ typedef mapping-mode-type {
+ type enumeration {
+ enum "GFP-F" {
+ value 1;
+ reference "GFP-F - ITU-T G.7041 SubClause 7.1, Payload Only";
+ }
+ enum "GFP-E" {
+ value 2;
+ reference "GFP-E - ITU-T G.7041 SubClause 7.9, Payload + Preamble + Ordered Sets";
+ }
+ enum "PCS-Transparent" {
+ value 3;
+ reference "PCS-Transparent - ITU-T G.709 Subclause 17.2 , CBR10G3 mapping to ODU2e";
+ }
+ }
+ }
+
+ typedef service-layer-type {
+ type enumeration {
+ enum "wdm" {
+ value 1;
+ }
+ enum "otn" {
+ value 2;
+ }
+ }
+ }
+
+ typedef service-notification-types {
+ type enumeration {
+ enum "service-create-result" {
+ value 1;
+ }
+ enum "service-reconfigure-result" {
+ value 2;
+ }
+ enum "service-delete-result" {
+ value 3;
+ }
+ enum "service-roll-result" {
+ value 4;
+ }
+ enum "service-revert-result" {
+ value 5;
+ }
+ enum "service-reroute-result" {
+ value 6;
+ }
+ enum "service-restoration-result" {
+ value 7;
+ }
+ }
+ }
+
+ typedef connection-type {
+ type enumeration {
+ enum "service" {
+ value 1;
+ }
+ enum "infrastructure" {
+ value 2;
+ }
+ enum "roadm-line" {
+ value 3;
+ }
+ }
+ }
+
+ typedef service-condition {
+ type enumeration {
+ enum "restored-temporarily" {
+ value 1;
+ }
+ enum "re-routed-temporarily" {
+ value 2;
+ }
+ enum "activated-for-service" {
+ value 3;
+ }
+ enum "activated-for-further-check" {
+ value 4;
+ }
+ enum "activated-for-troubleshooting-failure" {
+ value 5;
+ }
+ }
+ }
+
+ grouping service-and-supporting-services {
+ description
+ "Service identifiers and supporting services details";
+ uses service-identifiers-container;
+ uses supporting-services-identifiers-and-ends;
+ }
+
+ grouping supporting-services-identifiers-and-ends {
+ container supporting-services {
+ list supporting-service-details {
+ key "index";
+ leaf index {
+ type uint16;
+ description
+ "Service number of the supporting service";
+ }
+ uses service-identifiers-container;
+ uses service-ends-container;
+ }
+ }
+ }
+
+ grouping service-ends-container {
+ container service-a-end {
+ uses service-endpoint-summary;
+ }
+ container service-z-end {
+ uses service-endpoint-summary;
+ }
+ }
+
+ grouping service-endpoint-summary {
+ description
+ "Brief form of service-endpoint";
+ container service-endpoint-details {
+ leaf clli {
+ type string;
+ mandatory true;
+ description
+ "CLLI. Note this CLLI must match the site associated with the device-id of this endpoint";
+ }
+ uses org-openroadm-resource-types:device-id;
+ container tx-direction {
+ uses service-port;
+ }
+ container rx-direction {
+ uses service-port;
+ }
+ }
+ }
+
+ grouping service-identifiers-container {
+ container service-identifiers {
+ leaf service-name {
+ type string;
+ }
+ leaf common-id {
+ type string;
+ }
+ leaf version-number {
+ type uint64;
+ }
+ }
+ }
+
+ grouping configuration-response-common {
+ container configuration-response-common {
+ leaf request-id {
+ type string;
+ mandatory true;
+ }
+ leaf response-code {
+ type string;
+ mandatory true;
+ }
+ leaf response-message {
+ type string;
+ }
+ leaf ack-final-indicator {
+ type string;
+ mandatory true;
+ }
+ }
+ }
+
+ grouping response-parameters {
+ container response-parameters {
+ description
+ "Violated soft constraints";
+ uses org-openroadm-routing-constraints:routing-constraints;
+ }
+ }
+
+ grouping subrate-eth-sla {
+ container subrate-eth-sla {
+ presence "Explicit assignment of subrate ethernet allocation";
+ description
+ "SLA (Service Level Agreement) for subrate Ethernet";
+ uses org-openroadm-common-types:eth-rate-and-burst-size;
+ }
+ }
+
+ grouping service-endpoint {
+ leaf service-format {
+ type org-openroadm-service-format:service-format;
+ mandatory true;
+ description
+ "Format of the requested service: Ethernet, OTU, etc.";
+ }
+ leaf service-rate {
+ when "../service-format != 'OMS' and ../service-format != 'ODU'" {
+ description
+ "service rate not applicable when service
+ format is roadmline or ODU; valid for OTU since service-rate has
+ already been supported for wdm layer OTU services (100 for OTU4)";
+ }
+ type uint32;
+ description
+ "Rate of the requested service in GBps";
+ }
+ leaf other-service-format-and-rate {
+ type string;
+ description
+ "Used when service-format is set to other in the bookend xponder use case.
+ The use of other-service-format-and-rate is not standardized in the Open ROADM MSA
+ and intended to allow the controller to support non-Open ROADM service formats.
+ This value encodes both the service format and the rate supported.
+ This field should not be specified when service format != other.";
+ }
+ leaf otu-service-rate {
+ when "../service-format = 'OTU'" {
+ description
+ "only applicable for OTU services";
+ }
+ type identityref {
+ base org-openroadm-otn-common-types:otu-rate-identity;
+ }
+ description
+ "OTU Rate of the requested service";
+ }
+ leaf odu-service-rate {
+ when "../service-format = 'ODU'" {
+ description
+ "only applicable for ODU services";
+ }
+ type identityref {
+ base org-openroadm-otn-common-types:odu-rate-identity;
+ }
+ description
+ "ODU Rate of the requested service";
+ }
+ leaf ethernet-encoding {
+ when
+ "(../service-format='Ethernet')
+ and
+ (../service-rate=10)" {
+ description
+ "Applicable only to Ethernet 10G services";
+ }
+ type ethernet-encoding-type;
+ description
+ "Ethernet encoding type";
+ }
+ leaf mapping-mode {
+ when
+ "(../service-format='Ethernet')
+ and
+ (../service-rate=10)" {
+ description
+ "Mapping Mode, currently only defined for Ethernet 10G services";
+ }
+ type mapping-mode-type;
+ description
+ "Mapping mode.";
+ }
+ leaf clli {
+ type string;
+ mandatory true;
+ description
+ "CLLI. Note this CLLI must match the site associated with the device-id of this
+ endpoint";
+ }
+ uses org-openroadm-resource-types:device-id;
+ container tx-direction {
+ uses service-port;
+ uses service-lgx;
+ uses service-tail;
+ }
+ container rx-direction {
+ uses service-port;
+ uses service-lgx;
+ uses service-tail;
+ }
+ leaf optic-type {
+ type org-openroadm-common-equipment-types:optic-types;
+ }
+ container router {
+ description
+ "Needed for communication with DWDM pluggable";
+ leaf node-id {
+ type org-openroadm-common-node-types:node-id-type;
+ description
+ "Node id. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf ip-address {
+ type inet:ip-address;
+ description
+ "Router IP Address. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf url {
+ type string;
+ description
+ "URL needed for communication with DWDM pluggable. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ }
+ leaf user-label {
+ type string;
+ mandatory false;
+ description
+ "Label for service endpoint, defined by the user";
+ }
+ container subrate-eth-sla {
+ when "(../service-format='Ethernet')" {
+ description
+ "For any Ethernet services";
+ }
+ uses org-openroadm-common-service-types:subrate-eth-sla;
+ }
+ }
+
+ grouping sdnc-request-header {
+ container sdnc-request-header {
+ leaf request-id {
+ type string;
+ }
+ leaf rpc-action {
+ type rpc-actions;
+ }
+ leaf notification-url {
+ type string;
+ }
+ leaf request-system-id {
+ type string;
+ }
+ }
+ }
+
+ grouping service-port {
+ container port {
+ description
+ "From the device model perspective the port-device-name plus the port-circuit-pack-name plus the port-name uniquely identifies the port.
+ From the network model perspective the openroadm-topology-ref plus port-device-name plus port-name uniquely identify the termination point in the network model.";
+ leaf port-device-name {
+ type string;
+ }
+ leaf port-circuit-pack-name {
+ type string;
+ }
+ leaf port-type {
+ type string;
+ }
+ leaf port-name {
+ type string;
+ }
+ leaf port-rack {
+ type string;
+ }
+ leaf port-shelf {
+ type string;
+ }
+ leaf port-slot {
+ type string;
+ }
+ leaf port-sub-slot {
+ type string;
+ }
+ }
+ }
+
+ grouping service-lgx {
+ container lgx {
+ leaf lgx-device-name {
+ type string;
+ }
+ leaf lgx-port-name {
+ type string;
+ }
+ leaf lgx-port-rack {
+ type string;
+ }
+ leaf lgx-port-shelf {
+ type string;
+ }
+ }
+ }
+
+ grouping service-tail {
+ container tail {
+ container tail-roadm {
+ description
+ "ROADM on which the transponder is connected to (TID, IP Address,
+ or FQDN)";
+ uses org-openroadm-resource-types:device-id;
+ }
+ container xponder-port {
+ description
+ "Muxponder port used in tail, that will get used as a service endpoint.";
+ leaf circuit-pack-name {
+ type string;
+ }
+ leaf port-name {
+ type string;
+ }
+ }
+ leaf tail-roadm-port-aid {
+ type string;
+ description
+ "This will provide the transponder port needed to inter-city ROADM
+ connection";
+ }
+ leaf tail-roadm-port-rack-location {
+ type string;
+ description
+ "Transponder's location";
+ }
+ }
+ }
+
+ grouping service-information {
+ leaf due-date {
+ type yang:date-and-time;
+ description
+ "Date and time service to be turn up. If time is not specified for a given date, default to midnight. Service turned up immediately if no due date is specified";
+ }
+ leaf end-date {
+ type yang:date-and-time;
+ mandatory false;
+ description
+ "Date and time service to be removed";
+ }
+ uses eventHorizon;
+ leaf nc-code {
+ type string;
+ description
+ "NC code applied to wavelength service only. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf nci-code {
+ type string;
+ description
+ "NCI code applied to wavelength service only. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf secondary-nci-code {
+ type string;
+ description
+ "NC code applied to wavelength service only. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf customer {
+ type string;
+ description
+ "To be included in ticket information. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf customer-contact {
+ type string;
+ description
+ "Customer contact information to be included in ticket information. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf operator-contact {
+ type string;
+ description
+ "Operator contact information to be included in ticket information. This is reported against the service, but may not get reflected in the service in the network.";
+ }
+ leaf service-layer {
+ type service-layer-type;
+ default "wdm";
+ description
+ "Layer associated with service (e.g. wdm or otn)";
+ }
+ leaf clli-network-ref {
+ type string;
+ description
+ "Assumption: a service would not span multiple clli-network layers.
+ Reference to the network-id of the clli-network layer.";
+ }
+ leaf openroadm-network-ref {
+ type string;
+ description
+ "Assumption: a service would not span multiple openroadm-network layers.
+ Reference to the network-id of the openroadm-network layer.";
+ }
+ leaf openroadm-topology-ref {
+ type string;
+ description
+ "Assumption: a service would not span multiple topology layers.
+ Reference to the network-id of either the openroadm-topology
+ or the otn-topology layer depending upon service-layer (wdm or otn).";
+ }
+ leaf bandwidth-calendaring {
+ type boolean;
+ description
+ "True if service is active only during a specific time period";
+ }
+ container bw-calendaring-parameters {
+ when "../bandwidth-calendaring = 'true'" {
+ description
+ "Includes all attributes associated with bandwidth calendaring option.
+ Used to set service profile : each service corresponds to one specific
+ time-period. Services defined on complementary time periods can be linked
+ together through the coupled-service attribute ";
+ }
+ list bw-calendaring-coupled-services {
+ key "service-index";
+ leaf service-index {
+ type uint16;
+ description
+ "service-number of the service that may be associated to the considered service";
+ }
+ leaf service-name {
+ type string;
+ description
+ "service-name of the service that may be associated to the considered service in service-list";
+ }
+ leaf common-id {
+ type string;
+ description
+ "common-id of the service that may be associated to the considered service in temp-service-list";
+ }
+ leaf version-number {
+ type uint64;
+ description
+ "common-id of the service that may be associated to the considered service in versioned-service-list";
+ }
+ }
+ list recurrence-pattern {
+ key "recurrence-id";
+ leaf recurrence-id {
+ type uint32;
+ description
+ "id of the pattern defining the time during which the service is active ";
+ }
+ leaf-list day-of-the-week {
+ type enumeration {
+ enum "Monday" {
+ value 1;
+ }
+ enum "Tuesday" {
+ value 2;
+ }
+ enum "Wednesday" {
+ value 3;
+ }
+ enum "Thursday" {
+ value 4;
+ }
+ enum "Friday" {
+ value 5;
+ }
+ enum "Saturday" {
+ value 6;
+ }
+ enum "Sunday" {
+ value 7;
+ }
+ }
+ description
+ "Each day for which the service is active from stat-time to end-time";
+ }
+ leaf start-time {
+ type string {
+ pattern "\\d{2}:\\d{2}:\\d{2}";
+ }
+ description
+ "start time expressed as hour:min:seconds";
+ }
+ leaf end-time {
+ type string {
+ pattern "\\d{2}:\\d{2}:\\d{2}";
+ }
+ description
+ "end time expressed as hour:min:seconds";
+ }
+ }
+ }
+ }
+
+ grouping routing-metric {
+ container routing-metric {
+ description
+ "Describes the metrics used to route a service.
+ All parameters of integer type, to set the priority of the routing criterion
+ '0' means the criterion is not used,
+ '1'coresponds to the highest priority,
+ '255'coresponds to the lowest priority.
+ Priority might be handled in several way : 1) To select one from several paths with the same metrics,
+ using lower priority metrics until metrics calculated allow the selection; 2) Using priority as
+ a weight for composite metric calculation";
+ leaf wdm-hop-count {
+ type uint8 {
+ range "0..255";
+ }
+ default "1";
+ description
+ "Metric corresponding to the number of hop in the wdm layer";
+ }
+ leaf otn-hop-count {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Metric corresponding to the number of hop in the otn layer";
+ }
+ leaf wdm-load {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Metric corresponding to the load of the wdm layer
+ Can be used to avoid using heavy loaded links ";
+ }
+ leaf otn-load {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Metric corresponding to the load of the otn layer.
+ Can be used to avoid using heavy loaded links/switchs ";
+ }
+ leaf latency {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Metric corresponding to the latency. Total path latency can be calculated from
+ SRLG length of the OMS and the latency introduced by the equipment";
+ }
+ leaf distance {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Metric associated with the distance. Total path distance can be
+ calculated from SRLG length of the OMS";
+ }
+ leaf wdm-TE-metric {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Used when routing shall be performed according to specific pre-defined
+ TE-Metric. Total path metric can be calculated from OMS TE-metric attribute
+ defined in org-openroadm-link module";
+ }
+ leaf adaptation-number {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Metric associated with the adaptation between layers. Total path metric can
+ can be calculated from the total number of transition between layers";
+ }
+ leaf otn-TE-metric {
+ type uint8 {
+ range "0..255";
+ }
+ default "0";
+ description
+ "Used when routing shall be performed according to specific pre-defined
+ metric associated with OTN (OTU/ODU level)";
+ }
+ }
+ }
+
+ grouping service-resiliency {
+ container service-resiliency {
+ leaf resiliency {
+ type identityref {
+ base service-resiliency-type-identity;
+ }
+ description
+ "describes the type of resiliency and the associated layer ";
+ }
+ leaf revertive {
+ when "../resiliency != 'unprotected' and ../resiliency != 'unprotected-diversely-routed'" {
+ description
+ "revertive not applicable when service is neither protected nor restorable";
+ }
+ type boolean;
+ description
+ "defines if the service shall revert to the initial working path
+ after protection or restoration has been triggered and fault condition
+ has disappeared";
+ }
+ leaf wait-to-restore {
+ when "../revertive = 'true'" {
+ description
+ "wait-to-restore applies for service defined as revertive ";
+ }
+ type uint64;
+ units "ms";
+ description
+ "time delay to revert to initial path after conditions for reversion are satisfied";
+ }
+ leaf holdoff-time {
+ when "../resiliency != 'unprotected' and ../resiliency != 'unprotected-diversely-routed'" {
+ description
+ "holdoff-time applies when services are either protected or restorable";
+ }
+ type uint64;
+ units "ms";
+ description
+ "time delay to initiate a protection or restoration event";
+ }
+ leaf pre-calculated-backup-path-number {
+ when "../resiliency = 'restorable' or ../resiliency = 'external-trigger-restorable'" {
+ description
+ "when service is restorable, defines the
+ number of paths that shall be or have been pre-calculated";
+ }
+ type uint8;
+ description
+ "Associated to service-create / reconfigure / feasibility-check rpcs
+ --> defines the target number of backup-paths to be calculated by PCE. This is an
+ optional parameter : operator can provide it to conform with specific engineering rules.
+ If not provided, PCE will evaluate the number of backup path to be provided automously.
+ Associated with service --> gives the effective number of backup-paths
+ returned/calculated by PCE that can be find in topology container";
+ }
+ container coupled-service {
+ when "../resiliency = 'unprotected-diversely-routed'" {
+ description
+ "for unprotected-diversely-routed services only one path is defined.
+ Allows providing a link between services that are coupled
+ through a routing disjonction criterion";
+ }
+ list coupled-services {
+ key "service-index";
+ leaf service-index {
+ type uint16;
+ description
+ "service-number of the service that may be routed disjointly to the considered service";
+ }
+ leaf service-name {
+ type string;
+ description
+ "service-name of the service that may be routed disjointly to the considered service in service-list";
+ }
+ leaf common-id {
+ type string;
+ description
+ "common-id of the service that may be routed disjointly to the considered service in temp-service-list";
+ }
+ leaf version-number {
+ type uint64;
+ description
+ "common-id of the service that may be routed disjointly to the considered service in versioned-service-list";
+ }
+ }
+ }
+ }
+ }
+
+ grouping service {
+ leaf service-name {
+ type string;
+ description
+ "Identifier for the service to be created in
+ the ROADM network, e.g., CLFI, CLCI, etc.";
+ }
+ leaf common-id {
+ type string;
+ description
+ "To be used by the ROADM controller to identify the routing
+ constraints received from planning application (PED).";
+ }
+ uses sdnc-request-header;
+ uses service-resiliency;
+ uses routing-metric;
+ leaf connection-type {
+ type connection-type;
+ mandatory true;
+ description
+ "Connection type";
+ }
+ leaf lifecycle-state {
+ type org-openroadm-common-state-types:lifecycle-state;
+ description
+ "Lifecycle State of service. Whether it is planned, deployed, in maintenance, etc.";
+ }
+ leaf administrative-state {
+ type org-openroadm-equipment-states-types:admin-states;
+ description
+ "Administrative State: Intended state of service";
+ }
+ leaf operational-state {
+ type org-openroadm-common-state-types:state;
+ config false;
+ description
+ "Operational State: Actual state of service";
+ }
+ leaf condition {
+ type service-condition;
+ description
+ "Service Condition: Additional information about the state of the service. Only sent when applicable.";
+ }
+ container service-a-end {
+ uses service-endpoint;
+ }
+ container service-z-end {
+ uses service-endpoint;
+ }
+ uses org-openroadm-routing-constraints:routing-constraints;
+ uses service-information;
+ leaf latency {
+ type uint32;
+ description
+ "Latency on service";
+ }
+ leaf-list fiber-span-srlgs {
+ type string;
+ description
+ "Shared risk link group identifiers";
+ }
+ list equipment-srgs {
+ key "srg-number";
+ uses org-openroadm-resource-types:srg-number;
+ }
+ leaf-list supporting-service-name {
+ type string;
+ description
+ "The service name that this runs over top. If connection-type is service, then this is the related
+ connection-type = infrastructure service, for example.";
+ }
+ leaf current-active-path-id {
+ type uint8;
+ description
+ "defines the current active path : '0' if active path is the working path
+ id of the active backup path if protection or restoration has been triggered";
+ }
+ container topology {
+ description
+ "topology corresponds to working-path which is the default path. It defines the initial path
+ to which services defined as revertive may revert to when the failure condition disappear";
+ uses org-openroadm-topology:topology;
+ }
+ container backup-topology {
+ list backup-path {
+ key "backup-path-id";
+ leaf backup-path-id {
+ type uint8 {
+ range "1..255";
+ }
+ description
+ "Several backup paths may be used when backup-paths are pre-calculated.
+ Backup-path-id avoids 0 which is associated with working path in current-active-path";
+ }
+ leaf failure-case-id {
+ type string;
+ description
+ "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
+ }
+ uses org-openroadm-topology:topology;
+ }
+ }
+ container network-topology {
+ uses org-openroadm-topology:network-topology;
+ }
+ container network-backup-topology {
+ list backup-path {
+ key "backup-path-id";
+ leaf backup-path-id {
+ type uint8 {
+ range "1..255";
+ }
+ description
+ "Several backup paths may be used when backup-paths are pre-calculated.
+ Backup-path-id avoids 0 which is associated with working path in current-active-path";
+ }
+ leaf failure-case-id {
+ type string;
+ description
+ "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
+ }
+ uses org-openroadm-topology:network-topology;
+ }
+ }
+ leaf is-bandwidth-locked {
+ type boolean;
+ default "false";
+ description
+ "Bandwidth lock (true, false) indicates whether the service is administratively
+ prohibited from taking on more capacity - ie whether it can be used as a supporting
+ service in any new service creations. Unlike administrative status, this does not
+ impact any previous planned or deployed services.";
+ }
+ }
+
+ grouping service-notification-result {
+ leaf service-name {
+ type string;
+ description
+ "Identifier for the service e.g., CLFI, CLCI, etc.";
+ }
+ leaf version-number {
+ type uint64;
+ description
+ "Identifier for the versioned service";
+ }
+ leaf common-id {
+ type string;
+ description
+ "Identifier for the temp service";
+ }
+ leaf actual-date {
+ type yang:date-and-time;
+ description
+ "Actual date and time (if successful)";
+ }
+ }
+
+ grouping equipment-info {
+ leaf equipment-identifier {
+ type string;
+ }
+ leaf equipment-type {
+ type string;
+ description
+ "The set of valid value is derived from the equipment-type grouping used in the device model.";
+ }
+ leaf equipment-quantity {
+ type uint32;
+ }
+ leaf lifecycle-state {
+ type org-openroadm-common-state-types:lifecycle-state;
+ }
+ }
+
+ grouping eventHorizon {
+ leaf eventHorizonStart {
+ type yang:date-and-time;
+ description
+ "Start time to ensure that the service is routable and viable. Required resources shall
+ be considered reserved from this time. If not provided, defaults to due-date.";
+ }
+ leaf eventHorizonEnd {
+ type yang:date-and-time;
+ description
+ "End time to ensure that the service is routable and viable. Required resources shall
+ be considered reserved until this time. If not provided, defaults to end-date.";
+ }
+ }
+}