CCAMP Working Group                                               Y. Lee
Internet Draft                                                 D. Dhody
Internet-Draft                                                      SKKU
Intended status: Standard Standards Track                                  A. Guo                                H. Zheng
Expires: September 7, 2019 March 14, 2020                              Huawei Technologies
                                                                  A. Guo
                                                              Individual
                                                                V. Lopez
                                                              Telefonica
                                                                 D. King
                                                        U.
                                                      Univ. of Lancaster
                                                                 B. Yoon
                                                                    ETRI
                                                              R. Vilalta
                                                                    CTTC

                                                          March 7,
                                                      September 11, 2019

                   A Yang Data Model for WSON Tunnel

                   draft-ietf-ccamp-wson-tunnel-model-03
                 draft-ietf-ccamp-wson-tunnel-model-04

Abstract

   This document provides a YANG data model for WSON TE tunnel.

Status of this This Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups. (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts.
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft will expire on September 7, 2019. March 14, 2020.

Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info)
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction...................................................2  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1. Terminology...............................................3  Terminology . . . . . . . . . . . . . . . . . . . . . . .   2
     1.2.  Tree diagram..............................................3 Diagram  . . . . . . . . . . . . . . . . . . . . . .   3
     1.3.  Prefixes in Data Node Names...............................3 Names . . . . . . . . . . . . . . .   3
   2. YANG  WSON Tunnel Model (Tree Structure)....................................4
   3. TE Description . . . . . . . . . . . . . . . .   4
     2.1.  Overview of WSON Tunnel Model for WSON......................................16 . . . . . . . . . . . . . .   4
     2.2.  WSON-specific Parameters in Tunnel Model  . . . . . . . .   4
   3.  WSON Tunnel YANG Tree . . . . . . . . . . . . . . . . . . . .   4
   4. Security Considerations.......................................33  WSON Tunnel YANG Code . . . . . . . . . . . . . . . . . . . .  19
   5. IANA Considerations...........................................34  Security Considerations . . . . . . . . . . . . . . . . . . .  35
   6. Acknowledgments...............................................34  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  35
   7. References....................................................35
      7.1.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  36
   8.  Contributors  . . . . . . . . . . . . . . . . . . . . . . . .  36
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  36
     9.1.  Normative References.....................................35
      7.2. References  . . . . . . . . . . . . . . . . . .  36
     9.2.  Informative References...................................35
   8. Contributors..................................................36 References  . . . . . . . . . . . . . . . . .  37
   Authors' Addresses...............................................36 Addresses  . . . . . . . . . . . . . . . . . . . . . . .  39

1.  Introduction

   This document provides a YANG data model for WSON tunnel model.  The
   YANG model described in this document is a WSON technology-specific
   Yang Tunnel model based on the information model developed in
   [RFC7446] and the two encoding documents [RFC7581] and [RFC7579] and [RFC7581] that
   developed protocol independent encodings based on [RFC7446].

   This document augments the generic TE tunnel model [TE-Tunnel].
   [I-D.ietf-teas-yang-te].

1.1.  Terminology

   Refer to [RFC7446] and [RFC7581] for the key terms used in this
   document.

   The following terms are defined in [RFC7950] and are not redefined
   here:

   o  client
   o  server

   o  augment

   o  data model

   o  data node

   The following terms are defined in [RFC6241] and are not redefined
   here:

   o  configuration data

   o  state data

   The terminology for describing YANG data models is found in
   [RFC7950].

1.2.  Tree diagram Diagram

   A simplified graphical representation of the data model is used in
   chapter 2
   Section 3 of this this document.  The meaning of the symbols in these
   diagrams is defined in [RFC8340].

