1 module org-openroadm-common-service-types {
2 namespace "http://org/openroadm/common/service/types";
3 prefix org-openroadm-common-service-types;
5 import ietf-yang-types {
7 revision-date 2013-07-15;
9 import ietf-inet-types {
11 revision-date 2013-07-15;
13 import org-openroadm-routing-constraints {
14 prefix org-openroadm-routing-constraints;
15 revision-date 2019-03-29;
17 import org-openroadm-topology {
18 prefix org-openroadm-topology;
19 revision-date 2019-05-31;
21 import org-openroadm-common-equipment-types {
22 prefix org-openroadm-common-equipment-types;
23 revision-date 2018-11-30;
25 import org-openroadm-common-state-types {
26 prefix org-openroadm-common-state-types;
27 revision-date 2018-11-30;
29 import org-openroadm-common-node-types {
30 prefix org-openroadm-common-node-types;
31 revision-date 2018-11-30;
33 import org-openroadm-resource-types {
34 prefix org-openroadm-resource-types;
35 revision-date 2018-11-30;
37 import org-openroadm-otn-common-types {
38 prefix org-openroadm-otn-common-types;
39 revision-date 2018-11-30;
41 import org-openroadm-common-types {
42 prefix org-openroadm-common-types;
43 revision-date 2019-05-31;
45 import org-openroadm-equipment-states-types {
46 prefix org-openroadm-equipment-states-types;
47 revision-date 2018-11-30;
49 import org-openroadm-service-format {
50 prefix org-openroadm-service-format;
51 revision-date 2019-05-31;
59 "YANG definitions of common service types.
61 Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
62 All other rights reserved.
64 Redistribution and use in source and binary forms, with or without modification,
65 are permitted provided that the following conditions are met:
67 * Redistributions of source code must retain the above copyright notice, this
68 list of conditions and the following disclaimer.
69 * Redistributions in binary form must reproduce the above copyright notice,
70 this list of conditions and the following disclaimer in the documentation and/or
71 other materials provided with the distribution.
72 * Neither the Members of the Open ROADM MSA Agreement nor the names of its
73 contributors may be used to endorse or promote products derived from this software
74 without specific prior written permission.
76 THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT ''AS IS''
77 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
78 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
79 IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA AGREEMENT BE LIABLE FOR ANY DIRECT,
80 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
81 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
82 OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
83 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
84 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
85 POSSIBILITY OF SUCH DAMAGE";
103 revision 2018-05-30 {
107 revision 2018-03-30 {
111 revision 2017-12-15 {
115 revision 2017-09-29 {
119 revision 2017-07-28 {
121 "Version 2.0.1 - added revision-date to imports";
123 revision 2017-06-26 {
127 revision 2016-10-14 {
132 identity service-resiliency-type-identity {
134 "A unique resiliency type identification of the service.";
137 identity unprotected {
138 base service-resiliency-type-identity;
140 "the service is not protected in the OpenROADM layer";
143 identity unprotected-diversely-routed {
144 base service-resiliency-type-identity;
146 "the service is not protected in the OpenROADM layer, but may be protected in a higher layer
147 a coupled service that may be routed partially or fully disjointly is defined";
151 base service-resiliency-type-identity;
153 "the service is protected in the OpenROADM layer : the protection is handled
154 autonomously in this layer";
157 identity restorable {
158 base service-resiliency-type-identity;
160 "the service can be restored autonomously in the OpenROADM layer";
163 identity external-trigger-restorable {
164 base service-resiliency-type-identity;
166 "the service can be restored in the OpenROADM layer, but the restoration is triggered
167 at a higher layer through service models' rpc";
170 typedef rpc-actions {
172 enum "service-create" {
175 enum "service-feasibility-check" {
178 enum "service-delete" {
181 enum "equipment-notification" {
184 enum "temp-service-create" {
187 enum "temp-service-delete" {
190 enum "service-roll" {
193 enum "service-reconfigure" {
196 enum "service-restoration" {
199 enum "service-reversion" {
202 enum "service-reroute" {
205 enum "service-reroute-confirm" {
208 enum "network-re-optimization" {
211 enum "service-feasibility-check-bulk" {
219 "rpc-actions include all the rpc methods";
222 typedef ethernet-encoding-type {
233 typedef mapping-mode-type {
237 reference "GFP-F - ITU-T G.7041 SubClause 7.1, Payload Only";
241 reference "GFP-E - ITU-T G.7041 SubClause 7.9, Payload + Preamble + Ordered Sets";
243 enum "PCS-Transparent" {
245 reference "PCS-Transparent - ITU-T G.709 Subclause 17.2 , CBR10G3 mapping to ODU2e";
250 typedef service-layer-type {
261 typedef service-notification-types {
263 enum "service-create-result" {
266 enum "service-reconfigure-result" {
269 enum "service-delete-result" {
272 enum "service-roll-result" {
275 enum "service-revert-result" {
278 enum "service-reroute-result" {
281 enum "service-restoration-result" {
287 typedef connection-type {
292 enum "infrastructure" {
301 typedef service-condition {
303 enum "restored-temporarily" {
306 enum "re-routed-temporarily" {
309 enum "activated-for-service" {
312 enum "activated-for-further-check" {
315 enum "activated-for-troubleshooting-failure" {
321 grouping service-and-supporting-services {
323 "Service identifiers and supporting services details";
324 uses service-identifiers-container;
325 uses supporting-services-identifiers-and-ends;
328 grouping supporting-services-identifiers-and-ends {
329 container supporting-services {
330 list supporting-service-details {
335 "Service number of the supporting service";
337 uses service-identifiers-container;
338 uses service-ends-container;
343 grouping service-ends-container {
344 container service-a-end {
345 uses service-endpoint-summary;
347 container service-z-end {
348 uses service-endpoint-summary;
352 grouping service-endpoint-summary {
354 "Brief form of service-endpoint";
355 container service-endpoint-details {
360 "CLLI. Note this CLLI must match the site associated with the device-id of this endpoint";
362 uses org-openroadm-resource-types:device-id;
363 container tx-direction {
366 container rx-direction {
372 grouping service-identifiers-container {
373 container service-identifiers {
380 leaf version-number {
386 grouping configuration-response-common {
387 container configuration-response-common {
396 leaf response-message {
399 leaf ack-final-indicator {
406 grouping response-parameters {
407 container response-parameters {
409 "Violated soft constraints";
410 uses org-openroadm-routing-constraints:routing-constraints;
414 grouping subrate-eth-sla {
415 container subrate-eth-sla {
416 presence "Explicit assignment of subrate ethernet allocation";
418 "SLA (Service Level Agreement) for subrate Ethernet";
419 uses org-openroadm-common-types:eth-rate-and-burst-size;
423 grouping service-endpoint {
424 leaf service-format {
425 type org-openroadm-service-format:service-format;
428 "Format of the requested service: Ethernet, OTU, etc.";
431 when "../service-format != 'OMS' and ../service-format != 'ODU'" {
433 "service rate not applicable when service
434 format is roadmline or ODU; valid for OTU since service-rate has
435 already been supported for wdm layer OTU services (100 for OTU4)";
439 "Rate of the requested service in GBps";
441 leaf other-service-format-and-rate {
444 "Used when service-format is set to other in the bookend xponder use case.
445 The use of other-service-format-and-rate is not standardized in the Open ROADM MSA
446 and intended to allow the controller to support non-Open ROADM service formats.
447 This value encodes both the service format and the rate supported.
448 This field should not be specified when service format != other.";
450 leaf otu-service-rate {
451 when "../service-format = 'OTU'" {
453 "only applicable for OTU services";
456 base org-openroadm-otn-common-types:otu-rate-identity;
459 "OTU Rate of the requested service";
461 leaf odu-service-rate {
462 when "../service-format = 'ODU'" {
464 "only applicable for ODU services";
467 base org-openroadm-otn-common-types:odu-rate-identity;
470 "ODU Rate of the requested service";
472 leaf ethernet-encoding {
474 "(../service-format='Ethernet')
476 (../service-rate=10)" {
478 "Applicable only to Ethernet 10G services";
480 type ethernet-encoding-type;
482 "Ethernet encoding type";
486 "(../service-format='Ethernet')
488 (../service-rate=10)" {
490 "Mapping Mode, currently only defined for Ethernet 10G services";
492 type mapping-mode-type;
500 "CLLI. Note this CLLI must match the site associated with the device-id of this
503 uses org-openroadm-resource-types:device-id;
504 container tx-direction {
509 container rx-direction {
515 type org-openroadm-common-equipment-types:optic-types;
519 "Needed for communication with DWDM pluggable";
521 type org-openroadm-common-node-types:node-id-type;
523 "Node id. This is reported against the service, but may not get reflected in the service in the network.";
526 type inet:ip-address;
528 "Router IP Address. This is reported against the service, but may not get reflected in the service in the network.";
533 "URL needed for communication with DWDM pluggable. This is reported against the service, but may not get reflected in the service in the network.";
540 "Label for service endpoint, defined by the user";
542 container subrate-eth-sla {
543 when "(../service-format='Ethernet')" {
545 "For any Ethernet services";
547 uses org-openroadm-common-service-types:subrate-eth-sla;
551 grouping sdnc-request-header {
552 container sdnc-request-header {
559 leaf notification-url {
562 leaf request-system-id {
568 grouping service-port {
571 "From the device model perspective the port-device-name plus the port-circuit-pack-name plus the port-name uniquely identifies the port.
572 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.";
573 leaf port-device-name {
576 leaf port-circuit-pack-name {
600 grouping service-lgx {
602 leaf lgx-device-name {
611 leaf lgx-port-shelf {
617 grouping service-tail {
619 container tail-roadm {
621 "ROADM on which the transponder is connected to (TID, IP Address,
623 uses org-openroadm-resource-types:device-id;
625 container xponder-port {
627 "Muxponder port used in tail, that will get used as a service endpoint.";
628 leaf circuit-pack-name {
635 leaf tail-roadm-port-aid {
638 "This will provide the transponder port needed to inter-city ROADM
641 leaf tail-roadm-port-rack-location {
644 "Transponder's location";
649 grouping service-information {
651 type yang:date-and-time;
653 "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";
656 type yang:date-and-time;
659 "Date and time service to be removed";
665 "NC code applied to wavelength service only. This is reported against the service, but may not get reflected in the service in the network.";
670 "NCI code applied to wavelength service only. This is reported against the service, but may not get reflected in the service in the network.";
672 leaf secondary-nci-code {
675 "NC code applied to wavelength service only. This is reported against the service, but may not get reflected in the service in the network.";
680 "To be included in ticket information. This is reported against the service, but may not get reflected in the service in the network.";
682 leaf customer-contact {
685 "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.";
687 leaf operator-contact {
690 "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.";
693 type service-layer-type;
696 "Layer associated with service (e.g. wdm or otn)";
698 leaf clli-network-ref {
701 "Assumption: a service would not span multiple clli-network layers.
702 Reference to the network-id of the clli-network layer.";
704 leaf openroadm-network-ref {
707 "Assumption: a service would not span multiple openroadm-network layers.
708 Reference to the network-id of the openroadm-network layer.";
710 leaf openroadm-topology-ref {
713 "Assumption: a service would not span multiple topology layers.
714 Reference to the network-id of either the openroadm-topology
715 or the otn-topology layer depending upon service-layer (wdm or otn).";
717 leaf bandwidth-calendaring {
720 "True if service is active only during a specific time period";
722 container bw-calendaring-parameters {
723 when "../bandwidth-calendaring = 'true'" {
725 "Includes all attributes associated with bandwidth calendaring option.
726 Used to set service profile : each service corresponds to one specific
727 time-period. Services defined on complementary time periods can be linked
728 together through the coupled-service attribute ";
730 list bw-calendaring-coupled-services {
735 "service-number of the service that may be associated to the considered service";
740 "service-name of the service that may be associated to the considered service in service-list";
745 "common-id of the service that may be associated to the considered service in temp-service-list";
747 leaf version-number {
750 "common-id of the service that may be associated to the considered service in versioned-service-list";
753 list recurrence-pattern {
758 "id of the pattern defining the time during which the service is active ";
760 leaf-list day-of-the-week {
785 "Each day for which the service is active from stat-time to end-time";
789 pattern "\\d{2}:\\d{2}:\\d{2}";
792 "start time expressed as hour:min:seconds";
796 pattern "\\d{2}:\\d{2}:\\d{2}";
799 "end time expressed as hour:min:seconds";
805 grouping routing-metric {
806 container routing-metric {
808 "Describes the metrics used to route a service.
809 All parameters of integer type, to set the priority of the routing criterion
810 '0' means the criterion is not used,
811 '1'coresponds to the highest priority,
812 '255'coresponds to the lowest priority.
813 Priority might be handled in several way : 1) To select one from several paths with the same metrics,
814 using lower priority metrics until metrics calculated allow the selection; 2) Using priority as
815 a weight for composite metric calculation";
822 "Metric corresponding to the number of hop in the wdm layer";
830 "Metric corresponding to the number of hop in the otn layer";
838 "Metric corresponding to the load of the wdm layer
839 Can be used to avoid using heavy loaded links ";
847 "Metric corresponding to the load of the otn layer.
848 Can be used to avoid using heavy loaded links/switchs ";
856 "Metric corresponding to the latency. Total path latency can be calculated from
857 SRLG length of the OMS and the latency introduced by the equipment";
865 "Metric associated with the distance. Total path distance can be
866 calculated from SRLG length of the OMS";
874 "Used when routing shall be performed according to specific pre-defined
875 TE-Metric. Total path metric can be calculated from OMS TE-metric attribute
876 defined in org-openroadm-link module";
878 leaf adaptation-number {
884 "Metric associated with the adaptation between layers. Total path metric can
885 can be calculated from the total number of transition between layers";
893 "Used when routing shall be performed according to specific pre-defined
894 metric associated with OTN (OTU/ODU level)";
899 grouping service-resiliency {
900 container service-resiliency {
903 base service-resiliency-type-identity;
906 "describes the type of resiliency and the associated layer ";
909 when "../resiliency != 'unprotected' and ../resiliency != 'unprotected-diversely-routed'" {
911 "revertive not applicable when service is neither protected nor restorable";
915 "defines if the service shall revert to the initial working path
916 after protection or restoration has been triggered and fault condition
919 leaf wait-to-restore {
920 when "../revertive = 'true'" {
922 "wait-to-restore applies for service defined as revertive ";
927 "time delay to revert to initial path after conditions for reversion are satisfied";
930 when "../resiliency != 'unprotected' and ../resiliency != 'unprotected-diversely-routed'" {
932 "holdoff-time applies when services are either protected or restorable";
937 "time delay to initiate a protection or restoration event";
939 leaf pre-calculated-backup-path-number {
940 when "../resiliency = 'restorable' or ../resiliency = 'external-trigger-restorable'" {
942 "when service is restorable, defines the
943 number of paths that shall be or have been pre-calculated";
947 "Associated to service-create / reconfigure / feasibility-check rpcs
948 --> defines the target number of backup-paths to be calculated by PCE. This is an
949 optional parameter : operator can provide it to conform with specific engineering rules.
950 If not provided, PCE will evaluate the number of backup path to be provided automously.
951 Associated with service --> gives the effective number of backup-paths
952 returned/calculated by PCE that can be find in topology container";
954 container coupled-service {
955 when "../resiliency = 'unprotected-diversely-routed'" {
957 "for unprotected-diversely-routed services only one path is defined.
958 Allows providing a link between services that are coupled
959 through a routing disjonction criterion";
961 list coupled-services {
966 "service-number of the service that may be routed disjointly to the considered service";
971 "service-name of the service that may be routed disjointly to the considered service in service-list";
976 "common-id of the service that may be routed disjointly to the considered service in temp-service-list";
978 leaf version-number {
981 "common-id of the service that may be routed disjointly to the considered service in versioned-service-list";
992 "Identifier for the service to be created in
993 the ROADM network, e.g., CLFI, CLCI, etc.";
998 "To be used by the ROADM controller to identify the routing
999 constraints received from planning application (PED).";
1001 uses sdnc-request-header;
1002 uses service-resiliency;
1003 uses routing-metric;
1004 leaf connection-type {
1005 type connection-type;
1010 leaf lifecycle-state {
1011 type org-openroadm-common-state-types:lifecycle-state;
1013 "Lifecycle State of service. Whether it is planned, deployed, in maintenance, etc.";
1015 leaf administrative-state {
1016 type org-openroadm-equipment-states-types:admin-states;
1018 "Administrative State: Intended state of service";
1020 leaf operational-state {
1021 type org-openroadm-common-state-types:state;
1024 "Operational State: Actual state of service";
1027 type service-condition;
1029 "Service Condition: Additional information about the state of the service. Only sent when applicable.";
1031 container service-a-end {
1032 uses service-endpoint;
1034 container service-z-end {
1035 uses service-endpoint;
1037 uses org-openroadm-routing-constraints:routing-constraints;
1038 uses service-information;
1042 "Latency on service";
1044 leaf-list fiber-span-srlgs {
1047 "Shared risk link group identifiers";
1049 list equipment-srgs {
1051 uses org-openroadm-resource-types:srg-number;
1053 leaf-list supporting-service-name {
1056 "The service name that this runs over top. If connection-type is service, then this is the related
1057 connection-type = infrastructure service, for example.";
1059 leaf current-active-path-id {
1062 "defines the current active path : '0' if active path is the working path
1063 id of the active backup path if protection or restoration has been triggered";
1065 container topology {
1067 "topology corresponds to working-path which is the default path. It defines the initial path
1068 to which services defined as revertive may revert to when the failure condition disappear";
1069 uses org-openroadm-topology:topology;
1071 container backup-topology {
1073 key "backup-path-id";
1074 leaf backup-path-id {
1079 "Several backup paths may be used when backup-paths are pre-calculated.
1080 Backup-path-id avoids 0 which is associated with working path in current-active-path";
1082 leaf failure-case-id {
1085 "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
1087 uses org-openroadm-topology:topology;
1090 container network-topology {
1091 uses org-openroadm-topology:network-topology;
1093 container network-backup-topology {
1095 key "backup-path-id";
1096 leaf backup-path-id {
1101 "Several backup paths may be used when backup-paths are pre-calculated.
1102 Backup-path-id avoids 0 which is associated with working path in current-active-path";
1104 leaf failure-case-id {
1107 "A failure case Id can be used to associate a backup-path to a specific failure (srlg, OMS,...)";
1109 uses org-openroadm-topology:network-topology;
1112 leaf is-bandwidth-locked {
1116 "Bandwidth lock (true, false) indicates whether the service is administratively
1117 prohibited from taking on more capacity - ie whether it can be used as a supporting
1118 service in any new service creations. Unlike administrative status, this does not
1119 impact any previous planned or deployed services.";
1123 grouping service-notification-result {
1127 "Identifier for the service e.g., CLFI, CLCI, etc.";
1129 leaf version-number {
1132 "Identifier for the versioned service";
1137 "Identifier for the temp service";
1140 type yang:date-and-time;
1142 "Actual date and time (if successful)";
1146 grouping equipment-info {
1147 leaf equipment-identifier {
1150 leaf equipment-type {
1153 "The set of valid value is derived from the equipment-type grouping used in the device model.";
1155 leaf equipment-quantity {
1158 leaf lifecycle-state {
1159 type org-openroadm-common-state-types:lifecycle-state;
1163 grouping eventHorizon {
1164 leaf eventHorizonStart {
1165 type yang:date-and-time;
1167 "Start time to ensure that the service is routable and viable. Required resources shall
1168 be considered reserved from this time. If not provided, defaults to due-date.";
1170 leaf eventHorizonEnd {
1171 type yang:date-and-time;
1173 "End time to ensure that the service is routable and viable. Required resources shall
1174 be considered reserved until this time. If not provided, defaults to end-date.";