1 module tapi-connectivity {
 
   2     namespace "urn:onf:otcc:yang:tapi-connectivity";
 
   3     prefix tapi-connectivity;
 
  10     import tapi-path-computation {
 
  11         prefix tapi-path-computation;
 
  13     organization "ONF OTCC (Open Transport Configuration & Control) Project";
 
  15         Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
 
  16         Project List: <mailto:transport-api@opennetworking.org>
 
  17         Editor: Karthik Sethuraman
 
  18                 <mailto:karthik.sethuraman@necam.com>";
 
  20         This module contains TAPI Connectivity Model definitions.
 
  21         Source: TapiConnectivity.uml
 
  22         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
 
  23         License: This module is distributed under the Apache License 2.0";
 
  25         description "ONF Transport API version 2.1.0
 
  26         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
 
  27         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
 
  28         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
 
  29                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
 
  32         description "ONF Transport API version 2.0.2
 
  33         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
 
  34         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
 
  35         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
 
  36                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
 
  39         description "ONF Transport API version 2.0.1
 
  40         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
 
  41         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
 
  42         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
 
  43                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
 
  46         description "ONF Transport API version 2.0.0
 
  47         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
 
  48         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
 
  49         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
 
  50                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
 
  52     augment "/tapi-common:context" {
 
  53         uses connectivity-context-g;
 
  54         description "Augments the base TAPI Context with ConnectivityService information";
 
  56     augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
 
  61     /*************************
 
  62     * definitions of references
 
  63     *************************/
 
  64     grouping connectivity-service-ref-g {
 
  65         leaf connectivity-service-uuid {
 
  67                 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
 
  74     grouping connectivity-service-end-point-ref-g {
 
  75         uses connectivity-service-ref-g;
 
  76         leaf connectivity-service-end-point-local-id {
 
  78                 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:end-point/tapi-connectivity:local-id';
 
  84     grouping connection-end-point-ref-g {
 
  85         uses tapi-topology:node-edge-point-ref-g;
 
  86         leaf connection-end-point-uuid {
 
  88                 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
 
  95     grouping connection-ref-g {
 
  96         leaf connection-uuid {
 
  98                 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
 
 105     grouping switch-control-ref-g {
 
 106         uses connection-ref-g;
 
 107         leaf switch-control-uuid {
 
 109                 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:uuid';
 
 116     grouping route-ref-g {
 
 117         uses connection-ref-g;
 
 118         leaf route-local-id {
 
 120                 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
 
 127     /***********************
 
 128     * package object-classes
 
 129     **********************/
 
 130         grouping connection-g {
 
 131             list connection-end-point {
 
 132                 uses connection-end-point-ref-g;
 
 133                 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
 
 138             list lower-connection {
 
 139                 uses connection-ref-g;
 
 140                 key 'connection-uuid';
 
 142                 description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).
 
 143                     Aggregation is used as for the Node/Topology  to allow changes in hierarchy.
 
 144                     Connection aggregation reflects Node/Topology aggregation.
 
 145                     The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
 
 147             list supported-client-link {
 
 148                 uses tapi-topology:link-ref-g;
 
 149                 key 'topology-uuid link-uuid';
 
 159             list switch-control {
 
 162                 uses switch-control-g;
 
 166                 type tapi-common:forwarding-direction;
 
 170             leaf layer-protocol-name {
 
 171                 type tapi-common:layer-protocol-name;
 
 175             uses tapi-common:resource-spec-g;
 
 176             uses tapi-common:operational-state-pac-g;
 
 177             description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
 
 178                 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
 
 180         grouping connection-end-point-g {
 
 181             leaf layer-protocol-name {
 
 182                 type tapi-common:layer-protocol-name;
 
 186             leaf layer-protocol-qualifier {
 
 187                 type tapi-common:layer-protocol-qualifier;
 
 191             container parent-node-edge-point {
 
 192                 uses tapi-topology:node-edge-point-ref-g;
 
 196             list client-node-edge-point {
 
 197                 uses tapi-topology:node-edge-point-ref-g;
 
 198                 key 'topology-uuid node-uuid node-edge-point-uuid';
 
 202             list aggregated-connection-end-point {
 
 203                 uses connection-end-point-ref-g;
 
 204                 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
 
 208             leaf connection-port-direction {
 
 209                 type tapi-common:port-direction;
 
 211                 description "The orientation of defined flow at the EndPoint.";
 
 213             leaf connection-port-role {
 
 214                 type tapi-common:port-role;
 
 216                 description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
 
 218             uses tapi-common:resource-spec-g;
 
 219             uses tapi-common:operational-state-pac-g;
 
 220             uses tapi-common:termination-pac-g;
 
 221             description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
 
 222                 The structure of LTP supports all transport protocols including circuit and packet forms.";
 
 224         grouping connectivity-constraint-g {
 
 226                 type tapi-common:layer-protocol-name;
 
 235                 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
 
 237             container requested-capacity {
 
 238                 uses tapi-common:capacity-g;
 
 241             leaf connectivity-direction {
 
 242                 type tapi-common:forwarding-direction;
 
 246                 uses tapi-common:time-range-g;
 
 249             container coroute-inclusion {
 
 250                 uses connectivity-service-ref-g;
 
 253             list diversity-exclusion {
 
 254                 uses connectivity-service-ref-g;
 
 255                 key 'connectivity-service-uuid';
 
 260         grouping connectivity-service-g {
 
 264                 uses connectivity-service-end-point-g;
 
 268                 uses connection-ref-g;
 
 269                 key 'connection-uuid';
 
 273             uses tapi-common:service-spec-g;
 
 274             uses connectivity-constraint-g;
 
 275             uses tapi-path-computation:routing-constraint-g;
 
 276             uses tapi-path-computation:topology-constraint-g;
 
 277             uses resilience-constraint-g;
 
 278             uses tapi-common:admin-state-pac-g;
 
 279             description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
 
 280                 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
 
 282         grouping connectivity-service-end-point-g {
 
 283             leaf layer-protocol-name {
 
 284                 type tapi-common:layer-protocol-name;
 
 287             leaf layer-protocol-qualifier {
 
 288                 type tapi-common:layer-protocol-qualifier;
 
 291             container service-interface-point {
 
 292                 uses tapi-common:service-interface-point-ref-g;
 
 295             list connection-end-point {
 
 296                 uses connection-end-point-ref-g;
 
 297                 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
 
 302                 uses tapi-common:capacity-g;
 
 306                 type tapi-common:port-direction;
 
 307                 description "The orientation of defined flow at the EndPoint.";
 
 310                 type tapi-common:port-role;
 
 311                 description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
 
 313             leaf protection-role {
 
 314                 type protection-role;
 
 315                 description "To specify the protection role of this Port when create or update ConnectivityService.";
 
 317             uses tapi-common:local-class-g;
 
 318             uses tapi-common:admin-state-pac-g;
 
 319             description "The association of the FC to LTPs is made via EndPoints.
 
 320                 The EndPoint (EP) object class models the access to the FC function.
 
 321                 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
 
 322                 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
 
 323                 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
 
 324                 The EP replaces the Protection Unit of a traditional protection model.
 
 325                 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
 
 328             list connection-end-point {
 
 329                 uses connection-end-point-ref-g;
 
 330                 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
 
 335             uses tapi-common:local-class-g;
 
 336             description "The FC Route (FcRoute) object class models the individual routes of an FC.
 
 337                 The route of an FC object is represented by a list of FCs at a lower level.
 
 338                 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
 
 340         grouping connectivity-context-g {
 
 341             list connectivity-service {
 
 343                 uses connectivity-service-g;
 
 355             list selected-connection-end-point {
 
 356                 uses connection-end-point-ref-g;
 
 357                 key 'topology-uuid node-uuid node-edge-point-uuid connection-end-point-uuid';
 
 361             list selected-route {
 
 363                 key 'connection-uuid route-local-id';
 
 367             leaf selection-control {
 
 368                 type selection-control;
 
 369                 description "Degree of administrative control applied to the switch selection.";
 
 371             leaf selection-reason {
 
 372                 type selection-reason;
 
 374                 description "The reason for the current switch selection.";
 
 376             leaf switch-direction {
 
 377                 type tapi-common:port-direction;
 
 378                 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
 
 380             uses tapi-common:local-class-g;
 
 381             description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection).
 
 382                 If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
 
 383                 The FC switch represents and defines a protection switch structure encapsulated in the FC.
 
 384                 Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit.
 
 385                 One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
 
 386                 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
 
 387                 It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
 
 388                 It may be locked out (prevented from switching), force switched or manual switched.
 
 389                 It will indicate switch state and change of state.
 
 390                 The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
 
 391                 The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
 
 392                 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
 
 394         grouping switch-control-g {
 
 395             list sub-switch-control {
 
 396                 uses switch-control-ref-g;
 
 397                 key 'connection-uuid switch-control-uuid';
 
 405             uses tapi-common:resource-spec-g;
 
 406             uses resilience-constraint-g;
 
 407             description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
 
 409         grouping resilience-constraint-g {
 
 410             container resilience-type {
 
 411                 uses tapi-topology:resilience-type-g;
 
 414             leaf restoration-coordinate-type {
 
 415                 type coordinate-type;
 
 416                 description " The coordination mechanism between multi-layers.";
 
 418             leaf restore-priority {
 
 422             leaf reversion-mode {
 
 424                 description "Indcates whether the protection scheme is revertive or non-revertive.";
 
 426             leaf wait-to-revert-time {
 
 429                 description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
 
 433                 description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
 
 437                 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
 
 438                     This overrides all other protection control states including forced.
 
 439                     If the item is locked out then it cannot be used under any circumstances.
 
 440                     Note: Only relevant when part of a protection scheme.";
 
 444                 description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
 
 445                     Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
 
 446                     All administrative controls of any aspect of protection are rejected.";
 
 448             leaf is-coordinated-switching-both-ends {
 
 450                 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
 
 452             leaf max-switch-times {
 
 454                 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
 
 456             leaf-list preferred-restoration-layer {
 
 457                 type tapi-common:layer-protocol-name;
 
 458                 description "Indicate which layer this resilience parameters package configured for.";
 
 460             description "A list of control parameters to apply to a switch.";
 
 462         grouping cep-list-g {
 
 463             list connection-end-point {
 
 465                 uses connection-end-point-g;
 
 471     /***********************
 
 472     * package type-definitions
 
 473     **********************/
 
 474         typedef service-type {
 
 476                 enum POINT_TO_POINT_CONNECTIVITY {
 
 479                 enum POINT_TO_MULTIPOINT_CONNECTIVITY {
 
 482                 enum MULTIPOINT_CONNECTIVITY {
 
 485                 enum ROOTED_MULTIPOINT_CONNECTIVITY {
 
 491         typedef reversion-mode {
 
 494                     description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";
 
 497                     description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
 
 500             description "The reversion mode associated with protection.";
 
 502         typedef selection-control {
 
 505                     description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
 
 506                         This overrides all other protection control states including forced.
 
 507                         If the item is locked out then it cannot be used under any circumstances.
 
 508                         Note: Only relevant when part of a protection scheme.";
 
 520             description "Possible degrees of administrative control applied to the Route selection.";
 
 522         typedef selection-reason {
 
 536                 enum WAIT_TO_REVERT {
 
 539                 enum SIGNAL_DEGRADE {
 
 546             description "The cause of the current route selection.";
 
 548         typedef coordinate-type {
 
 556                 enum WAIT_FOR_NOTIFICATION {
 
 562         typedef protection-role {
 
 579                 enum PROTECT_RESTORE {
 
 586     /***********************
 
 588     **********************/
 
 589         rpc get-connection-details {
 
 592                 leaf service-id-or-name {
 
 596                 leaf connection-id-or-name {
 
 602                 container connection {
 
 608         rpc get-connectivity-service-list {
 
 612                     uses connectivity-service-g;
 
 617         rpc get-connectivity-service-details {
 
 620                 leaf service-id-or-name {
 
 627                     uses connectivity-service-g;
 
 632         rpc create-connectivity-service {
 
 638                     uses connectivity-service-end-point-g;
 
 641                 container connectivity-constraint {
 
 642                     uses connectivity-constraint-g;
 
 645                 container routing-constraint {
 
 646                     uses tapi-path-computation:routing-constraint-g;
 
 649                 container topology-constraint {
 
 650                     uses tapi-path-computation:topology-constraint-g;
 
 653                 list resilience-constraint {
 
 654                     uses resilience-constraint-g;
 
 664                     uses connectivity-service-g;
 
 669         rpc update-connectivity-service {
 
 672                 leaf service-id-or-name {
 
 676                 container end-point {
 
 677                     uses connectivity-service-end-point-g;
 
 680                 container connectivity-constraint {
 
 681                     uses connectivity-constraint-g;
 
 684                 container routing-constraint {
 
 685                     uses tapi-path-computation:routing-constraint-g;
 
 688                 container topology-constraint {
 
 689                     uses tapi-path-computation:topology-constraint-g;
 
 692                 list resilience-constraint {
 
 693                     uses resilience-constraint-g;
 
 703                     uses connectivity-service-g;
 
 708         rpc delete-connectivity-service {
 
 711                 leaf service-id-or-name {