openconfig-terminal-device

This module describes a terminal optics device model for managing the terminal systems (client and line side) in a DWDM transpor...

  • Version: 2017-07-08

    openconfig-terminal-device@2017-07-08


    
      module openconfig-terminal-device {
    
        yang-version 1;
    
        namespace
          "http://openconfig.net/yang/terminal-device";
    
        prefix oc-opt-term;
    
        import openconfig-types {
          prefix oc-types;
        }
        import openconfig-transport-types {
          prefix oc-opt-types;
        }
        import openconfig-if-ethernet {
          prefix oc-eth;
        }
        import openconfig-platform {
          prefix oc-platform;
        }
        import openconfig-platform-transceiver {
          prefix oc-transceiver;
        }
        import openconfig-extensions {
          prefix oc-ext;
        }
        import ietf-yang-types {
          prefix yang;
        }
    
        organization "OpenConfig working group";
    
        contact
          "OpenConfig working group
         www.openconfig.net";
    
        description
          "This module describes a terminal optics device model for
         managing the terminal systems (client and line side) in a
         DWDM transport network.
         
         Elements of the model:
         
         physical port: corresponds to a physical, pluggable client
         port on the terminal device. Examples includes 10G, 40G, 100G
         (e.g., 10x10G, 4x25G or 1x100G) and 400G/1T in the future.
         Physical client ports will have associated operational state or
         PMs.
         
         physical channel: a physical lane or channel in the
         physical client port.  Each physical client port has 1 or more
         channels. An example is 100GBASE-LR4 client physical port having
         4x25G channels. Channels have their own optical PMs and can be
         monitored independently within a client physical port (e.g.,
         channel power).  Physical client channels are defined in the
         model as part of a physical client port, and are modeled
         primarily for reading their PMs.
         
         logical channel: a logical grouping of logical grooming elements
         that may be assigned to subsequent grooming stages for
         multiplexing / de-multiplexing, or to an optical channel for
         line side transmission.  The logical channels can represent, for
         example, an ODU/OTU logical packing of the client
         data onto the line side.  Tributaries are similarly logical
         groupings of demand that can be represented in this structure and
         assigned to an optical channel.  Note that different types of
         logical channels may be present, each with their corresponding
         PMs.
         
         optical channel:  corresponds to an optical carrier and is
         assigned a wavelength/frequency.  Optical channels have PMs
         such as power, BER, and operational mode.
         
         Directionality:
         
         To maintain simplicity in the model, the configuration is
         described from client-to-line direction.  The assumption is that
         equivalent reverse configuration is implicit, resulting in
         the same line-to-client configuration.
         
         Physical layout:
         
         The model does not assume a particular physical layout of client
         and line ports on the terminal device (e.g., such as number of
         ports per linecard, separate linecards for client and line ports,
         etc.).";
    
        revision "2017-07-08" {
          description "Adds test-signal";
          reference
            "1.0.0";
    
        }
    
        revision "2016-12-22" {
          description
            "Fixes and additions to terminal optics model";
          reference
            "0.4.0";
    
        }
    
        oc-ext:openconfig-version "1.0.0";
    
        grouping terminal-input-optical-power {
          description
            "Reusable leaves related to input optical power";
          leaf input-power {
            type decimal64 {
              fraction-digits 2;
            }
            units "dBm";
            description
              "The input optical power of this port in units of 0.01dBm.
             If the port is an aggregate of multiple physical channels,
             this attribute is the total power or sum of all channels.";
          }
        }  // grouping terminal-input-optical-power
    
        grouping terminal-ethernet-protocol-config {
          description
            "Configuration data for logical channels with Ethernet
           framing";
        }  // grouping terminal-ethernet-protocol-config
    
        grouping terminal-ethernet-protocol-state {
          description
            "Ethernet-specific counters when logical channel
           is using Ethernet protocol framing, e.g., 10GE, 100GE";
          uses oc-eth:ethernet-interface-state-counters;
        }  // grouping terminal-ethernet-protocol-state
    
        grouping terminal-ethernet-protocol-top {
          description
            "Top-level grouping for data related to Ethernet protocol
           framing on logical channels";
          container ethernet {
            description
              "Top level container for data related to Ethernet framing
             for the logical channel";
            container config {
              description
                "Configuration data for Ethernet protocol framing on
               logical channels";
              uses terminal-ethernet-protocol-config;
            }  // container config
    
            container state {
              config false;
              description
                "Operational state data for Ethernet protocol framing
               on logical channels";
              uses terminal-ethernet-protocol-state;
            }  // container state
          }  // container ethernet
        }  // grouping terminal-ethernet-protocol-top
    
        grouping terminal-otn-protocol-config {
          description
            "OTU configuration when logical channel
           framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
          leaf tti-msg-transmit {
            type string;
            description
              "Trail trace identifier (TTI) message transmitted";
          }
    
          leaf tti-msg-expected {
            type string;
            description
              "Trail trace identifier (TTI) message expected";
          }
    
          leaf tti-msg-auto {
            type boolean;
            description
              "Trail trace identifier (TTI) transmit message automatically
             created.  If true, then setting a custom transmit message
             would be invalid.";
          }
        }  // grouping terminal-otn-protocol-config
    
        grouping terminal-otn-protocol-counter-stats {
          description
            "Counter based statistics containers for logical channels
           using OTN framing";
          leaf errored-seconds {
            type yang:counter64;
            description
              "The number of seconds that at least one errored blocks
             occurs, at least one code violation occurs, loss of sync is
             detected or loss of signal is detected";
          }
    
          leaf severely-errored-seconds {
            type yang:counter64;
            description
              "The number of seconds that loss of frame is detected OR
             the number of errored blocks, code violations, loss of sync
             or loss of signal is detected exceeds a predefined
             threshold";
          }
    
          leaf unavailable-seconds {
            type yang:counter64;
            description
              "The number of seconds during which the link is unavailable";
          }
    
          leaf code-violations {
            type yang:counter64;
            description
              "For ethernet or fiberchannel links, the number of 8b/10b
             coding violations. For SONET/SDH, the number of BIP (bit
             interleaved parity) errors";
          }
    
          leaf fec-uncorrectable-words {
            type yang:counter64;
            description
              "The number words that were uncorrectable by the FEC";
          }
    
          leaf fec-corrected-bytes {
            type yang:counter64;
            description
              "The number of bytes that were corrected by the FEC";
          }
    
          leaf fec-corrected-bits {
            type yang:counter64;
            description
              "The number of bits that were corrected by the FEC";
          }
    
          leaf background-block-errors {
            type yang:counter64;
            description
              "The number of background block errors";
          }
        }  // grouping terminal-otn-protocol-counter-stats
    
        grouping terminal-otn-protocol-multi-stats {
          description
            "Multi-value statistics containers for logical channels using
           OTN framing (e.g., max, min, avg, instant)";
          container pre-fec-ber {
            description
              "Bit error rate before forward error correction -- computed
             value with 18 decimal precision. Note that decimal64
             supports values as small as i x 10^-18 where i is an
             integer. Values smaller than this should be reported as 0
             to inidicate error free or near error free performance.
             Values include the instantaneous, average, minimum, and
             maximum statistics. If avg/min/max statistics are not
             supported, the target is expected to just supply the
             instant value";
            uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
          }  // container pre-fec-ber
    
          container post-fec-ber {
            description
              "Bit error rate after forward error correction -- computed
             value with 18 decimal precision. Note that decimal64
             supports values as small as i x 10^-18 where i is an
             integer. Values smaller than this should be reported as 0
             to inidicate error free or near error free performance.
             Values include the instantaneous, average, minimum, and
             maximum statistics. If avg/min/max statistics are not
             supported, the target is expected to just supply the
             instant value";
            uses oc-opt-types:avg-min-max-instant-stats-precision18-ber;
          }  // container post-fec-ber
    
          container q-value {
            description
              "Quality value (factor) in dB of a channel with two
             decimal precision. Values include the instantaneous,
             average, minimum, and maximum statistics. If avg/min/max
             statistics are not supported, the target is expected
             to just supply the instant value";
            uses oc-types:avg-min-max-instant-stats-precision2-dB;
          }  // container q-value
    
          container esnr {
            description
              "Electrical signal to noise ratio. Baud rate
             normalized signal to noise ratio based on
             error vector magnitude in dB with two decimal
             precision. Values include the instantaneous, average,
             minimum, and maximum statistics. If avg/min/max
             statistics are not supported, the target is expected
             to just supply the instant value";
            uses oc-types:avg-min-max-instant-stats-precision2-dB;
          }  // container esnr
        }  // grouping terminal-otn-protocol-multi-stats
    
        grouping terminal-otn-protocol-state {
          description
            "OTU operational state when logical channel
           framing is using an OTU protocol, e.g., OTU1, OTU3, etc.";
          leaf tti-msg-recv {
            type string;
            description
              "Trail trace identifier (TTI) message received";
          }
    
          leaf rdi-msg {
            type string;
            description
              "Remote defect indication (RDI) message received";
          }
    
          uses terminal-otn-protocol-counter-stats;
    
          uses terminal-otn-protocol-multi-stats;
        }  // grouping terminal-otn-protocol-state
    
        grouping terminal-otn-protocol-top {
          description
            "Top-level grouping for data related to OTN protocol framing";
          container otn {
            description
              "Top level container for OTU configuration when logical
             channel framing is using an OTU protocol, e.g., OTU1, OTU3,
             etc.";
            container config {
              description
                "Configuration data for OTN protocol framing";
              uses terminal-otn-protocol-config;
            }  // container config
    
            container state {
              config false;
              description
                "Operational state data for OTN protocol PMs, statistics,
               etc.";
              uses terminal-otn-protocol-config;
    
              uses terminal-otn-protocol-state;
            }  // container state
          }  // container otn
        }  // grouping terminal-otn-protocol-top
    
        grouping terminal-client-port-assignment-config {
          description
            "Configuration data for assigning physical client ports to
           logical channels";
          leaf index {
            type uint32;
            description
              "Index of the client port assignment";
          }
    
          leaf description {
            type string;
            description
              "Descriptive name for the client port-to-logical channel
             mapping";
          }
    
          leaf logical-channel {
            type leafref {
              path
                "/oc-opt-term:terminal-device/oc-opt-term:logical-channels/oc-opt-term:channel/oc-opt-term:index";
            }
            description
              "Reference to the logical channel for this
             assignment";
          }
    
          leaf allocation {
            type decimal64 {
              fraction-digits 3;
            }
            units "Gbps";
            description
              "Allocation of the client physical port to the assigned
             logical channel expressed in Gbps.  In most cases,
             the full client physical port rate is assigned to a single
             logical channel.";
          }
        }  // grouping terminal-client-port-assignment-config
    
        grouping terminal-client-port-assignment-state {
          description
            "Operational state data for assigning physical client ports
           to logical channels";
        }  // grouping terminal-client-port-assignment-state
    
        grouping terminal-client-port-assignment-top {
          description
            "Top-level grouping for the assigment of client physical ports
           to logical channels";
          container logical-channel-assignments {
            description
              "Enclosing container for client port to logical client
             mappings";
            list assignment {
              key "index";
              description
                "List of assignments to logical clients";
              leaf index {
                type leafref {
                  path "../config/index";
                }
                description
                  "Reference to the index of this logical client
                 assignment";
              }
    
              container config {
                description
                  "Configuration data for the logical client assignment";
                uses terminal-client-port-assignment-config;
              }  // container config
    
              container state {
                config false;
                description
                  "Operational state data for the logical client
                 assignment";
                uses terminal-client-port-assignment-config;
    
                uses terminal-client-port-assignment-state;
              }  // container state
            }  // list assignment
          }  // container logical-channel-assignments
        }  // grouping terminal-client-port-assignment-top
    
        grouping terminal-logical-chan-assignment-config {
          description
            "Configuration data for assigning client logical channels
           to line-side tributaries";
          leaf index {
            type uint32;
            description
              "Index of the current logical client channel to tributary
             mapping";
          }
    
          leaf description {
            type string;
            description
              "Name assigned to the logical client channel";
          }
    
          leaf assignment-type {
            type enumeration {
              enum "LOGICAL_CHANNEL" {
                value 0;
                description
                  "Subsequent channel is a logical channel";
              }
              enum "OPTICAL_CHANNEL" {
                value 1;
                description
                  "Subsequent channel is a optical channel / carrier";
              }
            }
            description
              "Each logical channel element may be assigned to subsequent
             stages of logical elements to implement further grooming, or
             can be assigned to a line-side optical channel for
             transmission.  Each assignment also has an associated
             bandwidth allocation.";
          }
    
          leaf logical-channel {
            type leafref {
              path
                "/oc-opt-term:terminal-device/oc-opt-term:logical-channels/oc-opt-term:channel/oc-opt-term:index";
            }
            must
              "../assignment-type = 'LOGICAL_CHANNEL'" {
              description
                "The assignment-type must be set to LOGICAL_CHANNEL for
               this leaf to be valid";
            }
            description
              "Reference to another stage of logical channel elements.";
          }
    
          leaf optical-channel {
            type leafref {
              path
                "/oc-platform:components/oc-platform:component/oc-platform:name";
            }
            must
              "../assignment-type = 'OPTICAL_CHANNEL'" {
              description
                "The assignment-type must be set to OPTICAL_CHANNEL for
               this leaf to be valid";
            }
            description
              "Reference to the line-side optical channel that should
             carry the current logical channel element.  Use this
             reference to exit the logical element stage.";
          }
    
          leaf allocation {
            type decimal64 {
              fraction-digits 3;
            }
            units "Gbps";
            description
              "Allocation of the logical client channel to the tributary
             or sub-channel, expressed in Gbps";
          }
        }  // grouping terminal-logical-chan-assignment-config
    
        grouping terminal-logical-chan-assignment-state {
          description
            "Operational state data for the assignment of logical client
           channel to line-side tributary";
        }  // grouping terminal-logical-chan-assignment-state
    
        grouping terminal-logical-chan-assignment-top {
          description
            "Top-level grouping for the list of logical client channel-to-
           tributary assignments";
          container logical-channel-assignments {
            description
              "Enclosing container for tributary assignments";
            list assignment {
              key "index";
              description
                "Logical channel elements may be assigned directly to
               optical channels for line-side transmission, or can be
               further groomed into additional stages of logical channel
               elements.  The grooming can multiplex (i.e., split the
               current element into multiple elements in the subsequent
               stage) or de-multiplex (i.e., combine the current element
               with other elements into the same element in the subsequent
               stage) logical elements in each stage.
               
               Note that to support the ability to groom the logical
               elements, the list of logical channel elements should be
               populated with an entry for the logical elements at
               each stage, starting with the initial assignment from the
               respective client physical port.
               
               Each logical element assignment consists of a pointer to
               an element in the next stage, or to an optical channel,
               along with a bandwidth allocation for the corresponding
               assignment (e.g., to split or combine signal).";
              leaf index {
                type leafref {
                  path "../config/index";
                }
                description
                  "Reference to the index for the current tributary
                 assignment";
              }
    
              container config {
                description
                  "Configuration data for tributary assignments";
                uses terminal-logical-chan-assignment-config;
              }  // container config
    
              container state {
                config false;
                description
                  "Operational state data for tributary assignments";
                uses terminal-logical-chan-assignment-config;
    
                uses terminal-logical-chan-assignment-state;
              }  // container state
            }  // list assignment
          }  // container logical-channel-assignments
        }  // grouping terminal-logical-chan-assignment-top
    
        grouping terminal-logical-channel-ingress-config {
          description
            "Configuration data for ingress signal to logical channel";
          leaf transceiver {
            type leafref {
              path
                "/oc-platform:components/oc-platform:component/oc-platform:name";
            }
            description
              "Reference to the transceiver carrying the input signal
             for the logical channel.  If specific physical channels
             are mapped to the logical channel (as opposed to all
             physical channels carried by the transceiver), they can be
             specified in the list of physical channel references.";
          }
    
          leaf-list physical-channel {
            type leafref {
              path
                "/oc-platform:components/oc-platform:component/oc-transceiver:transceiver/oc-transceiver:physical-channels/oc-transceiver:channel/oc-transceiver:index";
            }
            description
              "This list should be populated with references
             to the client physical channels that feed this logical
             channel from the transceiver specified in the 'transceiver'
             leaf, which must be specified.  If this leaf-list is empty,
             all physical channels in the transceiver are assumed to be
             mapped to the logical channel.";
          }
        }  // grouping terminal-logical-channel-ingress-config
    
        grouping terminal-logical-channel-ingress-state {
          description
            "Operational state data for ingress signal to logical channel";
        }  // grouping terminal-logical-channel-ingress-state
    
        grouping terminal-logical-channel-ingress-top {
          description
            "Top-level grouping for ingress signal to logical channel";
          container ingress {
            description
              "Top-level container for specifying references to the
             source of signal for the logical channel, either a
             transceiver or individual physical channels";
            container config {
              description
                "Configuration data for the signal source for the
               logical channel";
              uses terminal-logical-channel-ingress-config;
            }  // container config
    
            container state {
              config false;
              description
                "Operational state data for the signal source for the
               logical channel";
              uses terminal-logical-channel-ingress-config;
    
              uses terminal-logical-channel-ingress-state;
            }  // container state
          }  // container ingress
        }  // grouping terminal-logical-channel-ingress-top
    
        grouping terminal-logical-channel-config {
          description
            "Configuration data for logical channels";
          leaf index {
            type uint32;
            description
              "Index of the current logical channel";
          }
    
          leaf description {
            type string;
            description
              "Description of the logical channel";
          }
    
          leaf admin-state {
            type oc-opt-types:admin-state-type;
            description
              "Sets the admin state of the logical channel";
          }
    
          leaf rate-class {
            type identityref {
              base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE;
            }
            description
              "Rounded bit rate of the tributary signal. Exact bit rate
             will be refined by protocol selection.";
          }
    
          leaf trib-protocol {
            type identityref {
              base oc-opt-types:TRIBUTARY_PROTOCOL_TYPE;
            }
            description
              "Protocol framing of the tributary signal. If this
             LogicalChannel is directly connected to a Client-Port or
             Optical-Channel, this is the protocol of the associated port.
             If the LogicalChannel is connected to other LogicalChannels,
             the TributaryProtocol of the LogicalChannels will define a
             specific mapping/demapping or multiplexing/demultiplexing
             function.
             
             Not all protocols are valid, depending on the value
             of trib-rate-class.  The expectation is that the NMS
             will validate that a correct combination of rate class
             and protocol are specfied.  Basic combinations are:
             
             rate class: 1G
             protocols: 1GE
             
             rate class: 2.5G
             protocols: OC48, STM16
             
             rate class: 10G
             protocols:  10GE LAN, 10GE WAN, OC192, STM64, OTU2, OTU2e,
                        OTU1e, ODU2, ODU2e, ODU1e
             
             rate class: 40G
             protocols:  40GE, OC768, STM256, OTU3, ODU3
             
             rate class: 100G
             protocols:  100GE, 100G MLG, OTU4, OTUCn, ODU4";
          }
    
          leaf logical-channel-type {
            type identityref {
              base oc-opt-types:LOGICAL_ELEMENT_PROTOCOL_TYPE;
            }
            description
              "The type / stage of the logical element determines the
             configuration and operational state parameters (PMs)
             available for the logical element";
          }
    
          leaf loopback-mode {
            type oc-opt-types:loopback-mode-type;
            description
              "Sets the loopback type on the logical channel. Setting the
             mode to something besides NONE activates the loopback in
             the specified mode.";
          }
    
          leaf test-signal {
            type boolean;
            description
              "When enabled the logical channel's DSP will generate a pseudo
             randmon bit stream (PRBS) which can be used during testing.";
          }
        }  // grouping terminal-logical-channel-config
    
        grouping terminal-logical-channel-state {
          description
            "Operational state data for logical client channels";
          leaf link-state {
            type enumeration {
              enum "UP" {
                value 0;
                description
                  "Logical channel is operationally up";
              }
              enum "DOWN" {
                value 1;
                description
                  "Logical channel is operationally down";
              }
            }
            description
              "Link-state of the Ethernet protocol on the logical channel,
             SONET / SDH framed signal, etc.";
          }
        }  // grouping terminal-logical-channel-state
    
        grouping terminal-logical-channel-top {
          description
            "Top-level grouping for logical channels";
          container logical-channels {
            description
              "Enclosing container the list of logical channels";
            list channel {
              key "index";
              description
                "List of logical channels";
              leaf index {
                type leafref {
                  path "../config/index";
                }
                description
                  "Reference to the index of the logical channel";
              }
    
              container config {
                description
                  "Configuration data for logical channels";
                uses terminal-logical-channel-config;
              }  // container config
    
              container state {
                config false;
                description
                  "Operational state data for logical channels";
                uses terminal-logical-channel-config;
    
                uses terminal-logical-channel-state;
              }  // container state
    
              uses terminal-otn-protocol-top {
                when
                  "config/logical-channel-type = 'oc-opt-types:PROT_OTN'" {
                  description
                    "Include the OTN protocol data only when the
                   channel is using OTN framing.";
                }
              }
    
              uses terminal-ethernet-protocol-top {
                when
                  "config/logical-channel-type = 'oc-opt-types:PROT_ETHERNET'" {
                  description
                    "Include the Ethernet protocol statistics only when the
                   protocol used by the link is Ethernet.";
                }
              }
    
              uses terminal-logical-channel-ingress-top;
    
              uses terminal-logical-chan-assignment-top;
            }  // list channel
          }  // container logical-channels
        }  // grouping terminal-logical-channel-top
    
        grouping terminal-optical-channel-config {
          description
            "Configuration data for describing optical channels";
          leaf frequency {
            type oc-opt-types:frequency-type;
            description
              "Frequency of the optical channel, expressed in MHz";
          }
    
          leaf target-output-power {
            type decimal64 {
              fraction-digits 2;
            }
            units "dBm";
            description
              "Target output optical power level of the optical channel,
             expressed in increments of 0.01 dBm (decibel-milliwats)";
          }
    
          leaf operational-mode {
            type uint16;
            description
              "Vendor-specific mode identifier -- sets the operational
             mode for the channel.  The specified operational mode must
             exist in the list of supported operational modes supplied
             by the device";
          }
    
          leaf line-port {
            type leafref {
              path "/oc-platform:components/oc-platform:component/oc-platform:name";
            }
            description
              "Reference to the line-side physical port that carries
             this optical channel.  The target port should be
             a component in the physical inventory data model.";
          }
        }  // grouping terminal-optical-channel-config
    
        grouping terminal-optical-channel-state {
          description
            "Operational state data for optical channels";
          leaf group-id {
            type uint32;
            description
              "If the device places constraints on which optical
             channels must be managed together (e.g., transmitted on the
             same line port), it can indicate that by setting the group-id
             to the same value across related optical channels.";
          }
    
          uses oc-transceiver:optical-power-state;
    
          container chromatic-dispersion {
            description
              "Chromatic Dispersion of an optical channel in
             picoseconds / nanometer (ps/nm) as reported by receiver
             with two decimal precision. Values include the instantaneous,
             average, minimum, and maximum statistics. If avg/min/max
             statistics are not supported, the target is expected to just
             supply the instant value";
            uses oc-opt-types:avg-min-max-instant-stats-precision2-ps-nm;
          }  // container chromatic-dispersion
    
          container polarization-mode-dispersion {
            description
              "Polarization Mode Dispersion of an optical channel
             in picosends (ps) as reported by receiver with two decimal
             precision. Values include the instantaneous, average,
             minimum, and maximum statistics. If avg/min/max statistics
             are not supported, the target is expected to just supply the
             instant value";
            uses oc-opt-types:avg-min-max-instant-stats-precision2-ps;
          }  // container polarization-mode-dispersion
    
          container second-order-polarization-mode-dispersion {
            description
              "Second Order Polarization Mode Dispersion of an optical
             channel in picoseconds squared (ps^2) as reported by
             receiver with two decimal precision. Values include the
             instantaneous, average, minimum, and maximum statistics.
             If avg/min/max statistics are not supported, the target
             is expected to just supply the instant value";
            uses oc-opt-types:avg-min-max-instant-stats-precision2-ps2;
          }  // container second-order-polarization-mode-dispersion
    
          container polarization-dependent-loss {
            description
              "Polarization Dependent Loss of an optical channel
             in dB as reported by receiver with two decimal precision.
             Values include the instantaneous, average, minimum, and
             maximum statistics. If avg/min/max statistics are not
             supported, the target is expected to just supply the
             instant value";
            uses oc-types:avg-min-max-instant-stats-precision2-dB;
          }  // container polarization-dependent-loss
        }  // grouping terminal-optical-channel-state
    
        grouping terminal-optical-channel-top {
          description
            "Top-level grouping for optical channel data";
          container optical-channel {
            description
              "Enclosing container for the list of optical channels";
            container config {
              description
                "Configuration data for optical channels";
              uses terminal-optical-channel-config;
            }  // container config
    
            container state {
              config false;
              description
                "Operational state data for optical channels";
              uses terminal-optical-channel-config;
    
              uses terminal-optical-channel-state;
            }  // container state
          }  // container optical-channel
        }  // grouping terminal-optical-channel-top
    
        grouping terminal-operational-mode-config {
          description
            "Configuration data for vendor-supported operational modes";
        }  // grouping terminal-operational-mode-config
    
        grouping terminal-operational-mode-state {
          description
            "Operational state data for vendor-supported operational
           modes";
          leaf mode-id {
            type uint16;
            description
              "Two-octet encoding of the vendor-defined operational
             mode";
          }
    
          leaf description {
            type string;
            description
              "Vendor-supplied textual description of the characteristics
             of this operational mode to enable operators to select the
             appropriate mode for the application.";
          }
    
          leaf vendor-id {
            type string;
            description
              "Identifier to represent the vendor / supplier of the
             platform and the associated operational mode information";
          }
        }  // grouping terminal-operational-mode-state
    
        grouping terminal-operational-mode-top {
          description
            "Top-level grouping for vendor-supported operational modes";
          container operational-modes {
            description
              "Enclosing container for list of operational modes";
            list mode {
              key "mode-id";
              config false;
              description
                "List of operational modes supported by the platform.
               The operational mode provides a platform-defined summary
               of information such as symbol rate, modulation, pulse
               shaping, etc.";
              leaf mode-id {
                type leafref {
                  path "../state/mode-id";
                }
                description
                  "Reference to mode-id";
              }
    
              container config {
                description
                  "Configuration data for operational mode";
                uses terminal-operational-mode-config;
              }  // container config
    
              container state {
                config false;
                description
                  "Operational state data for the platform-defined
                 operational mode";
                uses terminal-operational-mode-config;
    
                uses terminal-operational-mode-state;
              }  // container state
            }  // list mode
          }  // container operational-modes
        }  // grouping terminal-operational-mode-top
    
        grouping terminal-device-config {
          description
            "Configuration data for transport terminal devices at a
           device-wide level";
        }  // grouping terminal-device-config
    
        grouping terminal-device-state {
          description
            "Operational state data for transport terminal devices at a
           device-wide level";
        }  // grouping terminal-device-state
    
        grouping terminal-device-top {
          description
            "Top-level grouping for data for terminal devices";
          container terminal-device {
            description
              "Top-level container for the terminal device";
            container config {
              description
                "Configuration data for global terminal-device";
              uses terminal-device-config;
            }  // container config
    
            container state {
              config false;
              description
                "Operational state data for global terminal device";
              uses terminal-device-config;
    
              uses terminal-device-state;
            }  // container state
    
            uses terminal-logical-channel-top;
    
            uses terminal-operational-mode-top;
          }  // container terminal-device
        }  // grouping terminal-device-top
    
        uses terminal-device-top;
    
        augment /oc-platform:components/oc-platform:component {
          when
            "/oc-platform:components/oc-platform:component/oc-platform:state/oc-platform:type = 'OPTICAL_CHANNEL'" {
            description
              "Augment is active when component is of type
             OPTICAL_CHANNEL";
          }
          description
            "Adding optical channel data to physical inventory";
          uses terminal-optical-channel-top;
        }
      }  // module openconfig-terminal-device
    

© 2023 YumaWorks, Inc. All rights reserved.