1.3.  Prefixes in Data Node Names

   In this document, names of data nodes and other data model objects
   are prefixed using the standard prefix associated with the
   corresponding YANG imported modules, as shown modules.  The module ietf-layer0-types
   specified in Table 1.

      +-------------+--------------------------+-----------------+ [I-D.ietf-ccamp-layer0-types], ietf-layer1-types
   specified in [I-D.ietf-ccamp-layer1-types], ietf-te-path-computation
   specified in [I-D.ietf-teas-yang-path-computation] and ietf-te
   specified in [I-D.ietf-teas-yang-te] are imported in this module.

    +-------------+-------------------+------------------------------+
    | Prefix      | YANG module       |         Reference            |
      +-------------+--------------------------+-----------------+
    +-------------+-------------------+------------------------------+
    | layer0-types| ietf-layer0-types        | [WSON-TOPO]     |
      | wson-tunnel layer0-types|ietf-layer0-types  |[I-D.ietf-ccamp-layer0-types] | ietf-wson-tunnel
    | [RFCXXXX] layer1-types|ietf-layer1-types  |[I-D.ietf-ccamp-layer1-types] |
    | tepc        | ietf-te-path-computation | [TE-PC]         |  |ietf-te-path-computation |[I-D.ietf-teas-yang-path-computation]|
    | te          | ietf-te           |[I-D.ietf-teas-yang-te]       | [TE-Tunnel]     |
      | otn-types
    | ietf-otn-types wson-tunnel | [OTN-TOPO] ietf-wson-tunnel  |[RFC XXXX]                    |
      +-------------+--------------------------+-----------------+

             Table 1: Prefixes and corresponding YANG modules
    +-------------+-------------------+------------------------------+

   Note: The RFC Editor will replace XXXX with the number assigned to
   the RFC once this draft becomes an RFC.

2.  WSON Tunnel Model Description

2.1.  Overview of WSON Tunnel Model

   The WSON tunnel model is using TE tunnel [I-D.ietf-teas-yang-te] and
   TE types [I-D.ietf-teas-yang-te-types] as a basic model and augment
   to the TE tunnel with WSON-specific parameters, including the
   bandwidth information and label information.  It is also worth noting
   that the WSON tunnel provisioning is usually based on the WSON
   topology.  Therefore the WSON tunnel model is usually used together
   with WSON topology model specified in [I-D.ietf-ccamp-wson-yang].

   More scenarios and model applications can be found in
   [I-D.ietf-ccamp-transport-nbi-app-statement] and
   [I-D.ietf-teas-actn-yang].  The current model is following the YANG
   language specification as [RFC7950], and the corresponding protocol
   is recommended to be Netconf protocol in [RFC6241] or RESTconf
   protocol in [RFC8040].

   The YANG module ietf-wson-tunnel defined in this document conforms to
   the Network Management Datastore Architecture (NMDA) defined in
   [RFC8342].

2.2.  WSON-specific Parameters in Tunnel Model (Tree Structure)

   WSON specific parameters have been augmenting to the TE tunnel
   models.  The attributes on both of the source and destination need to
   be configured when setting up the tunnel.  Typical parameters,
   including bandwidth and grid information, are required in the WSON
   tunnel model.  These parameters are consistent with the framework in
   [RFC6163], and the specification in [RFC7579] and [RFC7581].

   The WSON bandwidth information has been augmenting to various
   sections of TE tunnel models, including tunnel bandwidth, primary
   path bandwidth and so on.  The WSON label information has been
   augmenting to label hop of a group of routing objects and also LSPs.

3.  WSON Tunnel YANG Tree

   module: ietf-wson-tunnel
     augment /te:te/te:tunnels/te:tunnel:
    +-rw
       +--rw src-client-signal?   identityref
    +-rw
       +--rw dst-client-signal?   identityref
    +-rw
       +--rw fec-type?            identityref
    +-rw
       +--rw termination-type?    identityref
    +-rw
       +--rw bit-stuffing?        boolean
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:te-bandwidth/te:technology:
    +-:(wson)
       +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint/te:te-bandwidth
               /te:technology:
       +--:(wson)
          +--rw bandwidth-type?   identityref
     augment /te:te/te:tunnels/te:tunnel/te:te-bandwidth/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:te-bandwidth
               /te:technology:
       +--:(wson)
          +--rw bandwidth-type?   identityref
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:te-bandwidth/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:te-bandwidth
               /te:technology:
       +--:(wson)
          +--rw bandwidth-type?   identityref
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:te-bandwidth/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:te-bandwidth/te:technology:
       +--:(wson)
          +--rw bandwidth-type?   identityref
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:te-bandwidth/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:te-bandwidth
               /te:technology:
       +--:(wson)
          +--rw bandwidth-type?   identityref
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:explicit-route-objects-always/te:route-object-exclude-
always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint
               /te:explicit-route-objects-always
               /te:route-object-exclude-always/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:explicit-route-objects-always/te:route-object-include-
exclude/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint
               /te:explicit-route-objects-always
               /te:route-object-include-exclude/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:label-restrictions/te:label-restriction:
    +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint/te:path-in-segment
               /te:label-restrictions/te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint/te:path-in-segment
               /te:label-restrictions/te:label-restriction
               /te:label-start/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-in-segment/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint/te:path-in-segment
               /te:label-restrictions/te:label-restriction
               /te:label-end/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:label-restrictions/te:label-restriction:

    +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint/te:path-out-segment
               /te:label-restrictions/te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:label-restrictions/te:label-
