Subject: [netmod] I-D Action: draft-ietf-netmod-yang-tree-diagrams-02.txt

From: [email-masked]
Date: Wed, 25 Oct 2017 05:49:49 -0700

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Network Modeling WG of the IETF.

        Title           : YANG Tree Diagrams
        Authors         : Martin Bjorklund
                          Lou Berger
	Filename        : draft-ietf-netmod-yang-tree-diagrams-02.txt
	Pages           : 11
	Date            : 2017-10-25

Abstract:
   This document captures the current syntax used in YANG module Tree
   Diagrams.  The purpose of the document is to provide a single
   location for this definition.  This syntax may be updated from time
   to time based on the evolution of the YANG language.

The IETF datatracker status page for this draft is:
https://datatracker.ietf.org/doc/draft-ietf-netmod-yang-tree-diagrams/

There are also htmlized versions available at:
https://tools.ietf.org/html/draft-ietf-netmod-yang-tree-diagrams-02
https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-tree-diagrams-02

A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-netmod-yang-tree-diagrams-02

Please note that it may take a couple of minutes from the time of submission
until the htmlized version and diff are available at tools.ietf.org.

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

---

From: Lou Berger <[email-masked]>
Date: Wed, 25 Oct 2017 09:13:56 -0400

Hi,

    This version addresses all known / open issues in the draft known to
the authors.

The changes are as follows:
- Added groupings and yang-data descriptions
- Added Comments, Long Diagrams and Security Considerations sections
- Clarified representation of schema mount points and representation of
  modules exposed using schema mount.
- Miscellaneous editorial changes

Lou (for draft authors)

On 10/25/2017 8:49 AM, [email-masked] wrote:
> _______________________________________________
> netmod mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netmod
>

---

From: Robert Wilton <[email-masked]>
Date: Wed, 25 Oct 2017 14:20:10 +0100

Hi Lou,

Do you know when the plan is to call WG LC on this draft?  It is another 
draft that would be good to get out of the door so that all the drafts 
that define YANG modules can reference it.

Thanks,
Rob

---

From: Lou Berger <[email-masked]>
Date: Wed, 25 Oct 2017 10:09:49 -0400

Hi Rob,

On 10/25/2017 9:20 AM, Robert Wilton wrote:
> Hi Lou,
>
> Do you know when the plan is to call WG LC on this draft?  

This is Kent's call as I'm co-author.

> It is another 
I agree, and while I was originally pushing for an immediate LC, I also
think it is reasonable to review the changes in Singapore and then,
assuming no disagreement from the WG, move immediately thereafter to LC.

I also think it is fine/good for other drafts to reference this draft
now given LC is soon either way.

Lou

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Wed, 25 Oct 2017 16:42:22 +0200

While the tree diagram ID has only informative references, I
think this is actually not true. I think RFC7950, RFC 8040 and
I-D.ietf-netmod-schema-mount are actually normative references
since they define the nodes we are talking about.

If so, this ID depends on schema mount. Not a problem but won't be
published before schema mount is coming out as well.

/js

On Wed, Oct 25, 2017 at 02:20:10PM +0100, Robert Wilton wrote:
> draft that would be good to get out of the door so that all the drafts that
> define YANG modules can reference it.
> 
> Thanks,
> Rob
> 
> 

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>

---

From: Kent Watsen <[email-masked]>
Date: Thu, 26 Oct 2017 00:06:12 +0000

From another thread in NETCONF, Juergen writes:

  I do not know whether the official tree diagram formats will 
  have ways to show say a container with used groupings collapsed.
  This may actually be useful sometimes, but this is not what you
  are look for here either. I am thinking about

   +--rw container
      +-u-- <grouping>       (I'm guess 'u' for "uses")
      +--rw regular-leaf

  Clearly, this is for a different thread...

  And I wrote back "It might be helpful to have the ability to 
  output a tree diagram that has not expanded its groupings.  
  But, as you say, for another thread."

To add to this, I wrote a module recently that defined an RPC
and yang-data around the same groupings.  An ability to 1) print
the groupings and 2) only print references to the groupings,
would've collapsed the tree-diagram tremendously.  For example:

rpcs:

  foobar
    input
      +-u-- <input-grouping>
    output
      +-u-- <output-grouping>

yang-data:

  input-artifact
    +-u-- <input-grouping>

  output-artifact
    +-u-- <output-grouping>

groupings:

  input-grouping
   +-- <full tree here>

  output-grouping
   +-- full tree here>

Thoughts?

Kent // contributor

---

From: Alexander Clemm <[email-masked]>
Date: Thu, 26 Oct 2017 00:20:41 +0000

I would find an  option to show "uses" very useful, instead of always having to expand groupings.  Depending on the groupings and the amount of groupings reuse it can cut down complexity of trees substantially and directs focus to the forest, not the trees - really ultimately the intent of this.  

--- Alex

> -----Original Message-----
> From: netmod [mailto:[email-masked]] On Behalf Of Kent Watsen
> Sent: Wednesday, October 25, 2017 5:06 PM
> To: Juergen Schoenwaelder <[email-masked]>;
> Robert Wilton <[email-masked]>
> Cc: [email-masked]
> Subject: Re: [netmod] I-D Action: draft-ietf-netmod-yang-tree-diagrams-
> 02.txt
>

---

From: "t.petch" <[email-masked]>
Date: Thu, 26 Oct 2017 17:50:02 +0100

Lou

I like the advice that diagrams should be one page long but wonder how
to apply that to those I see in routing WGs.  I have just been looking
at

 draft-ietf-teas-yang-te-topo-12

where the diagram is 36 pages long - which may be one of the larger ones
but by no means exceptional - and I think the diagram is  more or less
useless as a result.  But what practical advice can we give them?

I append the diagram below

Tom Petch

start of diagram
==================================================

Liu, et al             Expires January 17, 2018               [Page 31]


