From 639509ad42f8bd6baf9b6f5b668a9bbfb05108d4 Mon Sep 17 00:00:00 2001 From: Andrej Kozemcak Date: Thu, 20 Dec 2018 17:49:33 +0100 Subject: Add Openconfig YANG modules. Change-Id: I7e98bf1ca7196cff042a35b8bf096d2ea9d80028 Signed-off-by: Andrej Kozemcak --- .../openconfig-transport-line-protection.yang | 612 +++++++++++++++++++++ 1 file changed, 612 insertions(+) create mode 100644 src/plugins/yang/openconfig/openconfig-transport-line-protection.yang (limited to 'src/plugins/yang/openconfig/openconfig-transport-line-protection.yang') diff --git a/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang b/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang new file mode 100644 index 0000000..0e21a02 --- /dev/null +++ b/src/plugins/yang/openconfig/openconfig-transport-line-protection.yang @@ -0,0 +1,612 @@ +module openconfig-transport-line-protection { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/optical-transport-line-protection"; + + prefix "oc-line-protect"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + import openconfig-platform { prefix oc-platform; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This model describes configuration and operational state data + for optical line protection elements, deployed as part of a + transport line system. An Automatic Protection Switch (APS) + is typically installed in the same device as the amplifiers + and wave-router, however an APS can also be a standalone + device. In both scenarios, it serves the same purpose of + providing protection using two dark fiber pairs to ensure the + amplifiers can still receive a signal if one of the two fiber + pairs is broken. The APS port details and directionality are + shown below. The three major attributes, together with their + modifiers, define the behavior of the APS and can be prioritized + in the descending order as shown in the following table"; + + // + // Automatic Protection Switch (APS) port details and directionality. + // _________ + // | | + // | | <=== LINE-PRIMARY-IN + // | | + // COMMON-IN ===> | | ===> LINE-PRIMARY-OUT + // | | + // | APS | + // COMMON-OUT <=== | | + // | | <=== LINE-SECONDARY-IN + // | | + // | | ===> LINE-SECONDARY-OUT + // |_______| + // + // + // The interaction of configuration attributes that control the + // protection switching behavior + // +------------------+--------------------+------------------------+ + // | Attribute | Modifier | Behavior | + // +------------------+--------------------+------------------------+ + // | force-to-port | n/a | turns off switching | + // | | | by forcing to primary | + // | | | or secondary | + // +------------------+--------------------+------------------------+ + // | relative-switch | relative-threshold | if set, overrides | + // | -threshold | -offset | primary and secondary | + // | | | switch thresholds | + // +------------------+--------------------+------------------------+ + // | primary-switch | primary-switch | sets respective | + // | -threshold, | -hysteresis | threshold to switch | + // | secondary-switch | | to opposite port | + // | -threshold | | | + // +------------------+--------------------+------------------------+ + + oc-ext:openconfig-version "0.4.0"; + + revision "2018-07-25" { + description + "Added wait-to-restore-time, hold-off-time, + relative-switch-threshold, relative-switch-threshold-offset, + forced-to-port, removed secondary-switch-hysteresis, and + edited the description of primary-switch-threshold, + secondary-switch-threshold, and primary-switch-hysteresis"; + reference "0.4.0"; + } + + revision "2017-09-08" { + description + "Correct bug with OSC interfaces"; + reference "0.3.1"; + } + + revision "2017-07-08" { + description + "Support multiple OCMs, add monitor port type + and 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-08-05" { + description + "Initial public release"; + reference "0.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + identity APS_PATHS { + description + "Base identity for identifying the line paths on an + automatic protection switch"; + } + + identity PRIMARY { + base APS_PATHS; + description + "The primary line path connected to an automatic protection + switch port indicating the primary/preferred path"; + } + + identity SECONDARY { + base APS_PATHS; + description + "The secondary line path connected to an automatic protection + switch port indicating the secondary path"; + } + + // grouping statements + + grouping aps-input-port-config { + description + "Grouping for config related to unidirectional automatic + protection switch input ports"; + + leaf enabled { + type boolean; + default "true"; + description + "This leaf contains the configured, desired state of the + port. Disabling the port turns off alarm reporting for + the port"; + } + + leaf target-attenuation { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "Target attenuation of the variable optical attenuator + associated with the port in increments of 0.01 dB."; + } + } + + grouping aps-output-port-config { + description + "Grouping for config related to unidirectional automatic + protection switch output ports"; + + leaf target-attenuation { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "Target attenuation of the variable optical attenuator + associated with the port in increments of 0.01 dB"; + } + } + + grouping aps-input-port-state { + description + "Grouping for state related to unidirectional automatic + protection switch input ports"; + + leaf attenuation { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "The attenuation of the variable optical attenuator + associated with the port in increments of 0.01 dB."; + } + + container optical-power { + description + "The optical input power of this port in units of + 0.01dBm. Optical input power represents the signal + traversing from an external destination into the module. + The power is measured before any attenuation. 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-dBm; + } + } + + grouping aps-output-port-state { + description + "Grouping for state related to unidirectional automatic + protection switch output ports"; + + leaf attenuation { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "The attenuation of the variable optical attenuator + associated with the port in increments of 0.01 dB"; + } + + container optical-power { + description + "The optical output power of this port in units of + 0.01dBm. Optical output power represents the signal + traversing from the module to an external destination. The + power is measured after any attenuation. 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-dBm; + } + } + + grouping aps-ports { + description + "Top level grouping for automatic protection switch ports"; + + container line-primary-in { + description + "Container for information related to the line primary + input port"; + + container config { + description + "Configuration data for the line primary input port"; + + uses aps-input-port-config; + } + + container state { + + config false; + + description + "State data for the line primary input port"; + + uses aps-input-port-config; + uses aps-input-port-state; + } + + } + + container line-primary-out { + description + "Container for information related to the line primary + output port"; + + container config { + description + "Configuration data for the line primary output port"; + + uses aps-output-port-config; + } + + container state { + + config false; + + description + "State data for the line primary output port"; + + uses aps-output-port-config; + uses aps-output-port-state; + } + } + + container line-secondary-in { + description + "Container for information related to the line secondary + input port"; + + container config { + description + "Configuration data for the line secondary input port"; + + uses aps-input-port-config; + } + + container state { + + config false; + + description + "State data for the line secondary input port"; + + uses aps-input-port-config; + uses aps-input-port-state; + } + } + + container line-secondary-out { + description + "Container for information related to the line secondary + output port"; + + container config { + description + "Configuration data for the line secondary output port"; + + uses aps-output-port-config; + } + + container state { + + config false; + + description + "State data for the line secondary output port"; + + uses aps-output-port-config; + uses aps-output-port-state; + } + } + + container common-in { + description + "Container for information related to the line common + input port"; + + container config { + description + "Configuration data for the line common input port"; + + uses aps-input-port-config; + } + + container state { + + config false; + + description + "State data for the line common input port"; + + uses aps-input-port-config; + uses aps-input-port-state; + } + } + + container common-output { + description + "Container for information related to the line common + output port"; + + container config { + description + "Configuration data for the line common output port"; + + uses aps-output-port-config; + } + + container state { + + config false; + + description + "State data for the line common output port"; + + uses aps-output-port-config; + uses aps-output-port-state; + } + } + } + + grouping aps-config { + description + "Configuration data for automatic protection switch modules"; + + leaf name { + type leafref { + path "/oc-platform:components/oc-platform:component/" + + "oc-platform:name"; + } + description + "Reference to the component name (in the platform model) + corresponding to this automatic protection switch module + in the device"; + } + + leaf revertive { + type boolean; + description + "Revertive behavior of the module. If True, then + automatically revert after protection switch once the + fault is restored. This leaf is not valid when the + relative-switch-threshold is in effect"; + } + + leaf wait-to-restore-time { + type uint32; + units milliseconds; + description + "The time that must elapse before an APS path + that has recovered from an signal failure (SF) or signal + degradation (SD) condition can be used again to transport + the normal traffic signal. During this time period, an SF or + SD condition shall override the wait-to-restore time period. + This leaf can only take effect when the revertive leaf + equals true"; + } + + leaf hold-off-time { + type uint32; + units milliseconds; + description + "The time delay between the declaration of an SF or SD + condition and the initiation of the protection switching + algorithm"; + } + + leaf primary-switch-threshold { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The threshold at which the primary line port will switch to + the opposite line port in increments of 0.01 dBm. If the + hardware supports only one switch threshold for primary and + and secondary ports then it is recommended to set both + primary-switch-threshold and secondary-switch-threshold to + the same value to be explicit. When the relative switch + threshold is enabled, i.e. set to a non-zero value, the + primary switch threshold will be overridden"; + } + + leaf primary-switch-hysteresis { + type decimal64 { + fraction-digits 2; + } + units dB; + default 0; + description + "The delta in dB between the primary-switch-threshold + and the signal received on the primary APS_PATH before + initiating a switch from the secondary APS_PATH to the + primary APS_PATH, in order to prevent toggling between ports + when an input signal is very close to the threshold. A zero + value means the switch hysteresis is disabled."; + } + + leaf secondary-switch-threshold { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The threshold at which the secondary line port will switch to + the opposite line port in increments of 0.01 dBm. If the + hardware supports only one switch threshold for primary and + and secondary ports then it is recommended to set both + primary-switch-threshold and secondary-switch-threshold to + the same value to be explicit. When the relative switch + threshold is enabled, i.e. set to a non-zero value, the + secondary switch threshold will be overridden"; + } + + leaf relative-switch-threshold { + type decimal64 { + fraction-digits 2; + } + units dB; + default 0; + description + "The delta threshold in dB at which the current line port + will switch to the opposite line port. It can be set to + the value of 0dB. When set to 0dB, the threshold is ignored + and the system automatically applies the primary and + secondary switch thresholds. When set to a non-zero value, + it overrides the primary and secondary switch thresholds"; + } + + leaf relative-switch-threshold-offset { + type decimal64 { + fraction-digits 2; + } + units dB; + default 0; + description + "The offset of the relative switch threshold that compensates + the normal difference of receiving power between the primary + and secondary line ports. A negative offset corresponds to + the situation where the secondary line port receives a higher + power than the primary line port in normal condition, and a + positive offset means the opposite. The offset will only work + when the relative switch threshold is set to a non-zero + value"; + } + + leaf force-to-port { + type enumeration { + enum NONE { + description + "Do not force the switch to stay on any line port"; + } + enum PRIMARY { + description + "Force the switch to stay on the primary line port"; + } + enum SECONDARY { + description + "Force the switch to stay on the secondary line port"; + } + } + default NONE; + description + "Explicitly set the switch to stay on a port regardless of + its operational condition"; + } + } + + grouping aps-state { + description + "State data for automatic protection switch modules"; + + leaf active-path { + type identityref { + base APS_PATHS; + } + description + "Indicates which line path on the protection switch is + currently the active path connected to the common port"; + } + } + + grouping automatic-protection-switch-top { + description + "Top level grouping for automatic protection switch data"; + + container aps-modules { + description + "Enclosing container for list of automatic protection + switch modules"; + + list aps-module { + key "name"; + description + "List of automatic protection switch modules present + in the device"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the config name list key"; + } + + container config { + description + "Configuration data for an automatic protection + switch module"; + + uses aps-config; + } + + container state { + + config false; + + description + "Operational state data for an automatic protection + switch module"; + + uses aps-config; + uses aps-state; + } + + container ports { + description + "Top level grouping for automatic protection switch ports"; + + uses aps-ports; + } + } + } + } + + grouping transport-line-protection-top { + description + "Top level grouping for transport line protection data"; + + container aps { + description + "Top level grouping for automatic protection switch data"; + + uses automatic-protection-switch-top; + } + } + + // data definition statements + + uses transport-line-protection-top; + +} -- cgit 1.2.3-korg