Adding required ietf YANG models to support OTN tunnel as part of SOTN NNI-based...
[sdnc/oam.git] / platform-logic / restconfapi-yang / src / main / yang / sotn / ietf-otn-tunnel@2018-06-07.yang
diff --git a/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-otn-tunnel@2018-06-07.yang b/platform-logic/restconfapi-yang/src/main/yang/sotn/ietf-otn-tunnel@2018-06-07.yang
new file mode 100644 (file)
index 0000000..2c24a6f
--- /dev/null
@@ -0,0 +1,837 @@
+module ietf-otn-tunnel {\r
+  yang-version 1.1;\r
+\r
+  namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel";\r
+  prefix "otn-tunnel";\r
+\r
+  import ietf-te {\r
+    prefix "te";\r
+  }\r
+\r
+  import ietf-otn-types {\r
+    prefix "otn-types";\r
+  }\r
+\r
+  import ietf-te-types {\r
+    prefix "te-types";\r
+  }\r
+\r
+  import ietf-inet-types {\r
+    prefix "inet";\r
+  }\r
+\r
+  organization\r
+    "IETF CCAMP Working Group";\r
+  contact\r
+    "WG Web: <http://tools.ietf.org/wg/ccamp/>\r
+     WG List: <mailto:ccamp@ietf.org>\r
+\r
+     Editor: Haomian Zheng\r
+             <mailto:zhenghaomian@huawei.com>\r
+\r
+     Editor: Aihua Guo\r
+             <mailto:aihuaguo@huawei.com>\r
+\r
+     Editor: Italo Busi\r
+             <mailto:italo.busi@huawei.com>\r
+\r
+     Editor: Anurag Sharma\r
+             <mailto:ansha@google.com>\r
+\r
+     Editor: Rajan Rao\r
+             <mailto:rrao@infinera.com>\r
+\r
+     Editor: Sergio Belotti\r
+             <mailto:sergio.belotti@nokia.com>\r
+\r
+     Editor: Victor Lopez\r
+             <mailto:victor.lopezalvarez@telefonica.com>\r
+\r
+     Editor: Yunbo Li\r
+             <mailto:liyunbo@chinamobile.com>\r
+\r
+     Editor: Yunbin Xu\r
+             <mailto:xuyunbin@ritt.cn>";\r
+\r
+  description\r
+    "This module defines a model for OTN Tunnel Services.";\r
+\r
+  revision "2018-06-07" {\r
+    description\r
+      "Revision 0.5";\r
+    reference\r
+      "draft-ietf-ccamp-otn-tunnel-model-02";\r
+  }\r
+\r
+ /*\r
+  * Groupings\r
+  */\r
+\r
+  grouping otn-tunnel-endpoint {\r
+    description "Parameters for OTN tunnel";\r
+\r
+    leaf payload-treatment {\r
+      type enumeration {\r
+        enum switching {\r
+          description "Client signal is switched to another tunnel\r
+                       in this domain";\r
+        }\r
+        enum transport {\r
+          description "Client signal is transparently transmitted\r
+                       in this domain";\r
+        }\r
+      }\r
+      default switching;\r
+      description\r
+        "Treatment of the incoming payload. Payload can be switched\r
+         or transported.";\r
+    }\r
+\r
+    leaf src-client-signal {\r
+      type identityref {\r
+        base otn-types:client-signal;\r
+      }\r
+      description\r
+        "Client signal at the source endpoint of the tunnel";\r
+    }\r
+\r
+    leaf src-tpn {\r
+      type uint16 {\r
+        range "0..4095";\r
+      }\r
+      description\r
+        "Tributary Port Number. Applicable in case of mux services";\r
+      reference\r
+        "RFC7139: GMPLS Signaling Extensions for Control of Evolving\r
+         G.709 Optical Transport Networks";\r
+    }\r
+\r
+    leaf src-tsg {\r
+      type identityref {\r
+        base otn-types:tributary-slot-granularity;\r
+      }\r
+      description\r
+        "Tributary slot granularity.\r
+         Applicable in case of mux services";\r
+      reference\r
+        "G.709/Y.1331, February 2016: Interfaces for the\r
+         Optical Transport Network (OTN)";\r
+    }\r
+\r
+    leaf src-tributary-slot-count {\r
+      type uint16;\r
+      description\r
+        "Number of tributary slots used at the source.";\r
+    }\r
+\r
+    container src-tributary-slots {\r
+      description\r
+        "A list of tributary slots used by the client service.\r
+         Applicable in case of mux services";\r
+      leaf-list values {\r
+        type uint8;\r
+          description\r
+            "Tributary tributary slot value";\r
+          reference\r
+            "G.709/Y.1331, February 2016: Interfaces for the\r
+             Optical Transport Network (OTN)";\r
+      }\r
+    }\r
+\r
+    leaf dst-client-signal {\r
+      type identityref {\r
+        base otn-types:client-signal;\r
+      }\r
+      description\r
+        "Client signal at the destination endpoint of the tunnel";\r
+    }\r
+\r
+    leaf dst-tpn {\r
+      type uint16 {\r
+        range "0..4095";\r
+      }\r
+      description\r
+        "Tributary Port Number. Applicable in case of mux services";\r
+      reference\r
+        "RFC7139: GMPLS Signaling Extensions for Control of Evolving\r
+         G.709 Optical Transport Networks.";\r
+    }\r
+\r
+    leaf dst-tsg {\r
+      type identityref {\r
+        base otn-types:tributary-slot-granularity;\r
+      }\r
+      description\r
+        "Tributary slot granularity.\r
+         Applicable in case of mux services";\r
+      reference\r
+        "G.709/Y.1331, February 2016: Interfaces for the\r
+         Optical Transport Network (OTN)";\r
+    }\r
+\r
+    leaf dst-tributary-slot-count {\r
+      type uint16;\r
+      description\r
+        "Number of tributary slots used at the destination.";\r
+    }\r
+\r
+    container dst-tributary-slots {\r
+      description\r
+        "A list of tributary slots used by the client service.\r
+         Applicable in case of mux services";\r
+      leaf-list values {\r
+        type uint8;\r
+        description\r
+          "Tributary slot value";\r
+        reference\r
+          "G.709/Y.1331, February 2016: Interfaces for the\r
+           Optical Transport Network (OTN)";\r
+      }\r
+    }\r
+  }\r
+\r
+  /*\r
+  Note: Comment has been given to authors of TE Tunnel model to add\r
+  list of endpoints under config to support P2MP tunnel.\r
+  */\r
+\r
+ /*\r
+  * Data nodes\r
+  */\r
+\r
+  augment "/te:te/te:tunnels/te:tunnel" {\r
+    description\r
+      "Augment with additional parameters required for OTN service";\r
+    uses otn-tunnel-endpoint;\r
+  }\r
+\r
+  /*\r
+   * Augment TE bandwidth\r
+   */\r
+\r
+        /* Augment bandwidth of named-path-constraints */\r
+  augment "/te:te/te:globals/te:named-path-constraints/"\r
+        + "te:named-path-constraint/"\r
+        + "te:te-bandwidth/te:technology" {\r
+    description "OTN bandwidth.";\r
+    case otn {\r
+      uses otn-types:otn-path-bandwidth;\r
+    }\r
+  }\r
+\r
+  /* Augment bandwdith of tunnel */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:te-bandwidth/te:technology" {\r
+    description "OTN bandwidth.";\r
+    case otn {\r
+      uses otn-types:otn-path-bandwidth;\r
+    }\r
+  }\r
+\r
+  /* Augment bandwidth of primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:te-bandwidth/te:technology" {\r
+    description "OTN bandwidth.";\r
+    case otn {\r
+      uses otn-types:otn-path-bandwidth;\r
+    }\r
+  }\r
+\r
+  /* Augment bandwidth of reverse primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:p2p-reverse-primary-path/"\r
+        + "te:te-bandwidth/te:technology" {\r
+    description "OTN bandwidth.";\r
+    case otn {\r
+      uses otn-types:otn-path-bandwidth;\r
+    }\r
+  }\r
+\r
+  /* Augment bandwidht of secondary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:te-bandwidth/te:technology" {\r
+    description "OTN bandwidth.";\r
+    case otn {\r
+      uses otn-types:otn-path-bandwidth;\r
+    }\r
+  }\r
+  \r
+  /*\r
+   * Augment TE label.\r
+   */\r
+\r
+  /* Augment label hop of route-object-exclude-always of named-path-constraints */\r
+  augment "/te:te/te:globals/te:named-path-constraints/"\r
+        + "te:named-path-constraint/te:explicit-route-objects/"\r
+        + "te:route-object-exclude-always/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-object-include-exclude of named-path-constraints */\r
+  augment "/te:te/te:globals/te:named-path-constraints/"\r
+        + "te:named-path-constraint/te:explicit-route-objects/"\r
+        + "te:route-object-include-exclude/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+\r
+  /* Augment label hop of route-object-exclude-always of primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:explicit-route-objects/"\r
+        + "te:route-object-exclude-always/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-object-include-exclude of primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:explicit-route-objects/"\r
+        + "te:route-object-include-exclude/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-exclude of primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:optimizations/te:algorithm/te:metric/"\r
+        + "te:optimization-metric/te:explicit-route-exclude-objects/"\r
+        + "te:route-object-exclude-object/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-include of primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:optimizations/te:algorithm/te:metric/"\r
+        + "te:optimization-metric/te:explicit-route-include-objects/"\r
+        + "te:route-object-include-object/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of path-route of primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:state/te:path-properties/"\r
+        + "te:path-route-objects/te:path-computed-route-object/"\r
+        + "te:state/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /*\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:state/te:lsps/te:lsp/te:record-route-subobjects/"\r
+               + "te:record-route-subobject/"\r
+               + "te:state/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+         uses otn-types:otn-path-label;\r
+       }\r
+  }\r
+  */\r
+\r
+  /* Augment label hop of path-route of primary LSP */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:state/te:lsps/te:lsp/te:path-properties/"\r
+        + "te:path-route-objects/te:path-computed-route-object/"\r
+        + "te:state/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-object-exclude-always of reverse primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:p2p-reverse-primary-path/"\r
+        + "te:explicit-route-objects/"\r
+        + "te:route-object-exclude-always/"\r
+        + "te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-object-include-exclude of reverse primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:p2p-reverse-primary-path/"\r
+        + "te:explicit-route-objects/"\r
+        + "te:route-object-include-exclude/"\r
+        + "te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-exclude of reverse primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:p2p-reverse-primary-path/"\r
+        + "te:optimizations/te:algorithm/te:metric/"\r
+        + "te:optimization-metric/te:explicit-route-exclude-objects/"\r
+        + "te:route-object-exclude-object/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-include of reverse primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:p2p-reverse-primary-path/"\r
+        + "te:optimizations/te:algorithm/te:metric/"\r
+        + "te:optimization-metric/te:explicit-route-include-objects/"\r
+        + "te:route-object-include-object/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of label hop of path-route of reverse primary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:p2p-reverse-primary-path/"\r
+        + "te:state/te:path-properties/"\r
+        + "te:path-route-objects/te:path-computed-route-object/"\r
+        + "te:state/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /*\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+               + "te:p2p-reverse-primary-path/"\r
+        + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/"\r
+               + "te:record-route-subobject/"\r
+               + "te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+         uses otn-types:otn-path-label;\r
+       }\r
+  }\r
+  */\r
+\r
+  /* Augment label hop of path-route of reverse primary LSP */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-primary-paths/te:p2p-primary-path/"\r
+        + "te:p2p-reverse-primary-path/"\r
+        + "te:state/te:lsps/te:lsp/te:path-properties/"\r
+        + "te:path-route-objects/te:path-computed-route-object/"\r
+        + "te:state/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-object-exclude-always of secondary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:explicit-route-objects/"\r
+        + "te:route-object-exclude-always/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-object-include-exclude of secondary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:explicit-route-objects/"\r
+        + "te:route-object-include-exclude/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-exclude of secondary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:optimizations/te:algorithm/te:metric/"\r
+        + "te:optimization-metric/te:explicit-route-exclude-objects/"\r
+        + "te:route-object-exclude-object/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of route-include of secondary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:optimizations/te:algorithm/te:metric/"\r
+        + "te:optimization-metric/te:explicit-route-include-objects/"\r
+        + "te:route-object-include-object/te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /* Augment label hop of label hop of path-route of secondary path */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:state/te:path-properties/te:path-route-objects/" \r
+        + "te:path-computed-route-object/te:state/te:type/te:label/" \r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /*\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:state/te:lsps/te:lsp/te:lsp-record-route-subobjects/"\r
+               + "te:record-route-subobject/"\r
+               + "te:type/te:label/"\r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+         uses otn-types:otn-path-label;\r
+       }\r
+  }\r
+  */\r
+\r
+  /* Augment label hop of path-route of secondary LSP */\r
+  augment "/te:te/te:tunnels/te:tunnel/"\r
+        + "te:p2p-secondary-paths/te:p2p-secondary-path/"\r
+        + "te:state/te:lsps/te:lsp/te:path-properties/"\r
+        + "te:path-route-objects/"\r
+        + "te:path-computed-route-object/te:state/te:type/te:label/" \r
+        + "te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+      uses otn-types:otn-path-label;\r
+    }\r
+  }\r
+\r
+  /*\r
+  augment "/te:te/te:lsp-state/"\r
+        + "te:lsp-record-route-subobjects/te:lsp-record-route-subobject/" \r
+               + "te:record-route-subobject/" \r
+               + "te:type/te:label/te:label-hop/te:te-label/te:technology" {\r
+    description "OTN label.";\r
+    case otn {\r
+         uses otn-types:otn-path-label;\r
+       }\r
+  }\r
+  */\r
+  \r
+  \r
+  grouping p2p-path-ero {\r
+    description\r
+      "TE tunnel ERO configuration grouping";\r
+\r
+    leaf te-default-metric {\r
+      type uint32;\r
+      description\r
+        "Traffic engineering metric.";\r
+    }\r
+    leaf te-delay-metric {\r
+      type uint32;\r
+      description\r
+        "Traffic engineering delay metric.";\r
+    }\r
+    leaf te-hop-metric {\r
+      type uint32;\r
+      description\r
+        "Traffic engineering hop metric.";\r
+    }\r
+    container explicit-route-objects {\r
+      description "Explicit route objects container";\r
+      list explicit-route-object {\r
+        key "index";\r
+        description\r
+          "List of explicit route objects";\r
+        leaf explicit-route-usage {\r
+          type identityref {\r
+            base te-types:route-usage-type;\r
+          }\r
+          description "An explicit-route hop action.";\r
+        }\r
+        uses te-types:explicit-route-hop {\r
+                 augment "type/label/label-hop/te-label/technology" {\r
+                   description "OTN label.";\r
+            case otn {\r
+                 uses otn-types:otn-path-label;\r
+               }\r
+                 }\r
+               }\r
+      }\r
+    }\r
+  }\r
+\r
+  rpc otn-te-tunnel-path-compute {\r
+    description "OTN TE tunnel path computation";\r
+    input {\r
+      list request {\r
+        key "id";\r
+        description "A list of path computation requests.";\r
+\r
+        leaf id {\r
+          type uint8;\r
+          description\r
+            "Request ID.";\r
+        }\r
+        leaf type {\r
+          type identityref {\r
+            base te-types:tunnel-type;\r
+          }\r
+          description "TE tunnel type.";\r
+        }\r
+        leaf source {\r
+          type inet:ip-address;\r
+          description\r
+            "TE tunnel source address.";\r
+        }\r
+        leaf destination {\r
+          type inet:ip-address;\r
+          description\r
+            "TE tunnel destination address";\r
+        }\r
+        leaf src-tp-id {\r
+          type binary;\r
+          description\r
+            "TE tunnel source termination point identifier.";\r
+        }\r
+        leaf dst-tp-id {\r
+          type binary;\r
+          description\r
+            "TE tunnel destination termination point identifier.";\r
+        }\r
+        leaf switching-layer {\r
+          type identityref {\r
+            base te-types:switching-capabilities;\r
+          }\r
+          description\r
+            "Switching layer where the requests are computed.";\r
+        }\r
+        leaf encoding {\r
+          type identityref {\r
+            base te-types:lsp-encoding-types;\r
+          }\r
+          description "LSP encoding type";\r
+        }\r
+        leaf protection-type {\r
+          type identityref {\r
+            base te-types:lsp-protection-type;\r
+          }\r
+          description "LSP protection type";\r
+        }\r
+        leaf restoration-type {\r
+          type identityref {\r
+            base te-types:lsp-restoration-type;\r
+          }\r
+          description "LSP restoration type";\r
+        }\r
+        leaf provider-id {\r
+          type te-types:te-global-id;\r
+          description\r
+            "An identifier to uniquely identify a provider.";\r
+        }\r
+        leaf client-id {\r
+          type te-types:te-global-id;\r
+          description\r
+            "An identifier to uniquely identify a client.";\r
+        }\r
+        leaf te-topology-id {\r
+          type te-types:te-topology-id;\r
+          description\r
+            "It is presumed that a datastore will contain many\r
+             topologies. To distinguish between topologies it is\r
+             vital to have UNIQUE topology identifiers.";\r
+        }\r
+        leaf setup-priority {\r
+          type uint8 {\r
+            range "0..7";\r
+          }\r
+          description\r
+            "TE LSP setup priority";\r
+        }\r
+        leaf hold-priority {\r
+          type uint8 {\r
+            range "0..7";\r
+          }\r
+          description\r
+            "TE LSP hold priority";\r
+        }\r
+        leaf te-path-metric-type {\r
+          type identityref {\r
+            base te-types:path-metric-type;\r
+          }\r
+          default te-types:path-metric-te;\r
+          description\r
+            "The tunnel path metric type.";\r
+        }\r
+\r
+        leaf odu-type {\r
+          type identityref{\r
+            base otn-types:tributary-protocol-type;\r
+          }\r
+          description "Type of ODU";\r
+        }\r
+        container p2p-primary-paths {\r
+          description "Set of P2P primary paths container";\r
+          list p2p-primary-path {\r
+            key "name";\r
+            description\r
+              "List of primary paths for this tunnel.";\r
+            leaf name {\r
+              type string;\r
+              description "TE path name";\r
+            }\r
+            uses p2p-path-ero;\r
+          }\r
+        }\r
+        container p2p-secondary-paths {\r
+          description "Set of P2P secondary paths container";\r
+          list p2p-secondary-path {\r
+            key "name";\r
+            description\r
+              "List of secondary paths for this tunnel.";\r
+            leaf name {\r
+              type string;\r
+              description "TE path name";\r
+            }\r
+            uses p2p-path-ero;\r
+          }\r
+        }\r
+        uses otn-tunnel-endpoint;\r
+      }\r
+    }\r
+    output {\r
+      leaf return-code {\r
+        type enumeration {\r
+          enum success {\r
+            description "success";\r
+          }\r
+          enum aborted {\r
+            description "aborted";\r
+          }\r
+          enum destination-not-found {\r
+            description "destination-not-found";\r
+          }\r
+          enum invalid-argument {\r
+            description "invalid-argument";\r
+          }\r
+          enum no-memory {\r
+            description "no-memory";\r
+          }\r
+          enum no-path-found {\r
+            description "no-path-found";\r
+          }\r
+          enum other-error {\r
+            description "other-error";\r
+          }\r
+          enum some-path-not-found {\r
+            description "some-path-not-found";\r
+          }\r
+          enum source-not-found {\r
+            description "source-not-found";\r
+          }\r
+          enum topology-error {\r
+            description "topology-error";\r
+          }\r
+        }\r
+        description\r
+          "Return code";\r
+      }\r
+      list result {\r
+        key "id";\r
+        description\r
+          "A list of results for all requests.";\r
+\r
+        leaf id {\r
+          type uint8;\r
+          description\r
+            "Request ID";\r
+        }\r
+        container p2p-primary-paths {\r
+          description "Set of P2P primary paths container";\r
+          list p2p-primary-path {\r
+            key "name";\r
+            description\r
+              "List of resultant primary paths for this tunnel.";\r
+            leaf name {\r
+              type string;\r
+              description "TE path name";\r
+            }\r
+            uses p2p-path-ero;\r
+          }\r
+        }\r
+        container p2p-secondary-paths {\r
+          description "Set of P2P secondary paths container";\r
+          list p2p-secondary-path {\r
+            key "name";\r
+            description\r
+              "List of resultant secondary paths for this tunnel.";\r
+            leaf name {\r
+              type string;\r
+              description "TE path name";\r
+            }\r
+            uses p2p-path-ero;\r
+          }\r
+        }\r
+      }\r
+    }\r
+  }\r
+}\r