3 namespace "urn:ietf:params:xml:ns:yang:ietf-alarms";
6 import ietf-yang-types {
9 "RFC 6991: Common YANG Data Types.";
13 "IETF CCAMP Working Group";
15 "WG Web: <https://trac.ietf.org/trac/ccamp>
16 WG List: <mailto:ccamp@ietf.org>
19 <mailto:stefan@wallan.se>
21 Editor: Martin Bjorklund
22 <mailto:mbj@tail-f.com>";
24 "This module defines an interface for managing alarms. Main
25 inputs to the module design are the 3GPP Alarm Integration
26 Reference Point (IRP), ITU-T X.733, and ANSI/ISA-18.2 alarm
29 Main features of this module include:
32 A list of all alarms. Cleared alarms stay in
33 the list until explicitly purged.
35 * Operator actions on alarms:
36 Acknowledging and closing alarms.
38 * Administrative actions on alarms:
39 Purging alarms from the list according to specific
43 A management application can read all
44 alarm types implemented by the system.
47 Shelving (blocking) alarms according
51 A management system can attach further
52 information to alarm types, for example,
53 overriding system-default severity
56 This module uses a stateful view on alarms. An alarm is a state
57 for a specific resource (note that an alarm is not a
58 notification). An alarm type is a possible alarm state for a
59 resource. For example, the tuple:
61 ('link-alarm', 'GigabitEthernet0/25')
63 is an alarm of type 'link-alarm' on the resource
64 'GigabitEthernet0/25'.
66 Alarm types are identified using YANG identities and an optional
67 string-based qualifier. The string-based qualifier allows for
68 dynamic extension of the statically defined alarm types. Alarm
69 types identify a possible alarm state and not the individual
70 notifications. For example, the traditional 'link-down' and
71 'link-up' notifications are two notifications referring to the
72 same alarm type 'link-alarm'.
74 With this design, there is no ambiguity about how alarm and
75 alarm clear correlation should be performed; notifications that
76 report the same resource and alarm type are considered updates
78 of the same alarm, e.g., clearing an active alarm or changing
79 the severity of an alarm. The instrumentation can update the
80 severity and alarm text on an existing alarm. The above alarm
81 example can therefore look like the following:
83 (('link-alarm', 'GigabitEthernet0/25'),
85 'interface down while interface admin state is up')
87 There is a clear separation between updates on the alarm from
88 the underlying resource, like clear, and updates from an
89 operator, like acknowledging or closing an alarm:
91 (('link-alarm', 'GigabitEthernet0/25'),
93 'interface down while interface admin state is up',
97 Administrative actions like removing closed alarms older than a
98 given time is supported.
100 This YANG module does not define how the underlying
101 instrumentation detects and clears the specific alarms. That
102 belongs to the Standards Development Organization (SDO) or
103 enterprise that owns that specific technology.
105 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
106 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
107 'MAY', and 'OPTIONAL' in this document are to be interpreted as
108 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
109 they appear in all capitals, as shown here.
111 Copyright (c) 2019 IETF Trust and the persons identified as
112 authors of the code. All rights reserved.
114 Redistribution and use in source and binary forms, with or
115 without modification, is permitted pursuant to, and subject to
116 the license terms contained in, the Simplified BSD License set
117 forth in Section 4.c of the IETF Trust's Legal Provisions
118 Relating to IETF Documents
119 (https://trustee.ietf.org/license-info).
121 This version of this YANG module is part of RFC 8632; see
122 the RFC itself for full legal notices.";
124 revision 2019-09-11 {
128 "RFC 8632: A YANG Data Model for Alarm Management";
135 feature operator-actions {
137 "This feature indicates that the system supports operator
141 feature alarm-shelving {
143 "This feature indicates that the system supports shelving
146 Alarm shelving may have an impact on server processing
147 resources in order to match alarms against shelf
151 feature alarm-history {
153 "This feature indicates that the server maintains a history
154 of state changes for each alarm. For example, if an alarm
155 toggles between cleared and active 10 times, these state
156 changes are present in a separate list in the alarm.
158 Keeping the alarm history may have an impact on server
162 feature alarm-summary {
164 "This feature indicates that the server summarizes the number
165 of alarms per severity and operator state.";
168 feature alarm-profile {
170 "The system enables clients to configure further information
171 to each alarm type.";
174 feature severity-assignment {
176 "The system supports configurable alarm severity levels.";
178 "ITU-T Recommendation M.3100:
179 Generic network information model
180 ITU-T Recommendation M.3160:
181 Generic, protocol-neutral management information model";
184 feature root-cause-analysis {
186 "The system supports identifying candidate root-cause
187 resources for an alarm, for example, a disk partition
188 root cause for a logger failure alarm.";
191 feature service-impact-analysis {
193 "The system supports identifying candidate-impacted
194 resources for an alarm, for example, an interface state change
195 resulting in a link alarm, which can refer to a link as being
199 feature alarm-correlation {
201 "The system supports correlating/grouping alarms
202 that belong together.";
209 identity alarm-type-id {
211 "Base identity for alarm types. A unique identification of
212 the alarm, not including the resource. Different resources
213 can share alarm types. If the resource reports the same
214 alarm type, it is considered to be the same alarm. The alarm
215 type is a simplification of the different X.733 and 3GPP Alarm
216 IRP correlation mechanisms, and it allows for
217 hierarchical extensions.
219 A string-based qualifier can be used in addition to the
220 identity in order to have different alarm types based on
221 information not known at design time, such as values in
223 textual SNMP Notification varbinds.
225 Standards and vendors can define sub-identities to clearly
226 identify specific alarm types.
228 This identity is abstract and MUST NOT be used for alarms.";
237 type instance-identifier {
238 require-instance false;
240 type yang:object-identifier;
245 "This is an identification of the alarming resource, such as an
246 interface. It should be as fine-grained as possible to both
247 guide the operator and guarantee uniqueness of the alarms.
249 If the alarming resource is modeled in YANG, this type will
250 be an instance-identifier.
252 If the resource is an SNMP object, the type will be an
255 If the resource is anything else, for example, a distinguished
256 name or a Common Information Model (CIM) path, this type will
259 If the alarming object is identified by a Universally Unique
260 Identifier (UUID), use the uuid type. Be cautious when using
261 this type, since a UUID is hard to use for an operator.
263 If the server supports several models, the precedence should
264 be in the order as given in the union definition.";
267 typedef resource-match {
270 type yang:object-identifier;
274 "This type is used to match resources of type 'resource'.
275 Since the type 'resource' is a union of different types, the
276 'resource-match' type is also a union of corresponding types.
278 If the type is given as an XPath 1.0 expression, a resource
279 of type 'instance-identifier' matches if the instance is part
280 of the node set that is the result of evaluating the XPath 1.0
281 expression. For example, the XPath 1.0 expression:
283 /ietf-interfaces:interfaces/ietf-interfaces:interface
284 [ietf-interfaces:type='ianaift:ethernetCsmacd']
286 would match the resource instance-identifier:
288 /if:interfaces/if:interface[if:name='eth1'],
290 assuming that the interface 'eth1' is of type
291 'ianaift:ethernetCsmacd'.
293 If the type is given as an object identifier, a resource of
294 type 'object-identifier' matches if the match object
295 identifier is a prefix of the resource's object identifier.
296 For example, the value:
300 would match the resource object identifier:
302 1.3.6.1.2.1.2.2.1.1.5
304 If the type is given as an UUID or a string, it is interpreted
305 as an XML Schema regular expression, which matches a resource
306 of type 'yang:uuid' or 'string' if the given regular
307 expression matches the resource string.
309 If the type is given as an XPath expression, it is evaluated
310 in the following XPath context:
312 o The set of namespace declarations is the set of prefix
313 and namespace pairs for all YANG modules implemented by
314 the server, where the prefix is the YANG module name and
315 the namespace is as defined by the 'namespace' statement
318 If a leaf of this type is encoded in XML, all namespace
320 declarations in scope on the leaf element are added to
321 the set of namespace declarations. If a prefix found in
322 the XML is already present in the set of namespace
323 declarations, the namespace in the XML is used.
325 o The set of variable bindings is empty.
327 o The function library is the core function library, and
328 the functions are defined in Section 10 of RFC 7950.
330 o The context node is the root node in the data tree.";
332 "XML Schema Part 2: Datatypes Second Edition,
333 World Wide Web Consortium Recommendation
334 REC-xmlschema-2-20041028";
340 "The string used to inform operators about the alarm. This
341 MUST contain enough information for an operator to be able to
342 understand the problem and how to resolve it. If this string
343 contains structure, this format should be clearly documented
344 for programs to be able to parse that information.";
352 "Indicates that the severity level could not be
353 determined. This level SHOULD be avoided.";
358 "The 'warning' severity level indicates the detection of a
359 potential or impending service-affecting fault, before any
360 significant effects have been felt. Action should be
361 taken to further diagnose (if necessary) and correct the
362 problem in order to prevent it from becoming a more
363 serious service-affecting fault.";
368 "The 'minor' severity level indicates the existence of a
369 non-service-affecting fault condition and that corrective
370 action should be taken in order to prevent a more serious
371 (for example, service-affecting) fault. Such a severity
372 can be reported, for example, when the detected alarm
373 condition is not currently degrading the capacity of the
379 "The 'major' severity level indicates that a service-
380 affecting condition has developed and an urgent corrective
381 action is required. Such a severity can be reported, for
382 example, when there is a severe degradation in the
383 capability of the resource and its full capability must be
389 "The 'critical' severity level indicates that a service-
390 affecting condition has occurred and an immediate
391 corrective action is required. Such a severity can be
392 reported, for example, when a resource becomes totally out
393 of service and its capability must be restored.";
397 "The severity level of the alarm. Note well that the value
398 'clear' is not included. Whether or not an alarm is cleared
399 is a separate boolean flag.";
401 "ITU-T Recommendation X.733: Information Technology
402 - Open Systems Interconnection
403 - System Management: Alarm Reporting Function";
406 typedef severity-with-clear {
412 "The alarm is cleared by the instrumentation.";
418 "The severity level of the alarm including clear. This is used
419 only in notifications reporting state changes for an alarm.";
422 typedef writable-operator-state {
427 "The alarm is not being taken care of.";
432 "The alarm is being taken care of. Corrective action not
433 taken yet or has failed";
438 "Corrective action taken successfully.";
442 "Operator states on an alarm. The 'closed' state indicates
443 that an operator considers the alarm being resolved. This is
444 separate from the alarm's 'is-cleared' leaf.";
447 typedef operator-state {
449 type writable-operator-state;
454 "The alarm is shelved. Alarms in /alarms/shelved-alarms/
455 MUST be assigned this operator state by the server as
456 the last entry in the 'operator-state-change' list. The
457 text for that entry SHOULD include the shelf name.";
462 "The alarm is moved back to 'alarm-list' from a shelf.
463 Alarms that are moved from /alarms/shelved-alarms/ to
464 /alarms/alarm-list MUST be assigned this state by the
465 server as the last entry in the 'operator-state-change'
466 list. The text for that entry SHOULD include the shelf
472 "Operator states on an alarm. The 'closed' state indicates
473 that an operator considers the alarm being resolved. This is
474 separate from the alarm's 'is-cleared' leaf.";
479 typedef alarm-type-id {
484 "Identifies an alarm type. The description of the alarm type
485 id MUST indicate whether or not the alarm type is abstract.
486 An abstract alarm type is used as a base for other alarm type
487 ids and will not be used as a value for an alarm or be present
488 in the alarm inventory.";
491 typedef alarm-type-qualifier {
494 "If an alarm type cannot be fully specified at design time by
495 'alarm-type-id', this string qualifier is used in addition to
496 fully define a unique alarm type.
498 The definition of alarm qualifiers is considered to be part of
499 the instrumentation and is out of scope for this module. An
500 empty string is used when this is part of a key.";
507 grouping common-alarm-parameters {
509 "Common parameters for an alarm.
511 This grouping is used both in the alarm list and in the
512 notification representing an alarm-state change.";
517 "The alarming resource. See also 'alt-resource'. This could
518 be, for example, a reference to the alarming interface";
524 "This leaf and the leaf 'alarm-type-qualifier' together
525 provide a unique identification of the alarm type.";
527 leaf alarm-type-qualifier {
528 type alarm-type-qualifier;
530 "This leaf is used when the 'alarm-type-id' leaf cannot
531 uniquely identify the alarm type. Normally, this is not the
532 case, and this leaf is the empty string.";
534 leaf-list alt-resource {
537 "Used if the alarming resource is available over other
538 interfaces. This field can contain SNMP OIDs, CIM paths, or
539 3GPP distinguished names, for example.";
542 if-feature "alarm-correlation";
543 key "resource alarm-type-id alarm-type-qualifier";
545 "References to related alarms. Note that the related alarm
546 might have been purged from the alarm list.";
549 path "/alarms/alarm-list/alarm/resource";
550 require-instance false;
553 "The alarming resource for the related alarm.";
557 path "/alarms/alarm-list/alarm"
558 + "[resource=current()/../resource]"
560 require-instance false;
563 "The alarm type identifier for the related alarm.";
565 leaf alarm-type-qualifier {
567 path "/alarms/alarm-list/alarm"
568 + "[resource=current()/../resource]"
569 + "[alarm-type-id=current()/../alarm-type-id]"
570 + "/alarm-type-qualifier";
571 require-instance false;
574 "The alarm qualifier for the related alarm.";
577 leaf-list impacted-resource {
578 if-feature "service-impact-analysis";
581 "Resources that might be affected by this alarm. If the
582 system creates an alarm on a resource and also has a mapping
583 to other resources that might be impacted, these resources
584 can be listed in this leaf-list. In this way, the system
585 can create one alarm instead of several. For example, if an
586 interface has an alarm, the 'impacted-resource' can
587 reference the aggregated port channels.";
589 leaf-list root-cause-resource {
590 if-feature "root-cause-analysis";
593 "Resources that are candidates for causing the alarm. If the
594 system has a mechanism to understand the candidate root
595 causes of an alarm, this leaf-list can be used to list the
596 root-cause candidate resources. In this way, the system can
597 create one alarm instead of several. An example might be a
598 logging system (alarm resource) that fails; the alarm can
599 reference the file system in the 'root-cause-resource'
600 leaf-list. Note that the intended use is not to also send
601 an alarm with the 'root-cause-resource' as an alarming
602 resource. The 'root-cause-resource' leaf-list is a hint and
603 should not also generate an alarm for the same problem.";
607 grouping alarm-state-change-parameters {
609 "Parameters for an alarm-state change.
611 This grouping is used both in the alarm list's status-change
612 list and in the notification representing an alarm-state
615 type yang:date-and-time;
618 "The time the status of the alarm changed. The value
619 represents the time the real alarm-state change appeared in
620 the resource and not when it was added to the alarm
621 list. The /alarm-list/alarm/last-changed MUST be set to the
624 leaf perceived-severity {
625 type severity-with-clear;
628 "The severity of the alarm as defined by X.733. Note that
629 this may not be the original severity since the alarm may
630 have changed severity.";
632 "ITU-T Recommendation X.733: Information Technology
633 - Open Systems Interconnection
634 - System Management: Alarm Reporting Function";
640 "A user-friendly text describing the alarm-state change.";
642 "ITU-T Recommendation X.733: Information Technology
643 - Open Systems Interconnection
644 - System Management: Alarm Reporting Function";
648 grouping operator-parameters {
650 "This grouping defines parameters that can be changed by an
653 type yang:date-and-time;
656 "Timestamp for operator action on the alarm.";
662 "The name of the operator that has acted on this alarm.";
668 "The operator's view of the alarm state.";
673 "Additional optional textual information provided by the
678 grouping resource-alarm-parameters {
680 "Alarm parameters that originate from the resource view.";
685 "Indicates the current clearance state of the alarm. An
686 alarm might toggle from active alarm to cleared alarm and
687 back to active again.";
690 type yang:date-and-time;
693 "An alarm may change severity level and toggle between
694 active and cleared during its lifetime. This leaf indicates
695 the last time it was raised ('is-cleared' = 'false').";
698 type yang:date-and-time;
701 "A timestamp when the 'status-change' or
702 'operator-state-change' list was last changed.";
704 leaf perceived-severity {
708 "The last severity of the alarm.
710 If an alarm was raised with severity 'warning' but later
711 changed to 'major', this leaf will show 'major'.";
717 "The last reported alarm text. This text should contain
718 information for an operator to be able to understand the
719 problem and how to resolve it.";
722 if-feature "alarm-history";
726 "A list of status-change events for this alarm.
728 The entry with latest timestamp in this list MUST
729 correspond to the leafs 'is-cleared', 'perceived-severity',
730 and 'alarm-text' for the alarm.
732 This list is ordered according to the timestamps of alarm
733 state changes. The first item corresponds to the latest
736 The following state changes create an entry in this
738 - changed severity (warning, minor, major, critical)
739 - clearance status; this also updates the 'is-cleared'
741 - alarm-text update";
742 uses alarm-state-change-parameters;
746 grouping filter-input {
748 "Grouping to specify a filter construct on alarm information.";
749 leaf alarm-clearance-status {
753 "Ignore alarm-clearance status.";
757 "Filter cleared alarms.";
761 "Filter not-cleared alarms.";
766 "The clearance status of the alarm.";
768 container older-than {
769 presence "Age specification";
771 "Matches the 'last-status-change' leaf in the alarm.";
774 "Filter using date and time age.";
779 "Age expressed in seconds.";
786 "Age expressed in minutes.";
793 "Age expressed in hours.";
800 "Age expressed in days.";
807 "Age expressed in weeks.";
813 presence "Severity filter";
816 "Filter based on severity level.";
820 "Severity less than this leaf.";
825 "Severity level equal to this leaf.";
830 "Severity level higher than this leaf.";
834 "Filter based on severity.";
836 container operator-state-filter {
837 if-feature "operator-actions";
838 presence "Operator state filter";
842 "Filter on operator state.";
847 "Filter based on which operator.";
850 "Filter based on operator state.";
855 * The /alarms data tree
860 "The top container for this module.";
863 "Configuration to control the alarm behavior.";
864 leaf max-alarm-status-changes {
870 "The status-change entries are accumulated
877 "The 'status-change' entries are kept in a circular list
878 per alarm. When this number is exceeded, the oldest
879 status change entry is automatically removed. If the
880 value is 'infinite', the status-change entries are
881 accumulated infinitely.";
883 leaf notify-status-changes {
885 enum all-state-changes {
887 "Send notifications for all status changes.";
889 enum raise-and-clear {
891 "Send notifications only for raise, clear, and
892 re-raise. Notifications for severity-level changes or
893 alarm-text changes are not sent.";
895 enum severity-level {
897 "Only send notifications for alarm-state changes
898 crossing the level specified in
899 'notify-severity-level'. Always send clear
903 must '. != "severity-level" or ../notify-severity-level' {
905 "When notify-status-changes is 'severity-level', a value
906 must be given for 'notify-severity-level'.";
908 default "all-state-changes";
910 "This leaf controls the notifications sent for alarm status
911 updates. There are three options:
913 1. Notifications are sent for all updates, severity-level
914 changes, and alarm-text changes.
916 2. Notifications are only sent for alarm raise and clear.
918 3. Notifications are sent for status changes equal to or
919 above the specified severity level. Clear
920 notifications shall always be sent. Notifications
921 shall also be sent for state changes that make an
922 alarm less severe than the specified level.
924 For example, in option 3, assume that the severity level
925 is set to major and that the alarm has the following state
928 [(Time, severity, clear)]:
929 [(T1, major, -), (T2, minor, -), (T3, warning, -),
930 (T4, minor, -), (T5, major, -), (T6, critical, -),
931 (T7, major. -), (T8, major, clear)]
933 In that case, notifications will be sent at times
934 T1, T2, T5, T6, T7, and T8.";
936 leaf notify-severity-level {
937 when '../notify-status-changes = "severity-level"';
940 "Only send notifications for alarm-state changes crossing
941 the specified level. Always send clear notifications.";
943 container alarm-shelving {
944 if-feature "alarm-shelving";
946 "The 'alarm-shelving/shelf' list is used to shelve
947 (block/filter) alarms. The conditions in the shelf
948 criteria are logically ANDed. The first matching shelf is
949 used, and an alarm is shelved only for this first match.
950 Matching alarms MUST appear in the
951 /alarms/shelved-alarms/shelved-alarm list, and
952 non-matching /alarms MUST appear in the
953 /alarms/alarm-list/alarm list. The server does not send
954 any notifications for shelved alarms.
956 The server MUST maintain states (e.g., severity
957 changes) for the shelved alarms.
959 Alarms that match the criteria shall have an
960 operator state 'shelved'. When the shelf
961 configuration removes an alarm from the shelf, the server
962 shall add the operator state 'un-shelved'.";
969 "An arbitrary name for the alarm shelf.";
972 "Each entry defines the criteria for shelving alarms.
973 Criteria are ANDed. If no criteria are specified,
974 all alarms will be shelved.";
978 "Shelve alarms for matching resources.";
981 key "alarm-type-id alarm-type-qualifier-match";
983 "Any alarm matching the combined criteria of
984 'alarm-type-id' and 'alarm-type-qualifier-match'
989 "Shelve all alarms that have an 'alarm-type-id' that
990 is equal to or derived from the given
993 leaf alarm-type-qualifier-match {
996 "An XML Schema regular expression that is used to
997 match an alarm type qualifier. Shelve all alarms
998 that match this regular expression for the alarm
1001 "XML Schema Part 2: Datatypes Second Edition,
1002 World Wide Web Consortium Recommendation
1003 REC-xmlschema-2-20041028";
1009 "An optional textual description of the shelf. This
1010 description should include the reason for shelving
1016 container alarm-inventory {
1019 "The 'alarm-inventory/alarm-type' list contains all possible
1020 alarm types for the system.
1022 If the system knows for which resources a specific alarm
1023 type can appear, it is also identified in the inventory.
1024 The list also tells if each alarm type has a corresponding
1025 clear state. The inventory shall only contain concrete
1028 The alarm inventory MUST be updated by the system when new
1029 alarms can appear. This can be the case when installing new
1030 software modules or inserting new card types. A
1031 notification 'alarm-inventory-changed' is sent when the
1032 inventory is changed.";
1034 key "alarm-type-id alarm-type-qualifier";
1036 "An entry in this list defines a possible alarm.";
1037 leaf alarm-type-id {
1040 "The statically defined alarm type identifier for this
1043 leaf alarm-type-qualifier {
1044 type alarm-type-qualifier;
1046 "The optionally dynamically defined alarm type identifier
1047 for this possible alarm.";
1049 leaf-list resource {
1050 type resource-match;
1052 "Optionally, specifies for which resources the alarm type
1059 "This leaf tells the operator if the alarm will be
1060 cleared when the correct corrective action has been
1061 taken. Implementations SHOULD strive for detecting the
1062 cleared state for all alarm types.
1064 If this leaf is 'true', the operator can monitor the
1065 alarm until it becomes cleared after the corrective
1066 action has been taken.
1068 If this leaf is 'false', the operator needs to validate
1069 that the alarm is no longer active using other
1070 mechanisms. Alarms can lack a corresponding clear due
1071 to missing instrumentation or no logical
1072 corresponding clear state.";
1074 leaf-list severity-level {
1077 "This leaf-list indicates the possible severity levels of
1078 this alarm type. Note well that 'clear' is not part of
1079 the severity type. In general, the severity level
1080 should be defined by the instrumentation based on the
1081 dynamic state, rather than being defined statically by
1082 the alarm type, in order to provide a relevant severity
1083 level based on dynamic state and context. However, most
1084 alarm types have a defined set of possible severity
1085 levels, and this should be provided here.";
1091 "A description of the possible alarm. It SHOULD include
1092 information on possible underlying root causes and
1093 corrective actions.";
1098 if-feature "alarm-summary";
1101 "This container gives a summary of the number of alarms.";
1102 list alarm-summary {
1105 "A global summary of all alarms in the system. The summary
1106 does not include shelved alarms.";
1110 "Alarm summary for this severity level.";
1115 "Total number of alarms of this severity level.";
1120 "Total number of alarms of this severity level
1121 that are not cleared.";
1126 "For this severity level, the number of alarms that are
1129 leaf cleared-not-closed {
1130 if-feature "operator-actions";
1133 "For this severity level, the number of alarms that are
1134 cleared but not closed.";
1136 leaf cleared-closed {
1137 if-feature "operator-actions";
1140 "For this severity level, the number of alarms that are
1141 cleared and closed.";
1143 leaf not-cleared-closed {
1144 if-feature "operator-actions";
1147 "For this severity level, the number of alarms that are
1148 not cleared but closed.";
1150 leaf not-cleared-not-closed {
1151 if-feature "operator-actions";
1154 "For this severity level, the number of alarms that are
1155 not cleared and not closed.";
1158 leaf shelves-active {
1159 if-feature "alarm-shelving";
1162 "This is a hint to the operator that there are active
1163 alarm shelves. This leaf MUST exist if the
1164 /alarms/shelved-alarms/number-of-shelved-alarms is > 0.";
1167 container alarm-list {
1170 "The alarms in the system.";
1171 leaf number-of-alarms {
1174 "This object shows the total number of
1175 alarms in the system, i.e., the total number
1176 of entries in the alarm list.";
1179 type yang:date-and-time;
1181 "A timestamp when the alarm list was last
1182 changed. The value can be used by a manager to
1183 initiate an alarm resynchronization procedure.";
1186 key "resource alarm-type-id alarm-type-qualifier";
1188 "The list of alarms. Each entry in the list holds one
1189 alarm for a given alarm type and resource. An alarm can
1190 be updated from the underlying resource or by the user.
1191 The following leafs are maintained by the resource:
1192 'is-cleared', 'last-change', 'perceived-severity', and
1193 'alarm-text'. An operator can change 'operator-state' and
1196 Entries appear in the alarm list the first time an alarm
1197 becomes active for a given alarm type and resource.
1198 Entries do not get deleted when the alarm is cleared.
1199 Clear status is represented as a boolean flag.
1201 Alarm entries are removed, i.e., purged, from the list by
1202 an explicit purge action. For example, purge all alarms
1203 that are cleared and in closed operator state that are
1204 older than 24 hours. Purged alarms are removed from the
1205 alarm list. If the alarm resource state changes after a
1206 purge, the alarm will reappear in the alarm list.
1208 Systems may also remove alarms based on locally configured
1209 policies; this is out of scope for this module.";
1210 uses common-alarm-parameters;
1212 type yang:date-and-time;
1215 "The timestamp when this alarm entry was created. This
1216 represents the first time the alarm appeared; it can
1217 also represent that the alarm reappeared after a purge.
1218 Further state changes of the same alarm do not change
1219 this leaf; these changes will update the 'last-changed'
1222 uses resource-alarm-parameters;
1223 list operator-state-change {
1224 if-feature "operator-actions";
1227 "This list is used by operators to indicate the state of
1228 human intervention on an alarm. For example, if an
1229 operator has seen an alarm, the operator can add a new
1230 item to this list indicating that the alarm is
1232 uses operator-parameters;
1234 action set-operator-state {
1235 if-feature "operator-actions";
1237 "This is a means for the operator to indicate the level
1238 of human intervention on an alarm.";
1241 type writable-operator-state;
1244 "Set this operator state.";
1249 "Additional optional textual information.";
1253 notification operator-action {
1254 if-feature "operator-actions";
1256 "This notification is used to report that an operator
1257 acted upon an alarm.";
1258 uses operator-parameters;
1261 action purge-alarms {
1263 "This operation requests that the server delete entries
1264 from the alarm list according to the supplied criteria.
1266 Typically, this operation is used to delete alarms that
1267 are in closed operator state and older than a specified
1270 The number of purged alarms is returned as an output
1276 leaf purged-alarms {
1279 "Number of purged alarms.";
1283 action compress-alarms {
1284 if-feature "alarm-history";
1286 "This operation requests that the server compress
1287 entries in the alarm list by removing all but the
1288 latest 'status-change' entry for all matching alarms.
1289 Conditions in the input are logically ANDed. If no
1290 input condition is given, all alarms are compressed.";
1293 type resource-match;
1295 "Compress the alarms matching this resource.";
1297 leaf alarm-type-id {
1299 path "/alarms/alarm-list/alarm/alarm-type-id";
1300 require-instance false;
1303 "Compress alarms with this 'alarm-type-id'.";
1305 leaf alarm-type-qualifier {
1307 path "/alarms/alarm-list/alarm/alarm-type-qualifier";
1308 require-instance false;
1311 "Compress the alarms with this
1312 'alarm-type-qualifier'.";
1316 leaf compressed-alarms {
1319 "Number of compressed alarm entries.";
1324 container shelved-alarms {
1325 if-feature "alarm-shelving";
1328 "The shelved alarms. Alarms appear here if they match the
1329 criteria in /alarms/control/alarm-shelving. This list does
1330 not generate any notifications. The list represents alarms
1331 that are considered not relevant by the operator. Alarms in
1332 this list have an 'operator-state' of 'shelved'. This
1333 cannot be changed.";
1334 leaf number-of-shelved-alarms {
1337 "This object shows the total number of current
1338 alarms, i.e., the total number of entries
1339 in the alarm list.";
1341 leaf shelved-alarms-last-changed {
1342 type yang:date-and-time;
1344 "A timestamp when the shelved-alarm list was last changed.
1345 The value can be used by a manager to initiate an alarm
1346 resynchronization procedure.";
1348 list shelved-alarm {
1349 key "resource alarm-type-id alarm-type-qualifier";
1351 "The list of shelved alarms. Shelved alarms can only be
1352 updated from the underlying resource; no operator actions
1354 uses common-alarm-parameters;
1357 path "/alarms/control/alarm-shelving/shelf/name";
1358 require-instance false;
1361 "The name of the shelf.";
1363 uses resource-alarm-parameters;
1364 list operator-state-change {
1365 if-feature "operator-actions";
1368 "This list is used by operators to indicate the state of
1369 human intervention on an alarm. For shelved alarms, the
1370 system has set the list item in the list to 'shelved'.";
1371 uses operator-parameters;
1374 action purge-shelved-alarms {
1376 "This operation requests that the server delete entries from
1377 the shelved-alarm list according to the supplied criteria.
1378 In the shelved-alarm list, it makes sense to delete alarms
1379 that are not relevant anymore.
1381 The number of purged alarms is returned as an output
1387 leaf purged-alarms {
1390 "Number of purged alarms.";
1394 action compress-shelved-alarms {
1395 if-feature "alarm-history";
1397 "This operation requests that the server compress entries
1398 in the shelved-alarm list by removing all but the latest
1399 'status-change' entry for all matching shelved alarms.
1400 Conditions in the input are logically ANDed. If no input
1401 condition is given, all alarms are compressed.";
1405 path "/alarms/shelved-alarms/shelved-alarm/resource";
1406 require-instance false;
1409 "Compress the alarms with this resource.";
1411 leaf alarm-type-id {
1413 path "/alarms/shelved-alarms/shelved-alarm"
1415 require-instance false;
1418 "Compress alarms with this 'alarm-type-id'.";
1420 leaf alarm-type-qualifier {
1422 path "/alarms/shelved-alarms/shelved-alarm"
1423 + "/alarm-type-qualifier";
1424 require-instance false;
1427 "Compress the alarms with this
1428 'alarm-type-qualifier'.";
1432 leaf compressed-alarms {
1435 "Number of compressed alarm entries.";
1440 list alarm-profile {
1441 if-feature "alarm-profile";
1442 key "alarm-type-id alarm-type-qualifier-match resource";
1445 "This list is used to assign further information or
1446 configuration for each alarm type. This module supports a
1447 mechanism where the client can override the system-default
1448 alarm severity levels. The 'alarm-profile' is also a useful
1449 augmentation point for specific additions to alarm types.";
1450 leaf alarm-type-id {
1453 "The alarm type identifier to match.";
1455 leaf alarm-type-qualifier-match {
1458 "An XML Schema regular expression that is used to match the
1459 alarm type qualifier.";
1461 "XML Schema Part 2: Datatypes Second Edition,
1462 World Wide Web Consortium Recommendation
1463 REC-xmlschema-2-20041028";
1466 type resource-match;
1468 "Specifies which resources to match.";
1474 "A description of the alarm profile.";
1476 container alarm-severity-assignment-profile {
1477 if-feature "severity-assignment";
1479 "The client can override the system-default severity
1482 "ITU-T Recommendation M.3100:
1483 Generic network information model
1484 ITU-T Recommendation M.3160:
1485 Generic, protocol-neutral management information model";
1486 leaf-list severity-level {
1490 "Specifies the configured severity level(s) for the
1491 matching alarm. If the alarm has several severity
1492 levels, the leaf-list shall be given in rising severity
1493 order. The original M3100/M3160 ASAP function only
1494 allows for a one-to-one mapping between alarm type and
1495 severity, but since YANG module supports stateful
1496 alarms, the mapping must allow for several severity
1499 Assume a high-utilization alarm type with two thresholds
1500 with the system-default severity levels of threshold1 =
1501 warning and threshold2 = minor. Setting this leaf-list
1502 to (minor, major) will assign the severity levels as
1503 threshold1 = minor and threshold2 = major";
1513 notification alarm-notification {
1515 "This notification is used to report a state change for an
1516 alarm. The same notification is used for reporting a newly
1517 raised alarm, a cleared alarm, or changing the text and/or
1518 severity of an existing alarm.";
1519 uses common-alarm-parameters;
1520 uses alarm-state-change-parameters;
1523 notification alarm-inventory-changed {
1525 "This notification is used to report that the list of possible
1526 alarms has changed. This can happen when, for example, a new
1527 software module is installed or a new physical card is