Commit a0c6fd0a authored by lengyelb's avatar lengyelb
Browse files

Alarm history with action

parent 8a49da21
Loading
Loading
Loading
Loading
Loading
+129 −3
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ module _3gpp-common-fm {
  prefix "fm3gpp";

  import ietf-yang-types { prefix yang; }
  import ietf-inet-types { prefix inet; }
  import _3gpp-common-top { prefix top3gpp; }
  import _3gpp-common-yang-types { prefix types3gpp; }
  import _3gpp-common-yang-extensions { prefix yext3gpp; }
@@ -16,7 +17,8 @@ module _3gpp-common-fm {
    TTA, TTC). All rights reserved.";
  reference "3GPP TS 28.111";

  revision 2026-01-25 { reference "CR-0060"; }  // common for R19, R20
  revision 2026-06-14 { reference "CR-xxxx"; }
  revision 2026-01-25 { reference "CR-0060"; }  
  revision 2025-11-07 { reference "CR-0057"; }  
  revision 2025-08-13 { reference "CR-0050 CR-0051 CR-0053 CR-0054"; }
  revision 2025-05-01 { reference "CR-0042 CR-0043"; }  
@@ -44,6 +46,10 @@ module _3gpp-common-fm {
      supported.";
  }

  feature AlarmHistorySupported {
    description "Indicates whether the alarm history capability is supported.";
  }
  
  typedef eventType {
    type enumeration {
      enum OTHER {
@@ -505,7 +511,10 @@ module _3gpp-common-fm {
    leaf alarmId {
      type string;
      mandatory true;
      description "Identifies the alarmRecord";
      description "Identifies the alarmRecord. The value shall be unique 
        within the AlarmList MOI.
        The value should be unique over a longer period of time and over 
        multiple alarm lists.";
      yext3gpp:notNotifyable;
      yext3gpp:inVariant;
    }
@@ -879,6 +888,35 @@ module _3gpp-common-fm {
    }
  }

  grouping AlarmHistoryGrp {
    description "Represents the attributes of the AlarmHistory IOC.";

    leaf oldestRecordDate {
      type yang:date-and-time;
      config false;
      mandatory true;
      description "The date and time of the earliest record available.";
      yext3gpp:notNotifyable;
    }

    leaf oldestAlarmId {
      type string;
      config false;
      mandatory true;
      description "The alarmId of the earliest record available.";
      yext3gpp:notNotifyable;
    }

    list exportProgress {
      description "Progress information about the exportAlarmHistory action.";
      config false;
      max-elements 1;
      key idx;
      leaf idx { type int32; }
      uses types3gpp:ProcessMonitorGrp;
    }
  }

  grouping FmSubtree {
    description "Contains FM related classes.
      Should be used in all classes (or classes inheriting from)
@@ -912,6 +950,94 @@ module _3gpp-common-fm {
      container attributes {
        uses AlarmListGrp ;
      }

      list AlarmHistory {
        if-feature AlarmHistorySupported;
        key id;
        max-elements 1;
        yext3gpp:only-system-created;
        description "The AlarmHistory represents the capability to store and
          retrieve historical alarm records. It is name-contained under
          AlarmList. The management scope of an AlarmHistory is the same as
          that of the containing AlarmList MOI.

          AlarmHistory instances are created by the system or are
          pre-installed. They can neither be created nor deleted by MnS
          consumers.

          An instance of AlarmList has at most one name-contained instance
          of AlarmHistory.

          It is assumed that alarm history will be able to keep alarms
          available for a substantial period e.g. 2-30 days. However, the
          size of the alarm history is implementation specific. When the
          alarm history is full the producer may discard records. In this
          case the oldest records shall be discarded.";

        uses top3gpp:Top_Grp;
        container attributes {
          uses AlarmHistoryGrp;
        }

        action exportAlarmHistory {
          description "Invoking the action exports the alarm history records.
            The exported records shall be placed in a file that is exported
            to a remote location. Information about the progress of the
            export operation is available in the exportProgress attribute.

            Only a single export operation can be running at the same time.";

          input {
            leaf fileLocation {
              type inet:uri;
              description "Location of the exported file including the file
                transfer protocol and the file name. If not specified, the
                file will be stored on the producer.

                The allowed file transfer protocols are sftp, ftpes, https.

                Examples:
                  sftp://companyA.com/datastore/fileName.json
                  https://companyA.com/ManagedElement=1/Files=1/File=1";
            }

            list timeWindow {
              description "Identifies the time window for which history
                records shall be exported. If not specified all records are
                exported.

                If only startTime is specified, then all records with a
                timestamp not earlier than the startTime shall be exported.

                If both startTime and endTime are specified and they are the
                same, then all records for all alarms that were active at
                that specific time shall be exported.

                If both startTime and endTime are specified but they are
                different, then all records with a timestamp in the specified
                time interval shall be exported.

                If only endTime is specified, then all records with a
                timestamp not later than endTime shall be exported.

                endTime if specified shall be equal or later than startTime.
                startTime and endTime shall not be in the future.";
              max-elements 1;
              key idx;
              leaf idx { type int32; }
              uses types3gpp:TimeWindowGrp;
            }

            leaf-list alarmScope {
              type types3gpp:DistinguishedName;
              description "List of object instances. Each object instance is
                identified by its DN and designates the root of a subtree.
                History records shall be exported if the source of the alarm
                is included in one of the subtrees.";
            }
          }
        }
      }
    }
  }