restriction/te:label-start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint/te:path-out-segment
               /te:label-restrictions/te:label-restriction
               /te:label-start/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:globals/te:named-path-constraints/te:named-path-
constraint/te:path-out-segment/te:label-restrictions/te:label-
restriction/te:label-end/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:globals/te:named-path-constraints
               /te:named-path-constraint/te:path-out-segment
               /te:label-restrictions/te:label-restriction
               /te:label-end/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-exclude-objects/te:route-object-exclude-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:optimizations
               /te:algorithm/te:metric/te:optimization-metric
               /te:explicit-route-exclude-objects
               /te:route-object-exclude-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-include-objects/te:route-object-include-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:optimizations
               /te:algorithm/te:metric/te:optimization-metric
               /te:explicit-route-include-objects
               /te:route-object-include-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n

     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:explicit-route-objects-always/te:route-object-exclude-
always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path
               /te:explicit-route-objects-always
               /te:route-object-exclude-always/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:explicit-route-objects-always/te:route-object-include-
exclude/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path
               /te:explicit-route-objects-always
               /te:route-object-include-exclude/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:label-restrictions/te:label-restriction:
    +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:path-in-segment
               /te:label-restrictions/te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:path-in-segment
               /te:label-restrictions/te:label-restriction
               /te:label-start/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:

    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:path-in-segment
               /te:label-restrictions/te:label-restriction
               /te:label-end/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:label-restrictions/te:label-restriction:
    +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:path-out-segment
               /te:label-restrictions/te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:path-out-segment
               /te:label-restrictions/te:label-restriction
               /te:label-start/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:path-out-segment
               /te:label-restrictions/te:label-restriction
               /te:label-end/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:computed-paths-properties/te:computed-path-properties/te:path-
properties/te:path-route-objects/te:path-computed-route-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path
               /te:computed-paths-properties
               /te:computed-path-properties/te:path-properties
               /te:path-route-objects
               /te:path-computed-route-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:lsps/te:lsp/te:lsp-record-route-information/te:lsp-record-route-
information/te:type/te:label/te:label-hop/te:te-label/te:technology:

    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:lsps/te:lsp
               /te:lsp-record-route-information
               /te:lsp-record-route-information/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:lsps/te:lsp/te:path-properties/te:path-route-objects/te:path-computed-
route-object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:lsps/te:lsp
               /te:path-properties/te:path-route-objects
               /te:path-computed-route-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-exclude-objects/te:route-object-exclude-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:optimizations/te:algorithm/te:metric
               /te:optimization-metric
               /te:explicit-route-exclude-objects
               /te:route-object-exclude-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-include-objects/te:route-object-include-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:optimizations/te:algorithm/te:metric
               /te:optimization-metric
               /te:explicit-route-include-objects
               /te:route-object-include-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:explicit-route-objects-always/te:route-
object-exclude-always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:explicit-route-objects-always
               /te:route-object-exclude-always/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:explicit-route-objects-always/te:route-
object-include-exclude/te:type/te:label/te:label-hop/te:te-
label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:explicit-route-objects-always
               /te:route-object-include-exclude/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:path-in-segment/te:label-
restrictions/te:label-restriction:
    +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:path-in-segment/te:label-restrictions
               /te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:path-in-segment/te:label-
restrictions/te:label-restriction/te:label-start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:path-in-segment/te:label-restrictions
               /te:label-restriction/te:label-start/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:path-in-segment/te:label-
restrictions/te:label-restriction/te:label-end/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:path-in-segment/te:label-restrictions
               /te:label-restriction/te:label-end/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n

     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:path-out-segment/te:label-
restrictions/te:label-restriction:
    +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:path-out-segment/te:label-restrictions
               /te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:path-out-segment/te:label-
restrictions/te:label-restriction/te:label-start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:path-out-segment/te:label-restrictions
               /te:label-restriction/te:label-start/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:path-out-segment/te:label-
restrictions/te:label-restriction/te:label-end/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:path-out-segment/te:label-restrictions
               /te:label-restriction/te:label-end/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:computed-paths-properties/te:computed-
path-properties/te:path-properties/te:path-route-objects/te:path-computed-
route-object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:computed-paths-properties
               /te:computed-path-properties/te:path-properties
               /te:path-route-objects
               /te:path-computed-route-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:lsps/te:lsp/te:lsp-record-route-
