Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

IdSloganDescriptionReferencePriorityAgreedComments
1Architecture and Interfaces




1.1RESTconf APIThe PCE shall use a RESTconf API to provide path computation services to its clients

not agreedDiscussion ongoing. Orange: requirement becomes probably irrelevant if we talk about interface with service handler since both function will be colocated. PCEP or another API with similar data model is probably fine.
1.2Capability to modify path feasibility verification algorithmPath feasibility function shall be easily accessible for modification
[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1R1Keeping the topology model unchanged, an operator may want to improve the path feasibility algorithm with its own one for typically longer reach calculations [Coriant]or to include validation of equipment switching capabilities/restrictions. Therefore, this function must be easibily identified and modified if need be. Discussion ongoing
1.3StatefulnessPCE must be stateful. This means that it, besides topology, stores all the information related to the existing paths and is capable to use them for path computation, as neededdraft-ietf-pce-stateful-pce-15[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1Discussion ongoing
1.4Path information managementPCE stores and manages information about the paths deployed in the network, allowing to add, modify and remove that informationdraft-ietf-pce-stateful-pce-15[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1R1Please note that PCE should NOT store path information and mark network resources as in use at the moment of successful path computation. The client application shall be instead in charge of deploying the path and eventually update the PCE
1.5path identificationPCE must manage unique identifier associated to each path. This id must be assigned by the client, is under client’s responsibility and must remain constant across all the life of the path
[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P2R1
1.6Multi-layer path computationPCE must support multi-layer (and multi-technology) path computation. This means that a multi-layer/multi-technology network may be represented in its topology database, and path computation can return multi-layer/multi-technology paths, that is paths whose route includes hops from different layers/technologies
[E///]P1 [Telia]P1 [Orange]P2 [Coriant]P1 [Nokia] P2R2Orange: P2 simply because OTN will come with release 2 of openroadm and first release will probably focus on WDM but will have to be multi-layer in the end for sure.
1.6.1DWDM switching supportPCE must manage DWDM technology
[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1
1.6.2OTN switching supportPCE must manage OTN technology
[E///]P1 [Telia]? [Orange]P2 [Coriant]P1 [Nokia] P2R2Orange: for the reason above. OTN in PE to come not earlier than openroadm
1.6.3Mixed-technology networks : OTN/DWDMOTN over photonic layering must be supported
[E///]P1 [Telia]P1 [Orange]P2 [Coriant]P1 [Nokia] P2R2Discussion ongoing
1.7Topology databasePCE get updates about the topology from the topology DB of the controller [Coriant], including nodes, ports and links availability
[E///]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1Discussion ongoing
1.8MD-SAL APIThe PCE shall be provided as an ODL bundle, supporting MD-SAL API
[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1R1Orange: OK with ODL bundle. Not sure about MD-SAL API. PCE resides in network services, not in MD-SAL, correct? And REST API is important for Service handler.
1.9PCE tracing and debuggingThe PCE shall provide a tracing facility where it shall be possible to have details about the path computation operations
[E///]P2 [Telia]P3 [Orange]P1 [Nokia] P3R2Orange: useful to understand PCE behavior
1.10PCE monitoring and performance measurementsThe PCE supports measurements of performances, keeping track of the number of requests, minimum, maximum and medium time for the path computation operationsRFC 5886[E///]P2 [Telia]P2 [Orange]P3 [Coriant]P3 [Nokia] P3R2
2Request Parameters




2.1Single path path computationPCE must support the computation of a single pathRFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1
2.2Single path optimizationPCE must support the optimization of a single path. The optimization shall compute an alternative path with a better metric allowing the reuse of resources allocated to the original pathRFC 5440[E///]P2 [Telia]P2 [Orange]P2 [Coriant]P2 [Nokia] P3R2
2.3Multiple path path computation for diversityPCE must support the computation (or optimization) of a bundle of paths, according to the wanted diversity, meaning that PCE shall be capable to compute multiple paths in diversity each other. Diversity attributes are defined as Node, Link, or SRLG.RFC 5440[E///]P1 [Telia]P2 [Orange]P1 [Coriant]P2 [Nokia] P1R1Orange: SRG (add-drop group) should also be included in the list of diversity attributes
2.4Multiple path path computation for global optimizationPCE must support the computation (or optimization) of a bundle of paths, according to objective functionsRFC 5441 RFC 5557[E///]P3 [Telia]P3 [Orange]P3 [Coriant]P3 [Nokia] P3R3
2.5Multiple path path computation for computing multiple paths assigning separate resourcesPCE must support the computation of multiple paths without any cross-path constraint. In this case the multiple paths shall be assigned different non-overlapping resourcesRFC 5440[E///]P2 [Telia]P3 [Orange]P3 [Coriant]P3 [Nokia] P3R3
2.6Constrained path computationPCE must support the specification of multiple optional parameters to specify constraints for the path computation (or optimization). A flag must be included for each one of these parameters in order to specify whether the PCE will return failure or not when the relevant constraint cannot be satisfied.RFC 5440[E///]P1 [Telia]P2 [Orange]P1 [Coriant]P2R1Discussion ongoing
2.7Path computation resultPCE must be capable to return the result of the path computation (success, failure)RFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1
2.8Path computation result : unsatisfied constraintsIn case not all the requested constraints can be satisfied, the PCE must report the unsatisfied onesRFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P2 [Nokia] P3R1[Coriant] It would be useful also to be able to specify soft and hard constraints and support the auto relaxation of soft constraints

[E///] See requirement 2.6
2.9Bidirectional path computationPCE must support the computation (or optimization) of point-to-point bidirectional pathsRFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1
2.10Unidirectional path computationPCE must support the computation (or optimization) of point-to-point unidirectional pathsRFC 5440[E///]P3 [Telia]P3 [Orange]P3 [Coriant]P3 [Nokia] P3R3Discussion ongoing
2.11End pointsThe request shall include the end points of the path to be computed. End-point information must include at least the specification of the node or interface of the end-point and optionally (depending on the technology of the network) unnumbered interface id and LabelRFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1Discussion ongoing
2.11.1End pointsThe request shall include the clli without node / port information. It is up to the PCE to select the most appropriate resource at the edges.lRFC 5440[Orange]P2 [Coriant]P1 [E///]P2R2Comes from discussion 2.11. Discussion ongoing
2.12Bandwidth/Type of signal specificationPCE must allow specifying the bandwidth of the requested path.Bandwidth specification shall include   the type of the signal (according to the technology type)RFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1R1Discussion ongoing
2.13Metrics for path computationPCE must allow specifying the metric to be optimized when performing path computation. Possible metrics are at least IGP metric, TE metric, Hop count, and propagation delay (latency). If no metric is specified, the IGP metric (administrative cost) shall be used by default. Additional constraints due to technology (e.g. optical path feasibility) may be implicitly considered by the PCE as neededRFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P1 [Nokia] P1R1Discussion ongoing
2.14Metric bound constraintPCE must allow specifying the upper bound for a given metric (possibly a metric different from the one to be optimized). If no path with the given metric under the upper bound is found, the request must failRFC 5440[E///]P1 [Telia]P2 [Orange]P2 [Coriant]P2 [Nokia] P2R1
2.15Computed metric returned as resultPCE must allow specifying the metrics to be returned for the computed path, as successful. In that case the relevant metrics of the computed path shall be included in the response. No metric is returned if not requestedRFC 5440[E///]P2 [Telia]P2 [Orange]P1 [Coriant]P2 [Nokia] P3R2
2.16Use of local protected links in path computationPCE must allow specifying whether the path computation shall use locally protected linksRFC 5440[E///]P3 [Telia]P2 [Orange]P2 [Coriant]P2 [Nokia] P3R2[Coriant] I think it is more than just locally protected links since it possible to use SNC type protection as end-to-end resiliency mechanism. Ideally, the different protection mechanisms available on the optical layer (DWDM/OTN) should be available and selected based on a requested parameter
2.17AffinitiesPCE allows specifying the affinities to be included or excluded by the path computation. Affinities (aka administrative colors) are coded as 32 bit masks. They are attributes of TE-links. It must be possible to specify the following conditions; Include-any: links are included if any of the bits set in the mask are set also in the relevant link affinities; Exclude-any: links are excluded if any of the bits set in the mask are set also in the relevant link affinities; Exclude-all: links are excluded if all the bits set in the mask are set also in the relevant link affinitiesRFC 5440[E///]P1 [Telia]P1 [Orange]P1 [Nokia] P2R1Discussion ongoing
2.18Include resources specificationPCE allows specifying the IRO, which is the list of network resources (nodes, links, interfaces) to be included in the computed path. The resulting path must pass through the elements in the IRO list according to their order.RFC 5440[E///]P2 [Telia]P2 [Orange]P1 [Coriant]P2 [Nokia] P2R2
2.19Exclude resources specificationPCE must allow specifying the XRO, which is the list of network resources (nodes, links, interfaces, SRLGs), to be excluded by the computed path. The resulting path must not pass through the elements in the list.RFC 5521[E///]P1 [Telia]P1 [Orange]P1 [Coriant]P2 [Nokia] P1R1
2.20Path profilesPCE supports path profiles, that is specifications of set of request parameters and policies bundled all together and associated to a unique identifier. Mentioning that identifier in a request allows getting all the relevant parameters without the need to specify them explicitlydraft-alvarez-pce-path-profiles-04[E///]P3 [Telia]P3 [Orange]P3 [Coriant]P3 [Nokia] P3R3This is an expired draft, an alternative way to embed policies in a request is available in the recent draft-sivabalan-pce-policy-identifier-00
2.21Policy managementPCE supports the management of policies, that is directions/parameters affecting its behavior.RFC 3060 RFC 3460 RFC 5394[E///]P2 [Telia]P2 [Orange]P2 [Coriant]P2 [Nokia] P3R2E.g. policies to set the priority among multiple constraints in the same request, to affect how forwarding adjacencies are created or removed, to configure traffic engineering parameters, to set strategies for optical resource allocation, and more
2.21.1Policy interfacePolicies are objects which can be created, read, updated and deleted. Multiple policies can be associated to a path request (inside a path profile)RFC 3060 RFC 3460 RFC 5394[E///]P2 [Telia]P2 [Orange]P2 [Coriant]P2 [Nokia] P3R2
2.22Time constraint managementFor BoD or calendaring applications, it is of interest of specifying time boundaries and frequency for path.
P2 [Telia]P3 [Coriant]P2 [E///]P3 [Nokia] P3R2Orange: suggest to move this requirement to service handler specification (PCE in charge of calculating a path according to existing resources at the time of path request)
2.23Path computation w/wo path implementationIt is of interest to sollicit the PCE for path computation without network implementation. Conversely, it is important to be able to specify the CPE that the path must be implemented immediately
[Telia]? [Coriant]P1 [Nokia] P1R1Orange: suggest to move this requirement to service handler specification (PCE in charge of calculating a path and shall not care if it is further implemented or not (is told later not by a notification from service inventory)

[E///]Our view is that PCE should be in charge of path computation task only. What is named "PCE" in a lot of documents is actually a controller.
According to the architecture discussed so far, we separate the role of path computation from the one of actual deployment of the traffic in the network.
Therefore path implementation option should not be supported by the PCE (instead a command to communicate to the PCE the deployment of a path in the network should be foreseen).
2.24Path computation wo resource reservationIt is of interest to be able to verify if a path is feasible but compute it in stateless way, without resource reservation.
[Coriant]P2 [Nokia] P3R2Typical use case is testing path feasibility across multiple domains or analyse different path options

[E///] See comment on requirement 1.4. In our view this should be the normal PCE behavior.
2.25Path computation with control of the used layers for reuse/creationIt is of interest to be able to control if multi layer path computation should consider creation of lower layer server paths or only reuse already existing server paths.
[Coriant]P2 [E///]P2 [Nokia] P2 [Orange] P2R2Typical use case is be able to request paths that do not require creation of optical infrastructure (new optical channels) and therefore able to be implemented instantly.

[E///] Not directly supported by PCEP, we have implemented it as a policy. Agreed for P2 as it will become useful when we'll have multiple layers.
2.26Vendor-dependent wavelength-mapPCE shal be able to get the wavelength-map according to the vendor/node types (correspondance between channel-number and central frequency/channel width)RFC6205/ 694.1[Orange]P1
Wavelength-map is not standardized among vendors and PCE needs to get the knowledge of wavelength map that is available in device model.

Service Handler / service request

This section addresses:

  • the API through which service request is passed to the service handler when asking for L0/L1 service activation or simple path calculation.
  • the service model that is used to store activated services in MD-SAL

    High level blocks and interfacesImage Added

Openroadm having already performed intensive work on these two topics, it is suggested to start from this and prioritize the different modules/rpcs/notifications or suggest any additional parameters if need be.
Service model tree view can be found below.

module: org-openroadm-service
   +--rw service-list
   |  +--ro services* [service-name]
   |     +--ro service-name               string
   |     +--ro common-id?                 string
   |     +--ro sdnc-request-header
   |     |  +--ro request-id?          string
   |     |  +--ro rpc-action?          string
   |     |  +--ro notification-url?    string
   |     |  +--ro request-system-id?   string
   |     +--ro connection-type            connection-type
   |     +--ro lifecycle-state?           org-openroadm-common-types:lifecycle-state
   |     +--ro administrative-state?      org-openroadm-common-types:state
   |     +--ro operational-state?         org-openroadm-common-types:state
   |     +--ro condition?                 service-condition
   |     +--ro service-a-end
   |     |  +--ro service-rate      uint32
   |     |  +--ro service-format    service-format
   |     |  +--ro clli              string
   |     |  +--ro node-id?          string
   |     |  +--ro site
   |     |  +--ro tx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro rx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro optic-type        enumeration
   |     |  +--ro router
   |     |  |  +--ro node-id?      string
   |     |  |  +--ro ip-address?   inet:ip-address
   |     |  |  +--ro url?          string
   |     |  +--ro user-label?       string
   |     +--ro service-z-end
   |     |  +--ro service-rate      uint32
   |     |  +--ro service-format    service-format
   |     |  +--ro clli              string
   |     |  +--ro node-id?          string
   |     |  +--ro site
   |     |  +--ro tx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro rx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro optic-type        enumeration
   |     |  +--ro router
   |     |  |  +--ro node-id?      string
   |     |  |  +--ro ip-address?   inet:ip-address
   |     |  |  +--ro url?          string
   |     |  +--ro user-label?       string
   |     +--ro hard-constraints
   |     |  +--ro customer-code*   string
   |     |  +--ro (co-routing-or-general)?
   |     |     +--:(general)
   |     |     |  +--ro diversity
   |     |     |  |  +--ro existing-service*                 string
   |     |     |  |  +--ro existing-service-applicability
   |     |     |  |  |  +--ro site?   boolean
   |     |     |  |  |  +--ro node?   boolean
   |     |     |  |  |  +--ro srlg?   boolean
   |     |     |  |  +--ro fiber-bundle*                     string
   |     |     |  |  +--ro site*                             string
   |     |     |  |  +--ro node-id*                          string
   |     |     |  +--ro exclude
   |     |     |  |  +--ro fiber-bundle*              string
   |     |     |  |  +--ro site*                      string
   |     |     |  |  +--ro node-id*                   string
   |     |     |  |  +--ro supporting-service-name*   string
   |     |     |  +--ro include
   |     |     |  |  +--ro fiber-bundle*              string
   |     |     |  |  +--ro site*                      string
   |     |     |  |  +--ro node-id*                   string
   |     |     |  |  +--ro supporting-service-name*   string
   |     |     |  +--ro latency
   |     |     |     +--ro max-latency?   uint32
   |     |     +--:(co-routing)
   |     |        +--ro co-routing
   |     |           +--ro existing-service*   string
   |     +--ro soft-constraints
   |     |  +--ro customer-code*   string
   |     |  +--ro (co-routing-or-general)?
   |     |     +--:(general)
   |     |     |  +--ro diversity
   |     |     |  |  +--ro existing-service*                 string
   |     |     |  |  +--ro existing-service-applicability
   |     |     |  |  |  +--ro site?   boolean
   |     |     |  |  |  +--ro node?   boolean
   |     |     |  |  |  +--ro srlg?   boolean
   |     |     |  |  +--ro fiber-bundle*                     string
   |     |     |  |  +--ro site*                             string
   |     |     |  |  +--ro node-id*                          string
   |     |     |  +--ro exclude
   |     |     |  |  +--ro fiber-bundle*              string
   |     |     |  |  +--ro site*                      string
   |     |     |  |  +--ro node-id*                   string
   |     |     |  |  +--ro supporting-service-name*   string
   |     |     |  +--ro include
   |     |     |  |  +--ro fiber-bundle*              string
   |     |     |  |  +--ro site*                      string
   |     |     |  |  +--ro node-id*                   string
   |     |     |  |  +--ro supporting-service-name*   string
   |     |     |  +--ro latency
   |     |     |     +--ro max-latency?   uint32
   |     |     +--:(co-routing)
   |     |        +--ro co-routing
   |     |           +--ro existing-service*   string
   |     +--ro due-date?                  yang:date-and-time
   |     +--ro end-date?                  yang:date-and-time
   |     +--ro nc-code?                   string
   |     +--ro nci-code?                  string
   |     +--ro secondary-nci-code?        string
   |     +--ro customer?                  string
   |     +--ro customer-contact?          string
   |     +--ro operator-contact?          string
   |     +--ro latency?                   uint32
   |     +--ro fiber-span-srlgs*          string
   |     +--ro equipment-srgs*
   |     |  +--ro srg-number?   uint16
   |     +--ro supporting-service-name*   string
   |     +--ro topology
   |        +--ro aToZ* [id]
   |        |  +--ro id              string
   |        |  +--ro hop-type?       enumeration
   |        |  +--ro device
   |        |  |  +--ro node-id?   string
   |        |  +--ro resource
   |        |  |  +--ro (resource)?
   |        |  |     +--:(circuit-pack)
   |        |  |     |  +--ro circuit-pack-name     string
   |        |  |     +--:(port)
   |        |  |     |  +--ro port
   |        |  |     |     +--ro circuit-pack-name    string
   |        |  |     |     +--ro port-name?           string
   |        |  |     +--:(connection)
   |        |  |     |  +--ro connection-number?    string
   |        |  |     +--:(physical-link)
   |        |  |     |  +--ro physical-link-name    string
   |        |  |     +--:(internal-link)
   |        |  |     |  +--ro internal-link-name    string
   |        |  |     +--:(shelf)
   |        |  |     |  +--ro shelf-name            string
   |        |  |     +--:(srg)
   |        |  |     |  +--ro srg-number?           uint16
   |        |  |     +--:(degree)
   |        |  |     |  +--ro degree-number?        uint16
   |        |  |     +--:(service)
   |        |  |     |  +--ro service-name          string
   |        |  |     +--:(interface)
   |        |  |        +--ro interface-name        string
   |        |  +--ro resourceType
   |        |     +--ro type         resource-type-enum
   |        |     +--ro extension?   string
   |        +--ro zToA* [id]
   |           +--ro id              string
   |           +--ro hop-type?       enumeration
   |           +--ro device
   |           |  +--ro node-id?   string
   |           +--ro resource
   |           |  +--ro (resource)?
   |           |     +--:(circuit-pack)
   |           |     |  +--ro circuit-pack-name     string
   |           |     +--:(port)
   |           |     |  +--ro port
   |           |     |     +--ro circuit-pack-name    string
   |           |     |     +--ro port-name?           string
   |           |     +--:(connection)
   |           |     |  +--ro connection-number?    string
   |           |     +--:(physical-link)
   |           |     |  +--ro physical-link-name    string
   |           |     +--:(internal-link)
   |           |     |  +--ro internal-link-name    string
   |           |     +--:(shelf)
   |           |     |  +--ro shelf-name            string
   |           |     +--:(srg)
   |           |     |  +--ro srg-number?           uint16
   |           |     +--:(degree)
   |           |     |  +--ro degree-number?        uint16
   |           |     +--:(service)
   |           |     |  +--ro service-name          string
   |           |     +--:(interface)
   |           |        +--ro interface-name        string
   |           +--ro resourceType
   |              +--ro type         resource-type-enum
   |              +--ro extension?   string
   +--rw temp-service-list
      +--ro services* [common-id]
         +--ro service-name?              string
         +--ro common-id                  string
         +--ro sdnc-request-header
         |  +--ro request-id?          string
         |  +--ro rpc-action?          string
         |  +--ro notification-url?    string
         |  +--ro request-system-id?   string
         +--ro connection-type            connection-type
         +--ro lifecycle-state?           org-openroadm-common-types:lifecycle-state
         +--ro administrative-state?      org-openroadm-common-types:state
         +--ro operational-state?         org-openroadm-common-types:state
         +--ro condition?                 service-condition
         +--ro service-a-end
         |  +--ro service-rate      uint32
         |  +--ro service-format    service-format
         |  +--ro clli              string
         |  +--ro node-id?          string
         |  +--ro site
         |  +--ro tx-direction
         |  |  +--ro port
         |  |  |  +--ro port-device-name?   string
         |  |  |  +--ro port-type?          string
         |  |  |  +--ro port-name?          string
         |  |  |  +--ro port-rack?          string
         |  |  |  +--ro port-shelf?         string
         |  |  |  +--ro port-slot?          string
         |  |  |  +--ro port-sub-slot?      string
         |  |  +--ro lgx
         |  |  |  +--ro lgx-device-name?   string
         |  |  |  +--ro lgx-port-name?     string
         |  |  |  +--ro lgx-port-rack?     string
         |  |  |  +--ro lgx-port-shelf?    string
         |  |  +--ro tail
         |  |     +--ro tail-roadm
         |  |     |  +--ro node-id?   string
         |  |     +--ro xponder-port
         |  |     |  +--ro circuit-pack-name?   string
         |  |     |  +--ro port-name?           string
         |  |     +--ro tail-roadm-port-aid?             string
         |  |     +--ro tail-roadm-port-rack-location?   string
         |  +--ro rx-direction
         |  |  +--ro port
         |  |  |  +--ro port-device-name?   string
         |  |  |  +--ro port-type?          string
         |  |  |  +--ro port-name?          string
         |  |  |  +--ro port-rack?          string
         |  |  |  +--ro port-shelf?         string
         |  |  |  +--ro port-slot?          string
         |  |  |  +--ro port-sub-slot?      string
         |  |  +--ro lgx
         |  |  |  +--ro lgx-device-name?   string
         |  |  |  +--ro lgx-port-name?     string
         |  |  |  +--ro lgx-port-rack?     string
         |  |  |  +--ro lgx-port-shelf?    string
         |  |  +--ro tail
         |  |     +--ro tail-roadm
         |  |     |  +--ro node-id?   string
         |  |     +--ro xponder-port
         |  |     |  +--ro circuit-pack-name?   string
         |  |     |  +--ro port-name?           string
         |  |     +--ro tail-roadm-port-aid?             string
         |  |     +--ro tail-roadm-port-rack-location?   string
         |  +--ro optic-type        enumeration
         |  +--ro router
         |  |  +--ro node-id?      string
         |  |  +--ro ip-address?   inet:ip-address
         |  |  +--ro url?          string
         |  +--ro user-label?       string
         +--ro service-z-end
         |  +--ro service-rate      uint32
         |  +--ro service-format    service-format
         |  +--ro clli              string
         |  +--ro node-id?          string
         |  +--ro site
         |  +--ro tx-direction
         |  |  +--ro port
         |  |  |  +--ro port-device-name?   string
         |  |  |  +--ro port-type?          string
         |  |  |  +--ro port-name?          string
         |  |  |  +--ro port-rack?          string
         |  |  |  +--ro port-shelf?         string
         |  |  |  +--ro port-slot?          string
         |  |  |  +--ro port-sub-slot?      string
         |  |  +--ro lgx
         |  |  |  +--ro lgx-device-name?   string
         |  |  |  +--ro lgx-port-name?     string
         |  |  |  +--ro lgx-port-rack?     string
         |  |  |  +--ro lgx-port-shelf?    string
         |  |  +--ro tail
         |  |     +--ro tail-roadm
         |  |     |  +--ro node-id?   string
         |  |     +--ro xponder-port
         |  |     |  +--ro circuit-pack-name?   string
         |  |     |  +--ro port-name?           string
         |  |     +--ro tail-roadm-port-aid?             string
         |  |     +--ro tail-roadm-port-rack-location?   string
         |  +--ro rx-direction
         |  |  +--ro port
         |  |  |  +--ro port-device-name?   string
         |  |  |  +--ro port-type?          string
         |  |  |  +--ro port-name?          string
         |  |  |  +--ro port-rack?          string
         |  |  |  +--ro port-shelf?         string
         |  |  |  +--ro port-slot?          string
         |  |  |  +--ro port-sub-slot?      string
         |  |  +--ro lgx
         |  |  |  +--ro lgx-device-name?   string
         |  |  |  +--ro lgx-port-name?     string
         |  |  |  +--ro lgx-port-rack?     string
         |  |  |  +--ro lgx-port-shelf?    string
         |  |  +--ro tail
         |  |     +--ro tail-roadm
         |  |     |  +--ro node-id?   string
         |  |     +--ro xponder-port
         |  |     |  +--ro circuit-pack-name?   string
         |  |     |  +--ro port-name?           string
         |  |     +--ro tail-roadm-port-aid?             string
         |  |     +--ro tail-roadm-port-rack-location?   string
         |  +--ro optic-type        enumeration
         |  +--ro router
         |  |  +--ro node-id?      string
         |  |  +--ro ip-address?   inet:ip-address
         |  |  +--ro url?          string
         |  +--ro user-label?       string
         +--ro hard-constraints
         |  +--ro customer-code*   string
         |  +--ro (co-routing-or-general)?
         |     +--:(general)
         |     |  +--ro diversity
         |     |  |  +--ro existing-service*                 string
         |     |  |  +--ro existing-service-applicability
         |     |  |  |  +--ro site?   boolean
         |     |  |  |  +--ro node?   boolean
         |     |  |  |  +--ro srlg?   boolean
         |     |  |  +--ro fiber-bundle*                     string
         |     |  |  +--ro site*                             string
         |     |  |  +--ro node-id*                          string
         |     |  +--ro exclude
         |     |  |  +--ro fiber-bundle*              string
         |     |  |  +--ro site*                      string
         |     |  |  +--ro node-id*                   string
         |     |  |  +--ro supporting-service-name*   string
         |     |  +--ro include
         |     |  |  +--ro fiber-bundle*              string
         |     |  |  +--ro site*                      string
         |     |  |  +--ro node-id*                   string
         |     |  |  +--ro supporting-service-name*   string
         |     |  +--ro latency
         |     |     +--ro max-latency?   uint32
         |     +--:(co-routing)
         |        +--ro co-routing
         |           +--ro existing-service*   string
         +--ro soft-constraints
         |  +--ro customer-code*   string
         |  +--ro (co-routing-or-general)?
         |     +--:(general)
         |     |  +--ro diversity
         |     |  |  +--ro existing-service*                 string
         |     |  |  +--ro existing-service-applicability
         |     |  |  |  +--ro site?   boolean
         |     |  |  |  +--ro node?   boolean
         |     |  |  |  +--ro srlg?   boolean
         |     |  |  +--ro fiber-bundle*                     string
         |     |  |  +--ro site*                             string
         |     |  |  +--ro node-id*                          string
         |     |  +--ro exclude
         |     |  |  +--ro fiber-bundle*              string
         |     |  |  +--ro site*                      string
         |     |  |  +--ro node-id*                   string
         |     |  |  +--ro supporting-service-name*   string
         |     |  +--ro include
         |     |  |  +--ro fiber-bundle*              string
         |     |  |  +--ro site*                      string
         |     |  |  +--ro node-id*                   string
         |     |  |  +--ro supporting-service-name*   string
         |     |  +--ro latency
         |     |     +--ro max-latency?   uint32
         |     +--:(co-routing)
         |        +--ro co-routing
         |           +--ro existing-service*   string
         +--ro due-date?                  yang:date-and-time
         +--ro end-date?                  yang:date-and-time
         +--ro nc-code?                   string
         +--ro nci-code?                  string
         +--ro secondary-nci-code?        string
         +--ro customer?                  string
         +--ro customer-contact?          string
         +--ro operator-contact?          string
         +--ro latency?                   uint32
         +--ro fiber-span-srlgs*          string
         +--ro equipment-srgs*
         |  +--ro srg-number?   uint16
         +--ro supporting-service-name*   string
         +--ro topology
            +--ro aToZ* [id]
            |  +--ro id              string
            |  +--ro hop-type?       enumeration
            |  +--ro device
            |  |  +--ro node-id?   string
            |  +--ro resource
            |  |  +--ro (resource)?
            |  |     +--:(circuit-pack)
            |  |     |  +--ro circuit-pack-name     string
            |  |     +--:(port)
            |  |     |  +--ro port
            |  |     |     +--ro circuit-pack-name    string
            |  |     |     +--ro port-name?           string
            |  |     +--:(connection)
            |  |     |  +--ro connection-number?    string
            |  |     +--:(physical-link)
            |  |     |  +--ro physical-link-name    string
            |  |     +--:(internal-link)
            |  |     |  +--ro internal-link-name    string
            |  |     +--:(shelf)
            |  |     |  +--ro shelf-name            string
            |  |     +--:(srg)
            |  |     |  +--ro srg-number?           uint16
            |  |     +--:(degree)
            |  |     |  +--ro degree-number?        uint16
            |  |     +--:(service)
            |  |     |  +--ro service-name          string
            |  |     +--:(interface)
            |  |        +--ro interface-name        string
            |  +--ro resourceType
            |     +--ro type         resource-type-enum
            |     +--ro extension?   string
            +--ro zToA* [id]
               +--ro id              string
               +--ro hop-type?       enumeration
               +--ro device
               |  +--ro node-id?   string
               +--ro resource
               |  +--ro (resource)?
               |     +--:(circuit-pack)
               |     |  +--ro circuit-pack-name     string
               |     +--:(port)
               |     |  +--ro port
               |     |     +--ro circuit-pack-name    string
               |     |     +--ro port-name?           string
               |     +--:(connection)
               |     |  +--ro connection-number?    string
               |     +--:(physical-link)
               |     |  +--ro physical-link-name    string
               |     +--:(internal-link)
               |     |  +--ro internal-link-name    string
               |     +--:(shelf)
               |     |  +--ro shelf-name            string
               |     +--:(srg)
               |     |  +--ro srg-number?           uint16
               |     +--:(degree)
               |     |  +--ro degree-number?        uint16
               |     +--:(service)
               |     |  +--ro service-name          string
               |     +--:(interface)
               |        +--ro interface-name        string
               +--ro resourceType
                  +--ro type         resource-type-enum
                  +--ro extension?   string
rpcs:
   +---x service-create               
   |  +---w input     
   |  |  +---w service-name           string
   |  |  +---w common-id?             string
   |  |  +---w sdnc-request-header
   |  |  |  +---w request-id?          string
   |  |  |  +---w rpc-action?          string
   |  |  |  +---w notification-url?    string
   |  |  |  +---w request-system-id?   string
   |  |  +---w connection-type        org-openroadm-common-service-types:connection-type
   |  |  +---w service-a-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w service-z-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w hard-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w soft-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w due-date?              yang:date-and-time
   |  |  +---w end-date?              yang:date-and-time
   |  |  +---w nc-code?               string
   |  |  +---w nci-code?              string
   |  |  +---w secondary-nci-code?    string
   |  |  +---w customer?              string
   |  |  +---w customer-contact?      string
   |  |  +---w operator-contact?      string
   |  +--ro output    
   |     +--ro configuration-response-common
   |     |  +--ro request-id             string
   |     |  +--ro response-code          string
   |     |  +--ro response-message?      string
   |     |  +--ro ack-final-indicator    string
   |     +--ro response-parameters
   |        +--ro hard-constraints
   |        |  +--ro customer-code*   string
   |        |  +--ro (co-routing-or-general)?
   |        |     +--:(general)
   |        |     |  +--ro diversity
   |        |     |  |  +--ro existing-service*                 string
   |        |     |  |  +--ro existing-service-applicability
   |        |     |  |  |  +--ro site?   boolean
   |        |     |  |  |  +--ro node?   boolean
   |        |     |  |  |  +--ro srlg?   boolean
   |        |     |  |  +--ro fiber-bundle*                     string
   |        |     |  |  +--ro site*                             string
   |        |     |  |  +--ro node-id*                          string
   |        |     |  +--ro exclude
   |        |     |  |  +--ro fiber-bundle*              string
   |        |     |  |  +--ro site*                      string
   |        |     |  |  +--ro node-id*                   string
   |        |     |  |  +--ro supporting-service-name*   string
   |        |     |  +--ro include
   |        |     |  |  +--ro fiber-bundle*              string
   |        |     |  |  +--ro site*                      string
   |        |     |  |  +--ro node-id*                   string
   |        |     |  |  +--ro supporting-service-name*   string
   |        |     |  +--ro latency
   |        |     |     +--ro max-latency?   uint32
   |        |     +--:(co-routing)
   |        |        +--ro co-routing
   |        |           +--ro existing-service*   string
   |        +--ro soft-constraints
   |           +--ro customer-code*   string
   |           +--ro (co-routing-or-general)?
   |              +--:(general)
   |              |  +--ro diversity
   |              |  |  +--ro existing-service*                 string
   |              |  |  +--ro existing-service-applicability
   |              |  |  |  +--ro site?   boolean
   |              |  |  |  +--ro node?   boolean
   |              |  |  |  +--ro srlg?   boolean
   |              |  |  +--ro fiber-bundle*                     string
   |              |  |  +--ro site*                             string
   |              |  |  +--ro node-id*                          string
   |              |  +--ro exclude
   |              |  |  +--ro fiber-bundle*              string
   |              |  |  +--ro site*                      string
   |              |  |  +--ro node-id*                   string
   |              |  |  +--ro supporting-service-name*   string
   |              |  +--ro include
   |              |  |  +--ro fiber-bundle*              string
   |              |  |  +--ro site*                      string
   |              |  |  +--ro node-id*                   string
   |              |  |  +--ro supporting-service-name*   string
   |              |  +--ro latency
   |              |     +--ro max-latency?   uint32
   |              +--:(co-routing)
   |                 +--ro co-routing
   |                    +--ro existing-service*   string
   +---x service-feasibility-check    
   |  +---w input     
   |  |  +---w common-id              string
   |  |  +---w sdnc-request-header
   |  |  |  +---w request-id?          string
   |  |  |  +---w rpc-action?          string
   |  |  |  +---w notification-url?    string
   |  |  |  +---w request-system-id?   string
   |  |  +---w connection-type?       org-openroadm-common-service-types:connection-type
   |  |  +---w service-a-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w service-z-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w hard-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w soft-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w due-date?              yang:date-and-time
   |  |  +---w end-date?              yang:date-and-time
   |  |  +---w nc-code?               string
   |  |  +---w nci-code?              string
   |  |  +---w secondary-nci-code?    string
   |  |  +---w customer?              string
   |  |  +---w customer-contact?      string
   |  |  +---w operator-contact?      string
   |  +--ro output    
   |     +--ro configuration-response-common
   |     |  +--ro request-id             string
   |     |  +--ro response-code          string
   |     |  +--ro response-message?      string
   |     |  +--ro ack-final-indicator    string
   |     +--ro response-parameters
   |     |  +--ro hard-constraints
   |     |  |  +--ro customer-code*   string
   |     |  |  +--ro (co-routing-or-general)?
   |     |  |     +--:(general)
   |     |  |     |  +--ro diversity
   |     |  |     |  |  +--ro existing-service*                 string
   |     |  |     |  |  +--ro existing-service-applicability
   |     |  |     |  |  |  +--ro site?   boolean
   |     |  |     |  |  |  +--ro node?   boolean
   |     |  |     |  |  |  +--ro srlg?   boolean
   |     |  |     |  |  +--ro fiber-bundle*                     string
   |     |  |     |  |  +--ro site*                             string
   |     |  |     |  |  +--ro node-id*                          string
   |     |  |     |  +--ro exclude
   |     |  |     |  |  +--ro fiber-bundle*              string
   |     |  |     |  |  +--ro site*                      string
   |     |  |     |  |  +--ro node-id*                   string
   |     |  |     |  |  +--ro supporting-service-name*   string
   |     |  |     |  +--ro include
   |     |  |     |  |  +--ro fiber-bundle*              string
   |     |  |     |  |  +--ro site*                      string
   |     |  |     |  |  +--ro node-id*                   string
   |     |  |     |  |  +--ro supporting-service-name*   string
   |     |  |     |  +--ro latency
   |     |  |     |     +--ro max-latency?   uint32
   |     |  |     +--:(co-routing)
   |     |  |        +--ro co-routing
   |     |  |           +--ro existing-service*   string
   |     |  +--ro soft-constraints
   |     |     +--ro customer-code*   string
   |     |     +--ro (co-routing-or-general)?
   |     |        +--:(general)
   |     |        |  +--ro diversity
   |     |        |  |  +--ro existing-service*                 string
   |     |        |  |  +--ro existing-service-applicability
   |     |        |  |  |  +--ro site?   boolean
   |     |        |  |  |  +--ro node?   boolean
   |     |        |  |  |  +--ro srlg?   boolean
   |     |        |  |  +--ro fiber-bundle*                     string
   |     |        |  |  +--ro site*                             string
   |     |        |  |  +--ro node-id*                          string
   |     |        |  +--ro exclude
   |     |        |  |  +--ro fiber-bundle*              string
   |     |        |  |  +--ro site*                      string
   |     |        |  |  +--ro node-id*                   string
   |     |        |  |  +--ro supporting-service-name*   string
   |     |        |  +--ro include
   |     |        |  |  +--ro fiber-bundle*              string
   |     |        |  |  +--ro site*                      string
   |     |        |  |  +--ro node-id*                   string
   |     |        |  |  +--ro supporting-service-name*   string
   |     |        |  +--ro latency
   |     |        |     +--ro max-latency?   uint32
   |     |        +--:(co-routing)
   |     |           +--ro co-routing
   |     |              +--ro existing-service*   string
   |     +--ro service-a-end
   |     |  +--ro service-rate          uint32
   |     |  +--ro service-format        service-format
   |     |  +--ro clli                  string
   |     |  +--ro node-id?              string
   |     |  +--ro site
   |     |  +--ro tx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro rx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro optic-type            enumeration
   |     |  +--ro router
   |     |  |  +--ro node-id?      string
   |     |  |  +--ro ip-address?   inet:ip-address
   |     |  |  +--ro url?          string
   |     |  +--ro user-label?           string
   |     |  +--ro equipment-required* [eqipment-identifier]
   |     |     +--ro eqipment-identifier    string
   |     |     +--ro equipment-type?        string
   |     |     +--ro equipment-quantity?    uint32
   |     +--ro service-z-end
   |     |  +--ro service-rate          uint32
   |     |  +--ro service-format        service-format
   |     |  +--ro clli                  string
   |     |  +--ro node-id?              string
   |     |  +--ro site
   |     |  +--ro tx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro rx-direction
   |     |  |  +--ro port
   |     |  |  |  +--ro port-device-name?   string
   |     |  |  |  +--ro port-type?          string
   |     |  |  |  +--ro port-name?          string
   |     |  |  |  +--ro port-rack?          string
   |     |  |  |  +--ro port-shelf?         string
   |     |  |  |  +--ro port-slot?          string
   |     |  |  |  +--ro port-sub-slot?      string
   |     |  |  +--ro lgx
   |     |  |  |  +--ro lgx-device-name?   string
   |     |  |  |  +--ro lgx-port-name?     string
   |     |  |  |  +--ro lgx-port-rack?     string
   |     |  |  |  +--ro lgx-port-shelf?    string
   |     |  |  +--ro tail
   |     |  |     +--ro tail-roadm
   |     |  |     |  +--ro node-id?   string
   |     |  |     +--ro xponder-port
   |     |  |     |  +--ro circuit-pack-name?   string
   |     |  |     |  +--ro port-name?           string
   |     |  |     +--ro tail-roadm-port-aid?             string
   |     |  |     +--ro tail-roadm-port-rack-location?   string
   |     |  +--ro optic-type            enumeration
   |     |  +--ro router
   |     |  |  +--ro node-id?      string
   |     |  |  +--ro ip-address?   inet:ip-address
   |     |  |  +--ro url?          string
   |     |  +--ro user-label?           string
   |     |  +--ro equipment-required* [eqipment-identifier]
   |     |     +--ro eqipment-identifier    string
   |     |     +--ro equipment-type?        string
   |     |     +--ro equipment-quantity?    uint32
   |     +--ro intermediate-sites* [clli]
   |        +--ro service-rate          uint32
   |        +--ro service-format        service-format
   |        +--ro clli                  string
   |        +--ro node-id?              string
   |        +--ro site
   |        +--ro tx-direction
   |        |  +--ro port
   |        |  |  +--ro port-device-name?   string
   |        |  |  +--ro port-type?          string
   |        |  |  +--ro port-name?          string
   |        |  |  +--ro port-rack?          string
   |        |  |  +--ro port-shelf?         string
   |        |  |  +--ro port-slot?          string
   |        |  |  +--ro port-sub-slot?      string
   |        |  +--ro lgx
   |        |  |  +--ro lgx-device-name?   string
   |        |  |  +--ro lgx-port-name?     string
   |        |  |  +--ro lgx-port-rack?     string
   |        |  |  +--ro lgx-port-shelf?    string
   |        |  +--ro tail
   |        |     +--ro tail-roadm
   |        |     |  +--ro node-id?   string
   |        |     +--ro xponder-port
   |        |     |  +--ro circuit-pack-name?   string
   |        |     |  +--ro port-name?           string
   |        |     +--ro tail-roadm-port-aid?             string
   |        |     +--ro tail-roadm-port-rack-location?   string
   |        +--ro rx-direction
   |        |  +--ro port
   |        |  |  +--ro port-device-name?   string
   |        |  |  +--ro port-type?          string
   |        |  |  +--ro port-name?          string
   |        |  |  +--ro port-rack?          string
   |        |  |  +--ro port-shelf?         string
   |        |  |  +--ro port-slot?          string
   |        |  |  +--ro port-sub-slot?      string
   |        |  +--ro lgx
   |        |  |  +--ro lgx-device-name?   string
   |        |  |  +--ro lgx-port-name?     string
   |        |  |  +--ro lgx-port-rack?     string
   |        |  |  +--ro lgx-port-shelf?    string
   |        |  +--ro tail
   |        |     +--ro tail-roadm
   |        |     |  +--ro node-id?   string
   |        |     +--ro xponder-port
   |        |     |  +--ro circuit-pack-name?   string
   |        |     |  +--ro port-name?           string
   |        |     +--ro tail-roadm-port-aid?             string
   |        |     +--ro tail-roadm-port-rack-location?   string
   |        +--ro optic-type            enumeration
   |        +--ro router
   |        |  +--ro node-id?      string
   |        |  +--ro ip-address?   inet:ip-address
   |        |  +--ro url?          string
   |        +--ro user-label?           string
   |        +--ro equipment-required* [eqipment-identifier]
   |           +--ro eqipment-identifier    string
   |           +--ro equipment-type?        string
   |           +--ro equipment-quantity?    uint32
   +---x service-delete               
   |  +---w input     
   |  |  +---w sdnc-request-header
   |  |  |  +---w request-id?          string
   |  |  |  +---w rpc-action?          string
   |  |  |  +---w notification-url?    string
   |  |  |  +---w request-system-id?   string
   |  |  +---w service-delete-req-info
   |  |     +---w service-name      string
   |  |     +---w due-date?         yang:date-and-time
   |  |     +---w tail-retention    enumeration
   |  +--ro output    
   |     +--ro configuration-response-common
   |        +--ro request-id             string
   |        +--ro response-code          string
   |        +--ro response-message?      string
   |        +--ro ack-final-indicator    string
   +---x equipment-notification       
   |  +---w input     
   |  |  +---w sdnc-request-header
   |  |  |  +---w request-id?          string
   |  |  |  +---w rpc-action?          string
   |  |  |  +---w notification-url?    string
   |  |  |  +---w request-system-id?   string
   |  |  +---w equiptment-id          string
   |  |  +---w equipment-name?        string
   |  |  +---w equipemt-type          string
   |  |  +---w equipment-vendor       string
   |  |  +---w equipment-customer?    string
   |  |  +---w equipment-clli         string
   |  |  +---w equipment-ip?          string
   |  |  +---w controller-id          string
   |  +--ro output    
   |     +--ro configuration-response-common
   |        +--ro request-id             string
   |        +--ro response-code          string
   |        +--ro response-message?      string
   |        +--ro ack-final-indicator    string
   +---x temp-service-create          
   |  +---w input     
   |  |  +---w common-id              string
   |  |  +---w sdnc-request-header
   |  |  |  +---w request-id?          string
   |  |  |  +---w rpc-action?          string
   |  |  |  +---w notification-url?    string
   |  |  |  +---w request-system-id?   string
   |  |  +---w connection-type        org-openroadm-common-service-types:connection-type
   |  |  +---w service-a-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w service-z-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w hard-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w soft-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w due-date?              yang:date-and-time
   |  |  +---w end-date?              yang:date-and-time
   |  |  +---w nc-code?               string
   |  |  +---w nci-code?              string
   |  |  +---w secondary-nci-code?    string
   |  |  +---w customer?              string
   |  |  +---w customer-contact?      string
   |  |  +---w operator-contact?      string
   |  +--ro output    
   |     +--ro configuration-response-common
   |     |  +--ro request-id             string
   |     |  +--ro response-code          string
   |     |  +--ro response-message?      string
   |     |  +--ro ack-final-indicator    string
   |     +--ro response-parameters
   |        +--ro hard-constraints
   |        |  +--ro customer-code*   string
   |        |  +--ro (co-routing-or-general)?
   |        |     +--:(general)
   |        |     |  +--ro diversity
   |        |     |  |  +--ro existing-service*                 string
   |        |     |  |  +--ro existing-service-applicability
   |        |     |  |  |  +--ro site?   boolean
   |        |     |  |  |  +--ro node?   boolean
   |        |     |  |  |  +--ro srlg?   boolean
   |        |     |  |  +--ro fiber-bundle*                     string
   |        |     |  |  +--ro site*                             string
   |        |     |  |  +--ro node-id*                          string
   |        |     |  +--ro exclude
   |        |     |  |  +--ro fiber-bundle*              string
   |        |     |  |  +--ro site*                      string
   |        |     |  |  +--ro node-id*                   string
   |        |     |  |  +--ro supporting-service-name*   string
   |        |     |  +--ro include
   |        |     |  |  +--ro fiber-bundle*              string
   |        |     |  |  +--ro site*                      string
   |        |     |  |  +--ro node-id*                   string
   |        |     |  |  +--ro supporting-service-name*   string
   |        |     |  +--ro latency
   |        |     |     +--ro max-latency?   uint32
   |        |     +--:(co-routing)
   |        |        +--ro co-routing
   |        |           +--ro existing-service*   string
   |        +--ro soft-constraints
   |           +--ro customer-code*   string
   |           +--ro (co-routing-or-general)?
   |              +--:(general)
   |              |  +--ro diversity
   |              |  |  +--ro existing-service*                 string
   |              |  |  +--ro existing-service-applicability
   |              |  |  |  +--ro site?   boolean
   |              |  |  |  +--ro node?   boolean
   |              |  |  |  +--ro srlg?   boolean
   |              |  |  +--ro fiber-bundle*                     string
   |              |  |  +--ro site*                             string
   |              |  |  +--ro node-id*                          string
   |              |  +--ro exclude
   |              |  |  +--ro fiber-bundle*              string
   |              |  |  +--ro site*                      string
   |              |  |  +--ro node-id*                   string
   |              |  |  +--ro supporting-service-name*   string
   |              |  +--ro include
   |              |  |  +--ro fiber-bundle*              string
   |              |  |  +--ro site*                      string
   |              |  |  +--ro node-id*                   string
   |              |  |  +--ro supporting-service-name*   string
   |              |  +--ro latency
   |              |     +--ro max-latency?   uint32
   |              +--:(co-routing)
   |                 +--ro co-routing
   |                    +--ro existing-service*   string
   +---x temp-service-delete          
   |  +---w input     
   |  |  +---w common-id    string
   |  +--ro output    
   |     +--ro configuration-response-common
   |        +--ro request-id             string
   |        +--ro response-code          string
   |        +--ro response-message?      string
   |        +--ro ack-final-indicator    string
   +---x service-roll                 
   |  +---w input     
   |  |  +---w service-name    string
   |  |  +---w due-date?       yang:date-and-time
   |  +--ro output    
   |     +--ro status            rpc-status
   |     +--ro status-message?   string
   +---x service-reconfigure          
   |  +---w input     
   |  |  +---w service-name          string
   |  |  +---w new-service-name?     string
   |  |  +---w common-id?            string
   |  |  +---w connection-type?      org-openroadm-common-service-types:connection-type
   |  |  +---w service-a-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w service-z-end
   |  |  |  +---w service-rate      uint32
   |  |  |  +---w service-format    service-format
   |  |  |  +---w clli              string
   |  |  |  +---w node-id?          string
   |  |  |  +---w site
   |  |  |  +---w tx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w rx-direction
   |  |  |  |  +---w port
   |  |  |  |  |  +---w port-device-name?   string
   |  |  |  |  |  +---w port-type?          string
   |  |  |  |  |  +---w port-name?          string
   |  |  |  |  |  +---w port-rack?          string
   |  |  |  |  |  +---w port-shelf?         string
   |  |  |  |  |  +---w port-slot?          string
   |  |  |  |  |  +---w port-sub-slot?      string
   |  |  |  |  +---w lgx
   |  |  |  |  |  +---w lgx-device-name?   string
   |  |  |  |  |  +---w lgx-port-name?     string
   |  |  |  |  |  +---w lgx-port-rack?     string
   |  |  |  |  |  +---w lgx-port-shelf?    string
   |  |  |  |  +---w tail
   |  |  |  |     +---w tail-roadm
   |  |  |  |     |  +---w node-id?   string
   |  |  |  |     +---w xponder-port
   |  |  |  |     |  +---w circuit-pack-name?   string
   |  |  |  |     |  +---w port-name?           string
   |  |  |  |     +---w tail-roadm-port-aid?             string
   |  |  |  |     +---w tail-roadm-port-rack-location?   string
   |  |  |  +---w optic-type        enumeration
   |  |  |  +---w router
   |  |  |  |  +---w node-id?      string
   |  |  |  |  +---w ip-address?   inet:ip-address
   |  |  |  |  +---w url?          string
   |  |  |  +---w user-label?       string
   |  |  +---w hard-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w soft-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w due-date?             yang:date-and-time
   |  |  +---w end-date?             yang:date-and-time
   |  |  +---w nc-code?              string
   |  |  +---w nci-code?             string
   |  |  +---w secondary-nci-code?   string
   |  |  +---w customer?             string
   |  |  +---w customer-contact?     string
   |  |  +---w operator-contact?     string
   |  +--ro output    
   |     +--ro status            rpc-status
   |     +--ro status-message?   string
   +---x service-restoration          
   |  +---w input     
   |  |  +---w service-name    string
   |  |  +---w option          enumeration
   |  +--ro output    
   |     +--ro status            rpc-status
   |     +--ro status-message?   string
   +---x service-reversion            
   |  +---w input     
   |  |  +---w service-name    string
   |  |  +---w due-date?       yang:date-and-time
   |  +--ro output    
   |     +--ro status            rpc-status
   |     +--ro status-message?   string
   +---x service-reroute              
   |  +---w input     
   |  |  +---w service-name    string
   |  +--ro output    
   |     +--ro status              rpc-status
   |     +--ro status-message?     string
   |     +--ro hard-constraints
   |     |  +--ro customer-code*   string
   |     |  +--ro (co-routing-or-general)?
   |     |     +--:(general)
   |     |     |  +--ro diversity
   |     |     |  |  +--ro existing-service*                 string
   |     |     |  |  +--ro existing-service-applicability
   |     |     |  |  |  +--ro site?   boolean
   |     |     |  |  |  +--ro node?   boolean
   |     |     |  |  |  +--ro srlg?   boolean
   |     |     |  |  +--ro fiber-bundle*                     string
   |     |     |  |  +--ro site*                             string
   |     |     |  |  +--ro node-id*                          string
   |     |     |  +--ro exclude
   |     |     |  |  +--ro fiber-bundle*              string
   |     |     |  |  +--ro site*                      string
   |     |     |  |  +--ro node-id*                   string
   |     |     |  |  +--ro supporting-service-name*   string
   |     |     |  +--ro include
   |     |     |  |  +--ro fiber-bundle*              string
   |     |     |  |  +--ro site*                      string
   |     |     |  |  +--ro node-id*                   string
   |     |     |  |  +--ro supporting-service-name*   string
   |     |     |  +--ro latency
   |     |     |     +--ro max-latency?   uint32
   |     |     +--:(co-routing)
   |     |        +--ro co-routing
   |     |           +--ro existing-service*   string
   |     +--ro soft-constraints
   |        +--ro customer-code*   string
   |        +--ro (co-routing-or-general)?
   |           +--:(general)
   |           |  +--ro diversity
   |           |  |  +--ro existing-service*                 string
   |           |  |  +--ro existing-service-applicability
   |           |  |  |  +--ro site?   boolean
   |           |  |  |  +--ro node?   boolean
   |           |  |  |  +--ro srlg?   boolean
   |           |  |  +--ro fiber-bundle*                     string
   |           |  |  +--ro site*                             string
   |           |  |  +--ro node-id*                          string
   |           |  +--ro exclude
   |           |  |  +--ro fiber-bundle*              string
   |           |  |  +--ro site*                      string
   |           |  |  +--ro node-id*                   string
   |           |  |  +--ro supporting-service-name*   string
   |           |  +--ro include
   |           |  |  +--ro fiber-bundle*              string
   |           |  |  +--ro site*                      string
   |           |  |  +--ro node-id*                   string
   |           |  |  +--ro supporting-service-name*   string
   |           |  +--ro latency
   |           |     +--ro max-latency?   uint32
   |           +--:(co-routing)
   |              +--ro co-routing
   |                 +--ro existing-service*   string
   +---x service-reroute-confirm      
   |  +---w input     
   |  |  +---w service-name        string
   |  |  +---w hard-constraints
   |  |  |  +---w customer-code*   string
   |  |  |  +---w (co-routing-or-general)?
   |  |  |     +--:(general)
   |  |  |     |  +---w diversity
   |  |  |     |  |  +---w existing-service*                 string
   |  |  |     |  |  +---w existing-service-applicability
   |  |  |     |  |  |  +---w site?   boolean
   |  |  |     |  |  |  +---w node?   boolean
   |  |  |     |  |  |  +---w srlg?   boolean
   |  |  |     |  |  +---w fiber-bundle*                     string
   |  |  |     |  |  +---w site*                             string
   |  |  |     |  |  +---w node-id*                          string
   |  |  |     |  +---w exclude
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w include
   |  |  |     |  |  +---w fiber-bundle*              string
   |  |  |     |  |  +---w site*                      string
   |  |  |     |  |  +---w node-id*                   string
   |  |  |     |  |  +---w supporting-service-name*   string
   |  |  |     |  +---w latency
   |  |  |     |     +---w max-latency?   uint32
   |  |  |     +--:(co-routing)
   |  |  |        +---w co-routing
   |  |  |           +---w existing-service*   string
   |  |  +---w soft-constraints
   |  |     +---w customer-code*   string
   |  |     +---w (co-routing-or-general)?
   |  |        +--:(general)
   |  |        |  +---w diversity
   |  |        |  |  +---w existing-service*                 string
   |  |        |  |  +---w existing-service-applicability
   |  |        |  |  |  +---w site?   boolean
   |  |        |  |  |  +---w node?   boolean
   |  |        |  |  |  +---w srlg?   boolean
   |  |        |  |  +---w fiber-bundle*                     string
   |  |        |  |  +---w site*                             string
   |  |        |  |  +---w node-id*                          string
   |  |        |  +---w exclude
   |  |        |  |  +---w fiber-bundle*              string
   |  |        |  |  +---w site*                      string
   |  |        |  |  +---w node-id*                   string
   |  |        |  |  +---w supporting-service-name*   string
   |  |        |  +---w include
   |  |        |  |  +---w fiber-bundle*              string
   |  |        |  |  +---w site*                      string
   |  |        |  |  +---w node-id*                   string
   |  |        |  |  +---w supporting-service-name*   string
   |  |        |  +---w latency
   |  |        |     +---w max-latency?   uint32
   |  |        +--:(co-routing)
   |  |           +---w co-routing
   |  |              +---w existing-service*   string
   |  +--ro output    
   |     +--ro status            rpc-status
   |     +--ro status-message?   string
   +---x network-re-optimization      
      +---w input     
      |  +---w service-name?    string
      |  +---w a-end?           string
      |  +---w z-end?           string
      |  +---w pass-through?    string
      |  +---w customer-code?   string
      +--ro output    
         +--ro status                    rpc-status
         +--ro status-message?           string
         +--ro optimization-candidate?   string
notifications:
   +---n service-rpc-result      
   |  +--ro notification-type?   org-openroadm-common-service-types:service-notification-types
   |  +--ro status               rpc-status
   |  +--ro status-message?      string
   |  +--ro service-name         string
   |  +--ro actual-date?         yang:date-and-time
   +---n service-traffic-flow    
   |  +--ro service-name    string
   |  +--ro actual-date?    yang:date-and-time
   +---n service-notification    
      +--ro notificationType?          org-openroadm-resource-types:resource-notification-type
      +--ro service-name               string
      +--ro common-id?                 string
      +--ro sdnc-request-header
      |  +--ro request-id?          string
      |  +--ro rpc-action?          string
      |  +--ro notification-url?    string
      |  +--ro request-system-id?   string
      +--ro connection-type            connection-type
      +--ro lifecycle-state?           org-openroadm-common-types:lifecycle-state
      +--ro administrative-state?      org-openroadm-common-types:state
      +--ro operational-state?         org-openroadm-common-types:state
      +--ro condition?                 service-condition
      +--ro service-a-end
      |  +--ro service-rate      uint32
      |  +--ro service-format    service-format
      |  +--ro clli              string
      |  +--ro node-id?          string
      |  +--ro site
      |  +--ro tx-direction
      |  |  +--ro port
      |  |  |  +--ro port-device-name?   string
      |  |  |  +--ro port-type?          string
      |  |  |  +--ro port-name?          string
      |  |  |  +--ro port-rack?          string
      |  |  |  +--ro port-shelf?         string
      |  |  |  +--ro port-slot?          string
      |  |  |  +--ro port-sub-slot?      string
      |  |  +--ro lgx
      |  |  |  +--ro lgx-device-name?   string
      |  |  |  +--ro lgx-port-name?     string
      |  |  |  +--ro lgx-port-rack?     string
      |  |  |  +--ro lgx-port-shelf?    string
      |  |  +--ro tail
      |  |     +--ro tail-roadm
      |  |     |  +--ro node-id?   string
      |  |     +--ro xponder-port
      |  |     |  +--ro circuit-pack-name?   string
      |  |     |  +--ro port-name?           string
      |  |     +--ro tail-roadm-port-aid?             string
      |  |     +--ro tail-roadm-port-rack-location?   string
      |  +--ro rx-direction
      |  |  +--ro port
      |  |  |  +--ro port-device-name?   string
      |  |  |  +--ro port-type?          string
      |  |  |  +--ro port-name?          string
      |  |  |  +--ro port-rack?          string
      |  |  |  +--ro port-shelf?         string
      |  |  |  +--ro port-slot?          string
      |  |  |  +--ro port-sub-slot?      string
      |  |  +--ro lgx
      |  |  |  +--ro lgx-device-name?   string
      |  |  |  +--ro lgx-port-name?     string
      |  |  |  +--ro lgx-port-rack?     string
      |  |  |  +--ro lgx-port-shelf?    string
      |  |  +--ro tail
      |  |     +--ro tail-roadm
      |  |     |  +--ro node-id?   string
      |  |     +--ro xponder-port
      |  |     |  +--ro circuit-pack-name?   string
      |  |     |  +--ro port-name?           string
      |  |     +--ro tail-roadm-port-aid?             string
      |  |     +--ro tail-roadm-port-rack-location?   string
      |  +--ro optic-type        enumeration
      |  +--ro router
      |  |  +--ro node-id?      string
      |  |  +--ro ip-address?   inet:ip-address
      |  |  +--ro url?          string
      |  +--ro user-label?       string
      +--ro service-z-end
      |  +--ro service-rate      uint32
      |  +--ro service-format    service-format
      |  +--ro clli              string
      |  +--ro node-id?          string
      |  +--ro site
      |  +--ro tx-direction
      |  |  +--ro port
      |  |  |  +--ro port-device-name?   string
      |  |  |  +--ro port-type?          string
      |  |  |  +--ro port-name?          string
      |  |  |  +--ro port-rack?          string
      |  |  |  +--ro port-shelf?         string
      |  |  |  +--ro port-slot?          string
      |  |  |  +--ro port-sub-slot?      string
      |  |  +--ro lgx
      |  |  |  +--ro lgx-device-name?   string
      |  |  |  +--ro lgx-port-name?     string
      |  |  |  +--ro lgx-port-rack?     string
      |  |  |  +--ro lgx-port-shelf?    string
      |  |  +--ro tail
      |  |     +--ro tail-roadm
      |  |     |  +--ro node-id?   string
      |  |     +--ro xponder-port
      |  |     |  +--ro circuit-pack-name?   string
      |  |     |  +--ro port-name?           string
      |  |     +--ro tail-roadm-port-aid?             string
      |  |     +--ro tail-roadm-port-rack-location?   string
      |  +--ro rx-direction
      |  |  +--ro port
      |  |  |  +--ro port-device-name?   string
      |  |  |  +--ro port-type?          string
      |  |  |  +--ro port-name?          string
      |  |  |  +--ro port-rack?          string
      |  |  |  +--ro port-shelf?         string
      |  |  |  +--ro port-slot?          string
      |  |  |  +--ro port-sub-slot?      string
      |  |  +--ro lgx
      |  |  |  +--ro lgx-device-name?   string
      |  |  |  +--ro lgx-port-name?     string
      |  |  |  +--ro lgx-port-rack?     string
      |  |  |  +--ro lgx-port-shelf?    string
      |  |  +--ro tail
      |  |     +--ro tail-roadm
      |  |     |  +--ro node-id?   string
      |  |     +--ro xponder-port
      |  |     |  +--ro circuit-pack-name?   string
      |  |     |  +--ro port-name?           string
      |  |     +--ro tail-roadm-port-aid?             string
      |  |     +--ro tail-roadm-port-rack-location?   string
      |  +--ro optic-type        enumeration
      |  +--ro router
      |  |  +--ro node-id?      string
      |  |  +--ro ip-address?   inet:ip-address
      |  |  +--ro url?          string
      |  +--ro user-label?       string
      +--ro hard-constraints
      |  +--ro customer-code*   string
      |  +--ro (co-routing-or-general)?
      |     +--:(general)
      |     |  +--ro diversity
      |     |  |  +--ro existing-service*                 string
      |     |  |  +--ro existing-service-applicability
      |     |  |  |  +--ro site?   boolean
      |     |  |  |  +--ro node?   boolean
      |     |  |  |  +--ro srlg?   boolean
      |     |  |  +--ro fiber-bundle*                     string
      |     |  |  +--ro site*                             string
      |     |  |  +--ro node-id*                          string
      |     |  +--ro exclude
      |     |  |  +--ro fiber-bundle*              string
      |     |  |  +--ro site*                      string
      |     |  |  +--ro node-id*                   string
      |     |  |  +--ro supporting-service-name*   string
      |     |  +--ro include
      |     |  |  +--ro fiber-bundle*              string
      |     |  |  +--ro site*                      string
      |     |  |  +--ro node-id*                   string
      |     |  |  +--ro supporting-service-name*   string
      |     |  +--ro latency
      |     |     +--ro max-latency?   uint32
      |     +--:(co-routing)
      |        +--ro co-routing
      |           +--ro existing-service*   string
      +--ro soft-constraints
      |  +--ro customer-code*   string
      |  +--ro (co-routing-or-general)?
      |     +--:(general)
      |     |  +--ro diversity
      |     |  |  +--ro existing-service*                 string
      |     |  |  +--ro existing-service-applicability
      |     |  |  |  +--ro site?   boolean
      |     |  |  |  +--ro node?   boolean
      |     |  |  |  +--ro srlg?   boolean
      |     |  |  +--ro fiber-bundle*                     string
      |     |  |  +--ro site*                             string
      |     |  |  +--ro node-id*                          string
      |     |  +--ro exclude
      |     |  |  +--ro fiber-bundle*              string
      |     |  |  +--ro site*                      string
      |     |  |  +--ro node-id*                   string
      |     |  |  +--ro supporting-service-name*   string
      |     |  +--ro include
      |     |  |  +--ro fiber-bundle*              string
      |     |  |  +--ro site*                      string
      |     |  |  +--ro node-id*                   string
      |     |  |  +--ro supporting-service-name*   string
      |     |  +--ro latency
      |     |     +--ro max-latency?   uint32
      |     +--:(co-routing)
      |        +--ro co-routing
      |           +--ro existing-service*   string
      +--ro due-date?                  yang:date-and-time
      +--ro end-date?                  yang:date-and-time
      +--ro nc-code?                   string
      +--ro nci-code?                  string
      +--ro secondary-nci-code?        string
      +--ro customer?                  string
      +--ro customer-contact?          string
      +--ro operator-contact?          string
      +--ro latency?                   uint32
      +--ro fiber-span-srlgs*          string
      +--ro equipment-srgs*
      |  +--ro srg-number?   uint16
      +--ro supporting-service-name*   string
      +--ro topology
         +--ro aToZ* [id]
         |  +--ro id              string
         |  +--ro hop-type?       enumeration
         |  +--ro device
         |  |  +--ro node-id?   string
         |  +--ro resource
         |  |  +--ro (resource)?
         |  |     +--:(circuit-pack)
         |  |     |  +--ro circuit-pack-name     string
         |  |     +--:(port)
         |  |     |  +--ro port
         |  |     |     +--ro circuit-pack-name    string
         |  |     |     +--ro port-name?           string
         |  |     +--:(connection)
         |  |     |  +--ro connection-number?    string
         |  |     +--:(physical-link)
         |  |     |  +--ro physical-link-name    string
         |  |     +--:(internal-link)
         |  |     |  +--ro internal-link-name    string
         |  |     +--:(shelf)
         |  |     |  +--ro shelf-name            string
         |  |     +--:(srg)
         |  |     |  +--ro srg-number?           uint16
         |  |     +--:(degree)
         |  |     |  +--ro degree-number?        uint16
         |  |     +--:(service)
         |  |     |  +--ro service-name          string
         |  |     +--:(interface)
         |  |        +--ro interface-name        string
         |  +--ro resourceType
         |     +--ro type         resource-type-enum
         |     +--ro extension?   string
         +--ro zToA* [id]
            +--ro id              string
            +--ro hop-type?       enumeration
            +--ro device
            |  +--ro node-id?   string
            +--ro resource
            |  +--ro (resource)?
            |     +--:(circuit-pack)
            |     |  +--ro circuit-pack-name     string
            |     +--:(port)
            |     |  +--ro port
            |     |     +--ro circuit-pack-name    string
            |     |     +--ro port-name?           string
            |     +--:(connection)
            |     |  +--ro connection-number?    string
            |     +--:(physical-link)
            |     |  +--ro physical-link-name    string
            |     +--:(internal-link)
            |     |  +--ro internal-link-name    string
            |     +--:(shelf)
            |     |  +--ro shelf-name            string
            |     +--:(srg)
            |     |  +--ro srg-number?           uint16
            |     +--:(degree)
            |     |  +--ro degree-number?        uint16
            |     +--:(service)
            |     |  +--ro service-name          string
            |     +--:(interface)
            |        +--ro interface-name        string
            +--ro resourceType
               +--ro type         resource-type-enum
               +--ro extension?   string



Detailed Yang files can be retrieved on openroadm web site: www.openroadm.org.

Servicehandler Provider and RPC Implementation
Image Added

ServiceHandler Class Diagram

In this section we focus on the description of the main classes of the ServiceHandler bundle, it only provides information on the main classes.

ServicehandllerProvider registers ServicehandlerImpl class module to OpenDayLight RPC service registry and instantiates PceListenerImpl & RendererListenerImpl classes, which define the methods implementing the PCE and Renderer modules Listeners.

ServicehandlerImpl implements OrgOpenroadmServiceService interface, the YANG RPCs defined in module org-openroadm-service of OpenROADM.

PceListenerImpl implements TransportpcePceListener interface which is in charge of listening to PCE notifications.

RendererListenerImpl implements TransportpceRendererListener interface which is in charge of listening to Renderer notifications.

PCEServiceWrapper sends path-computation and cancel-resource-reserve to PCE module.

RendererServiceWrapper sends service-delete RPC to Renderer module.

ServiceDataStoreOperations is an OpenROADM Service operations API providing basic operations on services datastore.

ServiceDataStoreOperationsImpl implements ServiceDataStoreOperations interface.

ServiceCreateValidation checks if RPC service-create input is compliant.

ServicehandlerCompliancyCheck checks if sdnc-request-header in RPC input parameter is compliant.

ServicehandlerTxRxCheck checks if Tx/Rx info for A/Z end is not missing.

CheckCoherencyHardSoft checks if coherency between hard and soft constraints in rpc input parameters.

MappingConstraints maps Hard/soft constraint from OpenROADM to servicePath 1.5 models.

ModelMappingUtils is a set of tools to :

  • create PCE RPCs inputs from Service handler inputs
  • create Renderer RPCs inputs from Service handler inputs and PCE outputs
  • map service handler RPCs response
  • create OpenROADM service to be stored
  • create ServicePath 1.5 service to be stored

StubPceServiceOperations implements PathComputationService interface to be able to stub the PCE module operations : path-computation and cancel-resource requests.

StubRendererServiceOperations implements RendererServiceOperations interface to be able to stub Renderer module operations : service-implementation and service-delete requests.


Service model (connections)


Openroadm members are welcome to check text here below and correct any issue if need be.

High level

Actually, two kind of services are proposed:

  • service
  • temporary service

A service can be permanent or non permanent with due-date and end-date. In order to reserve resources before service activation, a temporary service can be created (with exact same characteristics) and activated until the due-date is reached for the service.

Type of servicePriorityAgreedComments
Service[orange] P1
[Telia]P1


Temp-service[orange] P2
[Telia]P2, if as comment

Orange: For time-constrainted services, it is suggested to have it in P1 without resource reservation in a first step.

Service header

By default, all non-optional parameters have to be managed unless further notice. Optional parameters are reviewed for implementation. Reviewers are free to add other optional parameters for P1 implementation

leafPrioritycomment
sdnc-request-header/request-id[Orange] P1
[Telia]P1

sdnc-request-header/system-id[Orange] P1
[Telia]P1
useful to determine which application has asked for the service
administrative-state[Orange] P1
[Telia]P1

operational-state[Orange] P1
[Telia]P1

Service a&z ends

LeafPriorityComment
node-id[Orange] P1
[Telia]P1
for compliancy with PCE spec, node-id spec is required (service-handler will not determine by itself the node on which implementig the service)
Tx & Rx / port / port-type[Orange] P2
[Telia]P2
Useful since it specifies the type of expected port
Tx & Rx / port / port-name[Orange] P1
[Telia]P2
Important and needed for the same reason as node-id (port-name is the info available from topology model). Other info do not seem crucial from service description point of view. Still useful to have it all in one place. Otherwise, a visit to device model is needed.
Tx & Rx / lgx / xxx[Orange] P2
[Telia] -
Defines the link from the transponder line-side up to the port pair of the add-drop through a cross-connect. Since we already know from topology (network model) on which port-pair the transponder is connected, what is the added value to give the LGX here ?
Tx & Rx / tail / xxx[Orange] P2
[Telia]P2
Defines the link from the transponder client-side up to the client equipment. We could imagine a tail model (not available from openroadm) that potentially limits connectivity (through connectivity matrix) between client equipment and client port of transponder. However, I suggests starting without constraint from the tail segment and start service from the transponder client-port in a first step.
user-label[Orange] P1
[Telia]P1
Label for service endpoint, defined by the user

Hard & Soft constraints

keep them all

topology

fiber-span-srlg are listed in "other section". Therefore, this section focuses on nodes. Service model lists the set of devices being used by the service.

LeafPriorityComment
SRG-number[Orange] P1mandatory info when node is edge ROADM
degree-number[Orange] P1mandatory info when node is ROADM

Other

LeafPriorityComment
due-date / end-date[Orange] P1
[Telia]P2
useful for BoD / calendaring use cases
customer/customer-contact/operator-contact[Orange] P2
[Telia]P2

Latency[Orange] P1
[Telia]P1

SRG numbers[Orange] P1
[Telia]P1

Interface A - YANG API

Beyond the get-config / edit-config (or their equivalent in REST) on service model, following RPC are requested :

RPCPriorityComment
service-create[Orange] P1regarding inputs/outputs, cf service model
service-feasibility-check[Orange] P1
equipment-notification[Orange] ?don't remember the purpose of this RPC...
service-delete[Orange] P1
temp-service-create[Orange] P3
temp-service-delete[Orange] P3
service-roll[Orange] P2
service-reconfigure[Orange] P2
service-restoration[Orange] P1
service-reversion[Orange] P1
service-reroute[Orange] P3 ?don't see the big difference with service-roll
service-reroute-confirm[Orange] P3 ?don't see the big difference with service-roll


NotificationsPriorityComment
service-rpc-result
what is the added valuue compared to the output of the rpc ?
service-traffic-flow[Orange] P1How can we change administrative state of services ? through "edit-config" (or some equivalent in REST) of the service ?
service-notification[Orange] P1This Notification that a service has been added, modified or removed.

Issues to be discussed :

  • response-code type is string. This is not accurate enough for an API. Should be enum (invalid, created, pending,...) ?
  • ack-final-indicator: shold be enum also

Interface B

Interface B relies on service path Yang model and rpc "path-calculation-request".

A tree view (Yang Model sent separately by email) is proposed here to modelize the input/output parameters to be passed over B interface. These parameters come from the service model with still some variations. These variations come mainly from PCE requirements section (but not only).

For discussion

module: org-openroadm-servicepath
  +--rw service-path-list
     +--rw service-paths* [service-path]
        +--rw service-path-name          string
        +--rw service-handler-header
        |  +--rw request-id    string
        +--rw service-a-end
        |  +--rw service-format    org-openroadm-common-service-types:service-format
        |  +--rw service-rate      uint32
        |  +--rw clli              string
        |  +--rw node-id?          string
        |  +--rw tx-direction
        |  |  +--rw port
        |  |     +--rw port-device-name?   string
        |  |     +--rw port-type?          string
        |  |     +--rw port-name?          string
        |  |     +--rw port-rack?          string
        |  |     +--rw port-shelf?         string
        |  |     +--rw port-slot?          string
        |  |     +--rw port-sub-slot?      string
        |  +--rw rx-direction
        |     +--rw port
        |        +--rw port-device-name?   string
        |        +--rw port-type?          string
        |        +--rw port-name?          string
        |        +--rw port-rack?          string
        |        +--rw port-shelf?         string
        |        +--rw port-slot?          string
        |        +--rw port-sub-slot?      string
        +--rw service-z-end
        |  +--rw service-format    org-openroadm-common-service-types:service-format
        |  +--rw service-rate      uint32
        |  +--rw clli              string
        |  +--rw node-id?          string
        |  +--rw tx-direction
        |  |  +--rw port
        |  |     +--rw port-device-name?   string
        |  |     +--rw port-type?          string
        |  |     +--rw port-name?          string
        |  |     +--rw port-rack?          string
        |  |     +--rw port-shelf?         string
        |  |     +--rw port-slot?          string
        |  |     +--rw port-sub-slot?      string
        |  +--rw rx-direction
        |     +--rw port
        |        +--rw port-device-name?   string
        |        +--rw port-type?          string
        |        +--rw port-name?          string
        |        +--rw port-rack?          string
        |        +--rw port-shelf?         string
        |        +--rw port-slot?          string
        |        +--rw port-sub-slot?      string
        +--rw hard-constraints
        |  +--rw customer-code*   string
        |  +--rw (co-routing-or-general)?
        |     +--:(general)
        |     |  +--rw diversity
        |     |  |  +--rw existing-service*                 string
        |     |  |  +--rw existing-service-applicability
        |     |  |     +--rw clli?   boolean
        |     |  |     +--rw node?   boolean
        |     |  |     +--rw srlg?   boolean
        |     |  +--rw exclude_
        |     |  |  +--rw SRLG*                      string
        |     |  |  +--rw clli*                      string
        |     |  |  +--rw node-id*                   string
        |     |  |  +--rw supporting-service-name*   string
        |     |  |  +--rw affinity?                  uint32
        |     |  +--rw include_
        |     |  |  +--rw ordered-hops* [hop-number]
        |     |  |     +--rw hop-number    uint16
        |     |  |     +--rw hop-type
        |     |  |        +--rw (hop-type)?
        |     |  |           +--:(SRLG)
        |     |  |           |  +--rw SRLG?      string
        |     |  |           +--:(clli)
        |     |  |           |  +--rw clli?      string
        |     |  |           +--:(node)
        |     |  |              +--rw node-id?   string
        |     |  +--rw latency
        |     |     +--rw max-latency?   uint32
        |     +--:(co-routing)
        |        +--rw co-routing
        |           +--rw existing-service*   string
        +--rw soft-constraints
        |  +--rw customer-code*   string
        |  +--rw (co-routing-or-general)?
        |     +--:(general)
        |     |  +--rw diversity
        |     |  |  +--rw existing-service*                 string
        |     |  |  +--rw existing-service-applicability
        |     |  |     +--rw clli?   boolean
        |     |  |     +--rw node?   boolean
        |     |  |     +--rw srlg?   boolean
        |     |  +--rw exclude_
        |     |  |  +--rw SRLG*                      string
        |     |  |  +--rw clli*                      string
        |     |  |  +--rw node-id*                   string
        |     |  |  +--rw supporting-service-name*   string
        |     |  |  +--rw affinity?                  uint32
        |     |  +--rw include_
        |     |  |  +--rw ordered-hops* [hop-number]
        |     |  |     +--rw hop-number    uint16
        |     |  |     +--rw hop-type
        |     |  |        +--rw (hop-type)?
        |     |  |           +--:(SRLG)
        |     |  |           |  +--rw SRLG?      string
        |     |  |           +--:(clli)
        |     |  |           |  +--rw clli?      string
        |     |  |           +--:(node)
        |     |  |              +--rw node-id?   string
        |     |  +--rw latency
        |     |     +--rw max-latency?   uint32
        |     +--:(co-routing)
        |        +--rw co-routing
        |           +--rw existing-service*   string
        +--rw pce-metric?                enumeration
        +--rw locally-protected-links?   boolean
        +--rw latency?                   uint32
        +--rw fiber-span-srlgs*          string
        +--rw equipment-srgs* [srg-number]
        |  +--rw srg-number    uint16
        +--rw supporting-service-name*   string
        +--rw path-description
           +--rw aToZ-direction
           |  +--rw aToZ-wavelength-number    uint32
           |  +--rw rate                      uint32
           |  +--rw modulation-format?        string
           |  +--rw aToZ* [id]
           |     +--rw id          string
           |     +--rw resource
           |        +--rw (resource)?
           |           +--:(termination-point)
           |           |  +--rw tp-id?     string
           |           |  +--rw node-id?   string
           |           +--:(link)
           |           |  +--rw link-id?   string
           |           +--:(node)
           |              +--rw node-id?   string
           +--rw zToA-direction
              +--rw zToA-wavelength-number    uint32
              +--rw rate                      uint32
              +--rw modulation-format?        string
              +--rw zToA* [id]
                 +--rw id          string
                 +--rw resource
                    +--rw (resource)?
                       +--:(termination-point)
                       |  +--rw tp-id?     string
                       |  +--rw node-id?   string
                       +--:(link)
                       |  +--rw link-id?   string
                       +--:(node)
                          +--rw node-id?   string

rpcs:

  +---x path-computation-request          
  |  +---w input     
  |  |  +---w service-name               string
  |  |  +---w resource-reserve           boolean
  |  |  +---w service-handler-header
  |  |  |  +---w request-id    string
  |  |  +---w service-a-end
  |  |  |  +---w service-format    org-openroadm-common-service-types:service-format
  |  |  |  +---w service-rate      uint32
  |  |  |  +---w clli              string
  |  |  |  +---w node-id?          string
  |  |  |  +---w tx-direction
  |  |  |  |  +---w port
  |  |  |  |     +---w port-device-name?   string
  |  |  |  |     +---w port-type?          string
  |  |  |  |     +---w port-name?          string
  |  |  |  |     +---w port-rack?          string
  |  |  |  |     +---w port-shelf?         string
  |  |  |  |     +---w port-slot?          string
  |  |  |  |     +---w port-sub-slot?      string
  |  |  |  +---w rx-direction
  |  |  |     +---w port
  |  |  |        +---w port-device-name?   string
  |  |  |        +---w port-type?          string
  |  |  |        +---w port-name?          string
  |  |  |        +---w port-rack?          string
  |  |  |        +---w port-shelf?         string
  |  |  |        +---w port-slot?          string
  |  |  |        +---w port-sub-slot?      string
  |  |  +---w service-z-end
  |  |  |  +---w service-format    org-openroadm-common-service-types:service-format
  |  |  |  +---w service-rate      uint32
  |  |  |  +---w clli              string
  |  |  |  +---w node-id?          string
  |  |  |  +---w tx-direction
  |  |  |  |  +---w port
  |  |  |  |     +---w port-device-name?   string
  |  |  |  |     +---w port-type?          string
  |  |  |  |     +---w port-name?          string
  |  |  |  |     +---w port-rack?          string
  |  |  |  |     +---w port-shelf?         string
  |  |  |  |     +---w port-slot?          string
  |  |  |  |     +---w port-sub-slot?      string
  |  |  |  +---w rx-direction
  |  |  |     +---w port
  |  |  |        +---w port-device-name?   string
  |  |  |        +---w port-type?          string
  |  |  |        +---w port-name?          string
  |  |  |        +---w port-rack?          string
  |  |  |        +---w port-shelf?         string
  |  |  |        +---w port-slot?          string
  |  |  |        +---w port-sub-slot?      string
  |  |  +---w hard-constraints
  |  |  |  +---w customer-code*   string
  |  |  |  +---w (co-routing-or-general)?
  |  |  |     +--:(general)
  |  |  |     |  +---w diversity
  |  |  |     |  |  +---w existing-service*                 string
  |  |  |     |  |  +---w existing-service-applicability
  |  |  |     |  |     +---w clli?   boolean
  |  |  |     |  |     +---w node?   boolean
  |  |  |     |  |     +---w srlg?   boolean
  |  |  |     |  +---w exclude_
  |  |  |     |  |  +---w SRLG*                      string
  |  |  |     |  |  +---w clli*                      string
  |  |  |     |  |  +---w node-id*                   string
  |  |  |     |  |  +---w supporting-service-name*   string
  |  |  |     |  |  +---w affinity?                  uint32
  |  |  |     |  +---w include_
  |  |  |     |  |  +---w ordered-hops* [hop-number]
  |  |  |     |  |     +---w hop-number    uint16
  |  |  |     |  |     +---w hop-type
  |  |  |     |  |        +---w (hop-type)?
  |  |  |     |  |           +--:(SRLG)
  |  |  |     |  |           |  +---w SRLG?      string
  |  |  |     |  |           +--:(clli)
  |  |  |     |  |           |  +---w clli?      string
  |  |  |     |  |           +--:(node)
  |  |  |     |  |              +---w node-id?   string
  |  |  |     |  +---w latency
  |  |  |     |     +---w max-latency?   uint32
  |  |  |     +--:(co-routing)
  |  |  |        +---w co-routing
  |  |  |           +---w existing-service*   string
  |  |  +---w soft-constraints
  |  |  |  +---w customer-code*   string
  |  |  |  +---w (co-routing-or-general)?
  |  |  |     +--:(general)
  |  |  |     |  +---w diversity
  |  |  |     |  |  +---w existing-service*                 string
  |  |  |     |  |  +---w existing-service-applicability
  |  |  |     |  |     +---w clli?   boolean
  |  |  |     |  |     +---w node?   boolean
  |  |  |     |  |     +---w srlg?   boolean
  |  |  |     |  +---w exclude_
  |  |  |     |  |  +---w SRLG*                      string
  |  |  |     |  |  +---w clli*                      string
  |  |  |     |  |  +---w node-id*                   string
  |  |  |     |  |  +---w supporting-service-name*   string
  |  |  |     |  |  +---w affinity?                  uint32
  |  |  |     |  +---w include_
  |  |  |     |  |  +---w ordered-hops* [hop-number]
  |  |  |     |  |     +---w hop-number    uint16
  |  |  |     |  |     +---w hop-type
  |  |  |     |  |        +---w (hop-type)?
  |  |  |     |  |           +--:(SRLG)
  |  |  |     |  |           |  +---w SRLG?      string
  |  |  |     |  |           +--:(clli)
  |  |  |     |  |           |  +---w clli?      string
  |  |  |     |  |           +--:(node)
  |  |  |     |  |              +---w node-id?   string
  |  |  |     |  +---w latency
  |  |  |     |     +---w max-latency?   uint32
  |  |  |     +--:(co-routing)
  |  |  |        +---w co-routing
  |  |  |           +---w existing-service*   string
  |  |  +---w pce-metric?                enumeration
  |  |  +---w locally-protected-links?   boolean
  |  +--ro output    
  |     +--ro configuration-response-common
  |     |  +--ro request-id             string
  |     |  +--ro response-code          string
  |     |  +--ro response-message?      string
  |     |  +--ro ack-final-indicator    string
  |     +--ro response-parameters
  |        +--ro hard-constraints
  |        |  +--ro customer-code*   string
  |        |  +--ro (co-routing-or-general)?
  |        |     +--:(general)
  |        |     |  +--ro diversity
  |        |     |  |  +--ro existing-service*                 string
  |        |     |  |  +--ro existing-service-applicability
  |        |     |  |     +--ro clli?   boolean
  |        |     |  |     +--ro node?   boolean
  |        |     |  |     +--ro srlg?   boolean
  |        |     |  +--ro exclude_
  |        |     |  |  +--ro SRLG*                      string
  |        |     |  |  +--ro clli*                      string
  |        |     |  |  +--ro node-id*                   string
  |        |     |  |  +--ro supporting-service-name*   string
  |        |     |  |  +--ro affinity?                  uint32
  |        |     |  +--ro include_
  |        |     |  |  +--ro ordered-hops* [hop-number]
  |        |     |  |     +--ro hop-number    uint16
  |        |     |  |     +--ro hop-type
  |        |     |  |        +--ro (hop-type)?
  |        |     |  |           +--:(SRLG)
  |        |     |  |           |  +--ro SRLG?      string
  |        |     |  |           +--:(clli)
  |        |     |  |           |  +--ro clli?      string
  |        |     |  |           +--:(node)
  |        |     |  |              +--ro node-id?   string
  |        |     |  +--ro latency
  |        |     |     +--ro max-latency?   uint32
  |        |     +--:(co-routing)
  |        |        +--ro co-routing
  |        |           +--ro existing-service*   string
  |        +--ro soft-constraints
  |        |  +--ro customer-code*   string
  |        |  +--ro (co-routing-or-general)?
  |        |     +--:(general)
  |        |     |  +--ro diversity
  |        |     |  |  +--ro existing-service*                 string
  |        |     |  |  +--ro existing-service-applicability
  |        |     |  |     +--ro clli?   boolean
  |        |     |  |     +--ro node?   boolean
  |        |     |  |     +--ro srlg?   boolean
  |        |     |  +--ro exclude_
  |        |     |  |  +--ro SRLG*                      string
  |        |     |  |  +--ro clli*                      string
  |        |     |  |  +--ro node-id*                   string
  |        |     |  |  +--ro supporting-service-name*   string
  |        |     |  |  +--ro affinity?                  uint32
  |        |     |  +--ro include_
  |        |     |  |  +--ro ordered-hops* [hop-number]
  |        |     |  |     +--ro hop-number    uint16
  |        |     |  |     +--ro hop-type
  |        |     |  |        +--ro (hop-type)?
  |        |     |  |           +--:(SRLG)
  |        |     |  |           |  +--ro SRLG?      string
  |        |     |  |           +--:(clli)
  |        |     |  |           |  +--ro clli?      string
  |        |     |  |           +--:(node)
  |        |     |  |              +--ro node-id?   string
  |        |     |  +--ro latency
  |        |     |     +--ro max-latency?   uint32
  |        |     +--:(co-routing)
  |        |        +--ro co-routing
  |        |           +--ro existing-service*   string
  |        +--ro pce-metric?                enumeration
  |        +--ro locally-protected-links?   boolean
  |        +--ro path-description
  |           +--ro aToZ-direction
  |           |  +--ro aToZ-wavelength-number    uint32
  |           |  +--ro rate                      uint32
  |           |  +--ro modulation-format?        string
  |           |  +--ro aToZ* [id]
  |           |     +--ro id          string
  |           |     +--ro resource
  |           |        +--ro (resource)?
  |           |           +--:(termination-point)
  |           |           |  +--ro tp-id?     string
  |           |           |  +--ro node-id?   string
  |           |           +--:(link)
  |           |           |  +--ro link-id?   string
  |           |           +--:(node)
  |           |              +--ro node-id?   string
  |           +--ro zToA-direction
  |              +--ro zToA-wavelength-number    uint32
  |              +--ro rate                      uint32
  |              +--ro modulation-format?        string
  |              +--ro zToA* [id]
  |                 +--ro id          string
  |                 +--ro resource
  |                    +--ro (resource)?
  |                       +--:(termination-point)
  |                       |  +--ro tp-id?     string
  |                       |  +--ro node-id?   string
  |                       +--:(link)
  |                       |  +--ro link-id?   string
  |                       +--:(node)
  |                          +--ro node-id?   string

notifications:

  +---n service-path-rpc-result    
  |  +--ro notification-type?   org-openroadm-common-service-path-types:service-path-notification-types
  |  +--ro path-description
  |  |  +--ro aToZ-direction
  |  |  |  +--ro aToZ-wavelength-number    uint32
  |  |  |  +--ro rate                      uint32
  |  |  |  +--ro modulation-format?        string
  |  |  |  +--ro aToZ* [id]
  |  |  |     +--ro id          string
  |  |  |     +--ro resource
  |  |  |        +--ro (resource)?
  |  |  |           +--:(termination-point)
  |  |  |           |  +--ro tp-id?     string
  |  |  |           |  +--ro node-id?   string
  |  |  |           +--:(link)
  |  |  |           |  +--ro link-id?   string
  |  |  |           +--:(node)
  |  |  |              +--ro node-id?   string
  |  |  +--ro zToA-direction
  |  |     +--ro zToA-wavelength-number    uint32
  |  |     +--ro rate                      uint32
  |  |     +--ro modulation-format?        string
  |  |     +--ro zToA* [id]
  |  |        +--ro id          string
  |  |        +--ro resource
  |  |           +--ro (resource)?
  |  |              +--:(termination-point)
  |  |              |  +--ro tp-id?     string
  |  |              |  +--ro node-id?   string
  |  |              +--:(link)
  |  |              |  +--ro link-id?   string
  |  |              +--:(node)
  |  |                 +--ro node-id?   string
  |  +--ro status               rpc-status-ex
  |  +--ro service-name         string
  |  +--ro actual-date?         yang:date-and-time


Interface C

based on service path Yang model and rpc "service implementation-request" & "service-delete".
Here below the tree view of the two RPCs, and of the notification service-rpc-result-sp

module: org-openroadm-servicepath

rpcs :

  +---x service-implementation-request    
  |  +---w input     
  |  |  +---w service-name              string
  |  |  +---w service-handler-header
  |  |  |  +---w request-id    string
  |  |  +---w service-a-end
  |  |  |  +---w service-format    org-openroadm-common-service-types:service-format
  |  |  |  +---w service-rate      uint32
  |  |  |  +---w clli              string
  |  |  |  +---w node-id?          string
  |  |  |  +---w tx-direction
  |  |  |  |  +---w port
  |  |  |  |     +---w port-device-name?   string
  |  |  |  |     +---w port-type?          string
  |  |  |  |     +---w port-name?          string
  |  |  |  |     +---w port-rack?          string
  |  |  |  |     +---w port-shelf?         string
  |  |  |  |     +---w port-slot?          string
  |  |  |  |     +---w port-sub-slot?      string
  |  |  |  +---w rx-direction
  |  |  |     +---w port
  |  |  |        +---w port-device-name?   string
  |  |  |        +---w port-type?          string
  |  |  |        +---w port-name?          string
  |  |  |        +---w port-rack?          string
  |  |  |        +---w port-shelf?         string
  |  |  |        +---w port-slot?          string
  |  |  |        +---w port-sub-slot?      string
  |  |  +---w service-z-end
  |  |  |  +---w service-format    org-openroadm-common-service-types:service-format
  |  |  |  +---w service-rate      uint32
  |  |  |  +---w clli              string
  |  |  |  +---w node-id?          string
  |  |  |  +---w tx-direction
  |  |  |  |  +---w port
  |  |  |  |     +---w port-device-name?   string
  |  |  |  |     +---w port-type?          string
  |  |  |  |     +---w port-name?          string
  |  |  |  |     +---w port-rack?          string
  |  |  |  |     +---w port-shelf?         string
  |  |  |  |     +---w port-slot?          string
  |  |  |  |     +---w port-sub-slot?      string
  |  |  |  +---w rx-direction
  |  |  |     +---w port
  |  |  |        +---w port-device-name?   string
  |  |  |        +---w port-type?          string
  |  |  |        +---w port-name?          string
  |  |  |        +---w port-rack?          string
  |  |  |        +---w port-shelf?         string
  |  |  |        +---w port-slot?          string
  |  |  |        +---w port-sub-slot?      string
  |  |  +---w path-description
  |  |     +---w aToZ-direction
  |  |     |  +---w aToZ-wavelength-number    uint32
  |  |     |  +---w rate                      uint32
  |  |     |  +---w modulation-format?        string
  |  |     |  +---w aToZ* [id]
  |  |     |     +---w id          string
  |  |     |     +---w resource
  |  |     |        +---w (resource)?
  |  |     |           +--:(termination-point)
  |  |     |           |  +---w tp-id?     string
  |  |     |           |  +---w node-id?   string
  |  |     |           +--:(link)
  |  |     |           |  +---w link-id?   string
  |  |     |           +--:(node)
  |  |     |              +---w node-id?   string
  |  |     +---w zToA-direction
  |  |        +---w zToA-wavelength-number    uint32
  |  |        +---w rate                      uint32
  |  |        +---w modulation-format?        string
  |  |        +---w zToA* [id]
  |  |           +---w id          string
  |  |           +---w resource
  |  |              +---w (resource)?
  |  |                 +--:(termination-point)
  |  |                 |  +---w tp-id?     string
  |  |                 |  +---w node-id?   string
  |  |                 +--:(link)
  |  |                 |  +---w link-id?   string
  |  |                 +--:(node)
  |  |                    +---w node-id?   string
  |  +--ro output    
  |     +--ro configuration-response-common
  |        +--ro request-id             string
  |        +--ro response-code          string
  |        +--ro response-message?      string
  |        +--ro ack-final-indicator    string
  +---x service-delete                    
     +---w input     
     |  +---w service-name              string
     |  +---w service-handler-header
     |     +---w request-id    string
     +--ro output    
        +--ro configuration-response-common
           +--ro request-id             string
           +--ro response-code          string
           +--ro response-message?      string
           +--ro ack-final-indicator    string
+---x cancel-resource-reserve           
  |  +---w input     
  |  |  +---w service-name              string
  |  |  +---w service-handler-header
  |  |     +---w request-id    string
  |  +--ro output    
  |     +--ro configuration-response-common
  |        +--ro request-id             string
  |        +--ro response-code          string
  |        +--ro response-message?      string
  |        +--ro ack-final-indicator    string

notifications:

  +---n service-rpc-result-sp      
     +--ro notification-type?   org-openroadm-common-service-path-types:service-path-notification-types
     +--ro path-topology
     |  +--ro aToZ* [id]
     |  |  +--ro id              string
     |  |  +--ro hop-type?       enumeration
     |  |  +--ro device
     |  |  |  +--ro node-id?   string
     |  |  +--ro resource
     |  |  |  +--ro (resource)?
     |  |  |     +--:(circuit-pack)
     |  |  |     |  +--ro circuit-pack-name     string
     |  |  |     +--:(port)
     |  |  |     |  +--ro port
     |  |  |     |     +--ro circuit-pack-name    string
     |  |  |     |     +--ro port-name?           string
     |  |  |     +--:(connection)
     |  |  |     |  +--ro connection-number     string
     |  |  |     +--:(physical-link)
     |  |  |     |  +--ro physical-link-name    string
     |  |  |     +--:(internal-link)
     |  |  |     |  +--ro internal-link-name    string
     |  |  |     +--:(shelf)
     |  |  |     |  +--ro shelf-name            string
     |  |  |     +--:(srg)
     |  |  |     |  +--ro srg-number            uint16
     |  |  |     +--:(degree)
     |  |  |     |  +--ro degree-number         uint16
     |  |  |     +--:(service)
     |  |  |     |  +--ro service-name          string
     |  |  |     +--:(interface)
     |  |  |        +--ro interface-name        string
     |  |  +--ro resourceType
     |  |     +--ro type         resource-type-enum
     |  |     +--ro extension?   string
     |  +--ro zToA* [id]
     |     +--ro id              string
     |     +--ro hop-type?       enumeration
     |     +--ro device
     |     |  +--ro node-id?   string
     |     +--ro resource
     |     |  +--ro (resource)?
     |     |     +--:(circuit-pack)
     |     |     |  +--ro circuit-pack-name     string
     |     |     +--:(port)
     |     |     |  +--ro port
     |     |     |     +--ro circuit-pack-name    string
     |     |     |     +--ro port-name?           string
     |     |     +--:(connection)
     |     |     |  +--ro connection-number     string
     |     |     +--:(physical-link)
     |     |     |  +--ro physical-link-name    string
     |     |     +--:(internal-link)
     |     |     |  +--ro internal-link-name    string
     |     |     +--:(shelf)
     |     |     |  +--ro shelf-name            string
     |     |     +--:(srg)
     |     |     |  +--ro srg-number            uint16
     |     |     +--:(degree)
     |     |     |  +--ro degree-number         uint16
     |     |     +--:(service)
     |     |     |  +--ro service-name          string
     |     |     +--:(interface)
     |     |        +--ro interface-name        string
     |     +--ro resourceType
     |        +--ro type         resource-type-enum
     |        +--ro extension?   string
     +--ro status               rpc-status-ex
     +--ro service-name         string
     +--ro actual-date?         yang:date-and-time


Service handler logic

proposal ongoing...

  • service creation


    service vreationImage Added

    Brief explanation:

    • Upon receipt of service-create RPC, service header and sdnc-request header compliancy are verified.
    • If compliant, service-request parameters are verified in order to check if there is no missing parameter that prevents calculating a path and implement a service.
    • If OK, common-id is verified in order to see if there is no routing policy provided. If yes, the routing constraints of the policy are recovered and coherency with hard/soft constraints provided in the input of the RPC.
    • If OK, service due-time is verified. For any service to be activated later on, it is proposed to store them and wait for due-time to become equal to immediate (see xx). This behavior shall be improved in further release.
    • Before sending the PCE request, input data need to be formatted according to the Service Handler - PCE interface data model.
    • Once PCE request is being sent to the PCE on interface B, PCE reply is expected until a timer expires.
    • If PCE reply is received before timer expiration with a positive result, a service is created with admin and operational status 'down'.
    • A service implementation request is sent to the render on interface C.
    • If a positive message is received from the renderer, service admin / operational status is changed to 'up'.
    • For any case of failure, response-code, response message and ack-final-indicator shall be provided.
  • service feasibility check

    Service feasibility checkImage Added
  • service delete
    Service deleteImage Added

  • service modify:

one or several technical parameters are modified in service description
Service modifyImage Added

  • service restore:

service has been reported to be down (for network issue) and a restoration is being requested

Service restoreImage Added

NB: service delete is sent to the renderer for deletion in the network. However, the service is not deleted in service database. Only its path is cleared since removed from the network.

  • service reversion:

return to nominal path is requested for a service previously rerouted/restored. This still requires to store nominal path. For a service being restored, only the new path path is stored (in the service model).

  • non-permanent services management

  • in-life service management

services can be disturbed because of some network events. An OAM function in ODL controller is in charge of collecting network events, SLA measurements and updates services accordingly. Service notfications are then sent to any external function having subscribed to these notifications. However, OAM function is out of the scope of transportpce project.

  • ...





Optical validation

This section gives an overview of how optical validation function is invoked in different implementations of the PCE.

...

...