aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-platform-transceiver.yang
diff options
context:
space:
mode:
authorHongjun Ni <hongjun.ni@intel.com>2018-12-21 04:48:35 +0000
committerGerrit Code Review <gerrit@fd.io>2018-12-21 04:48:35 +0000
commit8791f3211bd61d213e4ea4a0af66a14bb2e3a239 (patch)
tree846a89e6ca81d639d024e5509654766d3581b7ea /src/plugins/yang/openconfig/openconfig-platform-transceiver.yang
parentde7bb8f2b0cdd2dfeba0586213bd415c9bb3fd18 (diff)
parent639509ad42f8bd6baf9b6f5b668a9bbfb05108d4 (diff)
Merge "Add Openconfig YANG modules."
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-platform-transceiver.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-platform-transceiver.yang492
1 files changed, 492 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-platform-transceiver.yang b/src/plugins/yang/openconfig/openconfig-platform-transceiver.yang
new file mode 100644
index 0000000..66b9071
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-platform-transceiver.yang
@@ -0,0 +1,492 @@
+module openconfig-platform-transceiver {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/platform/transceiver";
+
+ prefix "oc-transceiver";
+
+ // import some basic types
+ import openconfig-platform { prefix oc-platform; }
+ import openconfig-platform-port { prefix oc-port; }
+ import openconfig-interfaces { prefix oc-if; }
+ import openconfig-transport-types { prefix oc-opt-types; }
+ import openconfig-types { prefix oc-types; }
+ import openconfig-extensions { prefix oc-ext; }
+ import openconfig-yang-types { prefix oc-yang; }
+
+
+ // meta
+ organization "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ www.openconfig.net";
+
+ description
+ "This module defines configuration and operational state data
+ for transceivers (i.e., pluggable optics). The module should be
+ used in conjunction with the platform model where other
+ physical entity data are represented.
+
+ In the platform model, a component of type=TRANSCEIVER is
+ expected to be a subcomponent of a PORT component. This
+ module defines a concrete schema for the associated data for
+ components with type=TRANSCEIVER.";
+
+ oc-ext:openconfig-version "0.5.0";
+
+ revision "2018-05-15" {
+ description
+ "Remove internal-temp state leaf, since we prefer
+ the generic /components/component/state/temperature
+ container for temperature information.";
+ reference "0.5.0";
+ }
+
+ revision "2018-01-22" {
+ description
+ "Fixed physical-channel path reference";
+ reference "0.4.1";
+ }
+
+ revision "2017-09-18" {
+ description
+ "Use openconfig-yang-types module";
+ reference "0.4.0";
+ }
+
+ revision "2017-07-08" {
+ description
+ "Adds clarification on aggregate power measurement data";
+ reference "0.3.0";
+ }
+
+ revision "2016-12-22" {
+ description
+ "Adds preconfiguration data and clarified units";
+ reference "0.2.0";
+ }
+
+ // identity statements
+
+ // typedef statements
+
+ // grouping statements
+
+ grouping optical-power-state {
+ description
+ "Reusable leaves related to optical power state -- these
+ are read-only state values. If avg/min/max statistics are
+ not supported, the target is expected to just supply the
+ instant value";
+
+ container output-power {
+ description
+ "The output optical power of a physical channel in units
+ of 0.01dBm, which may be associated with individual
+ physical channels, or an aggregate of multiple physical
+ channels (i.e., for the overall transceiver). For an
+ aggregate, this may be a measurement from a photodetector
+ or a a calculation performed on the device by summing up
+ all of the related individual physical channels.
+ 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-dBm;
+ }
+
+ container input-power {
+ description
+ "The input optical power of a physical channel in units
+ of 0.01dBm, which may be associated with individual
+ physical channels, or an aggregate of multiple physical
+ channels (i.e., for the overall transceiver). For an
+ aggregate, this may be a measurement from a photodetector
+ or a a calculation performed on the device by summing up
+ all of the related individual physical channels.
+ 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-dBm;
+ }
+
+ container laser-bias-current {
+ description
+ "The current applied by the system to the transmit laser to
+ achieve the output power. The current is expressed in mA
+ with up to 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-mA;
+ }
+ }
+
+ grouping output-optical-frequency {
+ description
+ "Reusable leaves related to optical output power -- this is
+ typically configurable on line side and read-only on the
+ client-side";
+
+ leaf output-frequency {
+ type oc-opt-types:frequency-type;
+ description
+ "The frequency in MHz of the individual physical channel
+ (e.g. ITU C50 - 195.0THz and would be reported as
+ 195,000,000 MHz in this model). This attribute is not
+ configurable on most client ports.";
+ }
+ }
+
+
+ grouping physical-channel-config {
+ description
+ "Configuration data for physical client channels";
+
+ leaf index {
+ type uint16 {
+ range 0..max;
+ }
+ description
+ "Index of the physical channnel or lane within a physical
+ client port";
+ }
+
+ leaf description {
+ type string;
+ description
+ "Text description for the client physical channel";
+ }
+
+ leaf tx-laser {
+ type boolean;
+ description
+ "Enable (true) or disable (false) the transmit label for the
+ channel";
+ }
+
+ 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)";
+ }
+ }
+
+ grouping physical-channel-state {
+ description
+ "Operational state data for client channels.";
+
+ uses output-optical-frequency;
+ uses optical-power-state;
+ }
+
+ grouping physical-channel-top {
+ description
+ "Top-level grouping for physical client channels";
+
+ container physical-channels {
+ description
+ "Enclosing container for client channels";
+
+ list channel {
+ key "index";
+ description
+ "List of client channels, keyed by index within a physical
+ client port. A physical port with a single channel would
+ have a single zero-indexed element";
+
+ leaf index {
+ type leafref {
+ path "../config/index";
+ }
+ description
+ "Reference to the index number of the channel";
+ }
+
+ container config {
+ description
+ "Configuration data for physical channels";
+
+ uses physical-channel-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for channels";
+
+ uses physical-channel-config;
+ uses physical-channel-state;
+ }
+ }
+ }
+ }
+
+
+ grouping port-transceiver-config {
+ description
+ "Configuration data for client port transceivers";
+
+ leaf enabled {
+ type boolean;
+ description
+ "Turns power on / off to the transceiver -- provides a means
+ to power on/off the transceiver (in the case of SFP, SFP+,
+ QSFP,...) or enable high-power mode (in the case of CFP,
+ CFP2, CFP4) and is optionally supported (device can choose to
+ always enable). True = power on / high power, False =
+ powered off";
+ }
+
+ leaf form-factor-preconf {
+ type identityref {
+ base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE;
+ }
+ description
+ "Indicates the type of optical transceiver used on this
+ port. If the client port is built into the device and not
+ pluggable, then non-pluggable is the corresponding state. If
+ a device port supports multiple form factors (e.g. QSFP28
+ and QSFP+, then the value of the transceiver installed shall
+ be reported. If no transceiver is present, then the value of
+ the highest rate form factor shall be reported
+ (QSFP28, for example).
+
+ The form factor is included in configuration data to allow
+ pre-configuring a device with the expected type of
+ transceiver ahead of deployment. The corresponding state
+ leaf should reflect the actual transceiver type plugged into
+ the system.";
+ }
+
+ leaf ethernet-pmd-preconf {
+ type identityref {
+ base oc-opt-types:ETHERNET_PMD_TYPE;
+ }
+ description
+ "The Ethernet PMD is a property of the optical transceiver
+ used on the port, indicating the type of physical connection.
+ It is included in configuration data to allow pre-configuring
+ a port/transceiver with the expected PMD. The actual PMD is
+ indicated by the ethernet-pmd state leaf.";
+ }
+ }
+
+ grouping port-transceiver-state {
+ description
+ "Operational state data for client port transceivers";
+
+ leaf present {
+ type enumeration {
+ enum PRESENT {
+ description
+ "Transceiver is present on the port";
+ }
+ enum NOT_PRESENT {
+ description
+ "Transceiver is not present on the port";
+ }
+ }
+ description
+ "Indicates whether a transceiver is present in
+ the specified client port.";
+ }
+
+ leaf form-factor {
+ type identityref {
+ base oc-opt-types:TRANSCEIVER_FORM_FACTOR_TYPE;
+ }
+ description
+ "Indicates the type of optical transceiver used on this
+ port. If the client port is built into the device and not
+ pluggable, then non-pluggable is the corresponding state. If
+ a device port supports multiple form factors (e.g. QSFP28
+ and QSFP+, then the value of the transceiver installed shall
+ be reported. If no transceiver is present, then the value of
+ the highest rate form factor shall be reported
+ (QSFP28, for example).";
+ }
+
+ leaf connector-type {
+ type identityref {
+ base oc-opt-types:FIBER_CONNECTOR_TYPE;
+ }
+ description
+ "Connector type used on this port";
+ }
+
+ leaf vendor {
+ type string {
+ length 1..16;
+ }
+ description
+ "Full name of transceiver vendor. 16-octet field that
+ contains ASCII characters, left-aligned and padded on the
+ right with ASCII spaces (20h)";
+ }
+
+ leaf vendor-part {
+ type string {
+ length 1..16;
+ }
+ description
+ "Transceiver vendor's part number. 16-octet field that
+ contains ASCII characters, left-aligned and padded on the
+ right with ASCII spaces (20h). If part number is undefined,
+ all 16 octets = 0h";
+ }
+
+ leaf vendor-rev {
+ type string {
+ length 1..2;
+ }
+ description
+ "Transceiver vendor's revision number. 2-octet field that
+ contains ASCII characters, left-aligned and padded on the
+ right with ASCII spaces (20h)";
+ }
+
+ //TODO: these compliance code leaves should be active based on
+ //the type of port
+ leaf ethernet-pmd {
+ type identityref {
+ base oc-opt-types:ETHERNET_PMD_TYPE;
+ }
+ description
+ "Ethernet PMD (physical medium dependent sublayer) that the
+ transceiver supports. The SFF/QSFP MSAs have registers for
+ this and CFP MSA has similar.";
+ }
+
+ leaf sonet-sdh-compliance-code {
+ type identityref {
+ base oc-opt-types:SONET_APPLICATION_CODE;
+ }
+ description
+ "SONET/SDH application code supported by the port";
+ }
+
+ leaf otn-compliance-code {
+ type identityref {
+ base oc-opt-types:OTN_APPLICATION_CODE;
+ }
+ description
+ "OTN application code supported by the port";
+ }
+
+ leaf serial-no {
+ type string {
+ length 1..16;
+ }
+ description
+ "Transceiver serial number. 16-octet field that contains
+ ASCII characters, left-aligned and padded on the right with
+ ASCII spaces (20h). If part serial number is undefined, all
+ 16 octets = 0h";
+ }
+
+ leaf date-code {
+ type oc-yang:date-and-time;
+ description
+ "Representation of the transceiver date code, typically
+ stored as YYMMDD. The time portion of the value is
+ undefined and not intended to be read.";
+ }
+
+ leaf fault-condition {
+ type boolean;
+ description
+ "Indicates if a fault condition exists in the transceiver";
+ }
+
+ uses optical-power-state;
+
+ }
+
+ grouping port-transceiver-top {
+ description
+ "Top-level grouping for client port transceiver data";
+
+ container transceiver {
+ description
+ "Top-level container for client port transceiver data";
+
+ container config {
+ description
+ "Configuration data for client port transceivers";
+
+ uses port-transceiver-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for client port transceivers";
+
+ uses port-transceiver-config;
+ uses port-transceiver-state;
+ }
+ // physical channels are associated with a transceiver
+ // component
+ uses physical-channel-top;
+ }
+ }
+
+ // data definition statements
+
+ // augment statements
+
+ augment "/oc-platform:components/oc-platform:component" {
+ description
+ "Adding transceiver data to physical inventory";
+
+ uses port-transceiver-top {
+ when "current()/oc-platform:state/" +
+ "oc-platform:type = 'TRANSCEIVER'" {
+ description
+ "Augment is active when component is of type TRANSCEIVER";
+ }
+ }
+ }
+
+ augment "/oc-if:interfaces/oc-if:interface/oc-if:state" {
+ //TODO: add 'when' or other condition to make sure this
+ //leafref points to a component of type TRANSCEIVER.
+ description
+ "Adds a reference from the base interface to its corresponding
+ physical channels.";
+
+ leaf-list physical-channel {
+ type leafref {
+ path "/oc-platform:components/" +
+ "oc-platform:component[oc-platform:name=current()/../oc-port:hardware-port]/" +
+ "oc-transceiver:transceiver/" +
+ "oc-transceiver:physical-channels/oc-transceiver:channel/" +
+ "oc-transceiver:index";
+ }
+ description
+ "For a channelized interface, list of references to the
+ physical channels (lanes) corresponding to the interface.";
+ }
+ }
+
+ // rpc statements
+
+ // notification statements
+
+}