information/te:lsp-record-route-information/te:type/te:label/te:label-
hop/te:te-label/te:technology:
    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:lsps/te:lsp/te:lsp-record-route-information
               /te:lsp-record-route-information/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-
path/te:p2p-primary-reverse-path/te:lsps/te:lsp/te:path-properties/te:path-
route-objects/te:path-computed-route-object/te:type/te:label/te:label-
hop/te:te-label/te:technology:
    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths
               /te:p2p-primary-path/te:p2p-primary-reverse-path
               /te:lsps/te:lsp/te:path-properties
               /te:path-route-objects
               /te:path-computed-route-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-exclude-objects/te:route-object-exclude-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:optimizations
               /te:algorithm/te:metric/te:optimization-metric
               /te:explicit-route-exclude-objects
               /te:route-object-exclude-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:optimizations/te:algorithm/te:metric/te:optimization-
metric/te:explicit-route-include-objects/te:route-object-include-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:optimizations
               /te:algorithm/te:metric/te:optimization-metric
               /te:explicit-route-include-objects
               /te:route-object-include-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:explicit-route-objects-always/te:route-object-exclude-
always/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path
               /te:explicit-route-objects-always
               /te:route-object-exclude-always/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:explicit-route-objects-always/te:route-object-include-
exclude/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path
               /te:explicit-route-objects-always
               /te:route-object-include-exclude/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-rw  +--rw dwdm-n?              int16
             |     +-:(super)     |        +-rw          layer0-types:dwdm-n
             |     +--:(super)
             |        +--rw subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-rw
             +--:(cwdm)
                +--rw cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:label-restrictions/te:label-restriction:
    +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:path-in-segment
               /te:label-restrictions/te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:path-in-segment
               /te:label-restrictions/te:label-restriction
               /te:label-start/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-in-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:path-in-segment
               /te:label-restrictions/te:label-restriction
               /te:label-end/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:label-restrictions/te:label-restriction:
    +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:path-out-segment
               /te:label-restrictions/te:label-restriction:
       +--rw grid-type?   identityref
    +-rw
       +--rw priority?    uint8
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
start/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:path-out-segment
               /te:label-restrictions/te:label-restriction
               /te:label-start/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:path-out-segment/te:label-restrictions/te:label-restriction/te:label-