6. Tree Structure

   module: ietf-te-topology
   augment /nw:networks/nw:network/nw:network-types:
      +--rw te-topology!
   augment /nw:networks:
      +--rw te!
         +--rw templates
            +--rw node-template* [name] {template}?
            |  +--rw name                       te-types:te-template-
   name
            |  +--rw priority?                  uint16
            |  +--rw reference-change-policy?   enumeration
            |  +--rw te-node-attributes
            |     +--rw admin-status?        te-types:te-admin-status
            |     +--rw domain-id?           uint32
            |     +--rw is-abstract?         empty
            |     +--rw name?                inet:domain-name
            |     +--rw signaling-address*   inet:ip-address
            |     +--rw underlay-topology {te-topology-hierarchy}?
            |        +--rw network-ref?   leafref
            +--rw link-template* [name] {template}?
               +--rw name                       te-types:te-template-
   name
               +--rw priority?                  uint16
               +--rw reference-change-policy?   enumeration
               +--rw te-link-attributes
                  +--rw access-type?                      te-types:te-
   link-access-type
                  +--rw external-domain
                  |  +--rw network-ref?            leafref
                  |  +--rw remote-te-node-id?      te-types:te-node-id
                  |  +--rw remote-te-link-tp-id?   te-types:te-tp-id
                  |  +--rw plug-id?                uint32
                  +--rw is-abstract?                      empty
                  +--rw name?                             string
                  +--rw underlay {te-topology-hierarchy}?
                  |  +--rw enabled?                     boolean
                  |  +--rw primary-path
                  |  |  +--rw network-ref?    leafref
                  |  |  +--rw path-element* [path-element-id]
                  |  |     +--rw path-element-id    uint32
                  |  |     +--rw index?             uint32

                  |  |     +--rw (type)?
                  |  |        +--:(numbered)
                  |  |        |  +--rw numbered-hop
                  |  |        |     +--rw address?    te-types:te-tp-id
                  |  |        |     +--rw hop-type?   te-hop-type
                  |  |        +--:(as-number)
                  |  |        |  +--rw as-number-hop
                  |  |        |     +--rw as-number?   binary
                  |  |        |     +--rw hop-type?    te-hop-type
                  |  |        +--:(unnumbered)
                  |  |        |  +--rw unnumbered-hop
                  |  |        |     +--rw node-id?      te-types:te-
   node-id
                  |  |        |     +--rw link-tp-id?   te-types:te-tp-
   id
                  |  |        |     +--rw hop-type?     te-hop-type
                  |  |        +--:(label)
                  |  |        |  +--rw label-hop
                  |  |        |     +--rw value?   rt-types:generalized-
   label
                  |  |        +--:(sid)
                  |  |           +--rw sid-hop
                  |  |              +--rw sid?   rt-types:generalized-
   label
                  |  +--rw backup-path* [index]
                  |  |  +--rw index           uint32
                  |  |  +--rw network-ref?    leafref
                  |  |  +--rw path-element* [path-element-id]
                  |  |     +--rw path-element-id    uint32
                  |  |     +--rw index?             uint32
                  |  |     +--rw (type)?
                  |  |        +--:(numbered)
                  |  |        |  +--rw numbered-hop
                  |  |        |     +--rw address?    te-types:te-tp-id
                  |  |        |     +--rw hop-type?   te-hop-type
                  |  |        +--:(as-number)
                  |  |        |  +--rw as-number-hop
                  |  |        |     +--rw as-number?   binary
                  |  |        |     +--rw hop-type?    te-hop-type
                  |  |        +--:(unnumbered)
                  |  |        |  +--rw unnumbered-hop
                  |  |        |     +--rw node-id?      te-types:te-
   node-id
                  |  |        |     +--rw link-tp-id?   te-types:te-tp-
   id
                  |  |        |     +--rw hop-type?     te-hop-type
                  |  |        +--:(label)

                  |  |        |  +--rw label-hop
                  |  |        |     +--rw value?   rt-types:generalized-
   label
                  |  |        +--:(sid)
                  |  |           +--rw sid-hop
                  |  |              +--rw sid?   rt-types:generalized-
   label
                  |  +--rw protection-type?             identityref
                  |  +--rw tunnel-termination-points
                  |  |  +--rw source?        binary
                  |  |  +--rw destination?   binary
                  |  +--rw tunnels
                  |     +--rw sharing?   boolean
                  |     +--rw tunnel* [tunnel-name]
                  |        +--rw tunnel-name    string
                  |        +--rw sharing?       boolean
                  +--rw admin-status?                     te-types:te-
   admin-status
                  +--rw link-index?                       uint64
                  +--rw administrative-group?             te-
   types:admin-groups
                  +--rw interface-switching-capability* [switching-
   capability encoding]
                  |  +--rw switching-capability    identityref
                  |  +--rw encoding                identityref
                  |  +--rw max-lsp-bandwidth* [priority]
                  |     +--rw priority     uint8
                  |     +--rw bandwidth
                  |        +--rw te-bandwidth
                  |           +--rw (technology)?
                  |              +--:(psc)
                  |              |  +--rw psc?       rt-types:bandwidth-
   ieee-float32
                  |              +--:(otn)
                  |              |  +--rw otn* [rate-type]
                  |              |     +--rw rate-type    identityref
                  |              |     +--rw counter?     uint16
                  |              +--:(lsc)
                  |              |  +--rw wdm* [spectrum slot]
                  |              |     +--rw spectrum    identityref
                  |              |     +--rw slot        int16
                  |              |     +--rw width?      uint16
                  |              +--:(generic)
                  |                 +--rw generic?   te-bandwidth
                  +--rw label-restriction* [inclusive-exclusive label-
   start]
                  |  +--rw inclusive-exclusive    enumeration

                  |  +--rw label-start            rt-types:generalized-
   label
                  |  +--rw label-end?             rt-types:generalized-
   label
                  |  +--rw range-bitmap?          binary
                  +--rw link-protection-type?             enumeration
                  +--rw max-link-bandwidth
                  |  +--rw te-bandwidth
                  |     +--rw (technology)?
                  |        +--:(psc)
                  |        |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
                  |        +--:(otn)
                  |        |  +--rw otn* [rate-type]
                  |        |     +--rw rate-type    identityref
                  |        |     +--rw counter?     uint16
                  |        +--:(lsc)
                  |        |  +--rw wdm* [spectrum slot]
                  |        |     +--rw spectrum    identityref
                  |        |     +--rw slot        int16
                  |        |     +--rw width?      uint16
                  |        +--:(generic)
                  |           +--rw generic?   te-bandwidth
                  +--rw max-resv-link-bandwidth
                  |  +--rw te-bandwidth
                  |     +--rw (technology)?
                  |        +--:(psc)
                  |        |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
                  |        +--:(otn)
                  |        |  +--rw otn* [rate-type]
                  |        |     +--rw rate-type    identityref
                  |        |     +--rw counter?     uint16
                  |        +--:(lsc)
                  |        |  +--rw wdm* [spectrum slot]
                  |        |     +--rw spectrum    identityref
                  |        |     +--rw slot        int16
                  |        |     +--rw width?      uint16
                  |        +--:(generic)
                  |           +--rw generic?   te-bandwidth
                  +--rw unreserved-bandwidth* [priority]
                  |  +--rw priority     uint8
                  |  +--rw bandwidth
                  |     +--rw te-bandwidth
                  |        +--rw (technology)?
                  |           +--:(psc)

                  |           |  +--rw psc?       rt-types:bandwidth-
   ieee-float32
                  |           +--:(otn)
                  |           |  +--rw otn* [rate-type]
                  |           |     +--rw rate-type    identityref
                  |           |     +--rw counter?     uint16
                  |           +--:(lsc)
                  |           |  +--rw wdm* [spectrum slot]
                  |           |     +--rw spectrum    identityref
                  |           |     +--rw slot        int16
                  |           |     +--rw width?      uint16
                  |           +--:(generic)
                  |              +--rw generic?   te-bandwidth
                  +--rw te-default-metric?                uint32
                  +--rw te-delay-metric?                  uint32
                  +--rw te-igp-metric?                    uint32
                  +--rw te-srlgs
                  |  +--rw value*   te-types:srlg
                  +--rw te-nsrlgs {nsrlg}?
                     +--rw id*   uint32
   augment /nw:networks/nw:network:
      +--rw provider-id?      te-types:te-global-id
      +--rw client-id?        te-types:te-global-id
      +--rw te-topology-id?   te-types:te-topology-id
      +--rw te!
         +--rw preference?               uint8
         +--rw optimization-criterion?   identityref
         +--rw nsrlg* [id] {nsrlg}?
         |  +--rw id              uint32
         |  +--rw disjointness?   te-types:te-path-disjointness
         +--ro geolocation
            +--ro altitude?    int64
            +--ro latitude?    geographic-coordinate-degree
            +--ro longitude?   geographic-coordinate-degree
   augment /nw:networks/nw:network/nw:node:
      +--rw te-node-id?   te-types:te-node-id
      +--rw te!
         +--rw te-node-template*           leafref {template}?
         +--rw te-node-attributes
         |  +--rw admin-status?            te-types:te-admin-status
         |  +--rw connectivity-matrices
         |  |  +--rw number-of-entries?          uint16
         |  |  +--rw label-restriction* [inclusive-exclusive label-
   start]
         |  |  |  +--rw inclusive-exclusive    enumeration
         |  |  |  +--rw label-start            rt-types:generalized-
   label

         |  |  |  +--rw label-end?             rt-types:generalized-
   label
         |  |  |  +--rw range-bitmap?          binary
         |  |  +--rw is-allowed?                 boolean
         |  |  +--rw underlay {te-topology-hierarchy}?
         |  |  |  +--rw enabled?                     boolean
         |  |  |  +--rw primary-path
         |  |  |  |  +--rw network-ref?    leafref
         |  |  |  |  +--rw path-element* [path-element-id]
         |  |  |  |     +--rw path-element-id    uint32
         |  |  |  |     +--rw index?             uint32
         |  |  |  |     +--rw (type)?
         |  |  |  |        +--:(numbered)
         |  |  |  |        |  +--rw numbered-hop
         |  |  |  |        |     +--rw address?    te-types:te-tp-id
         |  |  |  |        |     +--rw hop-type?   te-hop-type
         |  |  |  |        +--:(as-number)
         |  |  |  |        |  +--rw as-number-hop
         |  |  |  |        |     +--rw as-number?   binary
         |  |  |  |        |     +--rw hop-type?    te-hop-type
         |  |  |  |        +--:(unnumbered)
         |  |  |  |        |  +--rw unnumbered-hop
         |  |  |  |        |     +--rw node-id?      te-types:te-node-id
         |  |  |  |        |     +--rw link-tp-id?   te-types:te-tp-id
         |  |  |  |        |     +--rw hop-type?     te-hop-type
         |  |  |  |        +--:(label)
         |  |  |  |        |  +--rw label-hop
         |  |  |  |        |     +--rw value?   rt-types:generalized-
   label
         |  |  |  |        +--:(sid)
         |  |  |  |           +--rw sid-hop
         |  |  |  |              +--rw sid?   rt-types:generalized-label
         |  |  |  +--rw backup-path* [index]
         |  |  |  |  +--rw index           uint32
         |  |  |  |  +--rw network-ref?    leafref
         |  |  |  |  +--rw path-element* [path-element-id]
         |  |  |  |     +--rw path-element-id    uint32
         |  |  |  |     +--rw index?             uint32
         |  |  |  |     +--rw (type)?
         |  |  |  |        +--:(numbered)
         |  |  |  |        |  +--rw numbered-hop
         |  |  |  |        |     +--rw address?    te-types:te-tp-id
         |  |  |  |        |     +--rw hop-type?   te-hop-type
         |  |  |  |        +--:(as-number)
         |  |  |  |        |  +--rw as-number-hop
         |  |  |  |        |     +--rw as-number?   binary
         |  |  |  |        |     +--rw hop-type?    te-hop-type

         |  |  |  |        +--:(unnumbered)
         |  |  |  |        |  +--rw unnumbered-hop
         |  |  |  |        |     +--rw node-id?      te-types:te-node-id
         |  |  |  |        |     +--rw link-tp-id?   te-types:te-tp-id
         |  |  |  |        |     +--rw hop-type?     te-hop-type
         |  |  |  |        +--:(label)
         |  |  |  |        |  +--rw label-hop
         |  |  |  |        |     +--rw value?   rt-types:generalized-
   label
         |  |  |  |        +--:(sid)
         |  |  |  |           +--rw sid-hop
         |  |  |  |              +--rw sid?   rt-types:generalized-label
         |  |  |  +--rw protection-type?             identityref
         |  |  |  +--rw tunnel-termination-points
         |  |  |  |  +--rw source?        binary
         |  |  |  |  +--rw destination?   binary
         |  |  |  +--rw tunnels
         |  |  |     +--rw sharing?   boolean
         |  |  |     +--rw tunnel* [tunnel-name]
         |  |  |        +--rw tunnel-name    string
         |  |  |        +--rw sharing?       boolean
         |  |  +--rw path-constraints
         |  |  |  +--rw path-metric-bound* [metric-type]
         |  |  |  |  +--rw metric-type    identityref
         |  |  |  |  +--rw upper-bound?   uint64
         |  |  |  +--rw topology-id?         te-types:te-topology-id
         |  |  |  +--rw ignore-overload?     boolean
         |  |  |  +--rw bandwidth-generic
         |  |  |  |  +--rw te-bandwidth
         |  |  |  |     +--rw (technology)?
         |  |  |  |        +--:(psc)
         |  |  |  |        |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
         |  |  |  |        +--:(otn)
         |  |  |  |        |  +--rw otn* [rate-type]
         |  |  |  |        |     +--rw rate-type    identityref
         |  |  |  |        |     +--rw counter?     uint16
         |  |  |  |        +--:(lsc)
         |  |  |  |        |  +--rw wdm* [spectrum slot]
         |  |  |  |        |     +--rw spectrum    identityref
         |  |  |  |        |     +--rw slot        int16
         |  |  |  |        |     +--rw width?      uint16
         |  |  |  |        +--:(generic)
         |  |  |  |           +--rw generic?   te-bandwidth
         |  |  |  +--rw disjointness?        te-types:te-path-
   disjointness
         |  |  |  +--rw setup-priority?      uint8

         |  |  |  +--rw hold-priority?       uint8
         |  |  |  +--rw signaling-type?      identityref
         |  |  |  +--rw path-affinities
         |  |  |  |  +--rw constraint* [usage]
         |  |  |  |     +--rw usage    identityref
         |  |  |  |     +--rw value?   admin-groups
         |  |  |  +--rw path-srlgs
         |  |  |     +--rw usage?    identityref
         |  |  |     +--rw values*   srlg
         |  |  +--rw optimizations
         |  |  |  +--rw (algorithm)?
         |  |  |     +--:(metric) {path-optimization-metric}?
         |  |  |     |  +--rw optimization-metric* [metric-type]
         |  |  |     |  |  +--rw metric-type    identityref
         |  |  |     |  |  +--rw weight?        uint8
         |  |  |     |  +--rw tiebreakers
         |  |  |     |     +--rw tiebreaker* [tiebreaker-type]
         |  |  |     |        +--rw tiebreaker-type    identityref
         |  |  |     +--:(objective-function) {path-optimization-
   objective-function}?
         |  |  |        +--rw objective-function
         |  |  |           +--rw objective-function-type?   identityref
         |  |  +--ro computed-path-properties
         |  |  |  +--ro path-metric* [metric-type]
         |  |  |  |  +--ro metric-type           identityref
         |  |  |  |  +--ro accumulative-value?   uint64
         |  |  |  +--ro path-affinities
         |  |  |  |  +--ro constraint* [usage]
         |  |  |  |     +--ro usage    identityref
         |  |  |  |     +--ro value?   admin-groups
         |  |  |  +--ro path-srlgs
         |  |  |  |  +--ro usage?    identityref
         |  |  |  |  +--ro values*   srlg
         |  |  |  +--ro path-computed-route-objects
         |  |  |     +--ro path-computed-route-object* [index]
         |  |  |        +--ro index             uint32
         |  |  |        +--ro (type)?
         |  |  |           +--:(numbered)
         |  |  |           |  +--ro numbered-hop
         |  |  |           |     +--ro address?    te-types:te-tp-id
         |  |  |           |     +--ro hop-type?   te-hop-type
         |  |  |           +--:(as-number)
         |  |  |           |  +--ro as-number-hop
         |  |  |           |     +--ro as-number?   binary
         |  |  |           |     +--ro hop-type?    te-hop-type
         |  |  |           +--:(unnumbered)
         |  |  |           |  +--ro unnumbered-hop

         |  |  |           |     +--ro node-id?      te-types:te-node-id
         |  |  |           |     +--ro link-tp-id?   te-types:te-tp-id
         |  |  |           |     +--ro hop-type?     te-hop-type
         |  |  |           +--:(label)
         |  |  |           |  +--ro label-hop
         |  |  |           |     +--ro value?   rt-types:generalized-
   label
         |  |  |           +--:(sid)
         |  |  |              +--ro sid-hop
         |  |  |                 +--ro sid?   rt-types:generalized-label
         |  |  +--rw connectivity-matrix* [id]
         |  |     +--rw id                          uint32
         |  |     +--rw from
         |  |     |  +--rw tp-ref?              leafref
         |  |     |  +--rw label-restriction* [inclusive-exclusive
   label-start]
         |  |     |     +--rw inclusive-exclusive    enumeration
         |  |     |     +--rw label-start            rt-
   types:generalized-label
         |  |     |     +--rw label-end?             rt-
   types:generalized-label
         |  |     |     +--rw range-bitmap?          binary
         |  |     +--rw to
         |  |     |  +--rw tp-ref?              leafref
         |  |     |  +--rw label-restriction* [inclusive-exclusive
   label-start]
         |  |     |     +--rw inclusive-exclusive    enumeration
         |  |     |     +--rw label-start            rt-
   types:generalized-label
         |  |     |     +--rw label-end?             rt-
   types:generalized-label
         |  |     |     +--rw range-bitmap?          binary
         |  |     +--rw is-allowed?                 boolean
         |  |     +--rw underlay {te-topology-hierarchy}?
         |  |     |  +--rw enabled?                     boolean
         |  |     |  +--rw primary-path
         |  |     |  |  +--rw network-ref?    leafref
         |  |     |  |  +--rw path-element* [path-element-id]
         |  |     |  |     +--rw path-element-id    uint32
         |  |     |  |     +--rw index?             uint32
         |  |     |  |     +--rw (type)?
         |  |     |  |        +--:(numbered)
         |  |     |  |        |  +--rw numbered-hop
         |  |     |  |        |     +--rw address?    te-types:te-tp-id
         |  |     |  |        |     +--rw hop-type?   te-hop-type
         |  |     |  |        +--:(as-number)
         |  |     |  |        |  +--rw as-number-hop

         |  |     |  |        |     +--rw as-number?   binary
         |  |     |  |        |     +--rw hop-type?    te-hop-type
         |  |     |  |        +--:(unnumbered)
         |  |     |  |        |  +--rw unnumbered-hop
         |  |     |  |        |     +--rw node-id?      te-types:te-
   node-id
         |  |     |  |        |     +--rw link-tp-id?   te-types:te-tp-
   id
         |  |     |  |        |     +--rw hop-type?     te-hop-type
         |  |     |  |        +--:(label)
         |  |     |  |        |  +--rw label-hop
         |  |     |  |        |     +--rw value?   rt-types:generalized-
   label
         |  |     |  |        +--:(sid)
         |  |     |  |           +--rw sid-hop
         |  |     |  |              +--rw sid?   rt-types:generalized-
   label
         |  |     |  +--rw backup-path* [index]
         |  |     |  |  +--rw index           uint32
         |  |     |  |  +--rw network-ref?    leafref
         |  |     |  |  +--rw path-element* [path-element-id]
         |  |     |  |     +--rw path-element-id    uint32
         |  |     |  |     +--rw index?             uint32
         |  |     |  |     +--rw (type)?
         |  |     |  |        +--:(numbered)
         |  |     |  |        |  +--rw numbered-hop
         |  |     |  |        |     +--rw address?    te-types:te-tp-id
         |  |     |  |        |     +--rw hop-type?   te-hop-type
         |  |     |  |        +--:(as-number)
         |  |     |  |        |  +--rw as-number-hop
         |  |     |  |        |     +--rw as-number?   binary
         |  |     |  |        |     +--rw hop-type?    te-hop-type
         |  |     |  |        +--:(unnumbered)
         |  |     |  |        |  +--rw unnumbered-hop
         |  |     |  |        |     +--rw node-id?      te-types:te-
   node-id
         |  |     |  |        |     +--rw link-tp-id?   te-types:te-tp-
   id
         |  |     |  |        |     +--rw hop-type?     te-hop-type
         |  |     |  |        +--:(label)
         |  |     |  |        |  +--rw label-hop
         |  |     |  |        |     +--rw value?   rt-types:generalized-
   label
         |  |     |  |        +--:(sid)
         |  |     |  |           +--rw sid-hop
         |  |     |  |              +--rw sid?   rt-types:generalized-
   label

         |  |     |  +--rw protection-type?             identityref
         |  |     |  +--rw tunnel-termination-points
         |  |     |  |  +--rw source?        binary
         |  |     |  |  +--rw destination?   binary
         |  |     |  +--rw tunnels
         |  |     |     +--rw sharing?   boolean
         |  |     |     +--rw tunnel* [tunnel-name]
         |  |     |        +--rw tunnel-name    string
         |  |     |        +--rw sharing?       boolean
         |  |     +--rw path-constraints
         |  |     |  +--rw path-metric-bound* [metric-type]
         |  |     |  |  +--rw metric-type    identityref
         |  |     |  |  +--rw upper-bound?   uint64
         |  |     |  +--rw topology-id?         te-types:te-topology-id
         |  |     |  +--rw ignore-overload?     boolean
         |  |     |  +--rw bandwidth-generic
         |  |     |  |  +--rw te-bandwidth
         |  |     |  |     +--rw (technology)?
         |  |     |  |        +--:(psc)
         |  |     |  |        |  +--rw psc?       rt-types:bandwidth-
   ieee-float32
         |  |     |  |        +--:(otn)
         |  |     |  |        |  +--rw otn* [rate-type]
         |  |     |  |        |     +--rw rate-type    identityref
         |  |     |  |        |     +--rw counter?     uint16
         |  |     |  |        +--:(lsc)
         |  |     |  |        |  +--rw wdm* [spectrum slot]
         |  |     |  |        |     +--rw spectrum    identityref
         |  |     |  |        |     +--rw slot        int16
         |  |     |  |        |     +--rw width?      uint16
         |  |     |  |        +--:(generic)
         |  |     |  |           +--rw generic?   te-bandwidth
         |  |     |  +--rw disjointness?        te-types:te-path-
   disjointness
         |  |     |  +--rw setup-priority?      uint8
         |  |     |  +--rw hold-priority?       uint8
         |  |     |  +--rw signaling-type?      identityref
         |  |     |  +--rw path-affinities
         |  |     |  |  +--rw constraint* [usage]
         |  |     |  |     +--rw usage    identityref
         |  |     |  |     +--rw value?   admin-groups
         |  |     |  +--rw path-srlgs
         |  |     |     +--rw usage?    identityref
         |  |     |     +--rw values*   srlg
         |  |     +--rw optimizations
         |  |     |  +--rw (algorithm)?
         |  |     |     +--:(metric) {path-optimization-metric}?

         |  |     |     |  +--rw optimization-metric* [metric-type]
         |  |     |     |  |  +--rw metric-type    identityref
         |  |     |     |  |  +--rw weight?        uint8
         |  |     |     |  +--rw tiebreakers
         |  |     |     |     +--rw tiebreaker* [tiebreaker-type]
         |  |     |     |        +--rw tiebreaker-type    identityref
         |  |     |     +--:(objective-function) {path-optimization-
   objective-function}?
         |  |     |        +--rw objective-function
         |  |     |           +--rw objective-function-type?
   identityref
         |  |     +--ro computed-path-properties
         |  |        +--ro path-metric* [metric-type]
         |  |        |  +--ro metric-type           identityref
         |  |        |  +--ro accumulative-value?   uint64
         |  |        +--ro path-affinities
         |  |        |  +--ro constraint* [usage]
         |  |        |     +--ro usage    identityref
         |  |        |     +--ro value?   admin-groups
         |  |        +--ro path-srlgs
         |  |        |  +--ro usage?    identityref
         |  |        |  +--ro values*   srlg
         |  |        +--ro path-computed-route-objects
         |  |           +--ro path-computed-route-object* [index]
         |  |              +--ro index             uint32
         |  |              +--ro (type)?
         |  |                 +--:(numbered)
         |  |                 |  +--ro numbered-hop
         |  |                 |     +--ro address?    te-types:te-tp-id
         |  |                 |     +--ro hop-type?   te-hop-type
         |  |                 +--:(as-number)
         |  |                 |  +--ro as-number-hop
         |  |                 |     +--ro as-number?   binary
         |  |                 |     +--ro hop-type?    te-hop-type
         |  |                 +--:(unnumbered)
         |  |                 |  +--ro unnumbered-hop
         |  |                 |     +--ro node-id?      te-types:te-
   node-id
         |  |                 |     +--ro link-tp-id?   te-types:te-tp-
   id
         |  |                 |     +--ro hop-type?     te-hop-type
         |  |                 +--:(label)
         |  |                 |  +--ro label-hop
         |  |                 |     +--ro value?   rt-types:generalized-
   label
         |  |                 +--:(sid)
         |  |                    +--ro sid-hop

         |  |                       +--ro sid?   rt-types:generalized-
   label
         |  +--rw domain-id?               uint32
         |  +--rw is-abstract?             empty
         |  +--rw name?                    inet:domain-name
         |  +--rw signaling-address*       inet:ip-address
         |  +--rw underlay-topology {te-topology-hierarchy}?
         |     +--rw network-ref?   leafref
         +--ro oper-status?                te-types:te-oper-status
         +--ro geolocation
         |  +--ro altitude?    int64
         |  +--ro latitude?    geographic-coordinate-degree
         |  +--ro longitude?   geographic-coordinate-degree
         +--ro is-multi-access-dr?         empty
         +--ro information-source?         te-info-source
         +--ro information-source-state
         |  +--ro credibility-preference?    uint16
         |  +--ro logical-network-element?   string
         |  +--ro network-instance?          string
         |  +--ro topology
         |     +--ro node-ref?      leafref
         |     +--ro network-ref?   leafref
         +--ro information-source-entry* [information-source]
         |  +--ro information-source          te-info-source
         |  +--ro information-source-state
         |  |  +--ro credibility-preference?    uint16
         |  |  +--ro logical-network-element?   string
         |  |  +--ro network-instance?          string
         |  |  +--ro topology
         |  |     +--ro node-ref?      leafref
         |  |     +--ro network-ref?   leafref
         |  +--ro connectivity-matrices
         |  |  +--ro number-of-entries?          uint16
         |  |  +--ro label-restriction* [inclusive-exclusive label-
   start]
         |  |  |  +--ro inclusive-exclusive    enumeration
         |  |  |  +--ro label-start            rt-types:generalized-
   label
         |  |  |  +--ro label-end?             rt-types:generalized-
   label
         |  |  |  +--ro range-bitmap?          binary
         |  |  +--ro is-allowed?                 boolean
         |  |  +--ro underlay {te-topology-hierarchy}?
         |  |  |  +--ro enabled?                     boolean
         |  |  |  +--ro primary-path
         |  |  |  |  +--ro network-ref?    leafref
         |  |  |  |  +--ro path-element* [path-element-id]

         |  |  |  |     +--ro path-element-id    uint32
         |  |  |  |     +--ro index?             uint32
         |  |  |  |     +--ro (type)?
         |  |  |  |        +--:(numbered)
         |  |  |  |        |  +--ro numbered-hop
         |  |  |  |        |     +--ro address?    te-types:te-tp-id
         |  |  |  |        |     +--ro hop-type?   te-hop-type
         |  |  |  |        +--:(as-number)
         |  |  |  |        |  +--ro as-number-hop
         |  |  |  |        |     +--ro as-number?   binary
         |  |  |  |        |     +--ro hop-type?    te-hop-type
         |  |  |  |        +--:(unnumbered)
         |  |  |  |        |  +--ro unnumbered-hop
         |  |  |  |        |     +--ro node-id?      te-types:te-node-id
         |  |  |  |        |     +--ro link-tp-id?   te-types:te-tp-id
         |  |  |  |        |     +--ro hop-type?     te-hop-type
         |  |  |  |        +--:(label)
         |  |  |  |        |  +--ro label-hop
         |  |  |  |        |     +--ro value?   rt-types:generalized-
   label
         |  |  |  |        +--:(sid)
         |  |  |  |           +--ro sid-hop
         |  |  |  |              +--ro sid?   rt-types:generalized-label
         |  |  |  +--ro backup-path* [index]
         |  |  |  |  +--ro index           uint32
         |  |  |  |  +--ro network-ref?    leafref
         |  |  |  |  +--ro path-element* [path-element-id]
         |  |  |  |     +--ro path-element-id    uint32
         |  |  |  |     +--ro index?             uint32
         |  |  |  |     +--ro (type)?
         |  |  |  |        +--:(numbered)
         |  |  |  |        |  +--ro numbered-hop
         |  |  |  |        |     +--ro address?    te-types:te-tp-id
         |  |  |  |        |     +--ro hop-type?   te-hop-type
         |  |  |  |        +--:(as-number)
         |  |  |  |        |  +--ro as-number-hop
         |  |  |  |        |     +--ro as-number?   binary
         |  |  |  |        |     +--ro hop-type?    te-hop-type
         |  |  |  |        +--:(unnumbered)
         |  |  |  |        |  +--ro unnumbered-hop
         |  |  |  |        |     +--ro node-id?      te-types:te-node-id
         |  |  |  |        |     +--ro link-tp-id?   te-types:te-tp-id
         |  |  |  |        |     +--ro hop-type?     te-hop-type
         |  |  |  |        +--:(label)
         |  |  |  |        |  +--ro label-hop
         |  |  |  |        |     +--ro value?   rt-types:generalized-
   label

         |  |  |  |        +--:(sid)
         |  |  |  |           +--ro sid-hop
         |  |  |  |              +--ro sid?   rt-types:generalized-label
         |  |  |  +--ro protection-type?             identityref
         |  |  |  +--ro tunnel-termination-points
         |  |  |  |  +--ro source?        binary
         |  |  |  |  +--ro destination?   binary
         |  |  |  +--ro tunnels
         |  |  |     +--ro sharing?   boolean
         |  |  |     +--ro tunnel* [tunnel-name]
         |  |  |        +--ro tunnel-name    string
         |  |  |        +--ro sharing?       boolean
         |  |  +--ro path-constraints
         |  |  |  +--ro path-metric-bound* [metric-type]
         |  |  |  |  +--ro metric-type    identityref
         |  |  |  |  +--ro upper-bound?   uint64
         |  |  |  +--ro topology-id?         te-types:te-topology-id
         |  |  |  +--ro ignore-overload?     boolean
         |  |  |  +--ro bandwidth-generic
         |  |  |  |  +--ro te-bandwidth
         |  |  |  |     +--ro (technology)?
         |  |  |  |        +--:(psc)
         |  |  |  |        |  +--ro psc?       rt-types:bandwidth-ieee-
   float32
         |  |  |  |        +--:(otn)
         |  |  |  |        |  +--ro otn* [rate-type]
         |  |  |  |        |     +--ro rate-type    identityref
         |  |  |  |        |     +--ro counter?     uint16
         |  |  |  |        +--:(lsc)
         |  |  |  |        |  +--ro wdm* [spectrum slot]
         |  |  |  |        |     +--ro spectrum    identityref
         |  |  |  |        |     +--ro slot        int16
         |  |  |  |        |     +--ro width?      uint16
         |  |  |  |        +--:(generic)
         |  |  |  |           +--ro generic?   te-bandwidth
         |  |  |  +--ro disjointness?        te-types:te-path-
   disjointness
         |  |  |  +--ro setup-priority?      uint8
         |  |  |  +--ro hold-priority?       uint8
         |  |  |  +--ro signaling-type?      identityref
         |  |  |  +--ro path-affinities
         |  |  |  |  +--ro constraint* [usage]
         |  |  |  |     +--ro usage    identityref
         |  |  |  |     +--ro value?   admin-groups
         |  |  |  +--ro path-srlgs
         |  |  |     +--ro usage?    identityref
         |  |  |     +--ro values*   srlg

         |  |  +--ro optimizations
         |  |  |  +--ro (algorithm)?
         |  |  |     +--:(metric) {path-optimization-metric}?
         |  |  |     |  +--ro optimization-metric* [metric-type]
         |  |  |     |  |  +--ro metric-type    identityref
         |  |  |     |  |  +--ro weight?        uint8
         |  |  |     |  +--ro tiebreakers
         |  |  |     |     +--ro tiebreaker* [tiebreaker-type]
         |  |  |     |        +--ro tiebreaker-type    identityref
         |  |  |     +--:(objective-function) {path-optimization-
   objective-function}?
         |  |  |        +--ro objective-function
         |  |  |           +--ro objective-function-type?   identityref
         |  |  +--ro computed-path-properties
         |  |  |  +--ro path-metric* [metric-type]
         |  |  |  |  +--ro metric-type           identityref
         |  |  |  |  +--ro accumulative-value?   uint64
         |  |  |  +--ro path-affinities
         |  |  |  |  +--ro constraint* [usage]
         |  |  |  |     +--ro usage    identityref
         |  |  |  |     +--ro value?   admin-groups
         |  |  |  +--ro path-srlgs
         |  |  |  |  +--ro usage?    identityref
         |  |  |  |  +--ro values*   srlg
         |  |  |  +--ro path-computed-route-objects
         |  |  |     +--ro path-computed-route-object* [index]
         |  |  |        +--ro index             uint32
         |  |  |        +--ro (type)?
         |  |  |           +--:(numbered)
         |  |  |           |  +--ro numbered-hop
         |  |  |           |     +--ro address?    te-types:te-tp-id
         |  |  |           |     +--ro hop-type?   te-hop-type
         |  |  |           +--:(as-number)
         |  |  |           |  +--ro as-number-hop
         |  |  |           |     +--ro as-number?   binary
         |  |  |           |     +--ro hop-type?    te-hop-type
         |  |  |           +--:(unnumbered)
         |  |  |           |  +--ro unnumbered-hop
         |  |  |           |     +--ro node-id?      te-types:te-node-id
         |  |  |           |     +--ro link-tp-id?   te-types:te-tp-id
         |  |  |           |     +--ro hop-type?     te-hop-type
         |  |  |           +--:(label)
         |  |  |           |  +--ro label-hop
         |  |  |           |     +--ro value?   rt-types:generalized-
   label
         |  |  |           +--:(sid)
         |  |  |              +--ro sid-hop

         |  |  |                 +--ro sid?   rt-types:generalized-label
         |  |  +--ro connectivity-matrix* [id]
         |  |     +--ro id                          uint32
         |  |     +--ro from
         |  |     |  +--ro tp-ref?              leafref
         |  |     |  +--ro label-restriction* [inclusive-exclusive
   label-start]
         |  |     |     +--ro inclusive-exclusive    enumeration
         |  |     |     +--ro label-start            rt-
   types:generalized-label
         |  |     |     +--ro label-end?             rt-
   types:generalized-label
         |  |     |     +--ro range-bitmap?          binary
         |  |     +--ro to
         |  |     |  +--ro tp-ref?              leafref
         |  |     |  +--ro label-restriction* [inclusive-exclusive
   label-start]
         |  |     |     +--ro inclusive-exclusive    enumeration
         |  |     |     +--ro label-start            rt-
   types:generalized-label
         |  |     |     +--ro label-end?             rt-
   types:generalized-label
         |  |     |     +--ro range-bitmap?          binary
         |  |     +--ro is-allowed?                 boolean
         |  |     +--ro underlay {te-topology-hierarchy}?
         |  |     |  +--ro enabled?                     boolean
         |  |     |  +--ro primary-path
         |  |     |  |  +--ro network-ref?    leafref
         |  |     |  |  +--ro path-element* [path-element-id]
         |  |     |  |     +--ro path-element-id    uint32
         |  |     |  |     +--ro index?             uint32
         |  |     |  |     +--ro (type)?
         |  |     |  |        +--:(numbered)
         |  |     |  |        |  +--ro numbered-hop
         |  |     |  |        |     +--ro address?    te-types:te-tp-id
         |  |     |  |        |     +--ro hop-type?   te-hop-type
         |  |     |  |        +--:(as-number)
         |  |     |  |        |  +--ro as-number-hop
         |  |     |  |        |     +--ro as-number?   binary
         |  |     |  |        |     +--ro hop-type?    te-hop-type
         |  |     |  |        +--:(unnumbered)
         |  |     |  |        |  +--ro unnumbered-hop
         |  |     |  |        |     +--ro node-id?      te-types:te-
   node-id
         |  |     |  |        |     +--ro link-tp-id?   te-types:te-tp-
   id
         |  |     |  |        |     +--ro hop-type?     te-hop-type

         |  |     |  |        +--:(label)
         |  |     |  |        |  +--ro label-hop
         |  |     |  |        |     +--ro value?   rt-types:generalized-
   label
         |  |     |  |        +--:(sid)
         |  |     |  |           +--ro sid-hop
         |  |     |  |              +--ro sid?   rt-types:generalized-
   label
         |  |     |  +--ro backup-path* [index]
         |  |     |  |  +--ro index           uint32
         |  |     |  |  +--ro network-ref?    leafref
         |  |     |  |  +--ro path-element* [path-element-id]
         |  |     |  |     +--ro path-element-id    uint32
         |  |     |  |     +--ro index?             uint32
         |  |     |  |     +--ro (type)?
         |  |     |  |        +--:(numbered)
         |  |     |  |        |  +--ro numbered-hop
         |  |     |  |        |     +--ro address?    te-types:te-tp-id
         |  |     |  |        |     +--ro hop-type?   te-hop-type
         |  |     |  |        +--:(as-number)
         |  |     |  |        |  +--ro as-number-hop
         |  |     |  |        |     +--ro as-number?   binary
         |  |     |  |        |     +--ro hop-type?    te-hop-type
         |  |     |  |        +--:(unnumbered)
         |  |     |  |        |  +--ro unnumbered-hop
         |  |     |  |        |     +--ro node-id?      te-types:te-
   node-id
         |  |     |  |        |     +--ro link-tp-id?   te-types:te-tp-
   id
         |  |     |  |        |     +--ro hop-type?     te-hop-type
         |  |     |  |        +--:(label)
         |  |     |  |        |  +--ro label-hop
         |  |     |  |        |     +--ro value?   rt-types:generalized-
   label
         |  |     |  |        +--:(sid)
         |  |     |  |           +--ro sid-hop
         |  |     |  |              +--ro sid?   rt-types:generalized-
   label
         |  |     |  +--ro protection-type?             identityref
         |  |     |  +--ro tunnel-termination-points
         |  |     |  |  +--ro source?        binary
         |  |     |  |  +--ro destination?   binary
         |  |     |  +--ro tunnels
         |  |     |     +--ro sharing?   boolean
         |  |     |     +--ro tunnel* [tunnel-name]
         |  |     |        +--ro tunnel-name    string
         |  |     |        +--ro sharing?       boolean

         |  |     +--ro path-constraints
         |  |     |  +--ro path-metric-bound* [metric-type]
         |  |     |  |  +--ro metric-type    identityref
         |  |     |  |  +--ro upper-bound?   uint64
         |  |     |  +--ro topology-id?         te-types:te-topology-id
         |  |     |  +--ro ignore-overload?     boolean
         |  |     |  +--ro bandwidth-generic
         |  |     |  |  +--ro te-bandwidth
         |  |     |  |     +--ro (technology)?
         |  |     |  |        +--:(psc)
         |  |     |  |        |  +--ro psc?       rt-types:bandwidth-
   ieee-float32
         |  |     |  |        +--:(otn)
         |  |     |  |        |  +--ro otn* [rate-type]
         |  |     |  |        |     +--ro rate-type    identityref
         |  |     |  |        |     +--ro counter?     uint16
         |  |     |  |        +--:(lsc)
         |  |     |  |        |  +--ro wdm* [spectrum slot]
         |  |     |  |        |     +--ro spectrum    identityref
         |  |     |  |        |     +--ro slot        int16
         |  |     |  |        |     +--ro width?      uint16
         |  |     |  |        +--:(generic)
         |  |     |  |           +--ro generic?   te-bandwidth
         |  |     |  +--ro disjointness?        te-types:te-path-
   disjointness
         |  |     |  +--ro setup-priority?      uint8
         |  |     |  +--ro hold-priority?       uint8
         |  |     |  +--ro signaling-type?      identityref
         |  |     |  +--ro path-affinities
         |  |     |  |  +--ro constraint* [usage]
         |  |     |  |     +--ro usage    identityref
         |  |     |  |     +--ro value?   admin-groups
         |  |     |  +--ro path-srlgs
         |  |     |     +--ro usage?    identityref
         |  |     |     +--ro values*   srlg
         |  |     +--ro optimizations
         |  |     |  +--ro (algorithm)?
         |  |     |     +--:(metric) {path-optimization-metric}?
         |  |     |     |  +--ro optimization-metric* [metric-type]
         |  |     |     |  |  +--ro metric-type    identityref
         |  |     |     |  |  +--ro weight?        uint8
         |  |     |     |  +--ro tiebreakers
         |  |     |     |     +--ro tiebreaker* [tiebreaker-type]
         |  |     |     |        +--ro tiebreaker-type    identityref
         |  |     |     +--:(objective-function) {path-optimization-
   objective-function}?
         |  |     |        +--ro objective-function

         |  |     |           +--ro objective-function-type?
   identityref
         |  |     +--ro computed-path-properties
         |  |        +--ro path-metric* [metric-type]
         |  |        |  +--ro metric-type           identityref
         |  |        |  +--ro accumulative-value?   uint64
         |  |        +--ro path-affinities
         |  |        |  +--ro constraint* [usage]
         |  |        |     +--ro usage    identityref
         |  |        |     +--ro value?   admin-groups
         |  |        +--ro path-srlgs
         |  |        |  +--ro usage?    identityref
         |  |        |  +--ro values*   srlg
         |  |        +--ro path-computed-route-objects
         |  |           +--ro path-computed-route-object* [index]
         |  |              +--ro index             uint32
         |  |              +--ro (type)?
         |  |                 +--:(numbered)
         |  |                 |  +--ro numbered-hop
         |  |                 |     +--ro address?    te-types:te-tp-id
         |  |                 |     +--ro hop-type?   te-hop-type
         |  |                 +--:(as-number)
         |  |                 |  +--ro as-number-hop
         |  |                 |     +--ro as-number?   binary
         |  |                 |     +--ro hop-type?    te-hop-type
         |  |                 +--:(unnumbered)
         |  |                 |  +--ro unnumbered-hop
         |  |                 |     +--ro node-id?      te-types:te-
   node-id
         |  |                 |     +--ro link-tp-id?   te-types:te-tp-
   id
         |  |                 |     +--ro hop-type?     te-hop-type
         |  |                 +--:(label)
         |  |                 |  +--ro label-hop
         |  |                 |     +--ro value?   rt-types:generalized-
   label
         |  |                 +--:(sid)
         |  |                    +--ro sid-hop
         |  |                       +--ro sid?   rt-types:generalized-
   label
         |  +--ro domain-id?                  uint32
         |  +--ro is-abstract?                empty
         |  +--ro name?                       inet:domain-name
         |  +--ro signaling-address*          inet:ip-address
         |  +--ro underlay-topology {te-topology-hierarchy}?
         |     +--ro network-ref?   leafref
         +--ro statistics

         |  +--ro discontinuity-time           yang:date-and-time
         |  +--ro node
         |  |  +--ro disables?             yang:counter32
         |  |  +--ro enables?              yang:counter32
         |  |  +--ro maintenance-sets?     yang:counter32
         |  |  +--ro maintenance-clears?   yang:counter32
         |  |  +--ro modifies?             yang:counter32
         |  +--ro connectivity-matrix-entry
         |     +--ro creates?    yang:counter32
         |     +--ro deletes?    yang:counter32
         |     +--ro disables?   yang:counter32
         |     +--ro enables?    yang:counter32
         |     +--ro modifies?   yang:counter32
         +--rw tunnel-termination-point* [tunnel-tp-id]
            +--rw tunnel-tp-id                           binary
            +--rw admin-status?                          te-types:te-
   admin-status
            +--rw name?                                  string
            +--rw switching-capability?                  identityref
            +--rw encoding?                              identityref
            +--rw inter-layer-lock-id*                   uint32
            +--rw protection-type?                       identityref
            +--rw client-layer-adaptation
            |  +--rw switching-capability* [switching-capability
   encoding]
            |     +--rw switching-capability    identityref
            |     +--rw encoding                identityref
            |     +--rw bandwidth
            |        +--rw te-bandwidth
            |           +--rw (technology)?
            |              +--:(psc)
            |              |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
            |              +--:(otn)
            |              |  +--rw otn* [rate-type]
            |              |     +--rw rate-type    identityref
            |              |     +--rw counter?     uint16
            |              +--:(lsc)
            |              |  +--rw wdm* [spectrum slot]
            |              |     +--rw spectrum    identityref
            |              |     +--rw slot        int16
            |              |     +--rw width?      uint16
            |              +--:(generic)
            |                 +--rw generic?   te-bandwidth
            +--rw local-link-connectivities
            |  +--rw number-of-entries?          uint16

            |  +--rw label-restriction* [inclusive-exclusive label-
   start]
            |  |  +--rw inclusive-exclusive    enumeration
            |  |  +--rw label-start            rt-types:generalized-
   label
            |  |  +--rw label-end?             rt-types:generalized-
   label
            |  |  +--rw range-bitmap?          binary
            |  +--rw is-allowed?                 boolean
            |  +--rw underlay {te-topology-hierarchy}?
            |  |  +--rw enabled?                     boolean
            |  |  +--rw primary-path
            |  |  |  +--rw network-ref?    leafref
            |  |  |  +--rw path-element* [path-element-id]
            |  |  |     +--rw path-element-id    uint32
            |  |  |     +--rw index?             uint32
            |  |  |     +--rw (type)?
            |  |  |        +--:(numbered)
            |  |  |        |  +--rw numbered-hop
            |  |  |        |     +--rw address?    te-types:te-tp-id
            |  |  |        |     +--rw hop-type?   te-hop-type
            |  |  |        +--:(as-number)
            |  |  |        |  +--rw as-number-hop
            |  |  |        |     +--rw as-number?   binary
            |  |  |        |     +--rw hop-type?    te-hop-type
            |  |  |        +--:(unnumbered)
            |  |  |        |  +--rw unnumbered-hop
            |  |  |        |     +--rw node-id?      te-types:te-node-id
            |  |  |        |     +--rw link-tp-id?   te-types:te-tp-id
            |  |  |        |     +--rw hop-type?     te-hop-type
            |  |  |        +--:(label)
            |  |  |        |  +--rw label-hop
            |  |  |        |     +--rw value?   rt-types:generalized-
   label
            |  |  |        +--:(sid)
            |  |  |           +--rw sid-hop
            |  |  |              +--rw sid?   rt-types:generalized-label
            |  |  +--rw backup-path* [index]
            |  |  |  +--rw index           uint32
            |  |  |  +--rw network-ref?    leafref
            |  |  |  +--rw path-element* [path-element-id]
            |  |  |     +--rw path-element-id    uint32
            |  |  |     +--rw index?             uint32
            |  |  |     +--rw (type)?
            |  |  |        +--:(numbered)
            |  |  |        |  +--rw numbered-hop
            |  |  |        |     +--rw address?    te-types:te-tp-id

            |  |  |        |     +--rw hop-type?   te-hop-type
            |  |  |        +--:(as-number)
            |  |  |        |  +--rw as-number-hop
            |  |  |        |     +--rw as-number?   binary
            |  |  |        |     +--rw hop-type?    te-hop-type
            |  |  |        +--:(unnumbered)
            |  |  |        |  +--rw unnumbered-hop
            |  |  |        |     +--rw node-id?      te-types:te-node-id
            |  |  |        |     +--rw link-tp-id?   te-types:te-tp-id
            |  |  |        |     +--rw hop-type?     te-hop-type
            |  |  |        +--:(label)
            |  |  |        |  +--rw label-hop
            |  |  |        |     +--rw value?   rt-types:generalized-
   label
            |  |  |        +--:(sid)
            |  |  |           +--rw sid-hop
            |  |  |              +--rw sid?   rt-types:generalized-label
            |  |  +--rw protection-type?             identityref
            |  |  +--rw tunnel-termination-points
            |  |  |  +--rw source?        binary
            |  |  |  +--rw destination?   binary
            |  |  +--rw tunnels
            |  |     +--rw sharing?   boolean
            |  |     +--rw tunnel* [tunnel-name]
            |  |        +--rw tunnel-name    string
            |  |        +--rw sharing?       boolean
            |  +--rw path-constraints
            |  |  +--rw path-metric-bound* [metric-type]
            |  |  |  +--rw metric-type    identityref
            |  |  |  +--rw upper-bound?   uint64
            |  |  +--rw topology-id?         te-types:te-topology-id
            |  |  +--rw ignore-overload?     boolean
            |  |  +--rw bandwidth-generic
            |  |  |  +--rw te-bandwidth
            |  |  |     +--rw (technology)?
            |  |  |        +--:(psc)
            |  |  |        |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
            |  |  |        +--:(otn)
            |  |  |        |  +--rw otn* [rate-type]
            |  |  |        |     +--rw rate-type    identityref
            |  |  |        |     +--rw counter?     uint16
            |  |  |        +--:(lsc)
            |  |  |        |  +--rw wdm* [spectrum slot]
            |  |  |        |     +--rw spectrum    identityref
            |  |  |        |     +--rw slot        int16
            |  |  |        |     +--rw width?      uint16

            |  |  |        +--:(generic)
            |  |  |           +--rw generic?   te-bandwidth
            |  |  +--rw disjointness?        te-types:te-path-
   disjointness
            |  |  +--rw setup-priority?      uint8
            |  |  +--rw hold-priority?       uint8
            |  |  +--rw signaling-type?      identityref
            |  |  +--rw path-affinities
            |  |  |  +--rw constraint* [usage]
            |  |  |     +--rw usage    identityref
            |  |  |     +--rw value?   admin-groups
            |  |  +--rw path-srlgs
            |  |     +--rw usage?    identityref
            |  |     +--rw values*   srlg
            |  +--rw optimizations
            |  |  +--rw (algorithm)?
            |  |     +--:(metric) {path-optimization-metric}?
            |  |     |  +--rw optimization-metric* [metric-type]
            |  |     |  |  +--rw metric-type    identityref
            |  |     |  |  +--rw weight?        uint8
            |  |     |  +--rw tiebreakers
            |  |     |     +--rw tiebreaker* [tiebreaker-type]
            |  |     |        +--rw tiebreaker-type    identityref
            |  |     +--:(objective-function) {path-optimization-
   objective-function}?
            |  |        +--rw objective-function
            |  |           +--rw objective-function-type?   identityref
            |  +--ro computed-path-properties
            |  |  +--ro path-metric* [metric-type]
            |  |  |  +--ro metric-type           identityref
            |  |  |  +--ro accumulative-value?   uint64
            |  |  +--ro path-affinities
            |  |  |  +--ro constraint* [usage]
            |  |  |     +--ro usage    identityref
            |  |  |     +--ro value?   admin-groups
            |  |  +--ro path-srlgs
            |  |  |  +--ro usage?    identityref
            |  |  |  +--ro values*   srlg
            |  |  +--ro path-computed-route-objects
            |  |     +--ro path-computed-route-object* [index]
            |  |        +--ro index             uint32
            |  |        +--ro (type)?
            |  |           +--:(numbered)
            |  |           |  +--ro numbered-hop
            |  |           |     +--ro address?    te-types:te-tp-id
            |  |           |     +--ro hop-type?   te-hop-type
            |  |           +--:(as-number)

            |  |           |  +--ro as-number-hop
            |  |           |     +--ro as-number?   binary
            |  |           |     +--ro hop-type?    te-hop-type
            |  |           +--:(unnumbered)
            |  |           |  +--ro unnumbered-hop
            |  |           |     +--ro node-id?      te-types:te-node-id
            |  |           |     +--ro link-tp-id?   te-types:te-tp-id
            |  |           |     +--ro hop-type?     te-hop-type
            |  |           +--:(label)
            |  |           |  +--ro label-hop
            |  |           |     +--ro value?   rt-types:generalized-
   label
            |  |           +--:(sid)
            |  |              +--ro sid-hop
            |  |                 +--ro sid?   rt-types:generalized-label
            |  +--rw local-link-connectivity* [link-tp-ref]
            |     +--rw link-tp-ref                 leafref
            |     +--rw label-restriction* [inclusive-exclusive label-
   start]
            |     |  +--rw inclusive-exclusive    enumeration
            |     |  +--rw label-start            rt-types:generalized-
   label
            |     |  +--rw label-end?             rt-types:generalized-
   label
            |     |  +--rw range-bitmap?          binary
            |     +--rw is-allowed?                 boolean
            |     +--rw underlay {te-topology-hierarchy}?
            |     |  +--rw enabled?                     boolean
            |     |  +--rw primary-path
            |     |  |  +--rw network-ref?    leafref
            |     |  |  +--rw path-element* [path-element-id]
            |     |  |     +--rw path-element-id    uint32
            |     |  |     +--rw index?             uint32
            |     |  |     +--rw (type)?
            |     |  |        +--:(numbered)
            |     |  |        |  +--rw numbered-hop
            |     |  |        |     +--rw address?    te-types:te-tp-id
            |     |  |        |     +--rw hop-type?   te-hop-type
            |     |  |        +--:(as-number)
            |     |  |        |  +--rw as-number-hop
            |     |  |        |     +--rw as-number?   binary
            |     |  |        |     +--rw hop-type?    te-hop-type
            |     |  |        +--:(unnumbered)
            |     |  |        |  +--rw unnumbered-hop
            |     |  |        |     +--rw node-id?      te-types:te-
   node-id

            |     |  |        |     +--rw link-tp-id?   te-types:te-tp-
   id
            |     |  |        |     +--rw hop-type?     te-hop-type
            |     |  |        +--:(label)
            |     |  |        |  +--rw label-hop
            |     |  |        |     +--rw value?   rt-types:generalized-
   label
            |     |  |        +--:(sid)
            |     |  |           +--rw sid-hop
            |     |  |              +--rw sid?   rt-types:generalized-
   label
            |     |  +--rw backup-path* [index]
            |     |  |  +--rw index           uint32
            |     |  |  +--rw network-ref?    leafref
            |     |  |  +--rw path-element* [path-element-id]
            |     |  |     +--rw path-element-id    uint32
            |     |  |     +--rw index?             uint32
            |     |  |     +--rw (type)?
            |     |  |        +--:(numbered)
            |     |  |        |  +--rw numbered-hop
            |     |  |        |     +--rw address?    te-types:te-tp-id
            |     |  |        |     +--rw hop-type?   te-hop-type
            |     |  |        +--:(as-number)
            |     |  |        |  +--rw as-number-hop
            |     |  |        |     +--rw as-number?   binary
            |     |  |        |     +--rw hop-type?    te-hop-type
            |     |  |        +--:(unnumbered)
            |     |  |        |  +--rw unnumbered-hop
            |     |  |        |     +--rw node-id?      te-types:te-
   node-id
            |     |  |        |     +--rw link-tp-id?   te-types:te-tp-
   id
            |     |  |        |     +--rw hop-type?     te-hop-type
            |     |  |        +--:(label)
            |     |  |        |  +--rw label-hop
            |     |  |        |     +--rw value?   rt-types:generalized-
   label
            |     |  |        +--:(sid)
            |     |  |           +--rw sid-hop
            |     |  |              +--rw sid?   rt-types:generalized-
   label
            |     |  +--rw protection-type?             identityref
            |     |  +--rw tunnel-termination-points
            |     |  |  +--rw source?        binary
            |     |  |  +--rw destination?   binary
            |     |  +--rw tunnels
            |     |     +--rw sharing?   boolean

            |     |     +--rw tunnel* [tunnel-name]
            |     |        +--rw tunnel-name    string
            |     |        +--rw sharing?       boolean
            |     +--rw path-constraints
            |     |  +--rw path-metric-bound* [metric-type]
            |     |  |  +--rw metric-type    identityref
            |     |  |  +--rw upper-bound?   uint64
            |     |  +--rw topology-id?         te-types:te-topology-id
            |     |  +--rw ignore-overload?     boolean
            |     |  +--rw bandwidth-generic
            |     |  |  +--rw te-bandwidth
            |     |  |     +--rw (technology)?
            |     |  |        +--:(psc)
            |     |  |        |  +--rw psc?       rt-types:bandwidth-
   ieee-float32
            |     |  |        +--:(otn)
            |     |  |        |  +--rw otn* [rate-type]
            |     |  |        |     +--rw rate-type    identityref
            |     |  |        |     +--rw counter?     uint16
            |     |  |        +--:(lsc)
            |     |  |        |  +--rw wdm* [spectrum slot]
            |     |  |        |     +--rw spectrum    identityref
            |     |  |        |     +--rw slot        int16
            |     |  |        |     +--rw width?      uint16
            |     |  |        +--:(generic)
            |     |  |           +--rw generic?   te-bandwidth
            |     |  +--rw disjointness?        te-types:te-path-
   disjointness
            |     |  +--rw setup-priority?      uint8
            |     |  +--rw hold-priority?       uint8
            |     |  +--rw signaling-type?      identityref
            |     |  +--rw path-affinities
            |     |  |  +--rw constraint* [usage]
            |     |  |     +--rw usage    identityref
            |     |  |     +--rw value?   admin-groups
            |     |  +--rw path-srlgs
            |     |     +--rw usage?    identityref
            |     |     +--rw values*   srlg
            |     +--rw optimizations
            |     |  +--rw (algorithm)?
            |     |     +--:(metric) {path-optimization-metric}?
            |     |     |  +--rw optimization-metric* [metric-type]
            |     |     |  |  +--rw metric-type    identityref
            |     |     |  |  +--rw weight?        uint8
            |     |     |  +--rw tiebreakers
            |     |     |     +--rw tiebreaker* [tiebreaker-type]
            |     |     |        +--rw tiebreaker-type    identityref

            |     |     +--:(objective-function) {path-optimization-
   objective-function}?
            |     |        +--rw objective-function
            |     |           +--rw objective-function-type?
   identityref
            |     +--ro computed-path-properties
            |        +--ro path-metric* [metric-type]
            |        |  +--ro metric-type           identityref
            |        |  +--ro accumulative-value?   uint64
            |        +--ro path-affinities
            |        |  +--ro constraint* [usage]
            |        |     +--ro usage    identityref
            |        |     +--ro value?   admin-groups
            |        +--ro path-srlgs
            |        |  +--ro usage?    identityref
            |        |  +--ro values*   srlg
            |        +--ro path-computed-route-objects
            |           +--ro path-computed-route-object* [index]
            |              +--ro index             uint32
            |              +--ro (type)?
            |                 +--:(numbered)
            |                 |  +--ro numbered-hop
            |                 |     +--ro address?    te-types:te-tp-id
            |                 |     +--ro hop-type?   te-hop-type
            |                 +--:(as-number)
            |                 |  +--ro as-number-hop
            |                 |     +--ro as-number?   binary
            |                 |     +--ro hop-type?    te-hop-type
            |                 +--:(unnumbered)
            |                 |  +--ro unnumbered-hop
            |                 |     +--ro node-id?      te-types:te-
   node-id
            |                 |     +--ro link-tp-id?   te-types:te-tp-
   id
            |                 |     +--ro hop-type?     te-hop-type
            |                 +--:(label)
            |                 |  +--ro label-hop
            |                 |     +--ro value?   rt-types:generalized-
   label
            |                 +--:(sid)
            |                    +--ro sid-hop
            |                       +--ro sid?   rt-types:generalized-
   label
            +--ro oper-status?                           te-types:te-
   oper-status
            +--ro geolocation
            |  +--ro altitude?    int64

            |  +--ro latitude?    geographic-coordinate-degree
            |  +--ro longitude?   geographic-coordinate-degree
            +--ro statistics
            |  +--ro discontinuity-time          yang:date-and-time
            |  +--ro tunnel-termination-point
            |  |  +--ro disables?             yang:counter32
            |  |  +--ro enables?              yang:counter32
            |  |  +--ro maintenance-clears?   yang:counter32
            |  |  +--ro maintenance-sets?     yang:counter32
            |  |  +--ro modifies?             yang:counter32
            |  |  +--ro downs?                yang:counter32
            |  |  +--ro ups?                  yang:counter32
            |  |  +--ro in-service-clears?    yang:counter32
            |  |  +--ro in-service-sets?      yang:counter32
            |  +--ro local-link-connectivity
            |     +--ro creates?    yang:counter32
            |     +--ro deletes?    yang:counter32
            |     +--ro disables?   yang:counter32
            |     +--ro enables?    yang:counter32
            |     +--ro modifies?   yang:counter32
            +--rw supporting-tunnel-termination-point* [node-ref tunnel-
   tp-ref]
               +--rw node-ref         inet:uri
               +--rw tunnel-tp-ref    binary
   augment /nw:networks/nw:network/nt:link:
      +--rw te!
         +--rw (bundle-stack-level)?
         |  +--:(bundle)
         |  |  +--rw bundled-links
         |  |     +--rw bundled-link* [sequence]
         |  |        +--rw sequence      uint32
         |  |        +--rw src-tp-ref?   leafref
         |  |        +--rw des-tp-ref?   leafref
         |  +--:(component)
         |     +--rw component-links
         |        +--rw component-link* [sequence]
         |           +--rw sequence             uint32
         |           +--rw src-interface-ref?   string
         |           +--rw des-interface-ref?   string
         +--rw te-link-template*           leafref {template}?
         +--rw te-link-attributes
         |  +--rw access-type?                      te-types:te-link-
   access-type
         |  +--rw external-domain
         |  |  +--rw network-ref?            leafref
         |  |  +--rw remote-te-node-id?      te-types:te-node-id
         |  |  +--rw remote-te-link-tp-id?   te-types:te-tp-id

         |  |  +--rw plug-id?                uint32
         |  +--rw is-abstract?                      empty
         |  +--rw name?                             string
         |  +--rw underlay {te-topology-hierarchy}?
         |  |  +--rw enabled?                     boolean
         |  |  +--rw primary-path
         |  |  |  +--rw network-ref?    leafref
         |  |  |  +--rw path-element* [path-element-id]
         |  |  |     +--rw path-element-id    uint32
         |  |  |     +--rw index?             uint32
         |  |  |     +--rw (type)?
         |  |  |        +--:(numbered)
         |  |  |        |  +--rw numbered-hop
         |  |  |        |     +--rw address?    te-types:te-tp-id
         |  |  |        |     +--rw hop-type?   te-hop-type
         |  |  |        +--:(as-number)
         |  |  |        |  +--rw as-number-hop
         |  |  |        |     +--rw as-number?   binary
         |  |  |        |     +--rw hop-type?    te-hop-type
         |  |  |        +--:(unnumbered)
         |  |  |        |  +--rw unnumbered-hop
         |  |  |        |     +--rw node-id?      te-types:te-node-id
         |  |  |        |     +--rw link-tp-id?   te-types:te-tp-id
         |  |  |        |     +--rw hop-type?     te-hop-type
         |  |  |        +--:(label)
         |  |  |        |  +--rw label-hop
         |  |  |        |     +--rw value?   rt-types:generalized-label
         |  |  |        +--:(sid)
         |  |  |           +--rw sid-hop
         |  |  |              +--rw sid?   rt-types:generalized-label
         |  |  +--rw backup-path* [index]
         |  |  |  +--rw index           uint32
         |  |  |  +--rw network-ref?    leafref
         |  |  |  +--rw path-element* [path-element-id]
         |  |  |     +--rw path-element-id    uint32
         |  |  |     +--rw index?             uint32
         |  |  |     +--rw (type)?
         |  |  |        +--:(numbered)
         |  |  |        |  +--rw numbered-hop
         |  |  |        |     +--rw address?    te-types:te-tp-id
         |  |  |        |     +--rw hop-type?   te-hop-type
         |  |  |        +--:(as-number)
         |  |  |        |  +--rw as-number-hop
         |  |  |        |     +--rw as-number?   binary
         |  |  |        |     +--rw hop-type?    te-hop-type
         |  |  |        +--:(unnumbered)
         |  |  |        |  +--rw unnumbered-hop

         |  |  |        |     +--rw node-id?      te-types:te-node-id
         |  |  |        |     +--rw link-tp-id?   te-types:te-tp-id
         |  |  |        |     +--rw hop-type?     te-hop-type
         |  |  |        +--:(label)
         |  |  |        |  +--rw label-hop
         |  |  |        |     +--rw value?   rt-types:generalized-label
         |  |  |        +--:(sid)
         |  |  |           +--rw sid-hop
         |  |  |              +--rw sid?   rt-types:generalized-label
         |  |  +--rw protection-type?             identityref
         |  |  +--rw tunnel-termination-points
         |  |  |  +--rw source?        binary
         |  |  |  +--rw destination?   binary
         |  |  +--rw tunnels
         |  |     +--rw sharing?   boolean
         |  |     +--rw tunnel* [tunnel-name]
         |  |        +--rw tunnel-name    string
         |  |        +--rw sharing?       boolean
         |  +--rw admin-status?                     te-types:te-admin-
   status
         |  +--rw link-index?                       uint64
         |  +--rw administrative-group?             te-types:admin-
   groups
         |  +--rw interface-switching-capability* [switching-capability
   encoding]
         |  |  +--rw switching-capability    identityref
         |  |  +--rw encoding                identityref
         |  |  +--rw max-lsp-bandwidth* [priority]
         |  |     +--rw priority     uint8
         |  |     +--rw bandwidth
         |  |        +--rw te-bandwidth
         |  |           +--rw (technology)?
         |  |              +--:(psc)
         |  |              |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
         |  |              +--:(otn)
         |  |              |  +--rw otn* [rate-type]
         |  |              |     +--rw rate-type    identityref
         |  |              |     +--rw counter?     uint16
         |  |              +--:(lsc)
         |  |              |  +--rw wdm* [spectrum slot]
         |  |              |     +--rw spectrum    identityref
         |  |              |     +--rw slot        int16
         |  |              |     +--rw width?      uint16
         |  |              +--:(generic)
         |  |                 +--rw generic?   te-bandwidth
         |  +--rw label-restriction* [inclusive-exclusive label-start]

         |  |  +--rw inclusive-exclusive    enumeration
         |  |  +--rw label-start            rt-types:generalized-label
         |  |  +--rw label-end?             rt-types:generalized-label
         |  |  +--rw range-bitmap?          binary
         |  +--rw link-protection-type?             enumeration
         |  +--rw max-link-bandwidth
         |  |  +--rw te-bandwidth
         |  |     +--rw (technology)?
         |  |        +--:(psc)
         |  |        |  +--rw psc?       rt-types:bandwidth-ieee-float32
         |  |        +--:(otn)
         |  |        |  +--rw otn* [rate-type]
         |  |        |     +--rw rate-type    identityref
         |  |        |     +--rw counter?     uint16
         |  |        +--:(lsc)
         |  |        |  +--rw wdm* [spectrum slot]
         |  |        |     +--rw spectrum    identityref
         |  |        |     +--rw slot        int16
         |  |        |     +--rw width?      uint16
         |  |        +--:(generic)
         |  |           +--rw generic?   te-bandwidth
         |  +--rw max-resv-link-bandwidth
         |  |  +--rw te-bandwidth
         |  |     +--rw (technology)?
         |  |        +--:(psc)
         |  |        |  +--rw psc?       rt-types:bandwidth-ieee-float32
         |  |        +--:(otn)
         |  |        |  +--rw otn* [rate-type]
         |  |        |     +--rw rate-type    identityref
         |  |        |     +--rw counter?     uint16
         |  |        +--:(lsc)
         |  |        |  +--rw wdm* [spectrum slot]
         |  |        |     +--rw spectrum    identityref
         |  |        |     +--rw slot        int16
         |  |        |     +--rw width?      uint16
         |  |        +--:(generic)
         |  |           +--rw generic?   te-bandwidth
         |  +--rw unreserved-bandwidth* [priority]
         |  |  +--rw priority     uint8
         |  |  +--rw bandwidth
         |  |     +--rw te-bandwidth
         |  |        +--rw (technology)?
         |  |           +--:(psc)
         |  |           |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
         |  |           +--:(otn)
         |  |           |  +--rw otn* [rate-type]

         |  |           |     +--rw rate-type    identityref
         |  |           |     +--rw counter?     uint16
         |  |           +--:(lsc)
         |  |           |  +--rw wdm* [spectrum slot]
         |  |           |     +--rw spectrum    identityref
         |  |           |     +--rw slot        int16
         |  |           |     +--rw width?      uint16
         |  |           +--:(generic)
         |  |              +--rw generic?   te-bandwidth
         |  +--rw te-default-metric?                uint32
         |  +--rw te-delay-metric?                  uint32
         |  +--rw te-igp-metric?                    uint32
         |  +--rw te-srlgs
         |  |  +--rw value*   te-types:srlg
         |  +--rw te-nsrlgs {nsrlg}?
         |     +--rw id*   uint32
         +--ro oper-status?                te-types:te-oper-status
         +--ro is-transitional?            empty
         +--ro information-source?         te-info-source
         +--ro information-source-state
         |  +--ro credibility-preference?    uint16
         |  +--ro logical-network-element?   string
         |  +--ro network-instance?          string
         |  +--ro topology
         |     +--ro link-ref?      leafref
         |     +--ro network-ref?   leafref
         +--ro information-source-entry* [information-source]
         |  +--ro information-source                te-info-source
         |  +--ro information-source-state
         |  |  +--ro credibility-preference?    uint16
         |  |  +--ro logical-network-element?   string
         |  |  +--ro network-instance?          string
         |  |  +--ro topology
         |  |     +--ro link-ref?      leafref
         |  |     +--ro network-ref?   leafref
         |  +--ro link-index?                       uint64
         |  +--ro administrative-group?             te-types:admin-
   groups
         |  +--ro interface-switching-capability* [switching-capability
   encoding]
         |  |  +--ro switching-capability    identityref
         |  |  +--ro encoding                identityref
         |  |  +--ro max-lsp-bandwidth* [priority]
         |  |     +--ro priority     uint8
         |  |     +--ro bandwidth
         |  |        +--ro te-bandwidth
         |  |           +--ro (technology)?

         |  |              +--:(psc)
         |  |              |  +--ro psc?       rt-types:bandwidth-ieee-
   float32
         |  |              +--:(otn)
         |  |              |  +--ro otn* [rate-type]
         |  |              |     +--ro rate-type    identityref
         |  |              |     +--ro counter?     uint16
         |  |              +--:(lsc)
         |  |              |  +--ro wdm* [spectrum slot]
         |  |              |     +--ro spectrum    identityref
         |  |              |     +--ro slot        int16
         |  |              |     +--ro width?      uint16
         |  |              +--:(generic)
         |  |                 +--ro generic?   te-bandwidth
         |  +--ro label-restriction* [inclusive-exclusive label-start]
         |  |  +--ro inclusive-exclusive    enumeration
         |  |  +--ro label-start            rt-types:generalized-label
         |  |  +--ro label-end?             rt-types:generalized-label
         |  |  +--ro range-bitmap?          binary
         |  +--ro link-protection-type?             enumeration
         |  +--ro max-link-bandwidth
         |  |  +--ro te-bandwidth
         |  |     +--ro (technology)?
         |  |        +--:(psc)
         |  |        |  +--ro psc?       rt-types:bandwidth-ieee-float32
         |  |        +--:(otn)
         |  |        |  +--ro otn* [rate-type]
         |  |        |     +--ro rate-type    identityref
         |  |        |     +--ro counter?     uint16
         |  |        +--:(lsc)
         |  |        |  +--ro wdm* [spectrum slot]
         |  |        |     +--ro spectrum    identityref
         |  |        |     +--ro slot        int16
         |  |        |     +--ro width?      uint16
         |  |        +--:(generic)
         |  |           +--ro generic?   te-bandwidth
         |  +--ro max-resv-link-bandwidth
         |  |  +--ro te-bandwidth
         |  |     +--ro (technology)?
         |  |        +--:(psc)
         |  |        |  +--ro psc?       rt-types:bandwidth-ieee-float32
         |  |        +--:(otn)
         |  |        |  +--ro otn* [rate-type]
         |  |        |     +--ro rate-type    identityref
         |  |        |     +--ro counter?     uint16
         |  |        +--:(lsc)
         |  |        |  +--ro wdm* [spectrum slot]

         |  |        |     +--ro spectrum    identityref
         |  |        |     +--ro slot        int16
         |  |        |     +--ro width?      uint16
         |  |        +--:(generic)
         |  |           +--ro generic?   te-bandwidth
         |  +--ro unreserved-bandwidth* [priority]
         |  |  +--ro priority     uint8
         |  |  +--ro bandwidth
         |  |     +--ro te-bandwidth
         |  |        +--ro (technology)?
         |  |           +--:(psc)
         |  |           |  +--ro psc?       rt-types:bandwidth-ieee-
   float32
         |  |           +--:(otn)
         |  |           |  +--ro otn* [rate-type]
         |  |           |     +--ro rate-type    identityref
         |  |           |     +--ro counter?     uint16
         |  |           +--:(lsc)
         |  |           |  +--ro wdm* [spectrum slot]
         |  |           |     +--ro spectrum    identityref
         |  |           |     +--ro slot        int16
         |  |           |     +--ro width?      uint16
         |  |           +--:(generic)
         |  |              +--ro generic?   te-bandwidth
         |  +--ro te-default-metric?                uint32
         |  +--ro te-delay-metric?                  uint32
         |  +--ro te-igp-metric?                    uint32
         |  +--ro te-srlgs
         |  |  +--ro value*   te-types:srlg
         |  +--ro te-nsrlgs {nsrlg}?
         |     +--ro id*   uint32
         +--ro recovery
         |  +--ro restoration-status?   te-types:te-recovery-status
         |  +--ro protection-status?    te-types:te-recovery-status
         +--ro underlay {te-topology-hierarchy}?
         |  +--ro dynamic?     boolean
         |  +--ro committed?   boolean
         +--ro statistics
            +--ro discontinuity-time                 yang:date-and-time
            +--ro disables?                          yang:counter32
            +--ro enables?                           yang:counter32
            +--ro maintenance-clears?                yang:counter32
            +--ro maintenance-sets?                  yang:counter32
            +--ro modifies?                          yang:counter32
            +--ro downs?                             yang:counter32
            +--ro ups?                               yang:counter32
            +--ro fault-clears?                      yang:counter32

            +--ro fault-detects?                     yang:counter32
            +--ro protection-switches?               yang:counter32
            +--ro protection-reverts?                yang:counter32
            +--ro restoration-failures?              yang:counter32
            +--ro restoration-starts?                yang:counter32
            +--ro restoration-successes?             yang:counter32
            +--ro restoration-reversion-failures?    yang:counter32
            +--ro restoration-reversion-starts?      yang:counter32
            +--ro restoration-reversion-successes?   yang:counter32
   augment /nw:networks/nw:network/nw:node/nt:termination-point:
      +--rw te-tp-id?   te-types:te-tp-id
      +--rw te!
         +--rw admin-status?                     te-types:te-admin-
   status
         +--rw name?                             string
         +--rw interface-switching-capability* [switching-capability
   encoding]
         |  +--rw switching-capability    identityref
         |  +--rw encoding                identityref
         |  +--rw max-lsp-bandwidth* [priority]
         |     +--rw priority     uint8
         |     +--rw bandwidth
         |        +--rw te-bandwidth
         |           +--rw (technology)?
         |              +--:(psc)
         |              |  +--rw psc?       rt-types:bandwidth-ieee-
   float32
         |              +--:(otn)
         |              |  +--rw otn* [rate-type]
         |              |     +--rw rate-type    identityref
         |              |     +--rw counter?     uint16
         |              +--:(lsc)
         |              |  +--rw wdm* [spectrum slot]
         |              |     +--rw spectrum    identityref
         |              |     +--rw slot        int16
         |              |     +--rw width?      uint16
         |              +--:(generic)
         |                 +--rw generic?   te-bandwidth
         +--rw inter-layer-lock-id*              uint32
         +--ro oper-status?                      te-types:te-oper-status
         +--ro geolocation
            +--ro altitude?    int64
            +--ro latitude?    geographic-coordinate-degree
            +--ro longitude?   geographic-coordinate-degree

