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-inet-types {
     prefix "inet";
   }
-  
+  import ietf-netconf-monitoring {
+    prefix ncm;
+  }
+
+
+  import o-ran-usermgmt {
+    prefix "or-user";
+  }
+
   organization "O-RAN Alliance";
 
   contact
   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.
 
     "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
 
     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.";
 
     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
   revision "2020-12-10" {
     description
       "version 5.0.0
@@ -90,6 +135,9 @@ module o-ran-supervision {
     reference "ORAN-WG4.M.0-v01.00";
   }
 
     reference "ORAN-WG4.M.0-v01.00";
   }
 
+
+
+
   typedef event-collector-id {
     type union {
       type inet:ip-address;
   typedef event-collector-id {
     type union {
       type inet:ip-address;
@@ -99,6 +147,7 @@ module o-ran-supervision {
   }
 
   grouping watchdog-input {
   }
 
   grouping watchdog-input {
+    description "a watchdog input grouping";
     leaf supervision-notification-interval {
       type uint16;
       units seconds;
     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
       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.
 
 
          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.
 
          '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).
 
          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 {
          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 next-update-at {
       type yang:date-and-time;
       description
         "Indicates the time when the next supervision notification is expected.";
     }
+
     leaf error-message {
       type string;
 
     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 {
   grouping supervision-group {
+    description "a supervision grouping";
     container cu-plane-monitoring {
     container cu-plane-monitoring {
-      description "container describing operation of CU plane monitoring";
       presence
         "Indicates O-RU supports timer based cu-plane monitoring interval. If
       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";
         }
 
       leaf configured-cu-monitoring-interval {
         type uint8 {
           range "0..160";
         }
-        default 160;
         units milliseconds;
         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.
         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,
 
           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
           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,
           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;
 
       leaf heartbeat-interval {
         type uint8;
-        default 60;
         units seconds;
         units seconds;
+        default 60;
         description "the heartbeat interval";
       }
 
         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";
       }
     }
           "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 {
   }
 
   container supervision {
+    description "top leval supervision container";
     uses supervision-group;
     // other WG specific monitoring containers follow here
   }
     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;
       "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;
       uses watchdog-output;
-         }
+    }
   }
 
   notification supervision-notification {
     description
       "Notification to indicate that NETCONF management interface is up.";
   }
 
   notification supervision-notification {
     description
       "Notification to indicate that NETCONF management interface is up.";
+      uses supervision-notification-data;
 
   }
 }
 
   }
 }