Adding OpenConfig YANG models.
Change-Id: I0a2fdd5826e80933cf4b9ae939ff3051acec02aa
diff --git a/models/openconfig/src/main/yang/optical-transport/openconfig-transport-line-protection.yang b/models/openconfig/src/main/yang/optical-transport/openconfig-transport-line-protection.yang
new file mode 100644
index 0000000..311b315
--- /dev/null
+++ b/models/openconfig/src/main/yang/optical-transport/openconfig-transport-line-protection.yang
@@ -0,0 +1,511 @@
+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.";
+
+ //
+ // 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
+ // |_______|
+ //
+
+ oc-ext:openconfig-version "0.3.0";
+
+ 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.";
+ }
+
+ 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";
+ }
+
+ leaf primary-switch-hysteresis {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The delta in 0.01 dB between the primary-switch-threshold
+ and the signal received before initiating a reversion in
+ order to prevent toggling between ports when an input
+ signal is very close to threshold. If the hardware supports
+ only one switch hysteresis for primary and secondary ports
+ then it is recommended to set both primary-switch-threshold
+ and secondary-switch-threshold to the same value to be
+ explicit";
+ }
+
+ 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";
+ }
+
+ leaf secondary-switch-hysteresis {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ units dB;
+ description
+ "The delta in 0.01 dB between the secondary-switch-threshold
+ and the signal received before initiating a reversion in
+ order to prevent toggling between ports when an input
+ signal is very close to threshold. If the hardware supports
+ only one switch hysteresis for primary and secondary ports
+ then it is recommended to set both primary-switch-threshold
+ and secondary-switch-threshold to the same value to be
+ explicit";
+ }
+ }
+
+ 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 automatic 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;
+
+}