=====================================
end of diagram

----- Original Message -----
From: "Lou Berger" <[email-masked]>
To: <[email-masked]>
Sent: Wednesday, October 25, 2017 2:13 PM
Subject: Re: [netmod] I-D Action:
draft-ietf-netmod-yang-tree-diagrams-02.txt

---

From: Robert Wilton <[email-masked]>
Date: Thu, 26 Oct 2017 18:07:14 +0100

> useless as a result.  But what practical advice can we give them?
36 pages!  Wow.  It should be split up into smaller chunks, at that size 
I suspect that there is a certain amount of repetition.

Thanks,
Rob

> .

---

From: Mahesh Jethanandani <[email-masked]>
Date: Thu, 26 Oct 2017 10:35:27 -0700

> On Oct 26, 2017, at 9:50 AM, t.petch <[email-masked]> wrote:
> 
> Lou
> 

How about using the depth of the —tree-depth option to generate smaller trees that may not give the whole tree, but at least give you a nice overview? Follow that with smaller chunks using the —tree-path for each section of the tree.

> I append the diagram below

Mahesh Jethanandani
[email-masked]

---

From: Lou Berger <[email-masked]>
Date: Thu, 26 Oct 2017 13:32:45 -0400

Hi Tom,

On 10/26/2017 12:50 PM, t.petch wrote:
> useless as a result. 