end/te:te-label/te:technology:
    +-:(wson)
       +-rw /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:path-out-segment
               /te:label-restrictions/te:label-restriction
               /te:label-end/te:te-label/te:technology:
       +--:(wson)
          +--rw (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-rw  +--rw dwdm-n?   int16
          +-:(cwdm)
             +-rw   layer0-types:dwdm-n
             +--:(cwdm)
                +--rw cwdm-n?   int16   layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:computed-paths-properties/te:computed-path-properties/te:path-
properties/te:path-route-objects/te:path-computed-route-
object/te:type/te:label/te:label-hop/te:te-label/te:technology:

    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path
               /te:computed-paths-properties
               /te:computed-path-properties/te:path-properties
               /te:path-route-objects
               /te:path-computed-route-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:lsps/te:lsp/te:lsp-record-route-information/te:lsp-record-route-
information/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:lsps/te:lsp
               /te:lsp-record-route-information
               /te:lsp-record-route-information/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/te:p2p-secondary-
path/te:lsps/te:lsp/te:path-properties/te:path-route-objects/te:path-computed-
route-object/te:type/te:label/te:label-hop/te:te-label/te:technology:
    +-:(wson)
       +-ro /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths
               /te:p2p-secondary-path/te:lsps/te:lsp
               /te:path-properties/te:path-route-objects
               /te:path-computed-route-object/te:type/te:label
               /te:label-hop/te:te-label/te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:te/te:lsps-state/te:lsp/te:lsp-record-route-information/te:lsp-
record-route-information/te:type/te:label/te:label-hop/te:te-
label/te:technology:
    +-:(wson)
       +-ro /te:te/te:lsps-state/te:lsp
               /te:lsp-record-route-information
               /te:lsp-record-route-information/te:type
               /te:label/te:label-hop/te:te-label
               /te:technology:
       +--:(wson)
          +--ro (grid-type)?
          +-:(dwdm)
             +--:(dwdm)
             |  +-ro  +--ro (single-or-super-channel)?
             |     +-:(single)     +--:(single)
             |     |  +-ro  +--ro dwdm-n?              int16
             |     +-:(super)     |        +-ro          layer0-types:dwdm-n
             |     +--:(super)
             |        +--ro subcarrier-dwdm-n*   int16
          +-:(cwdm)
             +-ro
             +--:(cwdm)
                +--ro cwdm-n?                    int16
                        layer0-types:cwdm-n
     augment /te:tunnels-rpc/te:input/te:tunnel-info/tepc:path-request:
    +- /te:tunnels-rpc/te:input/te:tunnel-info
               /tepc:path-request:
       +-- src-client-signal?       identityref
    +-
       +-- dst-client-signal?       identityref
    +-
       +-- fec-type?                identityref
    +-
       +-- termination-type?        identityref
    +-
       +-- bit-stuffing?            boolean
    +-
       +-- wavelength-assignment?   identityref

3. TE Tunnel Model for

4.  WSON Tunnel YANG Code

<CODE BEGINS> file "ietf-wson-tunnel@2019-03-06.yang" BEGINS>file "ietf-wson-tunnel@2019-09-11.yang"

module ietf-wson-tunnel {
  yang-version
  //yang-version 1.1;

  namespace "urn:ietf:params:xml:ns:yang:ietf-wson-tunnel";
  prefix "wson-tunnel";

  import ietf-te { prefix "te"; }
  import ietf-layer0-types{ prefix "layer0-types"; }
  import ietf-te-path-computation { prefix "tepc"; }
  import ietf-otn-types ietf-layer1-types { prefix "otn-types";} "layer1-types";}

  organization
    "IETF CCAMP Working Group";

  contact
    "WG Web:   <http://tools.ietf.org/wg/ccamp/>
     WG List:  <mailto:ccamp@ietf.org>

     WG Chair: Daniele Ceccarelli
               <mailto:daniele.ceccarelli@ericsson.com>
               <daniele.ceccarelli@ericsson.com>

     WG Chair: Fatai Zhang
               <mailto:zhangfatai@huawei.com>
               <zhangfatai@huawei.com>

     Editor: Young Lee <leeyoung@huawei.com> <leeyoung.tx@gmail.com>
         Editor: Haomian Zheng <zhenghaomian@huawei.com>
     Editor: Aihua Guo <aihuaguo@huawei.com> <aihuaguo.ietf@gmail.com>
     Editor: Dhruv Dhody <dhruv.ietf@gmail.com> Victor Lopez <victor.lopezalvarez@telefonica.com>
         Editor: Daniel King <d.king@lancaster.ac.uk>
         Editor: Bin Yeong Yoon <byyun@etri.re.kr>
     Editor: Ricard Vilalta <ricard.vilalta@cttc.es>";
     description
       "This module defines a model for WSON Tunnel Services."; WSON Tunnel Services.

         Copyright (c) 2019 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.
     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD
     License set forth in Section 4.c of the IETF Trust's Legal
     Provisions Relating to IETF Documents
     (http://trustee.ietf.org/license-info).
     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  revision "2019-03-06" "2019-09-11" {
    description
      "Updates to version 3"; 4";
    reference "version 3"; 4";
  }

  /* Groupings. */
  grouping wson-tunnel-attributes {
    description "Parameters for WSON tunnel.";

    leaf src-client-signal {
      type identityref {
        base otn-types:client-signal; layer1-types:client-signal;
      }
      description
        "Client signal at the source endpoint of
         the tunnel.";
    }

    leaf dst-client-signal {
      type identityref {
        base otn-types:client-signal; layer1-types:client-signal;
      }
      description
        "Client signal at the destination endpoint of
         the tunnel.";
    }

    leaf fec-type {
      type identityref {
        base layer0-types:fec-type;
      }
      description
        "FEC type.";
    }

    leaf termination-type {
      type identityref {
        base layer0-types:term-type;
      }
      description
        "Termination type.";
    }

    leaf bit-stuffing {
      type boolean;
      description
        "Bit stuffing enabled/disabled.";
    }
  }

  grouping wson-path-constraints {
    description
      "Global named path constraints configuration
       grouping for WSON tunnel";

    leaf wavelength-assignment {
      type identityref {
        base layer0-types:wavelength-assignment;
      }
      description "Wavelength Allocation Method";
    }
  }

 /*
  * Data nodes
  */

  augment "/te:te/te:tunnels/te:tunnel" {
    description
      "Augment with additional parameters required for WSON tunnel.";
    uses wson-tunnel-attributes;
  }
  /*
   * Augment TE bandwidth
   */

  /* Augment bandwidth of named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /* Augment bandwdith of tunnel */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;

    }
  }

  /* Augment bandwidth of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /* Augment bandwidth of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /* Augment bandwidht of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:te-bandwidth/te:technology" {
    description "WSON bandwidth.";
    case wson {
      uses layer0-types:wson-path-bandwidth;
    }
  }

  /*
   * Augment TE label.
   */

  /* Augment label hop of route-object-exclude-always of named-path-
constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }

  }

  /* Augment label hop of route-object-include-exclude of named-path-
constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the path-in-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-in-segment
     of named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the path-in-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-in-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }
  /* Augment label restrictions for the path-out-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }
  /* Augment label restrictions start for the path-out-segment
     of named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the path-out-segment of
     named-path-constraints */
  augment "/te:te/te:globals/te:named-path-constraints/"
        + "te:named-path-constraint/te:path-out-segment/"
        + "te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of route-exclude of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }
  /* Augment label hop of route-include of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-exclude-always of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the path-in-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-in-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the path-in-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the path-out-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-out-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the path-out-segment of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of path-route of primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:computed-paths-properties/"
                + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:lsps/te:lsp/te:lsp-record-route-information/"
        + "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of path-route of primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:lsps/te:lsp/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-exclude of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-include of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-exclude-always of reverse primary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude of reverse primary path
*/
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the path-in-segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-in-segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }
  /* Augment label restrictions end for the path-in-segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the path-out-segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-out-segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the path-out-segment of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of path-route of reverse primary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:computed-paths-properties/"
                + "te:computed-path-properties/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of reverse primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:lsps/te:lsp/te:lsp-record-route-information/"
        + "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of path-route of reverse primary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-primary-paths/te:p2p-primary-path/"
        + "te:p2p-primary-reverse-path/"
        + "te:lsps/te:lsp/te:path-properties/"
        + "te:path-route-objects/te:path-computed-route-object/"
        + "te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-exclude of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-exclude-objects/"
        + "te:route-object-exclude-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-include of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:optimizations/te:algorithm/te:metric/"
        + "te:optimization-metric/te:explicit-route-include-objects/"
        + "te:route-object-include-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;

    }
  }

  /* Augment label hop of route-object-exclude-always of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-exclude-always/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of route-object-include-exclude of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:explicit-route-objects-always/"
        + "te:route-object-include-exclude/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label restrictions for the path-in-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-in-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }
  /* Augment label restrictions end for the path-in-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-in-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions for the path-out-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction" {
    description "WSON label.";
    uses layer0-types:layer0-label-restriction;
  }

  /* Augment label restrictions start for the path-out-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-start/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label restrictions end for the path-out-segment of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:path-out-segment/te:label-restrictions/"
        + "te:label-restriction/te:label-end/"
        + "te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-link-label;
    }
  }

  /* Augment label hop of path-route of secondary path */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:computed-paths-properties/"
                + "te:computed-path-properties/te:path-properties/"
                + "te:path-route-objects/"
        + "te:path-computed-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of secondary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:lsps/te:lsp/te:lsp-record-route-information/"
        + "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of path-route of secondary LSP */
  augment "/te:te/te:tunnels/te:tunnel/"
        + "te:p2p-secondary-paths/te:p2p-secondary-path/"
        + "te:lsps/te:lsp/te:path-properties/"
        + "te:path-route-objects/"
        + "te:path-computed-route-object/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  /* Augment label hop of record-route of LSP */
  augment "/te:te/te:lsps-state/"
        + "te:lsp/te:lsp-record-route-information/"
        + "te:lsp-record-route-information/te:type/te:label/"
        + "te:label-hop/te:te-label/te:technology" {
    description "WSON label.";
    case wson {
      uses layer0-types:wson-path-label;
    }
  }

  augment "/te:tunnels-rpc/te:input/te:tunnel-info/"
        + "tepc:path-request" {
    description
       "Augment with additional constraints WSON
        tunnel.";
    uses wson-tunnel-attributes;
    uses wson-path-constraints;
  }
}

