--- /dev/null
+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;
+ }
+ import ietf-inet-types {
+ prefix inet;
+ }
+ import org-openroadm-routing-constraints {
+ prefix org-openroadm-routing-constraints;
+ revision-date 2016-10-14;
+ }
+ import org-openroadm-topology {
+ prefix org-openroadm-topology;
+ }
+ import org-openroadm-common-types {
+ prefix org-openroadm-common-types;
+ revision-date 2016-10-14;
+ }
+ import org-openroadm-resource-types {
+ prefix org-openroadm-resource-types;
+ }
+
+ 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,
+ AT&T Intellectual Property. 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 2016-10-14 {
+ description
+ "Version 1.2";
+ }
+
+ 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 {
+ uses org-openroadm-routing-constraints:routing-constraints;
+ }
+ }
+
+ grouping service-endpoint {
+ leaf service-format {
+ type service-format;
+ mandatory true;
+ description
+ "Format of the requested service: Ethernet, OTU, etc.";
+ }
+ leaf service-rate {
+ when "../service-format!='OMS'"{
+ description "service rate not applicable when service
+ format is roadmline";
+ }
+ type uint32;
+ mandatory true;
+ description
+ "Rate of the requested service in GBps";
+ }
+ leaf clli {
+ type string;
+ mandatory true;
+ description
+ "CLLI";
+ }
+ uses org-openroadm-resource-types:device-id;
+ container site;
+ 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-types:optic-types;
+ }
+ container router {
+ description
+ "Needed for communication with DWDM pluggable";
+ leaf node-id {
+ type string;
+ 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";
+ }
+ }
+
+ typedef rpc-actions {
+ description "rpc-actions include all the rpc methods";
+ 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";
+ }
+ }
+ }
+
+ 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 {
+ leaf port-device-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;
+ description
+ "Date and time service to be removed";
+ mandatory false;
+ }
+ 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.";
+ }
+ }
+
+ grouping service {
+ leaf service-name {
+ type string;
+ description
+ "Identifier for the service to be created in
+ the ROADM network, e.g., CLFI, CLCI, etc.";
+ mandatory true;
+ }
+ 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;
+ leaf connection-type {
+ type connection-type;
+ mandatory true;
+ description
+ "Connection type";
+ }
+ leaf lifecycle-state {
+ type org-openroadm-common-types:lifecycle-state;
+ description
+ "Lifecycle State of service. Whether it is planned, deployed, in maintenance, etc.";
+ }
+ leaf administrative-state {
+ type org-openroadm-common-types:state;
+ description
+ "Administrative State: Intended state of service";
+ }
+ leaf operational-state {
+ type org-openroadm-common-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 {
+ 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.";
+ type string;
+ }
+ container topology {
+ uses org-openroadm-topology:topology;
+ }
+ }
+
+ grouping service-notification-result {
+ leaf service-name {
+ type string;
+ description
+ "Identifier for the service e.g., CLFI, CLCI, etc.";
+ mandatory true;
+ }
+ leaf actual-date {
+ type yang:date-and-time;
+ description
+ "Actual date and time (if successful)";
+ }
+ }
+
+ typedef service-format {
+ type enumeration {
+ enum "Ethernet" {
+ value 1;
+ }
+ enum "OTU" {
+ value 2;
+ }
+ enum "OC" {
+ value 3;
+ }
+ enum "STM" {
+ value 4;
+ }
+ enum "OMS" {
+ value 5;
+ }
+ enum "ODU" {
+ value 6;
+ }
+ enum "OTM" {
+ value 7;
+ }
+ }
+ }
+
+ 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;
+ }
+ //Add Martial
+ enum "service-feasibility-check-result" {
+ value 8;
+ }
+ }
+ }
+
+ 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;
+ }
+ }
+ }
+}