I agree.

> But what practical advice can we give them?

we added section 3.2 covering Long Diagrams in general, and due to this
draft we added:

   When long diagrams are included in a document, authors
   should consider whether to include the long diagram in the main body
   of the document or in an appendix.

This is also the recommendation I made to the authors as that draft's
Shepherd...

If you have any suggestion on improving the language that would be most
appreciated.

Lou

---

From: Kent Watsen <[email-masked]>
Date: Thu, 26 Oct 2017 18:28:33 +0000

Indeed. There is a lot of grouping expansion occurring in some of your drafts.

K.  // contributor

--- Alex

> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.ietf.org_mailman_listinfo_netmod&d=DwIFAg&c=HAkYuh63rsuhr6Scbfh0UjBXeMK-ndb3voDTXcWzoCI&r=9zkP0xnJUvZGJ9EPoOH7Yhqn2gsBYaGTvjISlaJdcZo&m=1qgtuzGNb20a7pv6KcMcR0B6nBIUiRm-gHq6W14zeIA&s=u9qR-F0sjdekCZClZZLcRgxYoVyuyixu9MlK9AO8QJI&e=

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 27 Oct 2017 00:17:36 +0200

> If you have any suggestion on improving the language that would be most

I think the suggestion is wrong. A long tree diagram should be split
into smaller meaningful pieces to help readers. Moving the diagram to
a different place in the document does not really achieve anything.

