module openconfig-channel-monitor { yang-version "1"; // namespace namespace "http://openconfig.net/yang/channel-monitor"; prefix "oc-chan-monitor"; // import some basic types import openconfig-extensions { prefix oc-ext; } import openconfig-types { prefix oc-types; } import openconfig-interfaces { prefix oc-if; } import openconfig-platform { prefix oc-platform; } import openconfig-transport-types { prefix oc-opt-types; } // meta organization "OpenConfig working group"; contact "OpenConfig working group www.openconfig.net"; description "This model describes operational state data for an optical channel monitor (OCM) for optical transport line system elements such as wavelength routers (ROADMs) and amplifiers."; oc-ext:openconfig-version "0.3.1"; revision "2017-09-08" { description "Correct bug with OSC interfaces"; reference "0.3.1"; } revision "2017-07-08" { description "Support multiple OCMs, add refs to hw ports, "; reference "0.3.0"; } revision "2017-03-28" { description "Added min/max/avg stats, status for media channels, OCM, APS"; reference "0.2.0"; } revision "2016-09-14" { description "Initial revision"; reference "0.1.0"; } // grouping statements grouping media-channel-port-config { description "Configuration data for a media channel source/dest port"; leaf port-name { type oc-if:base-interface-ref; description "Reference to the corresponding node interface"; } } grouping media-channel-port-state { description "Operational state data for a media channel source/dest port"; } grouping media-channel-source-port-top { description "Top-level grouping for source of the media channel"; container source { description "Top-level container for media channel source"; container config { description "Configuration data for the media channel source"; uses media-channel-port-config; } container state { config false; description "Operational state data for the media channel source"; uses media-channel-port-config; uses media-channel-port-state; } } } grouping media-channel-dest-port-top { description "Top-level grouping for destination of the media channel"; container dest { description "Top-level container for media channel destination"; container config { description "Configuration data for the media channel destination"; uses media-channel-port-config; } container state { config false; description "Operational state data for the media channel destination"; uses media-channel-port-config; uses media-channel-port-state; } } } grouping media-channel-psd-state { description "Operational state data for the media channel PSD"; leaf lower-frequency { type oc-opt-types:frequency-type; description "Lower frequency of the specified PSD"; } leaf upper-frequency { type oc-opt-types:frequency-type; description "Upper frequency of the specified PSD"; } leaf psd { type oc-types:ieeefloat32; units "nW/MHz"; description "Power spectral density expressed in nanowatts per megahertz, nW/MHz. These units allow the value to often be greater than 1.0. It also avoids dealing with zero values for 0dBm. For example, a 40GHz wide channel with 0dBm power would be: 0dBm = 1mW = 10^6nW 40GHz = 40,000MHz 0dBm/40GHz = 10^6nW/40,000MHz = 1000/40 = 25"; } } grouping media-channel-psd-top { description "Top-level grouping "; container channels { description "Enclosing container for the list of values describing the power spectral density distribution"; list channel { key "lower-frequency upper-frequency"; config false; description "List of tuples describing the PSD distribution"; leaf lower-frequency { type leafref { path "../state/lower-frequency"; } description "Reference to the list key"; } leaf upper-frequency { type leafref { path "../state/upper-frequency"; } description "Reference to the list key"; } container state { config false; description "Operational state data for PSD"; uses media-channel-psd-state; } } } } grouping media-channel-config { description "Configuration data for media channel definitions"; leaf index { type uint32; description "Identifier for the defined media channel"; } leaf lower-frequency { type oc-opt-types:frequency-type; description "The lower frequency for the spectrum defined by this media channel"; } leaf upper-frequency { type oc-opt-types:frequency-type; description "The upper frequency for the spectrum defined by this media channel"; } } grouping channel-monitor-config { description "Configuration data for the optical channel monitor"; leaf name { type leafref { path "/oc-platform:components/oc-platform:component/" + "oc-platform:name"; } description "Reference to system-supplied name of the port on the optical channel monitor (OCM). If this port is embedded in another card (i.e. an amplifier card) the device should still define a port representing the OCM even if it is internal and not physically present on the faceplate of the card"; } leaf monitor-port { type leafref { path "/oc-platform:components/oc-platform:component/" + "oc-platform:name"; } description "Reference to system-supplied name of the port that the channel monitor is physically connected to. This port will be of type MONITOR. This port is a tap off of the monitored-port and would be in the same card as the monitored port. If this port is embedded in another card (i.e. an amplifier card) the device should still define a port representing the monitor port if it is internal and not physically present on the faceplate of the card"; } } grouping channel-monitor-state { description "Operational state data "; } grouping channel-monitor-top { description "Top-level grouping "; container channel-monitors { description "Top-level container for optical channel monitors"; list channel-monitor { key "name"; description "List of channel monitors, keyed by channel monitor name."; leaf name { type leafref { path "../config/name"; } description "References the optical channel monitor name"; } container config { description "Configuration data "; uses channel-monitor-config; } container state { config false; description "Operational state data "; uses channel-monitor-config; uses channel-monitor-state; } uses media-channel-psd-top; } } } // data definition statements uses channel-monitor-top; // augment statements // rpc statements // notification statements }