blob: 4f984b616a61bb169f5ac132c3002ae1033aae7e [file] [log] [blame]
Tomáš Pecka73a13cc2020-11-17 11:12:19 +01001module ietf-hardware {
2 yang-version 1.1;
3 namespace "urn:ietf:params:xml:ns:yang:ietf-hardware";
4 prefix hw;
5
6 import ietf-inet-types {
7 prefix inet;
8 }
9 import ietf-yang-types {
10 prefix yang;
11 }
12 import iana-hardware {
13 prefix ianahw;
14 }
15
16 organization
17 "IETF NETMOD (Network Modeling) Working Group";
18
19 contact
20 "WG Web: <https://datatracker.ietf.org/wg/netmod/>
21 WG List: <mailto:netmod@ietf.org>
22
23 Editor: Andy Bierman
24 <mailto:andy@yumaworks.com>
25
26 Editor: Martin Bjorklund
27 <mailto:mbj@tail-f.com>
28
29 Editor: Jie Dong
30 <mailto:jie.dong@huawei.com>
31
32 Editor: Dan Romascanu
33 <mailto:dromasca@gmail.com>";
34
35 description
36 "This module contains a collection of YANG definitions for
37 managing hardware.
38
39 This data model is designed for the Network Management Datastore
40 Architecture (NMDA) defined in RFC 8342.
41 Copyright (c) 2018 IETF Trust and the persons identified as
42 authors of the code. All rights reserved.
43
44 Redistribution and use in source and binary forms, with or
45 without modification, is permitted pursuant to, and subject
46 to the license terms contained in, the Simplified BSD License
47 set forth in Section 4.c of the IETF Trust's Legal Provisions
48 Relating to IETF Documents
49 (https://trustee.ietf.org/license-info).
50
51 This version of this YANG module is part of RFC 8348; see
52 the RFC itself for full legal notices.";
53
54 revision 2018-03-13 {
55 description
56 "Initial revision.";
57 reference
58 "RFC 8348: A YANG Data Model for Hardware Management";
59 }
60
61 /*
62 * Features
63 */
64
65 feature entity-mib {
66 description
67 "This feature indicates that the device implements
68 the ENTITY-MIB.";
69 reference
70 "RFC 6933: Entity MIB (Version 4)";
71 }
72
73 feature hardware-state {
74 description
75 "Indicates that ENTITY-STATE-MIB objects are supported";
76 reference
77 "RFC 4268: Entity State MIB";
78 }
79
80 feature hardware-sensor {
81 description
82 "Indicates that ENTITY-SENSOR-MIB objects are supported";
83 reference
84 "RFC 3433: Entity Sensor Management Information Base";
85 }
86
87 /*
88 * Typedefs
89 */
90
91 typedef admin-state {
92 type enumeration {
93 enum unknown {
94 value 1;
95 description
96 "The resource is unable to report administrative state.";
97 }
98 enum locked {
99 value 2;
100 description
101 "The resource is administratively prohibited from use.";
102 }
103 enum shutting-down {
104 value 3;
105 description
106 "The resource usage is administratively limited to current
107 instances of use.";
108 }
109 enum unlocked {
110 value 4;
111 description
112 "The resource is not administratively prohibited from
113 use.";
114 }
115 }
116 description
117 "Represents the various possible administrative states.";
118 reference
119 "RFC 4268: Entity State MIB - EntityAdminState";
120 }
121
122 typedef oper-state {
123 type enumeration {
124 enum unknown {
125 value 1;
126 description
127 "The resource is unable to report its operational state.";
128 }
129 enum disabled {
130 value 2;
131 description
132 "The resource is totally inoperable.";
133 }
134 enum enabled {
135 value 3;
136
137 description
138 "The resource is partially or fully operable.";
139 }
140 enum testing {
141 value 4;
142 description
143 "The resource is currently being tested and cannot
144 therefore report whether or not it is operational.";
145 }
146 }
147 description
148 "Represents the possible values of operational states.";
149 reference
150 "RFC 4268: Entity State MIB - EntityOperState";
151 }
152
153 typedef usage-state {
154 type enumeration {
155 enum unknown {
156 value 1;
157 description
158 "The resource is unable to report usage state.";
159 }
160 enum idle {
161 value 2;
162 description
163 "The resource is servicing no users.";
164 }
165 enum active {
166 value 3;
167 description
168 "The resource is currently in use, and it has sufficient
169 spare capacity to provide for additional users.";
170 }
171 enum busy {
172 value 4;
173 description
174 "The resource is currently in use, but it currently has no
175 spare capacity to provide for additional users.";
176 }
177 }
178 description
179 "Represents the possible values of usage states.";
180 reference
181 "RFC 4268: Entity State MIB - EntityUsageState";
182 }
183
184 typedef alarm-state {
185 type bits {
186 bit unknown {
187 position 0;
188 description
189 "The resource is unable to report alarm state.";
190 }
191 bit under-repair {
192 position 1;
193 description
194 "The resource is currently being repaired, which, depending
195 on the implementation, may make the other values in this
196 bit string not meaningful.";
197 }
198 bit critical {
199 position 2;
200 description
201 "One or more critical alarms are active against the
202 resource.";
203 }
204 bit major {
205 position 3;
206 description
207 "One or more major alarms are active against the
208 resource.";
209 }
210 bit minor {
211 position 4;
212 description
213 "One or more minor alarms are active against the
214 resource.";
215 }
216 bit warning {
217 position 5;
218 description
219 "One or more warning alarms are active against the
220 resource.";
221 }
222 bit indeterminate {
223 position 6;
224 description
225 "One or more alarms of whose perceived severity cannot be
226 determined are active against this resource.";
227 }
228 }
229 description
230 "Represents the possible values of alarm states. An alarm is a
231 persistent indication of an error or warning condition.
232
233 When no bits of this attribute are set, then no active alarms
234 are known against this component and it is not under repair.";
235 reference
236 "RFC 4268: Entity State MIB - EntityAlarmStatus";
237 }
238
239 typedef standby-state {
240 type enumeration {
241 enum unknown {
242 value 1;
243 description
244 "The resource is unable to report standby state.";
245 }
246 enum hot-standby {
247 value 2;
248 description
249 "The resource is not providing service, but it will be
250 immediately able to take over the role of the resource to
251 be backed up, without the need for initialization
252 activity, and will contain the same information as the
253 resource to be backed up.";
254 }
255 enum cold-standby {
256 value 3;
257 description
258 "The resource is to back up another resource, but it will
259 not be immediately able to take over the role of a
260 resource to be backed up and will require some
261 initialization activity.";
262 }
263 enum providing-service {
264 value 4;
265 description
266 "The resource is providing service.";
267 }
268 }
269 description
270 "Represents the possible values of standby states.";
271 reference
272 "RFC 4268: Entity State MIB - EntityStandbyStatus";
273 }
274
275 typedef sensor-value-type {
276 type enumeration {
277 enum other {
278 value 1;
279 description
280 "A measure other than those listed below.";
281 }
282 enum unknown {
283 value 2;
284 description
285 "An unknown measurement or arbitrary, relative numbers";
286 }
287 enum volts-AC {
288 value 3;
289 description
290 "A measure of electric potential (alternating current).";
291 }
292 enum volts-DC {
293 value 4;
294 description
295 "A measure of electric potential (direct current).";
296 }
297 enum amperes {
298 value 5;
299 description
300 "A measure of electric current.";
301 }
302 enum watts {
303 value 6;
304 description
305 "A measure of power.";
306 }
307 enum hertz {
308 value 7;
309 description
310 "A measure of frequency.";
311 }
312 enum celsius {
313 value 8;
314 description
315 "A measure of temperature.";
316 }
317 enum percent-RH {
318 value 9;
319 description
320 "A measure of percent relative humidity.";
321 }
322 enum rpm {
323 value 10;
324 description
325 "A measure of shaft revolutions per minute.";
326 }
327 enum cmm {
328 value 11;
329 description
330 "A measure of cubic meters per minute (airflow).";
331 }
332 enum truth-value {
333 value 12;
334 description
335 "Value is one of 1 (true) or 2 (false)";
336 }
337 }
338 description
339 "A node using this data type represents the sensor measurement
340 data type associated with a physical sensor value. The actual
341 data units are determined by examining a node of this type
342 together with the associated sensor-value-scale node.
343
344 A node of this type SHOULD be defined together with nodes of
345 type sensor-value-scale and type sensor-value-precision.
346 These three types are used to identify the semantics of a node
347 of type sensor-value.";
348 reference
349 "RFC 3433: Entity Sensor Management Information Base -
350 EntitySensorDataType";
351 }
352
353 typedef sensor-value-scale {
354 type enumeration {
355 enum yocto {
356 value 1;
357 description
358 "Data scaling factor of 10^-24.";
359 }
360 enum zepto {
361 value 2;
362 description
363 "Data scaling factor of 10^-21.";
364 }
365 enum atto {
366 value 3;
367 description
368 "Data scaling factor of 10^-18.";
369 }
370 enum femto {
371 value 4;
372 description
373 "Data scaling factor of 10^-15.";
374 }
375 enum pico {
376 value 5;
377 description
378 "Data scaling factor of 10^-12.";
379 }
380 enum nano {
381 value 6;
382 description
383 "Data scaling factor of 10^-9.";
384 }
385 enum micro {
386 value 7;
387 description
388 "Data scaling factor of 10^-6.";
389 }
390 enum milli {
391 value 8;
392 description
393 "Data scaling factor of 10^-3.";
394 }
395 enum units {
396 value 9;
397 description
398 "Data scaling factor of 10^0.";
399 }
400 enum kilo {
401 value 10;
402 description
403 "Data scaling factor of 10^3.";
404 }
405 enum mega {
406 value 11;
407 description
408 "Data scaling factor of 10^6.";
409 }
410 enum giga {
411 value 12;
412 description
413 "Data scaling factor of 10^9.";
414 }
415 enum tera {
416 value 13;
417 description
418 "Data scaling factor of 10^12.";
419 }
420 enum peta {
421 value 14;
422 description
423 "Data scaling factor of 10^15.";
424 }
425 enum exa {
426 value 15;
427 description
428 "Data scaling factor of 10^18.";
429 }
430 enum zetta {
431 value 16;
432 description
433 "Data scaling factor of 10^21.";
434 }
435 enum yotta {
436 value 17;
437 description
438 "Data scaling factor of 10^24.";
439 }
440 }
441 description
442 "A node using this data type represents a data scaling factor,
443 represented with an International System of Units (SI) prefix.
444 The actual data units are determined by examining a node of
445 this type together with the associated sensor-value-type.
446
447 A node of this type SHOULD be defined together with nodes of
448 type sensor-value-type and type sensor-value-precision.
449 Together, associated nodes of these three types are used to
450 identify the semantics of a node of type sensor-value.";
451 reference
452 "RFC 3433: Entity Sensor Management Information Base -
453 EntitySensorDataScale";
454 }
455
456 typedef sensor-value-precision {
457 type int8 {
458 range "-8 .. 9";
459 }
460 description
461 "A node using this data type represents a sensor value
462 precision range.
463
464 A node of this type SHOULD be defined together with nodes of
465 type sensor-value-type and type sensor-value-scale. Together,
466 associated nodes of these three types are used to identify the
467 semantics of a node of type sensor-value.
468
469 If a node of this type contains a value in the range 1 to 9,
470 it represents the number of decimal places in the fractional
471 part of an associated sensor-value fixed-point number.
472
473 If a node of this type contains a value in the range -8 to -1,
474 it represents the number of accurate digits in the associated
475 sensor-value fixed-point number.
476
477 The value zero indicates the associated sensor-value node is
478 not a fixed-point number.
479
480 Server implementers must choose a value for the associated
481 sensor-value-precision node so that the precision and accuracy
482 of the associated sensor-value node is correctly indicated.
483
484 For example, a component representing a temperature sensor
485 that can measure 0 to 100 degrees C in 0.1 degree
486 increments, +/- 0.05 degrees, would have a
487 sensor-value-precision value of '1', a sensor-value-scale
488 value of 'units', and a sensor-value ranging from '0' to
489 '1000'. The sensor-value would be interpreted as
490 'degrees C * 10'.";
491 reference
492 "RFC 3433: Entity Sensor Management Information Base -
493 EntitySensorPrecision";
494 }
495
496 typedef sensor-value {
497 type int32 {
498 range "-1000000000 .. 1000000000";
499 }
500 description
501 "A node using this data type represents a sensor value.
502
503 A node of this type SHOULD be defined together with nodes of
504 type sensor-value-type, type sensor-value-scale, and
505 type sensor-value-precision. Together, associated nodes of
506 those three types are used to identify the semantics of a node
507 of this data type.
508
509 The semantics of a node using this data type are determined by
510 the value of the associated sensor-value-type node.
511
512 If the associated sensor-value-type node is equal to 'voltsAC',
513 'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm',
514 then a node of this type MUST contain a fixed-point number
515 ranging from -999,999,999 to +999,999,999. The value
516 -1000000000 indicates an underflow error. The value
517 +1000000000 indicates an overflow error. The
518 sensor-value-precision indicates how many fractional digits
519 are represented in the associated sensor-value node.
520
521 If the associated sensor-value-type node is equal to
522 'percentRH', then a node of this type MUST contain a number
523 ranging from 0 to 100.
524
525 If the associated sensor-value-type node is equal to 'rpm',
526 then a node of this type MUST contain a number ranging from
527 -999,999,999 to +999,999,999.
528
529 If the associated sensor-value-type node is equal to
530 'truth-value', then a node of this type MUST contain either the
531 value 1 (true) or the value 2 (false).
532
533 If the associated sensor-value-type node is equal to 'other' or
534 'unknown', then a node of this type MUST contain a number
535 ranging from -1000000000 to 1000000000.";
536 reference
537 "RFC 3433: Entity Sensor Management Information Base -
538 EntitySensorValue";
539 }
540
541 typedef sensor-status {
542 type enumeration {
543 enum ok {
544 value 1;
545 description
546 "Indicates that the server can obtain the sensor value.";
547 }
548 enum unavailable {
549 value 2;
550 description
551 "Indicates that the server presently cannot obtain the
552 sensor value.";
553 }
554 enum nonoperational {
555 value 3;
556 description
557 "Indicates that the server believes the sensor is broken.
558 The sensor could have a hard failure (disconnected wire)
559 or a soft failure such as out-of-range, jittery, or wildly
560 fluctuating readings.";
561 }
562 }
563 description
564 "A node using this data type represents the operational status
565 of a physical sensor.";
566 reference
567 "RFC 3433: Entity Sensor Management Information Base -
568 EntitySensorStatus";
569 }
570
571 /*
572 * Data nodes
573 */
574
575 container hardware {
576 description
577 "Data nodes representing components.
578
579 If the server supports configuration of hardware components,
580 then this data model is instantiated in the configuration
581 datastores supported by the server. The leaf-list 'datastore'
582 for the module 'ietf-hardware' in the YANG library provides
583 this information.";
584
585 leaf last-change {
586 type yang:date-and-time;
587 config false;
588 description
589 "The time the '/hardware/component' list changed in the
590 operational state.";
591 }
592
593 list component {
594 key name;
595 description
596 "List of components.
597
598 When the server detects a new hardware component, it
599 initializes a list entry in the operational state.
600
601 If the server does not support configuration of hardware
602 components, list entries in the operational state are
603 initialized with values for all nodes as detected by the
604 implementation.
605
606 Otherwise, this procedure is followed:
607
608 1. If there is an entry in the '/hardware/component' list
609 in the intended configuration with values for the nodes
610 'class', 'parent', and 'parent-rel-pos' that are equal
611 to the detected values, then the list entry in the
612 operational state is initialized with the configured
613 values, including the 'name'.
614
615 2. Otherwise (i.e., there is no matching configuration
616 entry), the list entry in the operational state is
617 initialized with values for all nodes as detected by
618 the implementation.
619
620 If the '/hardware/component' list in the intended
621 configuration is modified, then the system MUST behave as if
622 it re-initializes itself and follow the procedure in (1).";
623 reference
624 "RFC 6933: Entity MIB (Version 4) - entPhysicalEntry";
625
626 leaf name {
627 type string;
628 description
629 "The name assigned to this component.
630
631 This name is not required to be the same as
632 entPhysicalName.";
633 }
634
635 leaf class {
636 type identityref {
637 base ianahw:hardware-class;
638 }
639 mandatory true;
640 description
641 "An indication of the general hardware type of the
642 component.";
643 reference
644 "RFC 6933: Entity MIB (Version 4) - entPhysicalClass";
645 }
646
647 leaf physical-index {
648 if-feature entity-mib;
649 type int32 {
650 range "1..2147483647";
651 }
652 config false;
653 description
654 "The entPhysicalIndex for the entPhysicalEntry represented
655 by this list entry.";
656 reference
657 "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
658 }
659
660 leaf description {
661 type string;
662 config false;
663 description
664 "A textual description of the component. This node should
665 contain a string that identifies the manufacturer's name
666 for the component and should be set to a distinct value
667 for each version or model of the component.";
668 reference
669 "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr";
670 }
671
672 leaf parent {
673 type leafref {
674 path "../../component/name";
675 require-instance false;
676 }
677 description
678 "The name of the component that physically contains this
679 component.
680
681 If this leaf is not instantiated, it indicates that this
682 component is not contained in any other component.
683
684 In the event that a physical component is contained by
685 more than one physical component (e.g., double-wide
686 modules), this node contains the name of one of these
687 components. An implementation MUST use the same name
688 every time this node is instantiated.";
689 reference
690 "RFC 6933: Entity MIB (Version 4) - entPhysicalContainedIn";
691 }
692
693 leaf parent-rel-pos {
694 type int32 {
695 range "0 .. 2147483647";
696 }
697 description
698 "An indication of the relative position of this child
699 component among all its sibling components. Sibling
700 components are defined as components that:
701
702 o share the same value of the 'parent' node and
703
704 o share a common base identity for the 'class' node.
705
706 Note that the last rule gives implementations flexibility
707 in how components are numbered. For example, some
708 implementations might have a single number series for all
709 components derived from 'ianahw:port', while some others
710 might have different number series for different
711 components with identities derived from 'ianahw:port' (for
712 example, one for registered jack 45 (RJ45) and one for
713 small form-factor pluggable (SFP)).";
714
715 reference
716 "RFC 6933: Entity MIB (Version 4) -
717 entPhysicalParentRelPos";
718 }
719
720 leaf-list contains-child {
721 type leafref {
722 path "../../component/name";
723 }
724 config false;
725 description
726 "The name of the contained component.";
727 reference
728 "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex";
729 }
730
731 leaf hardware-rev {
732 type string;
733 config false;
734 description
735 "The vendor-specific hardware revision string for the
736 component. The preferred value is the hardware revision
737 identifier actually printed on the component itself (if
738 present).";
739 reference
740 "RFC 6933: Entity MIB (Version 4) -
741 entPhysicalHardwareRev";
742 }
743
744 leaf firmware-rev {
745 type string;
746 config false;
747 description
748 "The vendor-specific firmware revision string for the
749 component.";
750 reference
751 "RFC 6933: Entity MIB (Version 4) -
752 entPhysicalFirmwareRev";
753 }
754
755 leaf software-rev {
756 type string;
757 config false;
758
759 description
760 "The vendor-specific software revision string for the
761 component.";
762 reference
763 "RFC 6933: Entity MIB (Version 4) -
764 entPhysicalSoftwareRev";
765 }
766
767 leaf serial-num {
768 type string;
769 config false;
770 description
771 "The vendor-specific serial number string for the
772 component. The preferred value is the serial number
773 string actually printed on the component itself (if
774 present).";
775 reference
776 "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum";
777 }
778
779 leaf mfg-name {
780 type string;
781 config false;
782 description
783 "The name of the manufacturer of this physical component.
784 The preferred value is the manufacturer name string
785 actually printed on the component itself (if present).
786
787 Note that comparisons between instances of the
788 'model-name', 'firmware-rev', 'software-rev', and
789 'serial-num' nodes are only meaningful amongst components
790 with the same value of 'mfg-name'.
791
792 If the manufacturer name string associated with the
793 physical component is unknown to the server, then this
794 node is not instantiated.";
795 reference
796 "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
797 }
798
799 leaf model-name {
800 type string;
801 config false;
802 description
803 "The vendor-specific model name identifier string
804 associated with this physical component. The preferred
805 value is the customer-visible part number, which may be
806 printed on the component itself.
807 If the model name string associated with the physical
808 component is unknown to the server, then this node is not
809 instantiated.";
810 reference
811 "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName";
812 }
813
814 leaf alias {
815 type string;
816 description
817 "An 'alias' name for the component, as specified by a
818 network manager, that provides a non-volatile 'handle' for
819 the component.
820
821 If no configured value exists, the server MAY set the
822 value of this node to a locally unique value in the
823 operational state.
824
825 A server implementation MAY map this leaf to the
826 entPhysicalAlias MIB object. Such an implementation needs
827 to use some mechanism to handle the differences in size
828 and characters allowed between this leaf and
829 entPhysicalAlias. The definition of such a mechanism is
830 outside the scope of this document.";
831 reference
832 "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias";
833 }
834
835 leaf asset-id {
836 type string;
837 description
838 "This node is a user-assigned asset tracking identifier for
839 the component.
840
841 A server implementation MAY map this leaf to the
842 entPhysicalAssetID MIB object. Such an implementation
843 needs to use some mechanism to handle the differences in
844 size and characters allowed between this leaf and
845 entPhysicalAssetID. The definition of such a mechanism is
846 outside the scope of this document.";
847 reference
848 "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
849 }
850
851 leaf is-fru {
852 type boolean;
853 config false;
854
855 description
856 "This node indicates whether or not this component is
857 considered a 'field-replaceable unit' by the vendor. If
858 this node contains the value 'true', then this component
859 identifies a field-replaceable unit. For all components
860 that are permanently contained within a field-replaceable
861 unit, the value 'false' should be returned for this
862 node.";
863 reference
864 "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
865 }
866
867 leaf mfg-date {
868 type yang:date-and-time;
869 config false;
870 description
871 "The date of manufacturing of the managed component.";
872 reference
873 "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
874 }
875
876 leaf-list uri {
877 type inet:uri;
878 description
879 "This node contains identification information about the
880 component.";
881 reference
882 "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
883 }
884
885 leaf uuid {
886 type yang:uuid;
887 config false;
888 description
889 "A Universally Unique Identifier of the component.";
890 reference
891 "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID";
892 }
893
894 container state {
895 if-feature hardware-state;
896 description
897 "State-related nodes";
898 reference
899 "RFC 4268: Entity State MIB";
900
901 leaf state-last-changed {
902 type yang:date-and-time;
903 config false;
904 description
905 "The date and time when the value of any of the
906 admin-state, oper-state, usage-state, alarm-state, or
907 standby-state changed for this component.
908
909 If there has been no change since the last
910 re-initialization of the local system, this node
911 contains the date and time of local system
912 initialization. If there has been no change since the
913 component was added to the local system, this node
914 contains the date and time of the insertion.";
915 reference
916 "RFC 4268: Entity State MIB - entStateLastChanged";
917 }
918
919 leaf admin-state {
920 type admin-state;
921 description
922 "The administrative state for this component.
923
924 This node refers to a component's administrative
925 permission to service both other components within its
926 containment hierarchy as well other users of its
927 services defined by means outside the scope of this
928 module.
929
930 Some components exhibit only a subset of the remaining
931 administrative state values. Some components cannot be
932 locked; hence, this node exhibits only the 'unlocked'
933 state. Other components cannot be shut down gracefully;
934 hence, this node does not exhibit the 'shutting-down'
935 state.";
936 reference
937 "RFC 4268: Entity State MIB - entStateAdmin";
938 }
939
940 leaf oper-state {
941 type oper-state;
942 config false;
943 description
944 "The operational state for this component.
945
946 Note that this node does not follow the administrative
947 state. An administrative state of 'down' does not
948 predict an operational state of 'disabled'.
949
950 Note that some implementations may not be able to
951 accurately report oper-state while the admin-state node
952 has a value other than 'unlocked'. In these cases, this
953 node MUST have a value of 'unknown'.";
954 reference
955 "RFC 4268: Entity State MIB - entStateOper";
956 }
957
958 leaf usage-state {
959 type usage-state;
960 config false;
961 description
962 "The usage state for this component.
963
964 This node refers to a component's ability to service
965 more components in a containment hierarchy.
966
967 Some components will exhibit only a subset of the usage
968 state values. Components that are unable to ever
969 service any components within a containment hierarchy
970 will always have a usage state of 'busy'. In some
971 cases, a component will be able to support only one
972 other component within its containment hierarchy and
973 will therefore only exhibit values of 'idle' and
974 'busy'.";
975 reference
976 "RFC 4268: Entity State MIB - entStateUsage";
977 }
978
979 leaf alarm-state {
980 type alarm-state;
981 config false;
982 description
983 "The alarm state for this component. It does not
984 include the alarms raised on child components within its
985 containment hierarchy.";
986 reference
987 "RFC 4268: Entity State MIB - entStateAlarm";
988 }
989
990 leaf standby-state {
991 type standby-state;
992 config false;
993 description
994 "The standby state for this component.
995
996 Some components will exhibit only a subset of the
997 remaining standby state values. If this component
998 cannot operate in a standby role, the value of this node
999 will always be 'providing-service'.";
1000 reference
1001 "RFC 4268: Entity State MIB - entStateStandby";
1002 }
1003 }
1004
1005 container sensor-data {
1006 when 'derived-from-or-self(../class,
1007 "ianahw:sensor")' {
1008 description
1009 "Sensor data nodes present for any component of type
1010 'sensor'";
1011 }
1012 if-feature hardware-sensor;
1013 config false;
1014
1015 description
1016 "Sensor-related nodes.";
1017 reference
1018 "RFC 3433: Entity Sensor Management Information Base";
1019
1020 leaf value {
1021 type sensor-value;
1022 description
1023 "The most recent measurement obtained by the server
1024 for this sensor.
1025
1026 A client that periodically fetches this node should also
1027 fetch the nodes 'value-type', 'value-scale', and
1028 'value-precision', since they may change when the value
1029 is changed.";
1030 reference
1031 "RFC 3433: Entity Sensor Management Information Base -
1032 entPhySensorValue";
1033 }
1034
1035 leaf value-type {
1036 type sensor-value-type;
1037 description
1038 "The type of data units associated with the
1039 sensor value";
1040 reference
1041 "RFC 3433: Entity Sensor Management Information Base -
1042 entPhySensorType";
1043 }
1044 leaf value-scale {
1045 type sensor-value-scale;
1046 description
1047 "The (power of 10) scaling factor associated
1048 with the sensor value";
1049 reference
1050 "RFC 3433: Entity Sensor Management Information Base -
1051 entPhySensorScale";
1052 }
1053
1054 leaf value-precision {
1055 type sensor-value-precision;
1056 description
1057 "The number of decimal places of precision
1058 associated with the sensor value";
1059 reference
1060 "RFC 3433: Entity Sensor Management Information Base -
1061 entPhySensorPrecision";
1062 }
1063
1064 leaf oper-status {
1065 type sensor-status;
1066 description
1067 "The operational status of the sensor.";
1068 reference
1069 "RFC 3433: Entity Sensor Management Information Base -
1070 entPhySensorOperStatus";
1071 }
1072
1073 leaf units-display {
1074 type string;
1075 description
1076 "A textual description of the data units that should be
1077 used in the display of the sensor value.";
1078 reference
1079 "RFC 3433: Entity Sensor Management Information Base -
1080 entPhySensorUnitsDisplay";
1081 }
1082
1083 leaf value-timestamp {
1084 type yang:date-and-time;
1085 description
1086 "The time the status and/or value of this sensor was last
1087 obtained by the server.";
1088 reference
1089 "RFC 3433: Entity Sensor Management Information Base -
1090 entPhySensorValueTimeStamp";
1091 }
1092 leaf value-update-rate {
1093 type uint32;
1094 units "milliseconds";
1095 description
1096 "An indication of the frequency that the server updates
1097 the associated 'value' node, represented in
1098 milliseconds. The value zero indicates:
1099
1100 - the sensor value is updated on demand (e.g.,
1101 when polled by the server for a get-request),
1102
1103 - the sensor value is updated when the sensor
1104 value changes (event-driven), or
1105
1106 - the server does not know the update rate.";
1107 reference
1108 "RFC 3433: Entity Sensor Management Information Base -
1109 entPhySensorValueUpdateRate";
1110 }
1111 }
1112 }
1113 }
1114
1115 /*
1116 * Notifications
1117 */
1118
1119 notification hardware-state-change {
1120 description
1121 "A hardware-state-change notification is generated when the
1122 value of /hardware/last-change changes in the operational
1123 state.";
1124 reference
1125 "RFC 6933: Entity MIB (Version 4) - entConfigChange";
1126 }
1127
1128 notification hardware-state-oper-enabled {
1129 if-feature hardware-state;
1130 description
1131 "A hardware-state-oper-enabled notification signifies that a
1132 component has transitioned into the 'enabled' state.";
1133
1134 leaf name {
1135 type leafref {
1136 path "/hardware/component/name";
1137 }
1138
1139 description
1140 "The name of the component that has transitioned into the
1141 'enabled' state.";
1142 }
1143 leaf admin-state {
1144 type leafref {
1145 path "/hardware/component/state/admin-state";
1146 }
1147 description
1148 "The administrative state for the component.";
1149 }
1150 leaf alarm-state {
1151 type leafref {
1152 path "/hardware/component/state/alarm-state";
1153 }
1154 description
1155 "The alarm state for the component.";
1156 }
1157 reference
1158 "RFC 4268: Entity State MIB - entStateOperEnabled";
1159 }
1160
1161 notification hardware-state-oper-disabled {
1162 if-feature hardware-state;
1163 description
1164 "A hardware-state-oper-disabled notification signifies that a
1165 component has transitioned into the 'disabled' state.";
1166
1167 leaf name {
1168 type leafref {
1169 path "/hardware/component/name";
1170 }
1171 description
1172 "The name of the component that has transitioned into the
1173 'disabled' state.";
1174 }
1175 leaf admin-state {
1176 type leafref {
1177 path "/hardware/component/state/admin-state";
1178 }
1179 description
1180 "The administrative state for the component.";
1181 }
1182 leaf alarm-state {
1183 type leafref {
1184 path "/hardware/component/state/alarm-state";
1185 }
1186
1187 description
1188 "The alarm state for the component.";
1189 }
1190 reference
1191 "RFC 4268: Entity State MIB - entStateOperDisabled";
1192 }
1193
1194}