I love the way RFC 7317 is written. Sure, the model in RFC 7317 is not
as complex as some of the newer models but still breaking things into
pieces that are explained with surrounding text is where you get a lot
of added value. Yes, there is real work to be done to produce such a
document but as a reader or reviewer or implementor it helps
tremendously with understanding the model if things are presented in
digestable pieces.

/js

---

From: Lou Berger <[email-masked]>
Date: Thu, 26 Oct 2017 19:03:11 -0400

> a different place in the document does not really achieve anything.
context is everything:
https://tools.ietf.org/html/draft-ietf-netmod-yang-tree-diagrams-02#section-3.2

   As tree diagrams are intended to provide a simplified view of a
   module, diagrams longer than a page should generally be avoided.  If
   the complete tree diagram for a module becomes too long, the diagram
   can be split into several smaller diagrams.  For example, it might be
   possible to have one diagram with the data node and another with all
   notifications.  If the data nodes tree is too long, it is also
   possible to split the diagram into smaller diagrams for different
   subtrees.  When long diagrams are included in a document, authors
   should consider whether to include the long diagram in the main body
   of the document or in an appendix.

again, please suggest improvements.

Lou

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 27 Oct 2017 01:41:23 +0200

> again, please suggest improvements.

Remove the last sentence. Moving lengthy diagrams to an appendix does
not help the reader.

