Merge "Update YANG models for OpenFronthaul M-Plane."
[sim/o1-interface.git] / ntsimulator / deploy / o-ran-ru-fh / yang / o-ran-supervision.yang
@@ -14,7 +14,15 @@ module o-ran-supervision {
   import ietf-inet-types {
     prefix "inet";
   }
-  
+  import ietf-netconf-monitoring {
+    prefix ncm;
+  }
+
+
+  import o-ran-usermgmt {
+    prefix "or-user";
+  }
+
   organization "O-RAN Alliance";
 
   contact
@@ -24,7 +32,7 @@ module o-ran-supervision {
     "This module defines the configuration data and supervision RPCs that are
     used to detect loss M-Plane connectivity.
 
-    Copyright 2020 the O-RAN Alliance.
+    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
@@ -50,6 +58,43 @@ module o-ran-supervision {
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) NETCONF session supervison with session id";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introduced SHARED-ORU-MULTI-ODU and SHARED-ORU-MULTI-OPERATOR features.";
+
+    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.
+      2) removed non-ACSII characters.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
   revision "2020-12-10" {
     description
       "version 5.0.0
@@ -90,6 +135,9 @@ module o-ran-supervision {
     reference "ORAN-WG4.M.0-v01.00";
   }
 
+
+
+
   typedef event-collector-id {
     type union {
       type inet:ip-address;
@@ -99,6 +147,7 @@ module o-ran-supervision {
   }
 
   grouping watchdog-input {
+    description "a watchdog input grouping";
     leaf supervision-notification-interval {
       type uint16;
       units seconds;
@@ -113,29 +162,31 @@ module o-ran-supervision {
       default 10;
       description
         "This is overhead added to the supervision timer used to calculate the
-         supervision wathcdog timer. i.e.,
+         supervision watchdog timer. i.e.,
 
          supervision timer = notification timer + guard-timer-overhead
 
          If not specified the default value of 10 seconds shall apply.
 
-         Failure to send this rpc again within the timeout sets the radio into
+         Failure to send this RPC again within the timeout sets the radio into
          'loss of supervision' state.
 
-         NOTE - The supervision timer MUST not be less that the confimed
+         NOTE - The supervision timer MUST not be less that the confirmed
          timeout timer (when the feature is supported).
 
-         This type of constraint (using an RPCs input) cannot be formally
+         This type of constraint (using an RPC's input) cannot be formally
          expressed in YANG.";
     }
   }
 
   grouping watchdog-output {
+    description "a watchdog output grouping";
     leaf next-update-at {
       type yang:date-and-time;
       description
         "Indicates the time when the next supervision notification is expected.";
     }
+
     leaf error-message {
       type string;
 
@@ -149,19 +200,36 @@ module o-ran-supervision {
     }
   }
 
+  grouping supervision-notification-data {
+    description "a supervision notification data grouping";
+    leaf session-id {
+      if-feature or-feat:SUPERVISION-WITH-SESSION-ID;
+      type leafref {
+        path "/ncm:netconf-state/ncm:sessions/ncm:session/ncm:session-id";
+      }
+      mandatory true;
+      description
+        "This value uniquely identifies the NETCONF session in an O-RU. The value is conveyed to NETCONF client in hello message.
+        the session-id for the netconf session is sent as part of each supervision-notification notification.
+        and may be used for create-subscription to filter the relevant
+        notifications";
+    }
+  }
+
   grouping supervision-group {
+    description "a supervision grouping";
     container cu-plane-monitoring {
-      description "container describing operation of CU plane monitoring";
       presence
         "Indicates O-RU supports timer based cu-plane monitoring interval. If
-        this container is NOT present, the opertaion of the O-RU is undefined.";
+        this container is NOT present, the operation of the O-RU is undefined.";
+      description "container describing operation of CU plane monitoring";
 
       leaf configured-cu-monitoring-interval {
         type uint8 {
           range "0..160";
         }
-        default 160;
         units milliseconds;
+        default 160;
         description
           "This value corresponds to the configured value of the timer used by
           the O-RU to monitor the C/U plane connection.
@@ -173,10 +241,10 @@ module o-ran-supervision {
           configuration of the PHY layer and/or C/U plane section types
           supported and/or any fault tolerant operation. For example,
 
-          i) when opertaing with an O-DU supporting non-LAA LTE, this value can
+          i) when operating with an O-DU supporting non-LAA LTE, this value can
           be configured to a value according to the repetition time of
           transmitted reference symbols across the fronthaul interface
-          ii) when opertaing with an O-DU supporting C-Plane Section Type 0,
+          ii) when operating with an O-DU supporting C-Plane Section Type 0,
           this value can configured to a value according to the minimum
           repetition interval of section type 0.
           iii) when operating with an O-DU supporting fault tolerant operation,
@@ -190,8 +258,8 @@ module o-ran-supervision {
 
       leaf heartbeat-interval {
         type uint8;
-        default 60;
         units seconds;
+        default 60;
         description "the heartbeat interval";
       }
 
@@ -201,9 +269,50 @@ module o-ran-supervision {
           "A configured Event collector identity, to which the O-RU shall send heartbeat notifications";
       }
     }
+    container per-odu-monitoring {
+      if-feature "or-feat:SHARED-ORU-MULTI-ODU or or-feat:SHARED-ORU-MULTI-OPERATOR";
+      presence
+      "Indicates at least one of the O-RU Controllers intends to operate per O-DU supervision.";
+      description "container describing per-odu monitoring parameters";
+
+      list odu-ids {
+        if-feature or-feat:SHARED-ORU-MULTI-ODU;
+        key odu-id;
+        description
+          "an optional list of o-du identities that an O-RU controller intends to use with per
+          O-DU supervision in a single operator envrionment. The odu-id values are used to match
+          values received in the supervision-watchdog-reset rpc together with values configured in
+          o-ran-uplane-conf based configuration.
+          The O-RU does not further interpret the specific value of odu-id.";
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+      }
+
+      list sro-ids-and-odu-ids {
+        if-feature "or-feat:SHARED-ORU-MULTI-ODU and or-feat:SHARED-ORU-MULTI-OPERATOR";
+        key "odu-id sro-id";
+        description
+          "an optional list of sro and o-du identities that an O-RU controller intends to use with per
+          O-DU supervision in a multi-operator envrionment. The sro-id and odu-id values are used to match
+          values received in the supervision-watchdog-reset rpc together with values configured in
+          o-ran-uplane-conf based configuration.
+          The O-RU does not further interpret the specific value of sro-id or odu-id.";
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+        leaf sro-id {
+          type string;
+          description "an sro identity ";
+        }
+      }
+    }
   }
 
   container supervision {
+    description "top leval supervision container";
     uses supervision-group;
     // other WG specific monitoring containers follow here
   }
@@ -213,16 +322,49 @@ module o-ran-supervision {
       "rpc to reset the watchdog timer";
     input {
       uses watchdog-input;
+
+      container context {
+        if-feature "or-feat:SHARED-ORU-MULTI-ODU or or-feat:SHARED-ORU-MULTI-OPERATOR";
+        description
+          "an optional container that defines the context associated with the
+          watchdog reset. Context can be used in supervision operations with
+          multiple O-DUs";
+
+        leaf odu-id {
+          if-feature or-feat:SHARED-ORU-MULTI-ODU;
+          type string;
+          description
+            "an optional o-du identity associated with this
+            supervision watchdog operation. If an odu-id received is not configured
+            in the list of tx-array-carriers or list of rx-array carriers, this leaf is ignored.
+            When it does correspond to an odu-id listed in tx-array-carriers and/or
+            rx-array-carriers, the odu-id is used in the operatrion of per O-DU supervision.";
+        }
+
+        leaf sro-id {
+          if-feature or-feat:SHARED-ORU-MULTI-OPERATOR;
+          type leafref {
+            path "/or-user:users/or-user:user/or-user:sro-id";
+          }
+          description
+            "The shared resource identity associated with the current NETCONF session.
+            A supervision-watchdog-reset RPC received from  NETCONF client
+            with user-group privileges of 'carrier' MUST be rejected
+            if it is received without a sro-id leaf.
+            In other scenarios, this leaf is optional and ignored by the O-RU.";
+        }
+      }
     }
 
-         output {
+    output {
       uses watchdog-output;
-         }
+    }
   }
 
   notification supervision-notification {
     description
       "Notification to indicate that NETCONF management interface is up.";
+      uses supervision-notification-data;
 
   }
 }