<CODE ENDS>

4.

5.  Security Considerations

   The configuration, state, and action data defined in this document
   are designed to be accessed via a management protocol with a secure
   transport layer, such as NETCONF [RFC6241].  The NETCONF access
   control model [RFC8341] provides the means to restrict access for
   particular NETCONF users to a preconfigured subset of all available
   NETCONF protocol operations and content.

   A

   There are a number of configuration data nodes defined in this document YANG module that are
   writable/deletable
   writable/creatable/deletable (i.e., "config true") config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.

5.  Write operations (e.g., edit-config)
   to these data nodes without proper protection can have a negative
   effect on network operations.  These are the subtrees and data nodes
   and their sensitivity/vulnerability:

   /te:te/te:tunnels/te:tunnel /te:te/../te:te-bandwidth/te:technology
   /te:te/../te:type/te:label/te:label-hop/te:te-label/te:technology
   /te:te/../te:label-restrictions/te:label-restriction/te:label-start/
   te:te-label/te:technology /te:te/../te:label-restrictions/te:label-
   restriction/te:label-end/te:te-label/te:technology
   /te:te/../te:label-restrictions/te:label-restriction/ Editors note:
   we are using simplified description by folding similar branches to
   avoid repetition.

6.  IANA Considerations

   This document registers the following namespace

   It is proposed that IANA should assign new URIs in from the IETF "IETF XML
   registry [RFC3688]:

   --------------------------------------------------------------------
   Registry" [RFC3688] as follows:

         URI: urn:ietf:params:xml:ns:yang:ietf-wson-tunnel
         Registrant Contact: The IESG. IESG
         XML: N/A, N/A; the requested URI is an XML namespace.
   --------------------------------------------------------------------

   This document registers the following YANG modules in the YANG Module
   Names registry [RFC7950]:

   -------------------------------------------------------------------- [RFC7950].

      name:         ietf-wson-tunnel
      namespace:    urn:ietf:params:xml:ns:yang:ietf-wson-tunnel
      prefix:       wson-tunnel
      reference:    RFC XXXX (TDB)
   --------------------------------------------------------------------