/js

---

From: Martin Bjorklund <[email-masked]>
Date: Fri, 27 Oct 2017 09:44:05 +0200 (CEST)

Robert Wilton <[email-masked]> wrote:
> 36 pages!  Wow.  It should be split up into smaller chunks, at that
> size I suspect that there is a certain amount of repetition.

Right.  I think we need to think about *why* we include these tree
diagrams in the first place, so that it doesn't just become a checkbox
item for draft authors.  The original idea behind including the tree
diagrams was to give the reader an *overview* of the structure of the
model.   If the tree becomes too large, it obviously doesn't help
anymore.  So what do you do in this case?  I think there are a couple
of things you can do:

  o split the diagram into smaller pieces, and explain each piece on
    its own (see e.g. RFC 7317).

  o make use of "..." to show the overall structure w/o all the
    details.  (pyang --tree-depth might help here)

  o introduce the option of not expanding groupings, as was proposed
    earlier.

I'd rather see a small diagram that explains the structure, but
leaves out the details (they are of course found the module), than a
36-page long figure that can't really be read.

/martin

---

From: Lou Berger <[email-masked]>
Date: Fri, 27 Oct 2017 06:00:50 -0400

Juergen,

> Remove the last sentence. Moving lengthy diagrams to an appendix does

Keep in mind this is guidance, so autos may include a long tree even if the 
text says don't.  So what do you want them to do if they decide they really 
want a many page tree? leave the long tree in the body???

