Add WG4 yangs published 2023-03 (v11)
[scp/oam/modeling.git] / data-model / yang / published / o-ran / ru-fh / o-ran-hardware@2022-12-05.yang
diff --git a/data-model/yang/published/o-ran/ru-fh/o-ran-hardware@2022-12-05.yang b/data-model/yang/published/o-ran/ru-fh/o-ran-hardware@2022-12-05.yang
new file mode 100644 (file)
index 0000000..17b3b46
--- /dev/null
@@ -0,0 +1,420 @@
+module o-ran-hardware {
+  yang-version 1.1;
+  namespace "urn:o-ran:hardware:1.0";
+  prefix "o-ran-hw";
+
+  import ietf-hardware {
+    prefix hw;
+  }
+  import iana-hardware {
+    prefix ianahw;
+  }
+  import ietf-yang-types {
+    prefix yang;
+  }
+  import o-ran-wg4-features {
+    prefix or-feat;
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the YANG definitions for managing the O-RAN hardware.
+
+     Copyright 2021 the O-RAN Alliance.
+
+     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+     ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+     LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+     POSSIBILITY OF SUCH DAMAGE.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions are met:
+
+     * Redistributions of source code must retain the above copyright notice,
+     this list of conditions and the above disclaimer.
+     * Redistributions in binary form must reproduce the above copyright notice,
+     this list of conditions and the above disclaimer in the documentation
+     and/or other materials provided with the distribution.
+     * Neither the Members of the O-RAN Alliance nor the names of its
+     contributors may be used to endorse or promote products derived from
+     this software without specific prior written permission.";
+
+  revision "2022-12-05" {
+   description
+     "version 10.1.0
+
+     1) Clarifications for Network Energy Saving";
+
+   reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introduction of O-RU connector functionality.
+      2) fixing constraints";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 5.2.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 5.1.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-12-10" {
+    description
+      "version 5.0.0
+
+      1) added date-last-service leaf used in pnfRegistration";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-04-17" {
+    description
+      "version 3.0.0
+
+      1) added new leaf to indicate whether O-RU supports dying gasp
+      2) added new identities for PA and FPGA";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+  revision "2019-07-03" {
+    description
+      "version 1.1.0
+
+      1) added new identities to accommodate cross working group use of
+      o-ran-hardware and assoicated set of augmentations that are backwards
+      compatible to version 1.0.0";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  feature ENERGYSAVING {
+    description
+      "Indicates that the Radio Unit supports energy saving state.";
+  }
+
+  // identity statements
+  identity O-RAN-RADIO {
+    base ianahw:module;
+    description
+      "Module used as it represents a self-contained sub-system
+      used in /hw:/hardware/hw:component/hw:class to represent
+      an O-RAN RU";
+  }
+
+  identity O-RAN-HW-COMPONENT {
+    base ianahw:module;
+    description
+      "Module used as it represents a self-contained sub-system
+      used in /hw:/hardware/hw:component/hw:class to represent
+      any O-RAN hardware component";
+  }
+
+  identity O-DU-COMPONENT {
+    base O-RAN-HW-COMPONENT;
+    description
+      "Used in /hw:/hardware/hw:component/hw:class to represent
+      any O-RAN defined O-DU hardware component";
+  }
+
+  identity O-RU-COMPONENT {
+    base O-RAN-HW-COMPONENT;
+    description
+      "Used in /hw:/hardware/hw:component/hw:class to represent
+      any O-RAN defined O-RU hardware component, including a stand-alone
+      O-RU or an O-RU component integrated into a multi-module system.";
+  }
+
+  identity O-RU-POWER-AMPLIFIER {
+    base O-RU-COMPONENT;
+    description
+      "Used in /hw:/hardware/hw:component/hw:class to represent
+      an O-RU's power amplifier, and may be used for reporting
+      measurements on a per class basis";
+  }
+
+  identity O-RU-FPGA {
+    base O-RU-COMPONENT;
+    description
+      "Used in /hw:/hardware/hw:component/hw:class to represent
+      an FPGA in an O-RU, and may be used for reporting
+      measurements on a per class basis";
+  }
+
+  identity O-RU-CONNECTOR {
+    base ianahw:hardware-class;
+    description
+      "This identity is applicable if the hardware class is some sort
+      of O-RU connector.";
+  }
+
+  identity O-RU-ANTENNA-CONNECTOR {
+    base O-RU-CONNECTOR;
+    description
+      "This identity is applicable if the hardware class is some sort
+      of connector capable of interfacing between an O-RU and some
+      antenna function.";
+  }
+
+  identity O-RU-FEEDER {
+    base O-RU-ANTENNA-CONNECTOR;
+    description
+      "This identity is applicable if the hardware class is an
+      antenna feeder.";
+  }
+
+  identity O-RU-BF-CAL {
+    base O-RU-ANTENNA-CONNECTOR;
+    description
+      "This identity is applicable if the hardware class is for
+      beamforming calibration.";
+  }
+
+  // typedef statements
+  typedef energysaving-state {
+    type enumeration {
+      enum UNKNOWN {
+        description
+          "The O-RU is unable to report its energy saving state.";
+      }
+      enum SLEEPING {
+        description
+          "The O-RU is in energy saving state. In this mode M-Plane connection is active. Depending
+          on the O-RU's design - other planes, functions and hardware components which are not needed
+          by the O-RU in energy saving state can be disabled or switched off by the O-RU autonomously.";
+      }
+      enum AWAKE {
+        description
+          "The O-RU is not in an energy saving state.";
+      }
+    }
+    description
+      "New typedef since ietf-hardware only covers power-state
+      for redundancy purposes, not to indicate energy saving operations.
+      For details please see O-RAN WG4 M-Plane specification, clause 9.1.3 'Modify state'";
+  }
+
+  typedef availability-type {
+    type enumeration {
+      enum UNKNOWN {
+        description "The Radio Unit is unable to report its availability state.";
+      }
+      enum NORMAL {
+        description
+          "The equipment is functioning correctly.";
+      }
+      enum DEGRADED {
+        description
+          "The equipment may be reporting a major alarm or may be reporting a critical
+           alarm that is only impacting one or more subcomponent, but where the
+           equipment's implementation permit it to continue operation (server traffic)
+           in a degraded state.
+
+           Used for example, when the equipment has M identical sub-components and
+           when a critical alarm is impacting only N subcomponents, where N<M.";
+      }
+      enum FAULTY {
+        description
+          "The (sub-)components impacted by the critical alarm(s) impact the
+          ability of the equipment to continue operation (serve traffic).";
+      }
+    }
+    description
+      "Equipment's availability-state is derived by matching active faults
+       and their impact to module's operation and enables an equipment to indicate
+       that even though it may have one or more critical alarms, it can continue
+       to serve traffic.";
+  }
+
+  // common WG4 and cross-WG augmentations using O-RAN-RADIO identity
+
+  augment "/hw:hardware/hw:component" {
+    when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-RADIO')) or
+    (derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))";
+    description "New O-RAN parameters for o-ran hardware";
+
+    container label-content {
+      config false;
+      description
+        "Which set of attributes are printed on the Radio Unit's label";
+      leaf model-name {
+        type boolean;
+        description
+          "indicates whether model-name is included on the equipment's label";
+      }
+      leaf serial-number {
+        type boolean;
+        description
+          "indicates whether serial number is included on the equipment's label";
+      }
+    }
+    leaf product-code {
+      type string;
+      config false;
+      mandatory true;
+      description
+        "O-RAN term that is distinct from model-name in ietf-hardware.";
+    }
+    leaf energy-saving-enabled {
+      if-feature "ENERGYSAVING";
+      type boolean;
+      default false;
+      description
+        "This parameter enables the O-RU to enter into energy saving state if there is no need to keep processing
+         paths working.
+         TRUE is used to permit the O-RU to enter energy saving state. If there is still need keep any
+         processing path, functions or HW components working.
+         The O-RU shall keep necessary processing paths working if there is any [tr]x-array-carrier with
+         'state' != DISABLED.
+         There may be also additional implementation-specific conditions which may require keeping processing paths,
+         functions or HW components working.
+         FALSE is used to prohibit the O-RU to enter or to stay in energy saving state. This value is also used
+         to awake the O-RU from sleeping when the O-RU is already in energy saving state. Setting this value has
+         no effect on [tr]x-array-carrier::active.
+         When the O-RU enters energy saving state, the O-RU shall reduce its power consumption to the lowest level
+         whilst M-plane remains available. Ongoing Netconf session(s) shall not be affected when the O-RU enters
+         energy saving state.
+         The O-RU uses RO node power-state to inform if the O-RU is in energy saving state.
+         NETCONF client should set energy-saving-enabled to FALSE to ensure O-RU is ready to immediately activate a carrier.";
+    }
+    leaf dying-gasp-support {
+      type boolean;
+      default false;
+      config false;
+      description
+        "indicates whether the O-RU supports the dying gasp
+        capability";
+    }
+    leaf last-service-date {
+      if-feature "or-feat:NON-PERSISTENT-MPLANE";
+      type yang:date-and-time;
+      description
+        "Date of last service or repair of hardware component. How this gets
+        populated is a vendor specific issue.";
+      reference
+        "3GPP 32.692";
+    }
+  }
+
+  augment "/hw:hardware/hw:component" {
+    when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-RADIO')) or
+    (derived-from-or-self(hw:class, 'ianahw:port')) or
+    (derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))";
+    description "New O-RAN parameters for o-ran naming";
+    leaf o-ran-name {
+      type leafref {
+        path "/hw:hardware/hw:component/hw:name";
+      }
+      must "re-match(current(),'[a-zA-Z0-9][a-zA-Z0-9\\.\\-_]{0,253}[a-zA-Z0-9]')" {
+        error-message "Name must match pattern and length.";
+      }
+      mandatory true;
+      description
+        "O-RAN name needed to bind and match with the name of hw element,
+        to be compliant with O-RAN naming convention.";
+    }
+  }
+
+  augment "/hw:hardware/hw:component/hw:state"  {
+    when "(derived-from-or-self(../hw:class, 'o-ran-hw:O-RAN-RADIO')) or
+    (derived-from-or-self(../hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))";
+    description
+      "new O-RAN defined state";
+    leaf power-state {
+      if-feature "ENERGYSAVING";
+      type energysaving-state;
+      config false;
+      description
+        "The current power saving state for this component.
+        Note - hw:/hardware/component/state/standby-state defined in RFC 4268 is
+        used for redundancy purposes but not for power saving operations.";
+    }
+    leaf availability-state {
+      type availability-type;
+      config false;
+      description
+        "Equipment's availability-state is derived by matching active faults
+         and their impact to module's operation and enables an equipment to indicate
+         that even though it may have one or more critical alarms, it can continue
+         to serve traffic.";
+    }
+  }
+
+  augment "/hw:hardware/hw:component" {
+    when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RU-ANTENNA-CONNECTOR'))";
+    description "New O-RAN parameters for O-RAN Antenna connectors";
+
+    leaf connector-label {
+      type string;
+      config false;
+      description
+        "the label used to identify the connector on an O-RU ";
+    }
+  }
+
+
+// augmentations to Notifications
+
+  augment "/hw:hardware-state-oper-enabled"  {
+    description "new availability state";
+    leaf availability-state {
+    if-feature hw:hardware-state;
+      type leafref {
+        path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state";
+      }
+      description
+        "The availability-state of the O-RU.";
+    }
+  }
+
+  augment "/hw:hardware-state-oper-disabled"  {
+    description "new availability state";
+    leaf availability-state {
+     if-feature hw:hardware-state;
+      type leafref {
+        path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state";
+      }
+      description
+        "The availability-state of the O-RU.";
+    }
+  }
+}