6. Acknowledgments

   This document was prepared using 2-Word-v2.0.template.dot.

7.  Acknowledgements

   TBD.

8.  Contributors

   Dhruv Dhody
   Huawei Technologies
   Email: dhruv.ietf@gmail.com

   Italo Busi
   Huawei Technologies
   Email: Italo.Busi@huawei.com

9.  References

   7.1.

9.1.  Normative References

   [TE-Tunnel] T. Saad, Ed., X. Liu, V. Beeram,

   [I-D.ietf-ccamp-layer0-types]
              Lee, Y., Dhody, D., Guo, A., Lopezalvarez, V., and D.
              King, "A YANG Data Model for Layer 0 Types", draft-ietf-
              ccamp-layer0-types-01 (work in progress), May 2019.

   [I-D.ietf-ccamp-layer1-types]
              Zheng, H. Shah, and I.
             Bryskin, Busi, "A YANG Data Model for Traffic Engineering
             Tunnels and Interfaces", draft-ietf-teas-yang-te, work Layer 1
              Types", draft-ietf-ccamp-layer1-types-02 (work in
             progress.

   [WSON-TOPO] Y.
              progress), September 2019.

   [I-D.ietf-ccamp-wson-yang]
              Lee, Ed., D. Y., Dhody, A. D., Guo, V. Lopez, A., Lopezalvarez, V., and D.
              King, B.
             Yoon, and R. Vilalta, "A Yang YANG Data Model for WSON (Wavelength Switched
              Optical
             Networks", draft-ietf-ccamp-wson-yang, work Networks)", draft-ietf-ccamp-wson-yang-22 (work in progress.

   [TE-PC] Italo Busi (Ed.), Sergio Belotti (Ed.),
              progress), July 2019.

   [I-D.ietf-teas-yang-path-computation]
              Busi, I. and S. Belotti, "Yang model for requesting Path
              Computation", draft-ietf-teas-yang-path-
             computation, work draft-ietf-teas-yang-path-computation-06
              (work in progress.

   [OTN-TOPO] H. Zheng, et al, progress), July 2019.

   [I-D.ietf-teas-yang-te]
              Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin,
              "A YANG Data Model for Optical Transport
             Network Topology", draft-ietf-ccamp-otn-topo-yang, work Traffic Engineering Tunnels and
              Interfaces", draft-ietf-teas-yang-te-21 (work in
              progress), April 2019.

   [I-D.ietf-teas-yang-te-types]
              Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin,
              "Traffic Engineering Common YANG Types", draft-ietf-teas-
              yang-te-types-10 (work in
             progress.

   7.2. progress), July 2019.