Lou

---

From: Lou Berger <[email-masked]>
Date: Fri, 27 Oct 2017 06:06:02 -0400

> 36-page long figure that can't really be read.

I completely agree,  but also think we need to cover (okay, protect 
ourselves from) the case of full trees included in drafts.

Lou

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 27 Oct 2017 12:51:59 +0200

> want a many page tree? leave the long tree in the body???

What I am saying is that the value of the diagram does not change if I
move it around. If a plain fully expanded tree dump is not useful
anymore for the reader to get an overview, then other content must be
produced to provide an overview.  And perhaps the plain tree dump is
then not even needed anymore to be present in the document if there is
other good overview material.

We should encourage authors to split large diagrams into manageable
pieces. Sometimes suppressing lots of statistics counters helps,
sometimes showing which groupings are used instead of their expansion
helps. Sometimes it helps to separate major branches of a tree and to
discuss them separately. We should encourage authors to do these
things. Perhaps we need to state clearly that it is not necessary to
include a plain fully expanded tree diagram.

In the case of draft-ietf-teas-yang-te-topo-12.txt, the fully expanded
tree diagram (36 pages) is simply in no good relation with the size of
the definitions (47 pages). And the authors of this document do the
right thing, they provide overview diagrams that leave out lots of
details and that are comprehensible. So is it valuable to keep the
full dump in the document?

