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
28 Main features of this module include:
31 A list of all alarms. Cleared alarms stay in
32 the list until explicitly purged.
34 * Operator actions on alarms:
35 Acknowledging and closing alarms.
37 * Administrative actions on alarms:
38 Purging alarms from the list according to specific
42 A management application can read all
43 alarm types implemented by the system.
46 Shelving (blocking) alarms according
50 A management system can attach further
51 information to alarm types, for example,
52 overriding system-default severity
55 This module uses a stateful view on alarms. An alarm is a state
56 for a specific resource (note that an alarm is not a
57 notification). An alarm type is a possible alarm state for a
58 resource. For example, the tuple:
60 ('link-alarm', 'GigabitEthernet0/25')
62 is an alarm of type 'link-alarm' on the resource
63 'GigabitEthernet0/25'.
65 Alarm types are identified using YANG identities and an optional
66 string-based qualifier. The string-based qualifier allows for
67 dynamic extension of the statically defined alarm types. Alarm
68 types identify a possible alarm state and not the individual
69 notifications. For example, the traditional 'link-down' and
70 'link-up' notifications are two notifications referring to the
71 same alarm type 'link-alarm'.
73 With this design, there is no ambiguity about how alarm and
74 alarm clear correlation should be performed; notifications that
75 report the same resource and alarm type are considered updates
76 of the same alarm, e.g., clearing an active alarm or changing
77 the severity of an alarm. The instrumentation can update the
78 severity and alarm text on an existing alarm. The above alarm
79 example can therefore look like the following:
81 (('link-alarm', 'GigabitEthernet0/25'),
83 'interface down while interface admin state is up')
85 There is a clear separation between updates on the alarm from
86 the underlying resource, like clear, and updates from an
87 operator, like acknowledging or closing an alarm:
89 (('link-alarm', 'GigabitEthernet0/25'),
91 'interface down while interface admin state is up',
95 Administrative actions like removing closed alarms older than a
96 given time is supported.
98 This YANG module does not define how the underlying
99 instrumentation detects and clears the specific alarms. That
100 belongs to the Standards Development Organization (SDO) or
101 enterprise that owns that specific technology.
103 The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
104 NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
105 'MAY', and 'OPTIONAL' in this document are to be interpreted as
106 described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
107 they appear in all capitals, as shown here.
109 Copyright (c) 2019 IETF Trust and the persons identified as
110 authors of the code. All rights reserved.
112 Redistribution and use in source and binary forms, with or
113 without modification, is permitted pursuant to, and subject to
114 the license terms contained in, the Simplified BSD License set
115 forth in Section 4.c of the IETF Trust's Legal Provisions
116 Relating to IETF Documents
117 (https://trustee.ietf.org/license-info).
119 This version of this YANG module is part of RFC 8632; see
120 the RFC itself for full legal notices.";
122 revision 2019-09-11 {
126 "RFC 8632: A YANG Data Model for Alarm Management";
133 feature operator-actions {
135 "This feature indicates that the system supports operator
139 feature alarm-shelving {
141 "This feature indicates that the system supports shelving
144 Alarm shelving may have an impact on server processing
145 resources in order to match alarms against shelf
149 feature alarm-history {
151 "This feature indicates that the server maintains a history
152 of state changes for each alarm. For example, if an alarm
153 toggles between cleared and active 10 times, these state
154 changes are present in a separate list in the alarm.
156 Keeping the alarm history may have an impact on server
160 feature alarm-summary {
162 "This feature indicates that the server summarizes the number
163 of alarms per severity and operator state.";
166 feature alarm-profile {
168 "The system enables clients to configure further information
169 to each alarm type.";
172 feature severity-assignment {
174 "The system supports configurable alarm severity levels.";
176 "ITU-T Recommendation M.3100:
177 Generic network information model
178 ITU-T Recommendation M.3160:
179 Generic, protocol-neutral management information model";
182 feature root-cause-analysis {
184 "The system supports identifying candidate root-cause
185 resources for an alarm, for example, a disk partition
186 root cause for a logger failure alarm.";
189 feature service-impact-analysis {
191 "The system supports identifying candidate-impacted
192 resources for an alarm, for example, an interface state change
193 resulting in a link alarm, which can refer to a link as being
197 feature alarm-correlation {
199 "The system supports correlating/grouping alarms
200 that belong together.";
207 identity alarm-type-id {
209 "Base identity for alarm types. A unique identification of
210 the alarm, not including the resource. Different resources
211 can share alarm types. If the resource reports the same
212 alarm type, it is considered to be the same alarm. The alarm
213 type is a simplification of the different X.733 and 3GPP Alarm
214 IRP correlation mechanisms, and it allows for
215 hierarchical extensions.
217 A string-based qualifier can be used in addition to the
218 identity in order to have different alarm types based on
219 information not known at design time, such as values in
220 textual SNMP Notification varbinds.
222 Standards and vendors can define sub-identities to clearly
223 identify specific alarm types.
225 This identity is abstract and MUST NOT be used for alarms.";
234 type instance-identifier {
235 require-instance false;
237 type yang:object-identifier;
242 "This is an identification of the alarming resource, such as an
243 interface. It should be as fine-grained as possible to both
244 guide the operator and guarantee uniqueness of the alarms.
246 If the alarming resource is modeled in YANG, this type will
247 be an instance-identifier.
249 If the resource is an SNMP object, the type will be an
252 If the resource is anything else, for example, a distinguished
253 name or a Common Information Model (CIM) path, this type will
256 If the alarming object is identified by a Universally Unique
257 Identifier (UUID), use the uuid type. Be cautious when using
258 this type, since a UUID is hard to use for an operator.
260 If the server supports several models, the precedence should
261 be in the order as given in the union definition.";
264 typedef resource-match {
267 type yang:object-identifier;
271 "This type is used to match resources of type 'resource'.
272 Since the type 'resource' is a union of different types, the
273 'resource-match' type is also a union of corresponding types.
275 If the type is given as an XPath 1.0 expression, a resource
276 of type 'instance-identifier' matches if the instance is part
277 of the node set that is the result of evaluating the XPath 1.0
278 expression. For example, the XPath 1.0 expression:
280 /ietf-interfaces:interfaces/ietf-interfaces:interface
281 [ietf-interfaces:type='ianaift:ethernetCsmacd']
283 would match the resource instance-identifier:
285 /if:interfaces/if:interface[if:name='eth1'],
287 assuming that the interface 'eth1' is of type
288 'ianaift:ethernetCsmacd'.
290 If the type is given as an object identifier, a resource of
291 type 'object-identifier' matches if the match object
292 identifier is a prefix of the resource's object identifier.
293 For example, the value:
297 would match the resource object identifier:
299 1.3.6.1.2.1.2.2.1.1.5
301 If the type is given as an UUID or a string, it is interpreted
302 as an XML Schema regular expression, which matches a resource
303 of type 'yang:uuid' or 'string' if the given regular
304 expression matches the resource string.
306 If the type is given as an XPath expression, it is evaluated
307 in the following XPath context:
309 o The set of namespace declarations is the set of prefix
310 and namespace pairs for all YANG modules implemented by
311 the server, where the prefix is the YANG module name and
312 the namespace is as defined by the 'namespace' statement
315 If a leaf of this type is encoded in XML, all namespace
316 declarations in scope on the leaf element are added to
317 the set of namespace declarations. If a prefix found in
318 the XML is already present in the set of namespace
319 declarations, the namespace in the XML is used.
321 o The set of variable bindings is empty.
323 o The function library is the core function library, and
324 the functions are defined in Section 10 of RFC 7950.
326 o The context node is the root node in the data tree.";
328 "XML Schema Part 2: Datatypes Second Edition,
329 World Wide Web Consortium Recommendation
330 REC-xmlschema-2-20041028";
336 "The string used to inform operators about the alarm. This
337 MUST contain enough information for an operator to be able to
338 understand the problem and how to resolve it. If this string
339 contains structure, this format should be clearly documented
340 for programs to be able to parse that information.";
348 "Indicates that the severity level could not be
349 determined. This level SHOULD be avoided.";
354 "The 'warning' severity level indicates the detection of a
355 potential or impending service-affecting fault, before any
356 significant effects have been felt. Action should be
357 taken to further diagnose (if necessary) and correct the
358 problem in order to prevent it from becoming a more
359 serious service-affecting fault.";
364 "The 'minor' severity level indicates the existence of a
365 non-service-affecting fault condition and that corrective
366 action should be taken in order to prevent a more serious
367 (for example, service-affecting) fault. Such a severity
368 can be reported, for example, when the detected alarm
369 condition is not currently degrading the capacity of the
375 "The 'major' severity level indicates that a service-
376 affecting condition has developed and an urgent corrective
377 action is required. Such a severity can be reported, for
378 example, when there is a severe degradation in the
379 capability of the resource and its full capability must be
385 "The 'critical' severity level indicates that a service-
386 affecting condition has occurred and an immediate
387 corrective action is required. Such a severity can be
388 reported, for example, when a resource becomes totally out
389 of service and its capability must be restored.";
393 "The severity level of the alarm. Note well that the value
394 'clear' is not included. Whether or not an alarm is cleared
395 is a separate boolean flag.";
397 "ITU-T Recommendation X.733: Information Technology
398 - Open Systems Interconnection
399 - System Management: Alarm Reporting Function";
402 typedef severity-with-clear {
408 "The alarm is cleared by the instrumentation.";
414 "The severity level of the alarm including clear. This is used
415 only in notifications reporting state changes for an alarm.";
418 typedef writable-operator-state {
423 "The alarm is not being taken care of.";
428 "The alarm is being taken care of. Corrective action not
429 taken yet or has failed";
434 "Corrective action taken successfully.";
438 "Operator states on an alarm. The 'closed' state indicates
439 that an operator considers the alarm being resolved. This is
440 separate from the alarm's 'is-cleared' leaf.";
443 typedef operator-state {
445 type writable-operator-state;
450 "The alarm is shelved. Alarms in /alarms/shelved-alarms/
451 MUST be assigned this operator state by the server as
452 the last entry in the 'operator-state-change' list. The
453 text for that entry SHOULD include the shelf name.";
458 "The alarm is moved back to 'alarm-list' from a shelf.
459 Alarms that are moved from /alarms/shelved-alarms/ to
460 /alarms/alarm-list MUST be assigned this state by the
461 server as the last entry in the 'operator-state-change'
462 list. The text for that entry SHOULD include the shelf
468 "Operator states on an alarm. The 'closed' state indicates
469 that an operator considers the alarm being resolved. This is
470 separate from the alarm's 'is-cleared' leaf.";
475 typedef alarm-type-id {
480 "Identifies an alarm type. The description of the alarm type
481 id MUST indicate whether or not the alarm type is abstract.
482 An abstract alarm type is used as a base for other alarm type
483 ids and will not be used as a value for an alarm or be present
484 in the alarm inventory.";
487 typedef alarm-type-qualifier {
490 "If an alarm type cannot be fully specified at design time by
491 'alarm-type-id', this string qualifier is used in addition to
492 fully define a unique alarm type.
494 The definition of alarm qualifiers is considered to be part of
495 the instrumentation and is out of scope for this module. An
496 empty string is used when this is part of a key.";
503 grouping common-alarm-parameters {
505 "Common parameters for an alarm.
507 This grouping is used both in the alarm list and in the
508 notification representing an alarm-state change.";
513 "The alarming resource. See also 'alt-resource'. This could
514 be, for example, a reference to the alarming interface";
520 "This leaf and the leaf 'alarm-type-qualifier' together
521 provide a unique identification of the alarm type.";
523 leaf alarm-type-qualifier {
524 type alarm-type-qualifier;
526 "This leaf is used when the 'alarm-type-id' leaf cannot
527 uniquely identify the alarm type. Normally, this is not the
528 case, and this leaf is the empty string.";
530 leaf-list alt-resource {
533 "Used if the alarming resource is available over other
534 interfaces. This field can contain SNMP OIDs, CIM paths, or
535 3GPP distinguished names, for example.";
538 if-feature "alarm-correlation";
539 key "resource alarm-type-id alarm-type-qualifier";
541 "References to related alarms. Note that the related alarm
542 might have been purged from the alarm list.";
545 path "/alarms/alarm-list/alarm/resource";
546 require-instance false;
549 "The alarming resource for the related alarm.";
553 path "/alarms/alarm-list/alarm"
554 + "[resource=current()/../resource]"
556 require-instance false;
559 "The alarm type identifier for the related alarm.";
561 leaf alarm-type-qualifier {
563 path "/alarms/alarm-list/alarm"
564 + "[resource=current()/../resource]"
565 + "[alarm-type-id=current()/../alarm-type-id]"
566 + "/alarm-type-qualifier";
567 require-instance false;
570 "The alarm qualifier for the related alarm.";
573 leaf-list impacted-resource {
574 if-feature "service-impact-analysis";
577 "Resources that might be affected by this alarm. If the
578 system creates an alarm on a resource and also has a mapping
579 to other resources that might be impacted, these resources
580 can be listed in this leaf-list. In this way, the system
581 can create one alarm instead of several. For example, if an
582 interface has an alarm, the 'impacted-resource' can
583 reference the aggregated port channels.";
585 leaf-list root-cause-resource {
586 if-feature "root-cause-analysis";
589 "Resources that are candidates for causing the alarm. If the
590 system has a mechanism to understand the candidate root
591 causes of an alarm, this leaf-list can be used to list the
592 root-cause candidate resources. In this way, the system can
593 create one alarm instead of several. An example might be a
594 logging system (alarm resource) that fails; the alarm can
595 reference the file system in the 'root-cause-resource'
596 leaf-list. Note that the intended use is not to also send
597 an alarm with the 'root-cause-resource' as an alarming
598 resource. The 'root-cause-resource' leaf-list is a hint and
599 should not also generate an alarm for the same problem.";
603 grouping alarm-state-change-parameters {
605 "Parameters for an alarm-state change.
607 This grouping is used both in the alarm list's status-change
608 list and in the notification representing an alarm-state
611 type yang:date-and-time;
614 "The time the status of the alarm changed. The value
615 represents the time the real alarm-state change appeared in
616 the resource and not when it was added to the alarm
617 list. The /alarm-list/alarm/last-changed MUST be set to the
620 leaf perceived-severity {
621 type severity-with-clear;
624 "The severity of the alarm as defined by X.733. Note that
625 this may not be the original severity since the alarm may
626 have changed severity.";
628 "ITU-T Recommendation X.733: Information Technology
629 - Open Systems Interconnection
630 - System Management: Alarm Reporting Function";
636 "A user-friendly text describing the alarm-state change.";
638 "ITU-T Recommendation X.733: Information Technology
639 - Open Systems Interconnection
640 - System Management: Alarm Reporting Function";
644 grouping operator-parameters {
646 "This grouping defines parameters that can be changed by an
649 type yang:date-and-time;
652 "Timestamp for operator action on the alarm.";
658 "The name of the operator that has acted on this alarm.";
664 "The operator's view of the alarm state.";
669 "Additional optional textual information provided by the
674 grouping resource-alarm-parameters {
676 "Alarm parameters that originate from the resource view.";
681 "Indicates the current clearance state of the alarm. An
682 alarm might toggle from active alarm to cleared alarm and
683 back to active again.";
686 type yang:date-and-time;
689 "An alarm may change severity level and toggle between
690 active and cleared during its lifetime. This leaf indicates
691 the last time it was raised ('is-cleared' = 'false').";
694 type yang:date-and-time;
697 "A timestamp when the 'status-change' or
698 'operator-state-change' list was last changed.";
700 leaf perceived-severity {
704 "The last severity of the alarm.
706 If an alarm was raised with severity 'warning' but later
707 changed to 'major', this leaf will show 'major'.";
713 "The last reported alarm text. This text should contain
714 information for an operator to be able to understand the
715 problem and how to resolve it.";
718 if-feature "alarm-history";
722 "A list of status-change events for this alarm.
724 The entry with latest timestamp in this list MUST
725 correspond to the leafs 'is-cleared', 'perceived-severity',
726 and 'alarm-text' for the alarm.
728 This list is ordered according to the timestamps of alarm
729 state changes. The first item corresponds to the latest
732 The following state changes create an entry in this
734 - changed severity (warning, minor, major, critical)
735 - clearance status; this also updates the 'is-cleared'
737 - alarm-text update";
738 uses alarm-state-change-parameters;
742 grouping filter-input {
744 "Grouping to specify a filter construct on alarm information.";
745 leaf alarm-clearance-status {
749 "Ignore alarm-clearance status.";
753 "Filter cleared alarms.";
757 "Filter not-cleared alarms.";
762 "The clearance status of the alarm.";
764 container older-than {
765 presence "Age specification";
767 "Matches the 'last-status-change' leaf in the alarm.";
770 "Filter using date and time age.";
775 "Age expressed in seconds.";
782 "Age expressed in minutes.";
789 "Age expressed in hours.";
796 "Age expressed in days.";
803 "Age expressed in weeks.";
809 presence "Severity filter";
812 "Filter based on severity level.";
816 "Severity less than this leaf.";
821 "Severity level equal to this leaf.";
826 "Severity level higher than this leaf.";
830 "Filter based on severity.";
832 container operator-state-filter {
833 if-feature "operator-actions";
834 presence "Operator state filter";
838 "Filter on operator state.";
843 "Filter based on which operator.";
846 "Filter based on operator state.";
851 * The /alarms data tree
856 "The top container for this module.";
859 "Configuration to control the alarm behavior.";
860 leaf max-alarm-status-changes {
866 "The status-change entries are accumulated
873 "The 'status-change' entries are kept in a circular list
874 per alarm. When this number is exceeded, the oldest
875 status change entry is automatically removed. If the
876 value is 'infinite', the status-change entries are
877 accumulated infinitely.";
879 leaf notify-status-changes {
881 enum all-state-changes {
883 "Send notifications for all status changes.";
885 enum raise-and-clear {
887 "Send notifications only for raise, clear, and
888 re-raise. Notifications for severity-level changes or
889 alarm-text changes are not sent.";
891 enum severity-level {
893 "Only send notifications for alarm-state changes
894 crossing the level specified in
895 'notify-severity-level'. Always send clear
899 must '. != "severity-level" or ../notify-severity-level' {
901 "When notify-status-changes is 'severity-level', a value
902 must be given for 'notify-severity-level'.";
904 default "all-state-changes";
906 "This leaf controls the notifications sent for alarm status
907 updates. There are three options:
909 1. Notifications are sent for all updates, severity-level
910 changes, and alarm-text changes.
912 2. Notifications are only sent for alarm raise and clear.
914 3. Notifications are sent for status changes equal to or
915 above the specified severity level. Clear
916 notifications shall always be sent. Notifications
917 shall also be sent for state changes that make an
918 alarm less severe than the specified level.
920 For example, in option 3, assume that the severity level
921 is set to major and that the alarm has the following state
924 [(Time, severity, clear)]:
925 [(T1, major, -), (T2, minor, -), (T3, warning, -),
926 (T4, minor, -), (T5, major, -), (T6, critical, -),
927 (T7, major. -), (T8, major, clear)]
929 In that case, notifications will be sent at times
930 T1, T2, T5, T6, T7, and T8.";
932 leaf notify-severity-level {
933 when '../notify-status-changes = "severity-level"';
936 "Only send notifications for alarm-state changes crossing
937 the specified level. Always send clear notifications.";
939 container alarm-shelving {
940 if-feature "alarm-shelving";
942 "The 'alarm-shelving/shelf' list is used to shelve
943 (block/filter) alarms. The conditions in the shelf
944 criteria are logically ANDed. The first matching shelf is
945 used, and an alarm is shelved only for this first match.
946 Matching alarms MUST appear in the
947 /alarms/shelved-alarms/shelved-alarm list, and
948 non-matching /alarms MUST appear in the
949 /alarms/alarm-list/alarm list. The server does not send
950 any notifications for shelved alarms.
952 The server MUST maintain states (e.g., severity
953 changes) for the shelved alarms.
955 Alarms that match the criteria shall have an
956 operator state 'shelved'. When the shelf
957 configuration removes an alarm from the shelf, the server
958 shall add the operator state 'un-shelved'.";
965 "An arbitrary name for the alarm shelf.";
968 "Each entry defines the criteria for shelving alarms.
969 Criteria are ANDed. If no criteria are specified,
970 all alarms will be shelved.";
974 "Shelve alarms for matching resources.";
977 key "alarm-type-id alarm-type-qualifier-match";
979 "Any alarm matching the combined criteria of
980 'alarm-type-id' and 'alarm-type-qualifier-match'
985 "Shelve all alarms that have an 'alarm-type-id' that
986 is equal to or derived from the given
989 leaf alarm-type-qualifier-match {
992 "An XML Schema regular expression that is used to
993 match an alarm type qualifier. Shelve all alarms
994 that match this regular expression for the alarm
997 "XML Schema Part 2: Datatypes Second Edition,
998 World Wide Web Consortium Recommendation
999 REC-xmlschema-2-20041028";
1005 "An optional textual description of the shelf. This
1006 description should include the reason for shelving
1012 container alarm-inventory {
1015 "The 'alarm-inventory/alarm-type' list contains all possible
1016 alarm types for the system.
1018 If the system knows for which resources a specific alarm
1019 type can appear, it is also identified in the inventory.
1020 The list also tells if each alarm type has a corresponding
1021 clear state. The inventory shall only contain concrete
1024 The alarm inventory MUST be updated by the system when new
1025 alarms can appear. This can be the case when installing new
1026 software modules or inserting new card types. A
1027 notification 'alarm-inventory-changed' is sent when the
1028 inventory is changed.";
1030 key "alarm-type-id alarm-type-qualifier";
1032 "An entry in this list defines a possible alarm.";
1033 leaf alarm-type-id {
1036 "The statically defined alarm type identifier for this
1039 leaf alarm-type-qualifier {
1040 type alarm-type-qualifier;
1042 "The optionally dynamically defined alarm type identifier
1043 for this possible alarm.";
1045 leaf-list resource {
1046 type resource-match;
1048 "Optionally, specifies for which resources the alarm type
1055 "This leaf tells the operator if the alarm will be
1056 cleared when the correct corrective action has been
1057 taken. Implementations SHOULD strive for detecting the
1058 cleared state for all alarm types.
1060 If this leaf is 'true', the operator can monitor the
1061 alarm until it becomes cleared after the corrective
1062 action has been taken.
1064 If this leaf is 'false', the operator needs to validate
1065 that the alarm is no longer active using other
1066 mechanisms. Alarms can lack a corresponding clear due
1067 to missing instrumentation or no logical
1068 corresponding clear state.";
1070 leaf-list severity-level {
1073 "This leaf-list indicates the possible severity levels of
1074 this alarm type. Note well that 'clear' is not part of
1075 the severity type. In general, the severity level
1076 should be defined by the instrumentation based on the
1077 dynamic state, rather than being defined statically by
1078 the alarm type, in order to provide a relevant severity
1079 level based on dynamic state and context. However, most
1080 alarm types have a defined set of possible severity
1081 levels, and this should be provided here.";
1087 "A description of the possible alarm. It SHOULD include
1088 information on possible underlying root causes and
1089 corrective actions.";
1094 if-feature "alarm-summary";
1097 "This container gives a summary of the number of alarms.";
1098 list alarm-summary {
1101 "A global summary of all alarms in the system. The summary
1102 does not include shelved alarms.";
1106 "Alarm summary for this severity level.";
1111 "Total number of alarms of this severity level.";
1116 "Total number of alarms of this severity level
1117 that are not cleared.";
1122 "For this severity level, the number of alarms that are
1125 leaf cleared-not-closed {
1126 if-feature "operator-actions";
1129 "For this severity level, the number of alarms that are
1130 cleared but not closed.";
1132 leaf cleared-closed {
1133 if-feature "operator-actions";
1136 "For this severity level, the number of alarms that are
1137 cleared and closed.";
1139 leaf not-cleared-closed {
1140 if-feature "operator-actions";
1143 "For this severity level, the number of alarms that are
1144 not cleared but closed.";
1146 leaf not-cleared-not-closed {
1147 if-feature "operator-actions";
1150 "For this severity level, the number of alarms that are
1151 not cleared and not closed.";
1154 leaf shelves-active {
1155 if-feature "alarm-shelving";
1158 "This is a hint to the operator that there are active
1159 alarm shelves. This leaf MUST exist if the
1160 /alarms/shelved-alarms/number-of-shelved-alarms is > 0.";
1163 container alarm-list {
1166 "The alarms in the system.";
1167 leaf number-of-alarms {
1170 "This object shows the total number of
1171 alarms in the system, i.e., the total number
1172 of entries in the alarm list.";
1175 type yang:date-and-time;
1177 "A timestamp when the alarm list was last
1178 changed. The value can be used by a manager to
1179 initiate an alarm resynchronization procedure.";
1182 key "resource alarm-type-id alarm-type-qualifier";
1184 "The list of alarms. Each entry in the list holds one
1185 alarm for a given alarm type and resource. An alarm can
1186 be updated from the underlying resource or by the user.
1187 The following leafs are maintained by the resource:
1188 'is-cleared', 'last-change', 'perceived-severity', and
1189 'alarm-text'. An operator can change 'operator-state' and
1192 Entries appear in the alarm list the first time an alarm
1193 becomes active for a given alarm type and resource.
1194 Entries do not get deleted when the alarm is cleared.
1195 Clear status is represented as a boolean flag.
1197 Alarm entries are removed, i.e., purged, from the list by
1198 an explicit purge action. For example, purge all alarms
1199 that are cleared and in closed operator state that are
1200 older than 24 hours. Purged alarms are removed from the
1201 alarm list. If the alarm resource state changes after a
1202 purge, the alarm will reappear in the alarm list.
1204 Systems may also remove alarms based on locally configured
1205 policies; this is out of scope for this module.";
1206 uses common-alarm-parameters;
1208 type yang:date-and-time;
1211 "The timestamp when this alarm entry was created. This
1212 represents the first time the alarm appeared; it can
1213 also represent that the alarm reappeared after a purge.
1214 Further state changes of the same alarm do not change
1215 this leaf; these changes will update the 'last-changed'
1218 uses resource-alarm-parameters;
1219 list operator-state-change {
1220 if-feature "operator-actions";
1223 "This list is used by operators to indicate the state of
1224 human intervention on an alarm. For example, if an
1225 operator has seen an alarm, the operator can add a new
1226 item to this list indicating that the alarm is
1228 uses operator-parameters;
1230 action set-operator-state {
1231 if-feature "operator-actions";
1233 "This is a means for the operator to indicate the level
1234 of human intervention on an alarm.";
1237 type writable-operator-state;
1240 "Set this operator state.";
1245 "Additional optional textual information.";
1249 notification operator-action {
1250 if-feature "operator-actions";
1252 "This notification is used to report that an operator
1253 acted upon an alarm.";
1254 uses operator-parameters;
1257 action purge-alarms {
1259 "This operation requests that the server delete entries
1260 from the alarm list according to the supplied criteria.
1262 Typically, this operation is used to delete alarms that
1263 are in closed operator state and older than a specified
1266 The number of purged alarms is returned as an output
1272 leaf purged-alarms {
1275 "Number of purged alarms.";
1279 action compress-alarms {
1280 if-feature "alarm-history";
1282 "This operation requests that the server compress
1283 entries in the alarm list by removing all but the
1284 latest 'status-change' entry for all matching alarms.
1285 Conditions in the input are logically ANDed. If no
1286 input condition is given, all alarms are compressed.";
1289 type resource-match;
1291 "Compress the alarms matching this resource.";
1293 leaf alarm-type-id {
1295 path "/alarms/alarm-list/alarm/alarm-type-id";
1296 require-instance false;
1299 "Compress alarms with this 'alarm-type-id'.";
1301 leaf alarm-type-qualifier {
1303 path "/alarms/alarm-list/alarm/alarm-type-qualifier";
1304 require-instance false;
1307 "Compress the alarms with this
1308 'alarm-type-qualifier'.";
1312 leaf compressed-alarms {
1315 "Number of compressed alarm entries.";
1320 container shelved-alarms {
1321 if-feature "alarm-shelving";
1324 "The shelved alarms. Alarms appear here if they match the
1325 criteria in /alarms/control/alarm-shelving. This list does
1326 not generate any notifications. The list represents alarms
1327 that are considered not relevant by the operator. Alarms in
1328 this list have an 'operator-state' of 'shelved'. This
1329 cannot be changed.";
1330 leaf number-of-shelved-alarms {
1333 "This object shows the total number of current
1334 alarms, i.e., the total number of entries
1335 in the alarm list.";
1337 leaf shelved-alarms-last-changed {
1338 type yang:date-and-time;
1340 "A timestamp when the shelved-alarm list was last changed.
1341 The value can be used by a manager to initiate an alarm
1342 resynchronization procedure.";
1344 list shelved-alarm {
1345 key "resource alarm-type-id alarm-type-qualifier";
1347 "The list of shelved alarms. Shelved alarms can only be
1348 updated from the underlying resource; no operator actions
1350 uses common-alarm-parameters;
1353 path "/alarms/control/alarm-shelving/shelf/name";
1354 require-instance false;
1357 "The name of the shelf.";
1359 uses resource-alarm-parameters;
1360 list operator-state-change {
1361 if-feature "operator-actions";
1364 "This list is used by operators to indicate the state of
1365 human intervention on an alarm. For shelved alarms, the
1366 system has set the list item in the list to 'shelved'.";
1367 uses operator-parameters;
1370 action purge-shelved-alarms {
1372 "This operation requests that the server delete entries from
1373 the shelved-alarm list according to the supplied criteria.
1374 In the shelved-alarm list, it makes sense to delete alarms
1375 that are not relevant anymore.
1377 The number of purged alarms is returned as an output
1383 leaf purged-alarms {
1386 "Number of purged alarms.";
1390 action compress-shelved-alarms {
1391 if-feature "alarm-history";
1393 "This operation requests that the server compress entries
1394 in the shelved-alarm list by removing all but the latest
1395 'status-change' entry for all matching shelved alarms.
1396 Conditions in the input are logically ANDed. If no input
1397 condition is given, all alarms are compressed.";
1401 path "/alarms/shelved-alarms/shelved-alarm/resource";
1402 require-instance false;
1405 "Compress the alarms with this resource.";
1407 leaf alarm-type-id {
1409 path "/alarms/shelved-alarms/shelved-alarm"
1411 require-instance false;
1414 "Compress alarms with this 'alarm-type-id'.";
1416 leaf alarm-type-qualifier {
1418 path "/alarms/shelved-alarms/shelved-alarm"
1419 + "/alarm-type-qualifier";
1420 require-instance false;
1423 "Compress the alarms with this
1424 'alarm-type-qualifier'.";
1428 leaf compressed-alarms {
1431 "Number of compressed alarm entries.";
1436 list alarm-profile {
1437 if-feature "alarm-profile";
1438 key "alarm-type-id alarm-type-qualifier-match resource";
1441 "This list is used to assign further information or
1442 configuration for each alarm type. This module supports a
1443 mechanism where the client can override the system-default
1444 alarm severity levels. The 'alarm-profile' is also a useful
1445 augmentation point for specific additions to alarm types.";
1446 leaf alarm-type-id {
1449 "The alarm type identifier to match.";
1451 leaf alarm-type-qualifier-match {
1454 "An XML Schema regular expression that is used to match the
1455 alarm type qualifier.";
1457 "XML Schema Part 2: Datatypes Second Edition,
1458 World Wide Web Consortium Recommendation
1459 REC-xmlschema-2-20041028";
1462 type resource-match;
1464 "Specifies which resources to match.";
1470 "A description of the alarm profile.";
1472 container alarm-severity-assignment-profile {
1473 if-feature "severity-assignment";
1475 "The client can override the system-default severity
1478 "ITU-T Recommendation M.3100:
1479 Generic network information model
1480 ITU-T Recommendation M.3160:
1481 Generic, protocol-neutral management information model";
1482 leaf-list severity-level {
1486 "Specifies the configured severity level(s) for the
1487 matching alarm. If the alarm has several severity
1488 levels, the leaf-list shall be given in rising severity
1489 order. The original M3100/M3160 ASAP function only
1490 allows for a one-to-one mapping between alarm type and
1491 severity, but since YANG module supports stateful
1492 alarms, the mapping must allow for several severity
1495 Assume a high-utilization alarm type with two thresholds
1496 with the system-default severity levels of threshold1 =
1497 warning and threshold2 = minor. Setting this leaf-list
1498 to (minor, major) will assign the severity levels as
1499 threshold1 = minor and threshold2 = major";
1509 notification alarm-notification {
1511 "This notification is used to report a state change for an
1512 alarm. The same notification is used for reporting a newly
1513 raised alarm, a cleared alarm, or changing the text and/or
1514 severity of an existing alarm.";
1515 uses common-alarm-parameters;
1516 uses alarm-state-change-parameters;
1519 notification alarm-inventory-changed {
1521 "This notification is used to report that the list of possible
1522 alarms has changed. This can happen when, for example, a new
1523 software module is installed or a new physical card is