9.2.  Informative References

   [I-D.ietf-ccamp-transport-nbi-app-statement]
              Busi, I., King, D., Zheng, H., and Y. Xu, "Transport
              Northbound Interface Applicability Statement", draft-ietf-
              ccamp-transport-nbi-app-statement-05 (work in progress),
              March 2019.

   [I-D.ietf-teas-actn-yang]
              Lee, Y., Zheng, H., Ceccarelli, D., Yoon, B., Dios, O.,
              Shin, J., and S. Belotti, "Applicability of YANG models
              for Abstraction and Control of Traffic Engineered
              Networks", draft-ietf-teas-actn-yang-04 (work in
              progress), August 2019.

   [RFC3688] M.  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              DOI 10.17487/RFC3688, January
             2004. 2004,
              <https://www.rfc-editor.org/info/rfc3688>.

   [RFC6163]  Lee, Y., Ed., Bernstein, G., Ed., and W. Imajuku,
              "Framework for GMPLS and Path Computation Element (PCE)
              Control of Wavelength Switched Optical Networks (WSONs)",
              RFC 6163, DOI 10.17487/RFC6163, April 2011,
              <https://www.rfc-editor.org/info/rfc6163>.

   [RFC6241] R.  Enns, R., Ed., M. Bjorklund, M., Ed., J. Schoenwaelder, J., Ed.,
              and A. Bierman, Ed., "Network Configuration Protocol
              (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011. 2011,
              <https://www.rfc-editor.org/info/rfc6241>.

   [RFC7446] Y.  Lee, G. Y., Ed., Bernstein, D. G., Ed., Li, D., and W. Imajuku,
              "Routing and Wavelength Assignment Information Model for
              Wavelength Switched Optical Networks", RFC 7446, Feburary 2015.
              DOI 10.17487/RFC7446, February 2015,
              <https://www.rfc-editor.org/info/rfc7446>.

   [RFC7579] G.  Bernstein, Y. G., Ed., Lee, D. Y., Ed., Li, W. D., Imajuku, W., and
              J. Han, "General Network Element Constraint Encoding for GMPLS Controlled
              GMPLS-Controlled Networks", RFC 7579,
              DOI 10.17487/RFC7579, June 2015. 2015,
              <https://www.rfc-editor.org/info/rfc7579>.

   [RFC7581]  G.  Bernstein, Y. G., Ed., Lee, D. Y., Ed., Li, W. D., Imajuku, W., and
              J. Han, "Routing and Wavelength Assignment Information
              Encoding for Wavelength Switched Optical Networks",
              RFC 7581, DOI 10.17487/RFC7581, June 2015. 2015,
              <https://www.rfc-editor.org/info/rfc7581>.

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016. 2016,
              <https://www.rfc-editor.org/info/rfc7950>.

   [RFC8040]  Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
              Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
              <https://www.rfc-editor.org/info/rfc8040>.

   [RFC8340]  Bjorklund, M. Bjorklund and L. Berger, Ed., "YANG Tree Diagrams",
              BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018. 2018,
              <https://www.rfc-editor.org/info/rfc8340>.

   [RFC8341]  Bierman, A. Bierman and M. Bjorklund, "Network Configuration
              Access Control Model", STD 91, RFC 8341,
              DOI 10.17487/RFC8341, March 2018.

8. Contributors

   Italo Busi
   Huawei
   Email: Italo.Busi@huawei.com 2018,
              <https://www.rfc-editor.org/info/rfc8341>.

   [RFC8342]  Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "Network Management Datastore Architecture
              (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
              <https://www.rfc-editor.org/info/rfc8342>.

Authors' Addresses

   Young Lee (ed.)
   Huawei Technologies
   5340 Legacy Drive, Building 3
   Plano, TX 75023
   USA

   Phone: (469) 277-5838
   SKKU
   Sung Kyun Kwan University
   Seoul
   South Korea

   Email: leeyoung@huawei.com

   Dhruv Dhody younglee.tx@gmail.com

   Haomian Zheng
   Huawei Technologies India Pvt. Ltd,
   Near EPIP
   H1-1-A043S Huawei Industrial Area,  Kundalahalli Village,  Whitefield,
   Bangalore -  560 037 [H1-2A-245] Base, Songshanhu
   Dongguan, Guangdong  523808
   China

   Email: dhruv.dhody@huawei.com zhenghaomian@huawei.com

   Aihua Guo
   Huawei
   Individual

   Email: aihuaguo@huawei.com aihuaguo.ietf@gmail.com

   Victor Lopez
   Telefonica

   Email: victor.lopezalvarez@telefonica.com

   Daniel King
   University
   Univ. of Lancaster

   Email: d.king@lancaster.ac.uk

   Bin Yeong Yoon
   ETRI
   218 Gaijeongro, Yuseong-gu
   Daejeon,
   Daejeon
   Korea

   Email: byyun@etri.re.kr
   Ricard Vilalta
   CTTC

   Email: ricard.vilalta@cttc.es