/js

---

From: Lou Berger <[email-masked]>
Date: Fri, 27 Oct 2017 07:04:24 -0400

> other good overview material.
I completely agree.

> things. 

I agree with this too, and this was the goal of the current text.
> Perhaps we need to state clearly that it is not necessary to
Please propose text for the draft!

> full dump in the document?
I personally don't think so, and questioned its usefulness.  I also
suggested moving to an appendix if they really wanted to keep it.  For
whatever reason they decided they wanted to keep it which is, of course,
within their purview.

So, I think the question for us is: what, beyond the change you suggest
above, add to the tree draft to cover cases where authors really want to
include such long trees?

Lou

---

From: "t.petch" <[email-masked]>
Date: Fri, 27 Oct 2017 12:08:37 +0100

Lou

On a slightly different tack, so a slightly modified Subject: line,
when an I-D contains multiple modules, some place all the models
together and then all the modules, e.g.
draft-hares-i2nsf-capability-data-model-04 while others intersperse the
models and the modules, e.g. draft-ietf-lisp-yang-05 .

I think the former is superior and should be recommended, especially
when, as Sue has done, there is a brief paragraph of text before each
model, so it is very clear where a model ends and another begins.  With
the latter, models can be hard to find.

I see this as dovetailing into Juergen's comments on RFC7317 which, to
me, is really several separate modules packaged as one, so the
separation makes excellent sense to a reader.

Where the I-D is already several modules, then do as RFC7317 has done.

Tom Petch

----- Original Message -----
From: "Lou Berger" <[email-masked]>
To: <[email-masked]>
Sent: Wednesday, October 25, 2017 2:13 PM

> > https://tools.ietf.org/html/draft-ietf-netmod-yang-tree-diagrams-02
https://datatracker.ietf.org/doc/html/draft-ietf-netmod-yang-tree-diagra
ms-02
> > A diff from the previous version is available at:
https://www.ietf.org/rfcdiff?url2=draft-ietf-netmod-yang-tree-diagrams-0
2

---

From: "t.petch" <[email-masked]>
Date: Fri, 27 Oct 2017 12:10:03 +0100

----- Original Message -----
From: "Mahesh Jethanandani" <[email-masked]>
To: "t.petch" <[email-masked]>
Sent: Thursday, October 26, 2017 6:35 PM

> useless as a result.  But what practical advice can we give them?

How about using the depth of the —tree-depth option to generate smaller
trees that may not give the whole tree, but at least give you a nice
overview? Follow that with smaller chunks using the —tree-path for each
section of the tree.

<tp>

Yes!  That is what I do manually when I really really want to understand
and refer to a module - but it is time consuming and tedious.

I look to have a top level of less than a page and lower levels which
may be bigger.

I think that this also interacts with groupings.  If a tree diagram with
groupings expanded is 6 pages and one without the expansion is 2 pages
plus one for the grouping, then I would prefer the latter.  YMMV but I
think that there is a guideline in there somewhere.

Tom Petch

> I append the diagram below
<snip>.

Mahesh Jethanandani
[email-masked]

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 27 Oct 2017 13:57:00 +0200

> Please propose text for the draft!

Personally, I think usage guidelines do not belong into the yang tree
document in the first place. Having the document just define what tree
diagrams are would be my preference, leaving usage guidelines to our
guidelines document. Section 3.4 of 6087bis talks about tree diagrams
and I would prefer to have guidelines text in one place. But perhaps a
clear separation of 'here is stuff' from 'this is how we suggest to
use stuff' is difficult in practice. But what we have here is that we
now have two places where advice is given how to use stuff...

That said, RFC 6087bis says:

   YANG tree diagrams provide a concise representation of a YANG module,
   and SHOULD be included to help readers understand YANG module
   structure. Tree diagrams MAY be split into sections to correspond to
   document structure.

With all the capital letters in place, the text might cause people to
draw the wrong conclusion that they have to include plain tree
diagrams. The text does not give a good explanation when a split
should be considered or that a full plain dump may not be needed or
where to find good examples of diagrams broken into pieces. The text
in the yang tree diagram document is actually better in this regard.

The example in section 3.4 of RFC 6087bis is actually repeating the
non-NDMA /foo /foo-state style, well, we are getting off topic.
 
> above, add to the tree draft to cover cases where authors really want to

At the end, WGs decide with the input from the authors, reviewers
etc. and not everything needs to have rules that we cast into RFCs.
Perhaps we are better off having a few questions and answers on the
FAQ concerning tree diagrams.

/js

---

From: Lou Berger <[email-masked]>
Date: Fri, 27 Oct 2017 08:36:43 -0400

Juergen,

On 10/27/2017 7:57 AM, Juergen Schoenwaelder wrote:
> guidelines document.

Having a guidelines document that evolves naturally over time is just
fine, much like coding conventions.  But trying to bundle or wait for
the convention update both increases the cost of doing guidelines and
leaves a time window when the guidelines are not documented.  While in
some cases this may just fine, I think in this case it would leave much
"folklore" undocumented.  In other words, I think we should capture the
guidelines as best as we can in this document. As I think I've stated
publicly before, I also think the we as WG have to figure out how to
work more "nimbly" by resisting the temptation to have big documents
that cover all aspects of the particular topic at once.

I do think your observation on having two sets of guidelines is correct
and not a good thing.  We can address this quite simply by (a) marking
this document as updating 6087bis and (b) ensuring we have a full
replacement to the tree guidelines provided in that document.

>  Section 3.4 of 6087bis talks about tree diagrams
absolutely agree!

Cheers,
Lou

---

From: Lou Berger <[email-masked]>
Date: Fri, 27 Oct 2017 08:38:04 -0400

Tom,

> Where the I-D is already several modules, then do as RFC7317 has done.
Sure, Do you have text you'd like to propose?

---

From: "t.petch" <[email-masked]>
Date: Fri, 27 Oct 2017 18:08:31 +0100

Lou

Suggested text

NEW

3.3 One Document Several Modules

When a document contains several YANG modules, all the tree diagrams
should be placed together, before all the modules.  Each tree diagram
should be preceded by a brief introduction to highlight where one tree
diagram ends and another starts.

If a document contains a single module which is logically a number of
distinct components, the same strategy should be followed; RFC7317
provides a good example of this approach.

/NEW

Like Juergen, I am conflicted as to at what point details like this
should be part of rfc6087bis; I think a paragraph like this does belong
in 'tree-diagrams'.

Tom Petch

----- Original Message -----
From: "Lou Berger" <[email-masked]>
To: "t.petch" <[email-masked]>; <[email-masked]>
Sent: Friday, October 27, 2017 1:38 PM

> >> - Clarified representation of schema mount points and
representation
> > of

---

From: Andy Bierman <[email-masked]>
Date: Fri, 27 Oct 2017 10:16:29 -0700

Hi,

I do not agree that 6087bis should contain every micro-managed detail
that could possibly pertain to YANG, such as what section the
YANG diagram belongs in, or what exact pyang settings should be
used in every possible usage scenario.

It seems obvious that a 36 page tree diagram for a 47 page module is absurd.
Use a lower tree depth or manually replace subtrees with ...

Andy

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Fri, 27 Oct 2017 19:20:27 +0200

Why do we come up with such rules in the first place? It really
depends on the modules and their relationship and it is the
responsibility of the WG, the authors, the reviewers to produce a
reasonable document.

/js

---

From: Lou Berger <[email-masked]>
Date: Fri, 27 Oct 2017 15:40:36 -0400

> responsibility of the WG, the authors, the reviewers to produce a

My personal view - Because having a few knowledgeable people doesn't
scale and not all model writers are at the IETF.

Lou

---

From: Andy Bierman <[email-masked]>
Date: Fri, 27 Oct 2017 12:56:40 -0700

> scale and not all model writers are at the IETF.
It is easy to add a guideline that says "a YANG tree diagram MAY be pruned
if it is too verbose, in order to improve readability.".

Not so easy to define "too verbose" or define what should be pruned.
This is where I agree with Juergen. The authors and reviewers have the
responsibility to make these decisions.

Andy

---

From: "t.petch" <[email-masked]>
Date: Sat, 28 Oct 2017 12:54:16 +0100

----- Original Message -----
From: "Andy Bierman" <[email-masked]>
To: "Lou Berger" <[email-masked]>
Sent: Friday, October 27, 2017 8:56 PM

> responsibility to make these decisions.

A personal take on the size of tree diagrams, based on experience.

One page, as the I-D suggests, fine.

Over five pages, probably of little or no value.

Two or more pages; take steps to reduce, the steps mentioned in the I-D
already, looking for logically separate parts (as per RFC7317), reducing
tree depth, collapsing groupings (probably with a separate tree for each
grouping, which may in turn need to have these rules applied) ....

I think that the tree diagrams I see from the Routing Area are pretty
dire, on account of their size, and that this WG can see that already
whereas other WGs may take a year or two to cotton on.

I am an engineer - I want something that works!

Tom Petch

> > >>>> draft-hares-i2nsf-capability-data-model-04 while others
intersperse
> > >> the
> > >>>> when, as Sue has done, there is a brief paragraph of text
before
> > >> each
> > >>>> model, so it is very clear where a model ends and another
begins.
> > >> With
> > >>>> I see this as dovetailing into Juergen's comments on RFC7317
which,
> > >> to
> > >>>> Where the I-D is already several modules, then do as RFC7317
has
> > >> done.
> > >>>>> This version addresses all known / open issues in the draft
known
> > >> to
> > >>>>>> A New Internet-Draft is available from the on-line
Internet-Drafts
> > >>>> directories.