draft-ietf-netmod-entity-08.txt | rfc8348.txt | |||
---|---|---|---|---|
Network Working Group A. Bierman | Internet Engineering Task Force (IETF) A. Bierman | |||
Internet-Draft YumaWorks | Request for Comments: 8348 YumaWorks | |||
Intended status: Standards Track M. Bjorklund | Category: Standards Track M. Bjorklund | |||
Expires: July 26, 2018 Tail-f Systems | ISSN: 2070-1721 Tail-f Systems | |||
J. Dong | J. Dong | |||
Huawei Technologies | Huawei Technologies | |||
D. Romascanu | D. Romascanu | |||
January 22, 2018 | March 2018 | |||
A YANG Data Model for Hardware Management | A YANG Data Model for Hardware Management | |||
draft-ietf-netmod-entity-08 | ||||
Abstract | Abstract | |||
This document defines a YANG data model for the management of | This document defines a YANG data model for the management of | |||
hardware on a single server. | hardware on a single server. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on July 26, 2018. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8348. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction ....................................................3 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Terminology ................................................3 | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams ..............................................3 | |||
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Objectives ......................................................4 | |||
3. Hardware Data Model . . . . . . . . . . . . . . . . . . . . . 3 | 3. Hardware Data Model .............................................4 | |||
3.1. The Components Lists . . . . . . . . . . . . . . . . . . 5 | 3.1. The Components Lists .......................................5 | |||
4. Relationship to ENTITY-MIB . . . . . . . . . . . . . . . . . 5 | 4. Relationship to ENTITY-MIB ......................................6 | |||
5. Relationship to ENTITY-SENSOR-MIB . . . . . . . . . . . . . . 6 | 5. Relationship to ENTITY-SENSOR-MIB ...............................8 | |||
6. Relationship to ENTITY-STATE-MIB . . . . . . . . . . . . . . 7 | 6. Relationship to ENTITY-STATE-MIB ................................8 | |||
7. Hardware YANG Module . . . . . . . . . . . . . . . . . . . . 7 | 7. Hardware YANG Modules ...........................................9 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | 7.1. "ietf-hardware" Module .....................................9 | |||
8.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 35 | 7.2. "iana-hardware" Module ....................................34 | |||
8.2. YANG Module Registrations . . . . . . . . . . . . . . . . 36 | 8. IANA Considerations ............................................38 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 36 | 8.1. URI Registrations .........................................38 | |||
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 37 | 8.2. YANG Module Registrations .................................39 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 9. Security Considerations ........................................39 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 37 | 10. References ....................................................40 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 39 | 10.1. Normative References .....................................40 | |||
Appendix A. Hardware State Data Model . . . . . . . . . . . . . 39 | 10.2. Informative References ...................................41 | |||
A.1. Hardware State YANG Module . . . . . . . . . . . . . . . 40 | Appendix A. Hardware State Data Model ............................42 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 55 | A.1. Hardware State YANG Module ................................43 | |||
Acknowledgments ...................................................60 | ||||
Authors' Addresses ................................................60 | ||||
1. Introduction | 1. Introduction | |||
This document defines a YANG [RFC7950] data model for the management | This document defines a YANG data model [RFC7950] for the management | |||
of hardware on a single server. | of hardware on a single server. | |||
The data model includes configuration and system state (status | The data model includes configuration and system state (status | |||
information and counters for the collection of statistics). | information and counters for the collection of statistics). | |||
The data model in this document is designed to be compliant with the | The data model in this document is designed to be compliant with the | |||
Network Management Datastore Architecture (NMDA) | Network Management Datastore Architecture (NMDA) [RFC8342]. For | |||
[I-D.ietf-netmod-revised-datastores]. For implementations that do | implementations that do not yet support NMDA, a temporary module with | |||
not yet support NMDA, a temporary module with system state data only | system state data only is defined in Appendix A. | |||
is defined in Appendix A. | ||||
1.1. Terminology | 1.1. Terminology | |||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14, [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
The following terms are defined in | The following terms are defined in [RFC8342] and are not redefined | |||
[I-D.ietf-netmod-revised-datastores] and are not redefined here: | here: | |||
o client | o client | |||
o server | o server | |||
o configuration | o configuration | |||
o system state | o system state | |||
o operational state | o operational state | |||
o intended configuration | o intended configuration | |||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
Tree diagrams used in this document follow the notation defined in | Tree diagrams used in this document follow the notation defined in | |||
[I-D.ietf-netmod-yang-tree-diagrams]. | [RFC8340]. | |||
2. Objectives | 2. Objectives | |||
This section describes some of the design objectives for the hardware | This section describes some of the design objectives for the hardware | |||
model. | data model. | |||
o There are many common properties used to identify hardware | o The hardware data model needs to support many common properties | |||
components, which need to be supported in the hardware data model. | used to identify hardware components. | |||
o There are many important information and states about the | o Important information and states about hardware components need to | |||
components, which needs to be collected from the devices which | be collected from devices that support the hardware data model. | |||
support the hardware data model. | ||||
o The hardware data model should be suitable for new implementations | o The hardware data model should be suitable for new implementations | |||
to use as is. | to use as is. | |||
o The hardware data model defined in this document can be | o The hardware data model defined in this document can be | |||
implemented on a system that also implements ENTITY-MIB, thus the | implemented on a system that also implements ENTITY-MIB; thus, the | |||
mapping between the hardware data model and ENTITY-MIB should be | mapping between the hardware data model and ENTITY-MIB should be | |||
clear. | clear. | |||
o The data model should support pre-provisioning of hardware | o The data model should support pre-provisioning of hardware | |||
components. | components. | |||
3. Hardware Data Model | 3. Hardware Data Model | |||
This document defines the YANG module "ietf-hardware", which has the | This document defines the YANG module "ietf-hardware", which has the | |||
following structure: | following structure: | |||
module: ietf-hardware | module: ietf-hardware | |||
+--rw hardware | +--rw hardware | |||
+--ro last-change? yang:date-and-time | +--ro last-change? yang:date-and-time | |||
+--rw component* [name] | +--rw component* [name] | |||
+--rw name string | +--rw name string | |||
+--rw class identityref | +--rw class identityref | |||
+--ro physical-index? int32 {entity-mib}? | +--ro physical-index? int32 {entity-mib}? | |||
+--ro description? string | +--ro description? string | |||
+--rw parent? -> ../../component/name | +--rw parent? -> ../../component/name | |||
+--rw parent-rel-pos? int32 | +--rw parent-rel-pos? int32 | |||
+--ro contains-child* -> ../../component/name | +--ro contains-child* -> ../../component/name | |||
+--ro hardware-rev? string | +--ro hardware-rev? string | |||
+--ro firmware-rev? string | +--ro firmware-rev? string | |||
+--ro software-rev? string | +--ro software-rev? string | |||
+--ro serial-num? string | +--ro serial-num? string | |||
+--ro mfg-name? string | +--ro mfg-name? string | |||
+--ro model-name? string | +--ro model-name? string | |||
+--rw alias? string | +--rw alias? string | |||
+--rw asset-id? string | +--rw asset-id? string | |||
+--ro is-fru? boolean | +--ro is-fru? boolean | |||
+--ro mfg-date? yang:date-and-time | +--ro mfg-date? yang:date-and-time | |||
+--rw uri* inet:uri | +--rw uri* inet:uri | |||
+--ro uuid? yang:uuid | +--ro uuid? yang:uuid | |||
+--rw state {hardware-state}? | +--rw state {hardware-state}? | |||
| +--ro state-last-changed? yang:date-and-time | | +--ro state-last-changed? yang:date-and-time | |||
| +--rw admin-state? admin-state | | +--rw admin-state? admin-state | |||
| +--ro oper-state? oper-state | | +--ro oper-state? oper-state | |||
| +--ro usage-state? usage-state | | +--ro usage-state? usage-state | |||
| +--ro alarm-state? alarm-state | | +--ro alarm-state? alarm-state | |||
| +--ro standby-state? standby-state | | +--ro standby-state? standby-state | |||
+--ro sensor-data {hardware-sensor}? | +--ro sensor-data {hardware-sensor}? | |||
+--ro value? sensor-value | +--ro value? sensor-value | |||
+--ro value-type? sensor-value-type | +--ro value-type? sensor-value-type | |||
+--ro value-scale? sensor-value-scale | +--ro value-scale? sensor-value-scale | |||
+--ro value-precision? sensor-value-precision | +--ro value-precision? sensor-value-precision | |||
+--ro oper-status? sensor-status | +--ro oper-status? sensor-status | |||
+--ro units-display? string | +--ro units-display? string | |||
+--ro value-timestamp? yang:date-and-time | +--ro value-timestamp? yang:date-and-time | |||
+--ro value-update-rate? uint32 | +--ro value-update-rate? uint32 | |||
notifications: | notifications: | |||
+---n hardware-state-change | +---n hardware-state-change | |||
+---n hardware-state-oper-enabled {hardware-state}? | +---n hardware-state-oper-enabled {hardware-state}? | |||
| +--ro name? -> /hardware/component/name | | +--ro name? -> /hardware/component/name | |||
| +--ro admin-state? -> /hardware/component/state/admin-state | | +--ro admin-state? -> /hardware/component/state/admin-state | |||
| +--ro alarm-state? -> /hardware/component/state/alarm-state | | +--ro alarm-state? -> /hardware/component/state/alarm-state | |||
+---n hardware-state-oper-disabled {hardware-state}? | +---n hardware-state-oper-disabled {hardware-state}? | |||
+--ro name? -> /hardware/component/name | +--ro name? -> /hardware/component/name | |||
+--ro admin-state? -> /hardware/component/state/admin-state | +--ro admin-state? -> /hardware/component/state/admin-state | |||
skipping to change at page 5, line 18 ¶ | skipping to change at page 5, line 45 ¶ | |||
The data model for hardware presented in this document uses a flat | The data model for hardware presented in this document uses a flat | |||
list of components. Each component in the list is identified by its | list of components. Each component in the list is identified by its | |||
name. Furthermore, each component has a mandatory "class" leaf. | name. Furthermore, each component has a mandatory "class" leaf. | |||
The "iana-hardware" module defines YANG identities for the hardware | The "iana-hardware" module defines YANG identities for the hardware | |||
types in the IANA-maintained "IANA-ENTITY-MIB" registry. | types in the IANA-maintained "IANA-ENTITY-MIB" registry. | |||
The "class" leaf is a YANG identity that describes the type of the | The "class" leaf is a YANG identity that describes the type of the | |||
hardware. Vendors are encouraged to either directly use one of the | hardware. Vendors are encouraged to either directly use one of the | |||
common IANA-defined identities, or derive a more specific identity | common IANA-defined identities or derive a more specific identity | |||
from one of them. | from one of them. | |||
4. Relationship to ENTITY-MIB | 4. Relationship to ENTITY-MIB | |||
If the device implements the ENTITY-MIB [RFC6933], each entry in the | If the device implements the ENTITY-MIB [RFC6933], each entry in the | |||
"/hardware/component" list in the operational state is mapped to one | "/hardware/component" list in the operational state is mapped to one | |||
EntPhysicalEntry. Objects that are writable in the MIB are mapped to | EntPhysicalEntry. Objects that are writable in the MIB are mapped to | |||
"config true" nodes in the "/hardware/component" list, except | "config true" nodes in the "/hardware/component" list, except | |||
"entPhysicalSerialNum" which is writable in the MIB, but "config | entPhysicalSerialNum, which is writable in the MIB but "config false" | |||
false" in the YANG module. | in the YANG module. | |||
The "physical-index" leaf MUST contain the value of the corresponding | The "physical-index" leaf MUST contain the value of the corresponding | |||
entPhysicalEntry's entPhysicalIndex. | entPhysicalEntry's entPhysicalIndex. | |||
The "class" leaf is mapped to both entPhysicalClass and | The "class" leaf is mapped to both entPhysicalClass and | |||
entPhysicalVendorType. If the value of the "class" leaf is an | entPhysicalVendorType. If the value of the "class" leaf is an | |||
identity that is either derived from or is one of the identities in | identity that either is derived from or is one of the identities in | |||
the "iana-hardware" module, then entPhysicalClass contains the | the "iana-hardware" module, then entPhysicalClass contains the | |||
corresponding IANAPhysicalClass enumeration value. Otherwise, | corresponding IANAPhysicalClass enumeration value. Otherwise, | |||
entPhysicalClass contains the IANAPhysicalClass value "other(1)". | entPhysicalClass contains the IANAPhysicalClass value "other(1)". | |||
Vendors are encouraged to define an identity (derived from an | Vendors are encouraged to define an identity (derived from an | |||
identity in "iana-hardware" if possible) for each enterprise-specific | identity in "iana-hardware" if possible) for each enterprise-specific | |||
registration identifier used for entPhysicalVendorType, and use that | registration identifier used for entPhysicalVendorType and use that | |||
identity for the "class" leaf. | identity for the "class" leaf. | |||
The following tables list the YANG data nodes with corresponding | The following table lists the YANG data nodes with corresponding | |||
objects in the ENTITY-MIB. | objects in the ENTITY-MIB. | |||
+--------------------------------+----------------------------------+ | +--------------------------------+----------------------------------+ | |||
| YANG data node in | ENTITY-MIB object | | | YANG data node in | ENTITY-MIB object | | |||
| /hardware/component | | | | /hardware/component | | | |||
+--------------------------------+----------------------------------+ | +--------------------------------+----------------------------------+ | |||
| name | entPhysicalName | | | name | entPhysicalName | | |||
| class | entPhysicalClass | | | class | entPhysicalClass | | |||
| | entPhysicalVendorType | | | | entPhysicalVendorType | | |||
| physical-index | entPhysicalIndex | | | physical-index | entPhysicalIndex | | |||
skipping to change at page 7, line 5 ¶ | skipping to change at page 8, line 11 ¶ | |||
+--------------------------------+----------------------------------+ | +--------------------------------+----------------------------------+ | |||
YANG Data Nodes and Related ENTITY-MIB Objects | YANG Data Nodes and Related ENTITY-MIB Objects | |||
5. Relationship to ENTITY-SENSOR-MIB | 5. Relationship to ENTITY-SENSOR-MIB | |||
If the device implements the ENTITY-SENSOR-MIB [RFC3433], each entry | If the device implements the ENTITY-SENSOR-MIB [RFC3433], each entry | |||
in the "/hardware/component" list where the container "sensor-data" | in the "/hardware/component" list where the container "sensor-data" | |||
exists is mapped to one EntPhySensorEntry. | exists is mapped to one EntPhySensorEntry. | |||
The following table lists the YANG data nodes with corresponding | ||||
objects in the ENTITY-SENSOR-MIB. | ||||
+-------------------------------------+-----------------------------+ | +-------------------------------------+-----------------------------+ | |||
| YANG data node in | ENTITY-SENSOR-MIB object | | | YANG data node in | ENTITY-SENSOR-MIB object | | |||
| /hardware/component/sensor-data | | | | /hardware/component/sensor-data | | | |||
+-------------------------------------+-----------------------------+ | +-------------------------------------+-----------------------------+ | |||
| value | entPhySensorValue | | | value | entPhySensorValue | | |||
| value-type | entPhySensorType | | | value-type | entPhySensorType | | |||
| value-scale | entPhySensorScale | | | value-scale | entPhySensorScale | | |||
| value-precision | entPhySensorPrecision | | | value-precision | entPhySensorPrecision | | |||
| oper-status | entPhySensorOperStatus | | | oper-status | entPhySensorOperStatus | | |||
| units-display | entPhySensorUnitsDisplay | | | units-display | entPhySensorUnitsDisplay | | |||
skipping to change at page 7, line 27 ¶ | skipping to change at page 8, line 36 ¶ | |||
+-------------------------------------+-----------------------------+ | +-------------------------------------+-----------------------------+ | |||
YANG Data Nodes and Related ENTITY-SENSOR-MIB Objects | YANG Data Nodes and Related ENTITY-SENSOR-MIB Objects | |||
6. Relationship to ENTITY-STATE-MIB | 6. Relationship to ENTITY-STATE-MIB | |||
If the device implements the ENTITY-STATE-MIB [RFC4268], each entry | If the device implements the ENTITY-STATE-MIB [RFC4268], each entry | |||
in the "/hardware/component" list where the container "state" exists | in the "/hardware/component" list where the container "state" exists | |||
is mapped to one EntStateEntry. | is mapped to one EntStateEntry. | |||
The following table lists the YANG data nodes with corresponding | ||||
objects in the ENTITY-STATE-MIB. | ||||
+------------------------------------------+------------------------+ | +------------------------------------------+------------------------+ | |||
| YANG data node in | ENTITY-STATE-MIB | | | YANG data node in | ENTITY-STATE-MIB | | |||
| /hardware/component/state | object | | | /hardware/component/state | object | | |||
+------------------------------------------+------------------------+ | +------------------------------------------+------------------------+ | |||
| state-last-changed | entStateLastChanged | | | state-last-changed | entStateLastChanged | | |||
| admin-state | entStateAdmin | | | admin-state | entStateAdmin | | |||
| oper-state | entStateOper | | | oper-state | entStateOper | | |||
| usage-state | entStateUsage | | | usage-state | entStateUsage | | |||
| alarm-state | entStateAlarm | | | alarm-state | entStateAlarm | | |||
| standby-state | entStateStandby | | | standby-state | entStateStandby | | |||
+------------------------------------------+------------------------+ | +------------------------------------------+------------------------+ | |||
YANG Data Nodes and Related ENTITY-SENSOR-MIB Objects | YANG Data Nodes and Related ENTITY-SENSOR-MIB Objects | |||
7. Hardware YANG Module | 7. Hardware YANG Modules | |||
<CODE BEGINS> file "ietf-hardware@2018-01-15.yang" | ||||
module ietf-hardware { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-hardware"; | ||||
prefix hw; | ||||
import ietf-inet-types { | 7.1. "ietf-hardware" Module | |||
prefix inet; | ||||
} | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
} | ||||
import iana-hardware { | ||||
prefix ianahw; | ||||
} | ||||
organization | This YANG module imports typedefs from [RFC6991]. | |||
"IETF NETMOD (Network Modeling) Working Group"; | ||||
contact | <CODE BEGINS> file "ietf-hardware@2018-03-13.yang" | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | ||||
WG List: <mailto:netmod@ietf.org> | ||||
Editor: Andy Bierman | module ietf-hardware { | |||
<mailto:andy@yumaworks.com> | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-hardware"; | ||||
prefix hw; | ||||
Editor: Martin Bjorklund | import ietf-inet-types { | |||
<mailto:mbj@tail-f.com> | prefix inet; | |||
} | ||||
import ietf-yang-types { | ||||
prefix yang; | ||||
} | ||||
import iana-hardware { | ||||
prefix ianahw; | ||||
} | ||||
Editor: Jie Dong | organization | |||
<mailto:jie.dong@huawei.com> | "IETF NETMOD (Network Modeling) Working Group"; | |||
Editor: Dan Romascanu | contact | |||
<mailto:dromasca@gmail.com>"; | "WG Web: <https://datatracker.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | ||||
// RFC Ed.: replace XXXX and YYYY with actual RFC numbers and | Editor: Andy Bierman | |||
// remove this note. | <mailto:andy@yumaworks.com> | |||
description | Editor: Martin Bjorklund | |||
"This module contains a collection of YANG definitions for | <mailto:mbj@tail-f.com> | |||
managing hardware. | ||||
This data model is designed for the Network Management Datastore | Editor: Jie Dong | |||
Architecture defined in RFC YYYY. | <mailto:jie.dong@huawei.com> | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Editor: Dan Romascanu | |||
authors of the code. All rights reserved. | <mailto:dromasca@gmail.com>"; | |||
Redistribution and use in source and binary forms, with or | description | |||
without modification, is permitted pursuant to, and subject | "This module contains a collection of YANG definitions for | |||
to the license terms contained in, the Simplified BSD License | managing hardware. | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see | This data model is designed for the Network Management Datastore | |||
the RFC itself for full legal notices."; | Architecture (NMDA) defined in RFC 8342. | |||
// RFC Ed.: update the date below with the date of RFC publication | Copyright (c) 2018 IETF Trust and the persons identified as | |||
// and remove this note. | authors of the code. All rights reserved. | |||
revision 2018-01-15 { | ||||
description | ||||
"Initial revision."; | ||||
reference | ||||
"RFC XXXX: A YANG Data Model for Hardware Management"; | ||||
} | ||||
/* | Redistribution and use in source and binary forms, with or | |||
* Features | without modification, is permitted pursuant to, and subject | |||
*/ | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(https://trustee.ietf.org/license-info). | ||||
feature entity-mib { | This version of this YANG module is part of RFC 8348; see | |||
description | the RFC itself for full legal notices."; | |||
"This feature indicates that the device implements | ||||
the ENTITY-MIB."; | ||||
reference "RFC 6933: Entity MIB (Version 4)"; | ||||
} | ||||
feature hardware-state { | revision 2018-03-13 { | |||
description | description | |||
"Indicates the ENTITY-STATE-MIB objects are supported"; | "Initial revision."; | |||
reference "RFC 4268: Entity State MIB"; | reference | |||
} | "RFC 8348: A YANG Data Model for Hardware Management"; | |||
} | ||||
feature hardware-sensor { | /* | |||
description | * Features | |||
"Indicates the ENTITY-SENSOR-MIB objects are supported"; | */ | |||
reference "RFC 3433: Entity Sensor MIB"; | ||||
} | ||||
/* | feature entity-mib { | |||
* Typedefs | description | |||
*/ | "This feature indicates that the device implements | |||
the ENTITY-MIB."; | ||||
reference | ||||
"RFC 6933: Entity MIB (Version 4)"; | ||||
} | ||||
typedef admin-state { | feature hardware-state { | |||
type enumeration { | description | |||
enum unknown { | "Indicates that ENTITY-STATE-MIB objects are supported"; | |||
value 1; | reference | |||
description | "RFC 4268: Entity State MIB"; | |||
"The resource is unable to report administrative state."; | } | |||
} | ||||
enum locked { | ||||
value 2; | ||||
description | ||||
"The resource is administratively prohibited from use."; | ||||
} | ||||
enum shutting-down { | ||||
value 3; | ||||
description | ||||
"The resource usage is administratively limited to current | ||||
instances of use."; | ||||
} | ||||
enum unlocked { | ||||
value 4; | ||||
description | ||||
"The resource is not administratively prohibited from | ||||
use."; | ||||
} | ||||
} | ||||
description | ||||
"Represents the various possible administrative states."; | ||||
reference "RFC 4268: EntityAdminState"; | ||||
} | ||||
typedef oper-state { | feature hardware-sensor { | |||
type enumeration { | description | |||
enum unknown { | "Indicates that ENTITY-SENSOR-MIB objects are supported"; | |||
value 1; | reference | |||
description | "RFC 3433: Entity Sensor Management Information Base"; | |||
"The resource is unable to report its operational state."; | } | |||
} | ||||
enum disabled { | ||||
value 2; | ||||
description | ||||
"The resource is totally inoperable."; | ||||
} | ||||
enum enabled { | ||||
value 3; | ||||
description | ||||
"The resource is partially or fully operable."; | ||||
} | ||||
enum testing { | ||||
value 4; | ||||
description | ||||
"The resource is currently being tested and cannot | ||||
therefore report whether it is operational or not."; | ||||
} | ||||
} | ||||
description | ||||
"Represents the possible values of operational states."; | ||||
reference "RFC 4268: EntityOperState"; | ||||
} | ||||
typedef usage-state { | /* | |||
type enumeration { | * Typedefs | |||
enum unknown { | */ | |||
value 1; | ||||
description | ||||
"The resource is unable to report usage state."; | ||||
} | ||||
enum idle { | ||||
value 2; | ||||
description | ||||
"The resource is servicing no users."; | ||||
} | ||||
enum active { | ||||
value 3; | ||||
description | ||||
"The resource is currently in use and it has sufficient | ||||
spare capacity to provide for additional users."; | ||||
} | ||||
enum busy { | ||||
value 4; | ||||
description | ||||
"The resource is currently in use, but it currently has no | ||||
spare capacity to provide for additional users."; | ||||
} | ||||
} | ||||
description | ||||
"Represents the possible values of usage states."; | ||||
reference "RFC 4268, EntityUsageState"; | ||||
} | ||||
typedef alarm-state { | typedef admin-state { | |||
type bits { | type enumeration { | |||
bit unknown { | enum unknown { | |||
position 0; | value 1; | |||
description | description | |||
"The resource is unable to report alarm state."; | "The resource is unable to report administrative state."; | |||
} | } | |||
bit under-repair { | enum locked { | |||
position 1; | value 2; | |||
description | description | |||
"The resource is currently being repaired, which, depending | "The resource is administratively prohibited from use."; | |||
on the implementation, may make the other values in this | } | |||
bit string not meaningful."; | enum shutting-down { | |||
} | value 3; | |||
bit critical { | description | |||
position 2; | "The resource usage is administratively limited to current | |||
description | instances of use."; | |||
"One or more critical alarms are active against the | } | |||
resource."; | enum unlocked { | |||
value 4; | ||||
description | ||||
"The resource is not administratively prohibited from | ||||
use."; | ||||
} | ||||
} | ||||
description | ||||
"Represents the various possible administrative states."; | ||||
reference | ||||
"RFC 4268: Entity State MIB - EntityAdminState"; | ||||
} | ||||
} | typedef oper-state { | |||
bit major { | type enumeration { | |||
position 3; | enum unknown { | |||
description | value 1; | |||
"One or more major alarms are active against the | description | |||
resource."; | "The resource is unable to report its operational state."; | |||
} | } | |||
bit minor { | enum disabled { | |||
position 4; | value 2; | |||
description | description | |||
"One or more minor alarms are active against the | "The resource is totally inoperable."; | |||
resource."; | } | |||
} | enum enabled { | |||
bit warning { | value 3; | |||
position 5; | description | |||
description | "The resource is partially or fully operable."; | |||
"One or more warning alarms are active against the | } | |||
resource."; | enum testing { | |||
} | value 4; | |||
bit indeterminate { | description | |||
position 6; | "The resource is currently being tested and cannot | |||
description | therefore report whether or not it is operational."; | |||
"One or more alarms of whose perceived severity cannot be | } | |||
determined are active against this resource."; | } | |||
} | description | |||
} | "Represents the possible values of operational states."; | |||
description | reference | |||
"Represents the possible values of alarm states. An alarm is a | "RFC 4268: Entity State MIB - EntityOperState"; | |||
persistent indication of an error or warning condition. | } | |||
When no bits of this attribute are set, then no active alarms | typedef usage-state { | |||
are known against this component and it is not under repair."; | type enumeration { | |||
reference "RFC 4268: EntityAlarmStatus"; | enum unknown { | |||
} | value 1; | |||
description | ||||
"The resource is unable to report usage state."; | ||||
} | ||||
enum idle { | ||||
value 2; | ||||
description | ||||
"The resource is servicing no users."; | ||||
} | ||||
enum active { | ||||
value 3; | ||||
description | ||||
"The resource is currently in use, and it has sufficient | ||||
spare capacity to provide for additional users."; | ||||
} | ||||
enum busy { | ||||
value 4; | ||||
description | ||||
"The resource is currently in use, but it currently has no | ||||
spare capacity to provide for additional users."; | ||||
} | ||||
} | ||||
description | ||||
"Represents the possible values of usage states."; | ||||
reference | ||||
"RFC 4268: Entity State MIB - EntityUsageState"; | ||||
} | ||||
typedef standby-state { | typedef alarm-state { | |||
type enumeration { | type bits { | |||
enum unknown { | bit unknown { | |||
value 1; | position 0; | |||
description | description | |||
"The resource is unable to report standby state."; | "The resource is unable to report alarm state."; | |||
} | } | |||
enum hot-standby { | bit under-repair { | |||
value 2; | position 1; | |||
description | description | |||
"The resource is not providing service, but it will be | "The resource is currently being repaired, which, depending | |||
immediately able to take over the role of the resource to | on the implementation, may make the other values in this | |||
be backed up, without the need for initialization | bit string not meaningful."; | |||
activity, and will contain the same information as the | } | |||
resource to be backed up."; | bit critical { | |||
} | position 2; | |||
enum cold-standby { | description | |||
value 3; | "One or more critical alarms are active against the | |||
description | resource."; | |||
"The resource is to back up another resource, but will not | } | |||
be immediately able to take over the role of a resource to | bit major { | |||
be backed up, and will require some initialization | position 3; | |||
activity."; | description | |||
} | "One or more major alarms are active against the | |||
enum providing-service { | resource."; | |||
value 4; | } | |||
description | bit minor { | |||
"The resource is providing service."; | position 4; | |||
} | description | |||
} | "One or more minor alarms are active against the | |||
description | resource."; | |||
"Represents the possible values of standby states."; | } | |||
reference "RFC 4268: EntityStandbyStatus"; | bit warning { | |||
} | position 5; | |||
description | ||||
"One or more warning alarms are active against the | ||||
resource."; | ||||
} | ||||
bit indeterminate { | ||||
position 6; | ||||
description | ||||
"One or more alarms of whose perceived severity cannot be | ||||
determined are active against this resource."; | ||||
} | ||||
} | ||||
description | ||||
"Represents the possible values of alarm states. An alarm is a | ||||
persistent indication of an error or warning condition. | ||||
typedef sensor-value-type { | When no bits of this attribute are set, then no active alarms | |||
type enumeration { | are known against this component and it is not under repair."; | |||
enum other { | reference | |||
value 1; | "RFC 4268: Entity State MIB - EntityAlarmStatus"; | |||
description | } | |||
"A measure other than those listed below."; | ||||
} | ||||
enum unknown { | ||||
value 2; | ||||
description | ||||
"An unknown measurement, or arbitrary, relative numbers"; | ||||
} | ||||
enum volts-AC { | ||||
value 3; | ||||
description | ||||
"A measure of electric potential (alternating current)."; | ||||
} | ||||
enum volts-DC { | ||||
value 4; | ||||
description | ||||
"A measure of electric potential (direct current)."; | ||||
} | ||||
enum amperes { | ||||
value 5; | ||||
description | ||||
"A measure of electric current."; | ||||
} | typedef standby-state { | |||
enum watts { | type enumeration { | |||
value 6; | enum unknown { | |||
description | value 1; | |||
"A measure of power."; | description | |||
} | "The resource is unable to report standby state."; | |||
enum hertz { | } | |||
value 7; | enum hot-standby { | |||
description | value 2; | |||
"A measure of frequency."; | description | |||
} | "The resource is not providing service, but it will be | |||
enum celsius { | immediately able to take over the role of the resource to | |||
value 8; | be backed up, without the need for initialization | |||
description | activity, and will contain the same information as the | |||
"A measure of temperature."; | resource to be backed up."; | |||
} | } | |||
enum percent-RH { | enum cold-standby { | |||
value 9; | value 3; | |||
description | description | |||
"A measure of percent relative humidity."; | "The resource is to back up another resource, but it will | |||
} | not be immediately able to take over the role of a | |||
enum rpm { | resource to be backed up and will require some | |||
value 10; | initialization activity."; | |||
description | } | |||
"A measure of shaft revolutions per minute."; | enum providing-service { | |||
} | value 4; | |||
enum cmm { | description | |||
value 11; | "The resource is providing service."; | |||
description | } | |||
"A measure of cubic meters per minute (airflow)."; | } | |||
} | description | |||
enum truth-value { | "Represents the possible values of standby states."; | |||
value 12; | reference | |||
description | "RFC 4268: Entity State MIB - EntityStandbyStatus"; | |||
"Value is one of 1 (true) or 2 (false)"; | } | |||
} | ||||
} | ||||
description | ||||
"A node using this data type represents the sensor measurement | ||||
data type associated with a physical sensor value. The actual | ||||
data units are determined by examining a node of this type | ||||
together with the associated sensor-value-scale node. | ||||
A node of this type SHOULD be defined together with nodes of | typedef sensor-value-type { | |||
type sensor-value-scale and sensor-value-precision. These | type enumeration { | |||
three types are used to identify the semantics of a node of | enum other { | |||
type sensor-value."; | value 1; | |||
reference "RFC 3433: EntitySensorDataType"; | description | |||
"A measure other than those listed below."; | ||||
} | } | |||
enum unknown { | ||||
value 2; | ||||
description | ||||
"An unknown measurement or arbitrary, relative numbers"; | ||||
} | ||||
enum volts-AC { | ||||
value 3; | ||||
description | ||||
"A measure of electric potential (alternating current)."; | ||||
} | ||||
enum volts-DC { | ||||
value 4; | ||||
description | ||||
"A measure of electric potential (direct current)."; | ||||
} | ||||
enum amperes { | ||||
value 5; | ||||
description | ||||
"A measure of electric current."; | ||||
} | ||||
enum watts { | ||||
value 6; | ||||
description | ||||
"A measure of power."; | ||||
} | ||||
enum hertz { | ||||
value 7; | ||||
description | ||||
"A measure of frequency."; | ||||
} | ||||
enum celsius { | ||||
value 8; | ||||
description | ||||
"A measure of temperature."; | ||||
} | ||||
enum percent-RH { | ||||
value 9; | ||||
description | ||||
"A measure of percent relative humidity."; | ||||
} | ||||
enum rpm { | ||||
value 10; | ||||
description | ||||
"A measure of shaft revolutions per minute."; | ||||
} | ||||
enum cmm { | ||||
value 11; | ||||
description | ||||
"A measure of cubic meters per minute (airflow)."; | ||||
} | ||||
enum truth-value { | ||||
value 12; | ||||
description | ||||
"Value is one of 1 (true) or 2 (false)"; | ||||
} | ||||
} | ||||
description | ||||
"A node using this data type represents the sensor measurement | ||||
data type associated with a physical sensor value. The actual | ||||
data units are determined by examining a node of this type | ||||
together with the associated sensor-value-scale node. | ||||
typedef sensor-value-scale { | A node of this type SHOULD be defined together with nodes of | |||
type enumeration { | type sensor-value-scale and type sensor-value-precision. | |||
enum yocto { | These three types are used to identify the semantics of a node | |||
value 1; | of type sensor-value."; | |||
description | reference | |||
"Data scaling factor of 10^-24."; | "RFC 3433: Entity Sensor Management Information Base - | |||
} | EntitySensorDataType"; | |||
enum zepto { | } | |||
value 2; | ||||
description | ||||
"Data scaling factor of 10^-21."; | ||||
} | ||||
enum atto { | ||||
value 3; | ||||
description | ||||
"Data scaling factor of 10^-18."; | ||||
} | ||||
enum femto { | ||||
value 4; | ||||
description | ||||
"Data scaling factor of 10^-15."; | ||||
} | ||||
enum pico { | ||||
value 5; | ||||
description | ||||
"Data scaling factor of 10^-12."; | ||||
} | ||||
enum nano { | ||||
value 6; | ||||
description | ||||
"Data scaling factor of 10^-9."; | ||||
} | ||||
enum micro { | ||||
value 7; | ||||
description | ||||
"Data scaling factor of 10^-6."; | ||||
} | ||||
enum milli { | ||||
value 8; | ||||
description | ||||
"Data scaling factor of 10^-3."; | ||||
} | ||||
enum units { | ||||
value 9; | ||||
description | ||||
"Data scaling factor of 10^0."; | ||||
} | typedef sensor-value-scale { | |||
enum kilo { | type enumeration { | |||
value 10; | enum yocto { | |||
description | value 1; | |||
"Data scaling factor of 10^3."; | description | |||
} | "Data scaling factor of 10^-24."; | |||
enum mega { | } | |||
value 11; | enum zepto { | |||
description | value 2; | |||
"Data scaling factor of 10^6."; | description | |||
} | "Data scaling factor of 10^-21."; | |||
enum giga { | } | |||
value 12; | enum atto { | |||
description | value 3; | |||
"Data scaling factor of 10^9."; | description | |||
} | "Data scaling factor of 10^-18."; | |||
enum tera { | } | |||
value 13; | enum femto { | |||
description | value 4; | |||
"Data scaling factor of 10^12."; | description | |||
} | "Data scaling factor of 10^-15."; | |||
enum peta { | } | |||
value 14; | enum pico { | |||
description | value 5; | |||
"Data scaling factor of 10^15."; | description | |||
} | "Data scaling factor of 10^-12."; | |||
enum exa { | } | |||
value 15; | enum nano { | |||
description | value 6; | |||
"Data scaling factor of 10^18."; | description | |||
} | "Data scaling factor of 10^-9."; | |||
enum zetta { | } | |||
value 16; | enum micro { | |||
description | value 7; | |||
"Data scaling factor of 10^21."; | description | |||
} | "Data scaling factor of 10^-6."; | |||
enum yotta { | } | |||
value 17; | enum milli { | |||
description | value 8; | |||
"Data scaling factor of 10^24."; | description | |||
} | "Data scaling factor of 10^-3."; | |||
} | } | |||
description | enum units { | |||
"A node using this data type represents a data scaling factor, | value 9; | |||
represented with an International System of Units (SI) prefix. | description | |||
The actual data units are determined by examining a node of | "Data scaling factor of 10^0."; | |||
this type together with the associated sensor-value-type. | } | |||
enum kilo { | ||||
value 10; | ||||
description | ||||
"Data scaling factor of 10^3."; | ||||
} | ||||
enum mega { | ||||
value 11; | ||||
description | ||||
"Data scaling factor of 10^6."; | ||||
} | ||||
enum giga { | ||||
value 12; | ||||
description | ||||
"Data scaling factor of 10^9."; | ||||
} | ||||
enum tera { | ||||
value 13; | ||||
description | ||||
"Data scaling factor of 10^12."; | ||||
} | ||||
enum peta { | ||||
value 14; | ||||
description | ||||
"Data scaling factor of 10^15."; | ||||
} | ||||
enum exa { | ||||
value 15; | ||||
description | ||||
"Data scaling factor of 10^18."; | ||||
} | ||||
enum zetta { | ||||
value 16; | ||||
description | ||||
"Data scaling factor of 10^21."; | ||||
} | ||||
enum yotta { | ||||
value 17; | ||||
description | ||||
"Data scaling factor of 10^24."; | ||||
} | ||||
} | ||||
description | ||||
"A node using this data type represents a data scaling factor, | ||||
represented with an International System of Units (SI) prefix. | ||||
The actual data units are determined by examining a node of | ||||
this type together with the associated sensor-value-type. | ||||
A node of this type SHOULD be defined together with nodes of | A node of this type SHOULD be defined together with nodes of | |||
type sensor-value-type and sensor-value-precision. Together, | type sensor-value-type and type sensor-value-precision. | |||
associated nodes of these three types are used to identify the | Together, associated nodes of these three types are used to | |||
semantics of a node of type sensor-value."; | identify the semantics of a node of type sensor-value."; | |||
reference "RFC 3433: EntitySensorDataScale"; | reference | |||
} | "RFC 3433: Entity Sensor Management Information Base - | |||
EntitySensorDataScale"; | ||||
} | ||||
typedef sensor-value-precision { | typedef sensor-value-precision { | |||
type int8 { | type int8 { | |||
range "-8 .. 9"; | range "-8 .. 9"; | |||
} | } | |||
description | description | |||
"A node using this data type represents a sensor value | "A node using this data type represents a sensor value | |||
precision range. | precision range. | |||
A node of this type SHOULD be defined together with nodes of | A node of this type SHOULD be defined together with nodes of | |||
type sensor-value-type and sensor-value-scale. Together, | type sensor-value-type and type sensor-value-scale. Together, | |||
associated nodes of these three types are used to identify the | associated nodes of these three types are used to identify the | |||
semantics of a node of type sensor-value. | semantics of a node of type sensor-value. | |||
If a node of this type contains a value in the range 1 to 9, | If a node of this type contains a value in the range 1 to 9, | |||
it represents the number of decimal places in the fractional | it represents the number of decimal places in the fractional | |||
part of an associated sensor-value fixed- point number. | part of an associated sensor-value fixed-point number. | |||
If a node of this type contains a value in the range -8 to -1, | If a node of this type contains a value in the range -8 to -1, | |||
it represents the number of accurate digits in the associated | it represents the number of accurate digits in the associated | |||
sensor-value fixed-point number. | sensor-value fixed-point number. | |||
The value zero indicates the associated sensor-value node is | The value zero indicates the associated sensor-value node is | |||
not a fixed-point number. | not a fixed-point number. | |||
Server implementers must choose a value for the associated | Server implementers must choose a value for the associated | |||
sensor-value-precision node so that the precision and accuracy | sensor-value-precision node so that the precision and accuracy | |||
of the associated sensor-value node is correctly indicated. | of the associated sensor-value node is correctly indicated. | |||
For example, a component representing a temperature sensor | For example, a component representing a temperature sensor | |||
that can measure 0 degrees to 100 degrees C in 0.1 degree | that can measure 0 to 100 degrees C in 0.1 degree | |||
increments, +/- 0.05 degrees, would have a | increments, +/- 0.05 degrees, would have a | |||
sensor-value-precision value of '1', a sensor-value-scale | sensor-value-precision value of '1', a sensor-value-scale | |||
value of 'units', and a sensor-value ranging from '0' to | value of 'units', and a sensor-value ranging from '0' to | |||
'1000'. The sensor-value would be interpreted as | '1000'. The sensor-value would be interpreted as | |||
'degrees C * 10'."; | 'degrees C * 10'."; | |||
reference "RFC 3433: EntitySensorPrecision"; | reference | |||
} | "RFC 3433: Entity Sensor Management Information Base - | |||
EntitySensorPrecision"; | ||||
} | ||||
typedef sensor-value { | typedef sensor-value { | |||
type int32 { | type int32 { | |||
range "-1000000000 .. 1000000000"; | range "-1000000000 .. 1000000000"; | |||
} | ||||
description | ||||
"A node using this data type represents a sensor value. | ||||
} | A node of this type SHOULD be defined together with nodes of | |||
description | type sensor-value-type, type sensor-value-scale, and | |||
"A node using this data type represents a sensor value. | type sensor-value-precision. Together, associated nodes of | |||
those three types are used to identify the semantics of a node | ||||
of this data type. | ||||
A node of this type SHOULD be defined together with nodes of | The semantics of a node using this data type are determined by | |||
type sensor-value-type, sensor-value-scale, and | the value of the associated sensor-value-type node. | |||
sensor-value-precision. Together, associated nodes of those | ||||
three types are used to identify the semantics of a node of | ||||
this data type. | ||||
The semantics of a node using this data type are determined by | If the associated sensor-value-type node is equal to 'voltsAC', | |||
the value of the associated sensor-value-type node. | 'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm', | |||
then a node of this type MUST contain a fixed-point number | ||||
ranging from -999,999,999 to +999,999,999. The value | ||||
-1000000000 indicates an underflow error. The value | ||||
+1000000000 indicates an overflow error. The | ||||
sensor-value-precision indicates how many fractional digits | ||||
are represented in the associated sensor-value node. | ||||
If the associated sensor-value-type node is equal to 'voltsAC', | If the associated sensor-value-type node is equal to | |||
'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm', | 'percentRH', then a node of this type MUST contain a number | |||
then a node of this type MUST contain a fixed point number | ranging from 0 to 100. | |||
ranging from -999,999,999 to +999,999,999. The value | ||||
-1000000000 indicates an underflow error. The value +1000000000 | ||||
indicates an overflow error. The sensor-value-precision | ||||
indicates how many fractional digits are represented in the | ||||
associated sensor-value node. | ||||
If the associated sensor-value-type node is equal to | If the associated sensor-value-type node is equal to 'rpm', | |||
'percentRH', then a node of this type MUST contain a number | then a node of this type MUST contain a number ranging from | |||
ranging from 0 to 100. | -999,999,999 to +999,999,999. | |||
If the associated sensor-value-type node is equal to 'rpm', | If the associated sensor-value-type node is equal to | |||
then a node of this type MUST contain a number ranging from | 'truth-value', then a node of this type MUST contain either the | |||
-999,999,999 to +999,999,999. | value 1 (true) or the value 2 (false). | |||
If the associated sensor-value-type node is equal to | If the associated sensor-value-type node is equal to 'other' or | |||
'truth-value', then a node of this type MUST contain either the | 'unknown', then a node of this type MUST contain a number | |||
value 1 (true) or the value 2 (false)'. | ranging from -1000000000 to 1000000000."; | |||
reference | ||||
"RFC 3433: Entity Sensor Management Information Base - | ||||
EntitySensorValue"; | ||||
} | ||||
If the associated sensor-value-type node is equal to 'other' or | typedef sensor-status { | |||
unknown', then a node of this type MUST contain a number | type enumeration { | |||
ranging from -1000000000 to 1000000000."; | enum ok { | |||
reference "RFC 3433: EntitySensorValue"; | value 1; | |||
} | description | |||
"Indicates that the server can obtain the sensor value."; | ||||
} | ||||
enum unavailable { | ||||
value 2; | ||||
description | ||||
"Indicates that the server presently cannot obtain the | ||||
sensor value."; | ||||
} | ||||
enum nonoperational { | ||||
value 3; | ||||
description | ||||
"Indicates that the server believes the sensor is broken. | ||||
The sensor could have a hard failure (disconnected wire) | ||||
or a soft failure such as out-of-range, jittery, or wildly | ||||
fluctuating readings."; | ||||
} | ||||
} | ||||
description | ||||
"A node using this data type represents the operational status | ||||
of a physical sensor."; | ||||
reference | ||||
"RFC 3433: Entity Sensor Management Information Base - | ||||
EntitySensorStatus"; | ||||
typedef sensor-status { | } | |||
type enumeration { | ||||
enum ok { | ||||
value 1; | ||||
description | ||||
"Indicates that the server can obtain the sensor value."; | ||||
} | ||||
enum unavailable { | ||||
value 2; | ||||
description | ||||
"Indicates that the server presently cannot obtain the | ||||
sensor value."; | ||||
} | ||||
enum nonoperational { | ||||
value 3; | ||||
description | ||||
"Indicates that the server believes the sensor is broken. | ||||
The sensor could have a hard failure (disconnected wire), | ||||
or a soft failure such as out-of-range, jittery, or wildly | ||||
fluctuating readings."; | ||||
} | ||||
} | ||||
description | ||||
"A node using this data type represents the operational status | ||||
of a physical sensor."; | ||||
reference "RFC 3433: EntitySensorStatus"; | ||||
} | ||||
/* | /* | |||
* Data nodes | * Data nodes | |||
*/ | */ | |||
container hardware { | container hardware { | |||
description | description | |||
"Data nodes representing components. | "Data nodes representing components. | |||
If the server supports configuration of hardware components, | If the server supports configuration of hardware components, | |||
then this data model is instantiated in the configuration | then this data model is instantiated in the configuration | |||
datastores supported by the server. The leaf-list 'datastore' | datastores supported by the server. The leaf-list 'datastore' | |||
for the module 'ietf-hardware' in the YANG library provides | for the module 'ietf-hardware' in the YANG library provides | |||
this information."; | this information."; | |||
leaf last-change { | leaf last-change { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
config false; | config false; | |||
description | description | |||
"The time the '/hardware/component' list changed in the | "The time the '/hardware/component' list changed in the | |||
operational state."; | operational state."; | |||
} | } | |||
list component { | list component { | |||
key name; | key name; | |||
description | description | |||
"List of components. | "List of components. | |||
When the server detects a new hardware component, it | When the server detects a new hardware component, it | |||
initializes a list entry in the operational state. | initializes a list entry in the operational state. | |||
If the server does not support configuration of hardware | If the server does not support configuration of hardware | |||
components, list entries in the operational state are | components, list entries in the operational state are | |||
initialized with values for all nodes as detected by the | initialized with values for all nodes as detected by the | |||
implementation. | implementation. | |||
Otherwise, the following procedure is followed: | Otherwise, this procedure is followed: | |||
1. If there is an entry in the /hardware/component list in | 1. If there is an entry in the '/hardware/component' list | |||
the intended configuration with values for the nodes | in the intended configuration with values for the nodes | |||
'class', 'parent', 'parent-rel-pos' that are equal to | 'class', 'parent', and 'parent-rel-pos' that are equal | |||
the detected values, then the list entry in operational | to the detected values, then the list entry in the | |||
state is initialized with the configured values, | operational state is initialized with the configured | |||
including the 'name'. | values, including the 'name'. | |||
2. Otherwise (i.e., there is no matching configuration | 2. Otherwise (i.e., there is no matching configuration | |||
entry), the list entry in the operational state is | entry), the list entry in the operational state is | |||
initialized with values for all nodes as detected by | initialized with values for all nodes as detected by | |||
the implementation. | the implementation. | |||
If the /hardware/component list in the intended | If the '/hardware/component' list in the intended | |||
configuration is modified, then the system MUST behave as if | configuration is modified, then the system MUST behave as if | |||
it re-initializes itself, and follow the procedure in (1)."; | it re-initializes itself and follow the procedure in (1)."; | |||
reference "RFC 6933: entPhysicalEntry"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalEntry"; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name assigned to this component. | "The name assigned to this component. | |||
This name is not required to be the same as | This name is not required to be the same as | |||
entPhysicalName."; | entPhysicalName."; | |||
} | } | |||
leaf class { | leaf class { | |||
type identityref { | type identityref { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"An indication of the general hardware type of the | "An indication of the general hardware type of the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalClass"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalClass"; | |||
} | ||||
leaf physical-index { | leaf physical-index { | |||
if-feature entity-mib; | if-feature entity-mib; | |||
type int32 { | type int32 { | |||
range "1..2147483647"; | range "1..2147483647"; | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"The entPhysicalIndex for the entPhysicalEntry represented | "The entPhysicalIndex for the entPhysicalEntry represented | |||
by this list entry."; | by this list entry."; | |||
reference "RFC 6933: entPhysicalIndex"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex"; | |||
} | ||||
leaf description { | leaf description { | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"A textual description of component. This node should | "A textual description of the component. This node should | |||
contain a string that identifies the manufacturer's name | contain a string that identifies the manufacturer's name | |||
for the component and should be set to a distinct value | for the component and should be set to a distinct value | |||
for each version or model of the component."; | for each version or model of the component."; | |||
reference "RFC 6933: entPhysicalDescr"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr"; | |||
} | ||||
leaf parent { | leaf parent { | |||
type leafref { | type leafref { | |||
path "../../component/name"; | path "../../component/name"; | |||
require-instance false; | require-instance false; | |||
} | } | |||
description | description | |||
"The name of the component that physically contains this | "The name of the component that physically contains this | |||
component. | component. | |||
If this leaf is not instantiated, it indicates that this | If this leaf is not instantiated, it indicates that this | |||
component is not contained in any other component. | component is not contained in any other component. | |||
In the event that a physical component is contained by | In the event that a physical component is contained by | |||
more than one physical component (e.g., double-wide | more than one physical component (e.g., double-wide | |||
modules), this node contains the name of one of these | modules), this node contains the name of one of these | |||
components. An implementation MUST use the same name | components. An implementation MUST use the same name | |||
every time this node is instantiated."; | every time this node is instantiated."; | |||
reference "RFC 6933: entPhysicalContainedIn"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalContainedIn"; | |||
} | ||||
leaf parent-rel-pos { | leaf parent-rel-pos { | |||
type int32 { | type int32 { | |||
range "0 .. 2147483647"; | range "0 .. 2147483647"; | |||
} | } | |||
description | description | |||
"An indication of the relative position of this child | "An indication of the relative position of this child | |||
component among all its sibling components. Sibling | component among all its sibling components. Sibling | |||
components are defined as components that: | components are defined as components that: | |||
o Share the same value of the 'parent' node; and | o share the same value of the 'parent' node and | |||
o Share a common base identity for the 'class' node. | o share a common base identity for the 'class' node. | |||
Note that the last rule gives implementations flexibility | Note that the last rule gives implementations flexibility | |||
in how components are numbered. For example, some | in how components are numbered. For example, some | |||
implementations might have a single number series for all | implementations might have a single number series for all | |||
components derived from 'ianahw:port', while some others | components derived from 'ianahw:port', while some others | |||
might have different number series for different | might have different number series for different | |||
components with identities derived from 'ianahw:port' (for | components with identities derived from 'ianahw:port' (for | |||
example, one for RJ45 and one for SFP)."; | example, one for registered jack 45 (RJ45) and one for | |||
small form-factor pluggable (SFP))."; | ||||
reference "RFC 6933: entPhysicalParentRelPos"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - | |||
entPhysicalParentRelPos"; | ||||
} | ||||
leaf-list contains-child { | leaf-list contains-child { | |||
type leafref { | type leafref { | |||
path "../../component/name"; | path "../../component/name"; | |||
} | } | |||
config false; | config false; | |||
description | description | |||
"The name of the contained component."; | "The name of the contained component."; | |||
reference "RFC 6933: entPhysicalChildIndex"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex"; | |||
} | ||||
leaf hardware-rev { | leaf hardware-rev { | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"The vendor-specific hardware revision string for the | "The vendor-specific hardware revision string for the | |||
component. The preferred value is the hardware revision | component. The preferred value is the hardware revision | |||
identifier actually printed on the component itself (if | identifier actually printed on the component itself (if | |||
present)."; | present)."; | |||
reference "RFC 6933: entPhysicalHardwareRev"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - | |||
entPhysicalHardwareRev"; | ||||
} | ||||
leaf firmware-rev { | leaf firmware-rev { | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"The vendor-specific firmware revision string for the | "The vendor-specific firmware revision string for the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalFirmwareRev"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - | |||
entPhysicalFirmwareRev"; | ||||
} | ||||
leaf software-rev { | leaf software-rev { | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"The vendor-specific software revision string for the | "The vendor-specific software revision string for the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalSoftwareRev"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - | |||
entPhysicalSoftwareRev"; | ||||
} | ||||
leaf serial-num { | leaf serial-num { | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"The vendor-specific serial number string for the | "The vendor-specific serial number string for the | |||
component. The preferred value is the serial number | component. The preferred value is the serial number | |||
string actually printed on the component itself (if | string actually printed on the component itself (if | |||
present)."; | present)."; | |||
reference "RFC 6933: entPhysicalSerialNum"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum"; | |||
} | ||||
leaf mfg-name { | leaf mfg-name { | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"The name of the manufacturer of this physical component. | "The name of the manufacturer of this physical component. | |||
The preferred value is the manufacturer name string | The preferred value is the manufacturer name string | |||
actually printed on the component itself (if present). | actually printed on the component itself (if present). | |||
Note that comparisons between instances of the model-name, | Note that comparisons between instances of the | |||
firmware-rev, software-rev, and the serial-num nodes are | 'model-name', 'firmware-rev', 'software-rev', and | |||
only meaningful amongst component with the same value of | 'serial-num' nodes are only meaningful amongst components | |||
mfg-name. | with the same value of 'mfg-name'. | |||
If the manufacturer name string associated with the | If the manufacturer name string associated with the | |||
physical component is unknown to the server, then this | physical component is unknown to the server, then this | |||
node is not instantiated."; | node is not instantiated."; | |||
reference "RFC 6933: entPhysicalMfgName"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName"; | |||
} | ||||
leaf model-name { | leaf model-name { | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"The vendor-specific model name identifier string | "The vendor-specific model name identifier string | |||
associated with this physical component. The preferred | associated with this physical component. The preferred | |||
value is the customer-visible part number, which may be | value is the customer-visible part number, which may be | |||
printed on the component itself. | printed on the component itself. | |||
If the model name string associated with the physical | If the model name string associated with the physical | |||
component is unknown to the server, then this node is not | component is unknown to the server, then this node is not | |||
instantiated."; | instantiated."; | |||
reference "RFC 6933: entPhysicalModelName"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName"; | |||
} | ||||
leaf alias { | leaf alias { | |||
type string; | type string; | |||
description | description | |||
"An 'alias' name for the component, as specified by a | "An 'alias' name for the component, as specified by a | |||
network manager, and provides a non-volatile 'handle' for | network manager, that provides a non-volatile 'handle' for | |||
the component. | the component. | |||
If no configured value exists, the server MAY set the | If no configured value exists, the server MAY set the | |||
value of this node to a locally unique value in the | value of this node to a locally unique value in the | |||
operational state. | operational state. | |||
A server implementation MAY map this leaf to the | A server implementation MAY map this leaf to the | |||
entPhysicalAlias MIB object. Such an implementation needs | entPhysicalAlias MIB object. Such an implementation needs | |||
to use some mechanism to handle the differences in size | to use some mechanism to handle the differences in size | |||
and characters allowed between this leaf and | and characters allowed between this leaf and | |||
entPhysicalAlias. The definition of such a mechanism is | entPhysicalAlias. The definition of such a mechanism is | |||
outside the scope of this document."; | outside the scope of this document."; | |||
reference "RFC 6933: entPhysicalAlias"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias"; | |||
} | ||||
leaf asset-id { | leaf asset-id { | |||
type string; | type string; | |||
description | description | |||
"This node is a user-assigned asset tracking identifier for | "This node is a user-assigned asset tracking identifier for | |||
the component. | the component. | |||
A server implementation MAY map this leaf to the | A server implementation MAY map this leaf to the | |||
entPhysicalAssetID MIB object. Such an implementation | entPhysicalAssetID MIB object. Such an implementation | |||
needs to use some mechanism to handle the differences in | needs to use some mechanism to handle the differences in | |||
size and characters allowed between this leaf and | size and characters allowed between this leaf and | |||
entPhysicalAssetID. The definition of such a mechanism is | entPhysicalAssetID. The definition of such a mechanism is | |||
outside the scope of this document."; | outside the scope of this document."; | |||
reference "RFC 6933: entPhysicalAssetID"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID"; | |||
} | ||||
leaf is-fru { | leaf is-fru { | |||
type boolean; | type boolean; | |||
config false; | config false; | |||
description | description | |||
"This node indicates whether or not this component is | "This node indicates whether or not this component is | |||
considered a 'field replaceable unit' by the vendor. If | considered a 'field-replaceable unit' by the vendor. If | |||
this node contains the value 'true', then this component | this node contains the value 'true', then this component | |||
identifies a field replaceable unit. For all components | identifies a field-replaceable unit. For all components | |||
that are permanently contained within a field replaceable | that are permanently contained within a field-replaceable | |||
unit, the value 'false' should be returned for this | unit, the value 'false' should be returned for this | |||
node."; | node."; | |||
reference "RFC 6933: entPhysicalIsFRU"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU"; | |||
} | ||||
leaf mfg-date { | leaf mfg-date { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
config false; | config false; | |||
description | description | |||
"The date of manufacturing of the managed component."; | "The date of manufacturing of the managed component."; | |||
reference "RFC 6933: entPhysicalMfgDate"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate"; | |||
} | ||||
leaf-list uri { | leaf-list uri { | |||
type inet:uri; | type inet:uri; | |||
description | description | |||
"This node contains identification information about the | "This node contains identification information about the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalUris"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalUris"; | |||
} | ||||
leaf uuid { | leaf uuid { | |||
type yang:uuid; | type yang:uuid; | |||
config false; | config false; | |||
description | description | |||
"A Universally Unique Identifier of the component."; | "A Universally Unique Identifier of the component."; | |||
reference "RFC 6933: entPhysicalUUID"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID"; | |||
} | ||||
container state { | container state { | |||
if-feature hardware-state; | if-feature hardware-state; | |||
description | description | |||
"State-related nodes"; | "State-related nodes"; | |||
reference "RFC 4268: Entity State MIB"; | reference | |||
"RFC 4268: Entity State MIB"; | ||||
leaf state-last-changed { | leaf state-last-changed { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
config false; | config false; | |||
description | description | |||
"The date and time when the value of any of the | "The date and time when the value of any of the | |||
admin-state, oper-state, usage-state, alarm-state, or | admin-state, oper-state, usage-state, alarm-state, or | |||
standby-state changed for this component. | standby-state changed for this component. | |||
If there has been no change since the last | If there has been no change since the last | |||
re-initialization of the local system, this node | re-initialization of the local system, this node | |||
contains the date and time of local system | contains the date and time of local system | |||
initialization. If there has been no change since the | initialization. If there has been no change since the | |||
component was added to the local system, this node | component was added to the local system, this node | |||
contains the date and time of the insertion."; | contains the date and time of the insertion."; | |||
reference "RFC 4268: entStateLastChanged"; | reference | |||
} | "RFC 4268: Entity State MIB - entStateLastChanged"; | |||
} | ||||
leaf admin-state { | leaf admin-state { | |||
type admin-state; | type admin-state; | |||
description | description | |||
"The administrative state for this component. | "The administrative state for this component. | |||
This node refers to a component's administrative | This node refers to a component's administrative | |||
permission to service both other components within its | permission to service both other components within its | |||
containment hierarchy as well other users of its | containment hierarchy as well other users of its | |||
services defined by means outside the scope of this | services defined by means outside the scope of this | |||
module. | module. | |||
Some components exhibit only a subset of the remaining | Some components exhibit only a subset of the remaining | |||
administrative state values. Some components cannot be | administrative state values. Some components cannot be | |||
locked, and hence this node exhibits only the 'unlocked' | locked; hence, this node exhibits only the 'unlocked' | |||
state. Other components cannot be shutdown gracefully, | state. Other components cannot be shut down gracefully; | |||
and hence this node does not exhibit the 'shutting-down' | hence, this node does not exhibit the 'shutting-down' | |||
state."; | state."; | |||
reference "RFC 4268: entStateAdmin"; | reference | |||
} | "RFC 4268: Entity State MIB - entStateAdmin"; | |||
} | ||||
leaf oper-state { | leaf oper-state { | |||
type oper-state; | type oper-state; | |||
config false; | config false; | |||
description | description | |||
"The operational state for this component. | "The operational state for this component. | |||
Note that this node does not follow the administrative | Note that this node does not follow the administrative | |||
state. An administrative state of down does not predict | state. An administrative state of 'down' does not | |||
an operational state of disabled. | predict an operational state of 'disabled'. | |||
Note that some implementations may not be able to | Note that some implementations may not be able to | |||
accurately report oper-state while the admin-state node | accurately report oper-state while the admin-state node | |||
has a value other than 'unlocked'. In these cases, this | has a value other than 'unlocked'. In these cases, this | |||
node MUST have a value of 'unknown'."; | node MUST have a value of 'unknown'."; | |||
reference "RFC 4268: entStateOper"; | reference | |||
} | "RFC 4268: Entity State MIB - entStateOper"; | |||
} | ||||
leaf usage-state { | leaf usage-state { | |||
type usage-state; | type usage-state; | |||
config false; | config false; | |||
description | description | |||
"The usage state for this component. | "The usage state for this component. | |||
This node refers to a component's ability to service | This node refers to a component's ability to service | |||
more components in a containment hierarchy. | more components in a containment hierarchy. | |||
Some components will exhibit only a subset of the usage | Some components will exhibit only a subset of the usage | |||
state values. Components that are unable to ever | state values. Components that are unable to ever | |||
service any components within a containment hierarchy | service any components within a containment hierarchy | |||
will always have a usage state of 'busy'. Some | will always have a usage state of 'busy'. In some | |||
components will only ever be able to support one | cases, a component will be able to support only one | |||
component within its containment hierarchy and will | other component within its containment hierarchy and | |||
therefore only exhibit values of 'idle' and 'busy'."; | will therefore only exhibit values of 'idle' and | |||
reference "RFC 4268, entStateUsage"; | 'busy'."; | |||
} | reference | |||
"RFC 4268: Entity State MIB - entStateUsage"; | ||||
} | ||||
leaf alarm-state { | leaf alarm-state { | |||
type alarm-state; | type alarm-state; | |||
config false; | config false; | |||
description | description | |||
"The alarm state for this component. It does not | "The alarm state for this component. It does not | |||
include the alarms raised on child components within its | include the alarms raised on child components within its | |||
containment hierarchy."; | containment hierarchy."; | |||
reference "RFC 4268: entStateAlarm"; | reference | |||
} | "RFC 4268: Entity State MIB - entStateAlarm"; | |||
} | ||||
leaf standby-state { | leaf standby-state { | |||
type standby-state; | type standby-state; | |||
config false; | config false; | |||
description | description | |||
"The standby state for this component. | "The standby state for this component. | |||
Some components will exhibit only a subset of the | Some components will exhibit only a subset of the | |||
remaining standby state values. If this component | remaining standby state values. If this component | |||
cannot operate in a standby role, the value of this node | cannot operate in a standby role, the value of this node | |||
will always be 'providing-service'."; | will always be 'providing-service'."; | |||
reference "RFC 4268: entStateStandby"; | reference | |||
} | "RFC 4268: Entity State MIB - entStateStandby"; | |||
} | } | |||
} | ||||
container sensor-data { | container sensor-data { | |||
when 'derived-from-or-self(../class, | when 'derived-from-or-self(../class, | |||
"ianahw:sensor")' { | "ianahw:sensor")' { | |||
description | description | |||
"Sensor data nodes present for any component of type | "Sensor data nodes present for any component of type | |||
'sensor'"; | 'sensor'"; | |||
} | } | |||
if-feature hardware-sensor; | if-feature hardware-sensor; | |||
config false; | config false; | |||
description | description | |||
"Sensor-related nodes."; | "Sensor-related nodes."; | |||
reference "RFC 3433: Entity Sensor MIB"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base"; | ||||
leaf value { | leaf value { | |||
type sensor-value; | type sensor-value; | |||
description | description | |||
"The most recent measurement obtained by the server | "The most recent measurement obtained by the server | |||
for this sensor. | for this sensor. | |||
A client that periodically fetches this node should also | A client that periodically fetches this node should also | |||
fetch the nodes 'value-type', 'value-scale', and | fetch the nodes 'value-type', 'value-scale', and | |||
'value-precision', since they may change when the value | 'value-precision', since they may change when the value | |||
is changed."; | is changed."; | |||
reference "RFC 3433: entPhySensorValue"; | reference | |||
} | "RFC 3433: Entity Sensor Management Information Base - | |||
entPhySensorValue"; | ||||
} | ||||
leaf value-type { | leaf value-type { | |||
type sensor-value-type; | type sensor-value-type; | |||
description | description | |||
"The type of data units associated with the | "The type of data units associated with the | |||
sensor value"; | sensor value"; | |||
reference "RFC 3433: entPhySensorType"; | reference | |||
} | "RFC 3433: Entity Sensor Management Information Base - | |||
entPhySensorType"; | ||||
} | ||||
leaf value-scale { | ||||
type sensor-value-scale; | ||||
description | ||||
"The (power of 10) scaling factor associated | ||||
with the sensor value"; | ||||
reference | ||||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorScale"; | ||||
} | ||||
leaf value-scale { | leaf value-precision { | |||
type sensor-value-scale; | type sensor-value-precision; | |||
description | description | |||
"The (power of 10) scaling factor associated | "The number of decimal places of precision | |||
with the sensor value"; | associated with the sensor value"; | |||
reference "RFC 3433: entPhySensorScale"; | reference | |||
} | "RFC 3433: Entity Sensor Management Information Base - | |||
entPhySensorPrecision"; | ||||
} | ||||
leaf value-precision { | leaf oper-status { | |||
type sensor-value-precision; | type sensor-status; | |||
description | description | |||
"The number of decimal places of precision | "The operational status of the sensor."; | |||
associated with the sensor value"; | reference | |||
reference "RFC 3433: entPhySensorPrecision"; | "RFC 3433: Entity Sensor Management Information Base - | |||
} | entPhySensorOperStatus"; | |||
} | ||||
leaf oper-status { | leaf units-display { | |||
type sensor-status; | type string; | |||
description | description | |||
"The operational status of the sensor."; | "A textual description of the data units that should be | |||
reference "RFC 3433: entPhySensorOperStatus"; | used in the display of the sensor value."; | |||
} | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorUnitsDisplay"; | ||||
} | ||||
leaf units-display { | leaf value-timestamp { | |||
type string; | type yang:date-and-time; | |||
description | description | |||
"A textual description of the data units that should be | "The time the status and/or value of this sensor was last | |||
used in the display of the sensor value."; | obtained by the server."; | |||
reference "RFC 3433: entPhySensorUnitsDisplay"; | reference | |||
} | "RFC 3433: Entity Sensor Management Information Base - | |||
entPhySensorValueTimeStamp"; | ||||
} | ||||
leaf value-update-rate { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
description | ||||
"An indication of the frequency that the server updates | ||||
the associated 'value' node, represented in | ||||
milliseconds. The value zero indicates: | ||||
leaf value-timestamp { | - the sensor value is updated on demand (e.g., | |||
type yang:date-and-time; | when polled by the server for a get-request), | |||
description | ||||
"The time the status and/or value of this sensor was last | ||||
obtained by the server."; | ||||
reference "RFC 3433: entPhySensorValueTimeStamp"; | ||||
} | ||||
leaf value-update-rate { | - the sensor value is updated when the sensor | |||
type uint32; | value changes (event-driven), or | |||
units "milliseconds"; | ||||
description | ||||
"An indication of the frequency that the server updates | ||||
the associated 'value' node, representing in | ||||
milliseconds. The value zero indicates: | ||||
- the sensor value is updated on demand (e.g., | - the server does not know the update rate."; | |||
when polled by the server for a get-request), | reference | |||
- the sensor value is updated when the sensor | "RFC 3433: Entity Sensor Management Information Base - | |||
value changes (event-driven), | entPhySensorValueUpdateRate"; | |||
- the server does not know the update rate."; | } | |||
reference "RFC 3433: entPhySensorValueUpdateRate"; | } | |||
} | } | |||
} | } | |||
} | ||||
} | ||||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification hardware-state-change { | notification hardware-state-change { | |||
description | description | |||
"A hardware-state-change notification is generated when the | "A hardware-state-change notification is generated when the | |||
value of /hardware/last-change changes in the operational | value of /hardware/last-change changes in the operational | |||
state."; | state."; | |||
reference "RFC 6933, entConfigChange"; | reference | |||
} | "RFC 6933: Entity MIB (Version 4) - entConfigChange"; | |||
} | ||||
notification hardware-state-oper-enabled { | notification hardware-state-oper-enabled { | |||
if-feature hardware-state; | if-feature hardware-state; | |||
description | description | |||
"A hardware-state-oper-enabled notification signifies that a | "A hardware-state-oper-enabled notification signifies that a | |||
component has transitioned into the 'enabled' state."; | component has transitioned into the 'enabled' state."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "/hardware/component/name"; | path "/hardware/component/name"; | |||
} | } | |||
description | description | |||
"The name of the component that has transitioned into the | "The name of the component that has transitioned into the | |||
'enabled' state."; | 'enabled' state."; | |||
} | } | |||
leaf admin-state { | leaf admin-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/admin-state"; | path "/hardware/component/state/admin-state"; | |||
} | } | |||
description | description | |||
"The administrative state for the component."; | "The administrative state for the component."; | |||
} | } | |||
leaf alarm-state { | leaf alarm-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/alarm-state"; | path "/hardware/component/state/alarm-state"; | |||
} | } | |||
description | description | |||
"The alarm state for the component."; | "The alarm state for the component."; | |||
} | } | |||
reference "RFC 4268, entStateOperEnabled"; | reference | |||
} | "RFC 4268: Entity State MIB - entStateOperEnabled"; | |||
} | ||||
notification hardware-state-oper-disabled { | notification hardware-state-oper-disabled { | |||
if-feature hardware-state; | if-feature hardware-state; | |||
description | description | |||
"A hardware-state-oper-disabled notification signifies that a | "A hardware-state-oper-disabled notification signifies that a | |||
component has transitioned into the 'disabled' state."; | component has transitioned into the 'disabled' state."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "/hardware/component/name"; | path "/hardware/component/name"; | |||
} | } | |||
description | description | |||
"The name of the component that has transitioned into the | "The name of the component that has transitioned into the | |||
'disabled' state."; | 'disabled' state."; | |||
} | } | |||
leaf admin-state { | leaf admin-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/admin-state"; | path "/hardware/component/state/admin-state"; | |||
} | } | |||
description | description | |||
"The administrative state for the component."; | "The administrative state for the component."; | |||
} | } | |||
leaf alarm-state { | leaf alarm-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/alarm-state"; | path "/hardware/component/state/alarm-state"; | |||
} | } | |||
description | description | |||
"The alarm state for the component."; | "The alarm state for the component."; | |||
} | } | |||
reference "RFC 4268, entStateOperDisabled"; | reference | |||
} | "RFC 4268: Entity State MIB - entStateOperDisabled"; | |||
} | ||||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
<CODE BEGINS> file "iana-hardware@2018-01-15.yang" | 7.2. "iana-hardware" Module | |||
<CODE BEGINS> file "iana-hardware@2018-03-13.yang" | ||||
module iana-hardware { | module iana-hardware { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:iana-hardware"; | namespace "urn:ietf:params:xml:ns:yang:iana-hardware"; | |||
prefix ianahw; | prefix ianahw; | |||
organization "IANA"; | organization "IANA"; | |||
contact | contact | |||
" Internet Assigned Numbers Authority | " Internet Assigned Numbers Authority | |||
Postal: ICANN | Postal: ICANN | |||
12025 Waterfront Drive, Suite 300 | 12025 Waterfront Drive, Suite 300 | |||
Los Angeles, CA 90094-2536 | Los Angeles, CA 90094-2536 | |||
United States | United States of America | |||
Tel: +1 310 301 5800 | Tel: +1 310 301 5800 | |||
E-Mail: iana@iana.org>"; | E-Mail: iana@iana.org>"; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
// note. | ||||
description | description | |||
"IANA defined identities for hardware class. | "IANA-defined identities for hardware class. | |||
The latest revision of this YANG module can be obtained from | The latest revision of this YANG module can be obtained from | |||
the IANA web site. | the IANA website. | |||
Requests for new values should be made to IANA via | Requests for new values should be made to IANA via | |||
email (iana@iana.org). | email (iana@iana.org). | |||
Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
The initial version of this YANG module is part of RFC XXXX; | The initial version of this YANG module is part of RFC 8348; | |||
see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
reference | reference | |||
// RFC Ed.: replace PPPP with actual path and remove this note. | "https://www.iana.org/assignments/yang-parameters"; | |||
"https://www.iana.org/assignments/PPPP"; | ||||
// RFC Ed.: update the date below with the date of RFC publication | revision 2018-03-13 { | |||
// and remove this note. | ||||
revision 2018-01-15 { | ||||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Hardware Management"; | "RFC 8348: A YANG Data Model for Hardware Management"; | |||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity hardware-class { | identity hardware-class { | |||
description | description | |||
"This identity is the base for all hardware class | "This identity is the base for all hardware class | |||
identifiers."; | identifiers."; | |||
skipping to change at page 34, line 18 ¶ | skipping to change at page 37, line 13 ¶ | |||
removable, then it should be modeled within a container | removable, then it should be modeled within a container | |||
component; otherwise, it should be modeled directly within | component; otherwise, it should be modeled directly within | |||
another physical component (e.g., a chassis or another | another physical component (e.g., a chassis or another | |||
module)."; | module)."; | |||
} | } | |||
identity port { | identity port { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the hardware class is some sort | "This identity is applicable if the hardware class is some sort | |||
of networking port, capable of receiving and/or transmitting | of networking port capable of receiving and/or transmitting | |||
networking traffic."; | networking traffic."; | |||
} | } | |||
identity stack { | identity stack { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the hardware class is some sort | "This identity is applicable if the hardware class is some sort | |||
of super-container (possibly virtual) intended to group | of super-container (possibly virtual) intended to group | |||
together multiple chassis entities. A stack may be realized | together multiple chassis entities. A stack may be realized | |||
by a virtual cable, a real interconnect cable attached to | by a virtual cable, a real interconnect cable attached to | |||
skipping to change at page 34, line 46 ¶ | skipping to change at page 37, line 41 ¶ | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the hardware class is some sort | "This identity is applicable if the hardware class is some sort | |||
of central processing unit."; | of central processing unit."; | |||
} | } | |||
identity energy-object { | identity energy-object { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the hardware class is some sort | "This identity is applicable if the hardware class is some sort | |||
of energy object, i.e., a piece of equipment that is part of | of energy object, i.e., it is a piece of equipment that is | |||
or attached to a communications network that is monitored, | part of or attached to a communications network that is | |||
controlled, or aids in the management of another device for | monitored, it is controlled, or it aids in the management of | |||
Energy Management."; | another device for Energy Management."; | |||
} | } | |||
identity battery { | identity battery { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the hardware class is some sort | "This identity is applicable if the hardware class is some sort | |||
of battery."; | of battery."; | |||
} | } | |||
identity storage-drive { | identity storage-drive { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the hardware class is some sort | "This identity is applicable if the hardware class is some sort | |||
of component with data storage capability as main | of component with data storage capability as its main | |||
functionality, e.g., disk drive (HDD), solid state device | functionality, e.g., hard disk drive (HDD), solid-state device | |||
(SSD), hybrid (SSHD), object storage (OSD) or other."; | (SSD), solid-state hybrid drive (SSHD), object storage device | |||
(OSD), or other."; | ||||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
8. IANA Considerations | 8. IANA Considerations | |||
This document defines the initial version of the IANA-maintained | This document defines the initial version of the IANA-maintained | |||
"iana-hardware" YANG module. | "iana-hardware" YANG module. | |||
The "iana-hardware" YANG module is intended to reflect the | The "iana-hardware" YANG module is intended to reflect the | |||
"IANA-ENTITY-MIB" MIB module so that if a new enumeration is added to | "IANA-ENTITY-MIB" MIB module so that if a new enumeration is added to | |||
the "IANAPhysicalClass" TEXTUAL-CONVENTION, the same class is added | the "IANAPhysicalClass" textual convention, the same class is added | |||
as an identity derived from "ianahw:hardware-class". | as an identity derived from "ianahw:hardware-class". | |||
When the "iana-hardware" YANG module is updated, a new "revision" | When the "iana-hardware" YANG module is updated, a new "revision" | |||
statement must be added in front of the existing revision statements. | statement must be added in front of the existing revision statements. | |||
8.1. URI Registrations | 8.1. URI Registrations | |||
This document registers three URIs in the IETF XML registry | This document registers three URIs in the "IETF XML Registry" | |||
[RFC3688]. Following the format in RFC 3688, the following | [RFC3688]. Per the format in RFC 3688, the following registrations | |||
registrations are requested to be made. | have been made. | |||
URI: urn:ietf:params:xml:ns:yang:iana-hardware | URI: urn:ietf:params:xml:ns:yang:iana-hardware | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-hardware | URI: urn:ietf:params:xml:ns:yang:ietf-hardware | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-hardware-state | URI: urn:ietf:params:xml:ns:yang:ietf-hardware-state | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
8.2. YANG Module Registrations | 8.2. YANG Module Registrations | |||
This document registers three YANG modules in the YANG Module Names | This document registers three YANG modules in the "YANG Module Names" | |||
registry [RFC6020]. | registry [RFC6020]. | |||
name: iana-hardware | name: iana-hardware | |||
namespace: urn:ietf:params:xml:ns:yang:iana-hardware | namespace: urn:ietf:params:xml:ns:yang:iana-hardware | |||
prefix: ianahw | prefix: ianahw | |||
reference: RFC XXXX | reference: RFC 8348 | |||
name: ietf-hardware | name: ietf-hardware | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-hardware | namespace: urn:ietf:params:xml:ns:yang:ietf-hardware | |||
prefix: hw | prefix: hw | |||
reference: RFC XXXX | reference: RFC 8348 | |||
name: ietf-hardware-state | name: ietf-hardware-state | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-hardware-state | namespace: urn:ietf:params:xml:ns:yang:ietf-hardware-state | |||
prefix: hw-state | prefix: hw-state | |||
reference: RFC XXXX | reference: RFC 8348 | |||
9. Security Considerations | 9. Security Considerations | |||
The YANG modules specified in this document define a schema for data | The YANG modules specified in this document define a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | [RFC5246]. | |||
The NETCONF access control model [RFC6536] provides the means to | The NETCONF access control model [RFC8341] provides the means to | |||
restrict access for particular NETCONF or RESTCONF users to a | restrict access for particular NETCONF or RESTCONF users to a | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
There are a number of data nodes defined in the YANG module | There are a number of data nodes defined in the YANG module | |||
"ietf-hardware" that are writable/creatable/deletable (i.e., config | "ietf-hardware" that are writable/creatable/deletable (i.e., config | |||
true, which is the default). These data nodes may be considered | true, which is the default). These data nodes may be considered | |||
sensitive or vulnerable in some network environments. Write | sensitive or vulnerable in some network environments. Write | |||
operations (e.g., edit-config) to these data nodes without proper | operations (e.g., edit-config) to these data nodes without proper | |||
protection can have a negative effect on network operations. These | protection can have a negative effect on network operations. These | |||
skipping to change at page 37, line 35 ¶ | skipping to change at page 40, line 22 ¶ | |||
the physical components in a device, which may be used to identify | the physical components in a device, which may be used to identify | |||
the vendor, model, version, and specific device-identification | the vendor, model, version, and specific device-identification | |||
information of each system component. | information of each system component. | |||
/hardware/component/sensor-data/value: This node may expose the | /hardware/component/sensor-data/value: This node may expose the | |||
values of particular physical sensors in a device. | values of particular physical sensors in a device. | |||
/hardware/component/state: Access to this node allows one to figure | /hardware/component/state: Access to this node allows one to figure | |||
out what the active and standby resources in a device are. | out what the active and standby resources in a device are. | |||
10. Acknowledgments | 10. References | |||
The authors wish to thank the following individuals, who all provided | ||||
helpful comments on various draft versions of this document: Bart | ||||
Bogaert, Timothy Carey, William Lupton, Juergen Schoenwaelder. | ||||
11. References | ||||
11.1. Normative References | ||||
[I-D.ietf-netmod-revised-datastores] | 10.1. Normative References | |||
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
and R. Wilton, "Network Management Datastore | ||||
Architecture", draft-ietf-netmod-revised-datastores-10 | ||||
(work in progress), January 2018. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3433] Bierman, A., Romascanu, D., and K. Norseth, "Entity Sensor | [RFC3433] Bierman, A., Romascanu, D., and K. Norseth, "Entity Sensor | |||
Management Information Base", RFC 3433, | Management Information Base", RFC 3433, | |||
DOI 10.17487/RFC3433, December 2002, <https://www.rfc- | DOI 10.17487/RFC3433, December 2002, | |||
editor.org/info/rfc3433>. | <https://www.rfc-editor.org/info/rfc3433>. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | DOI 10.17487/RFC3688, January 2004, | |||
editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC4268] Chisholm, S. and D. Perkins, "Entity State MIB", RFC 4268, | [RFC4268] Chisholm, S. and D. Perkins, "Entity State MIB", RFC 4268, | |||
DOI 10.17487/RFC4268, November 2005, <https://www.rfc- | DOI 10.17487/RFC4268, November 2005, | |||
editor.org/info/rfc4268>. | <https://www.rfc-editor.org/info/rfc4268>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
(TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
DOI 10.17487/RFC5246, August 2008, <https://www.rfc- | DOI 10.17487/RFC5246, August 2008, | |||
editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
DOI 10.17487/RFC6020, October 2010, <https://www.rfc- | DOI 10.17487/RFC6020, October 2010, | |||
editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
DOI 10.17487/RFC6536, March 2012, <https://www.rfc- | ||||
editor.org/info/rfc6536>. | ||||
[RFC6933] Bierman, A., Romascanu, D., Quittek, J., and M. | [RFC6933] Bierman, A., Romascanu, D., Quittek, J., and M. | |||
Chandramouli, "Entity MIB (Version 4)", RFC 6933, | Chandramouli, "Entity MIB (Version 4)", RFC 6933, | |||
DOI 10.17487/RFC6933, May 2013, <https://www.rfc- | DOI 10.17487/RFC6933, May 2013, | |||
editor.org/info/rfc6933>. | <https://www.rfc-editor.org/info/rfc6933>. | |||
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | ||||
RFC 6991, DOI 10.17487/RFC6991, July 2013, | ||||
<https://www.rfc-editor.org/info/rfc6991>. | ||||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
11.2. Informative References | [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Access Control Model", STD 91, RFC 8341, | ||||
DOI 10.17487/RFC8341, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8341>. | ||||
[I-D.ietf-netmod-yang-tree-diagrams] | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- | and R. Wilton, "Network Management Datastore Architecture | |||
ietf-netmod-yang-tree-diagrams-04 (work in progress), | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
December 2017. | <https://www.rfc-editor.org/info/rfc8342>. | |||
10.2. Informative References | ||||
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | ||||
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | ||||
<https://www.rfc-editor.org/info/rfc8340>. | ||||
Appendix A. Hardware State Data Model | Appendix A. Hardware State Data Model | |||
This non-normative appendix contains a data model designed as a | This non-normative appendix contains a data model designed as a | |||
temporary solution for implementations that do not yet support the | temporary solution for implementations that do not yet support the | |||
Network Management Datastore Architecture (NMDA) defined in | Network Management Datastore Architecture (NMDA) defined in | |||
[I-D.ietf-netmod-revised-datastores]. It has the following | [RFC8342]. It has the following structure: | |||
structure: | ||||
module: ietf-hardware-state | module: ietf-hardware-state | |||
x--ro hardware | x--ro hardware | |||
x--ro last-change? yang:date-and-time | x--ro last-change? yang:date-and-time | |||
x--ro component* [name] | x--ro component* [name] | |||
x--ro name string | x--ro name string | |||
x--ro class identityref | x--ro class identityref | |||
x--ro physical-index? int32 {entity-mib}? | x--ro physical-index? int32 {entity-mib}? | |||
x--ro description? string | x--ro description? string | |||
x--ro parent? -> ../../component/name | x--ro parent? -> ../../component/name | |||
x--ro parent-rel-pos? int32 | x--ro parent-rel-pos? int32 | |||
x--ro contains-child* -> ../../component/name | x--ro contains-child* -> ../../component/name | |||
x--ro hardware-rev? string | x--ro hardware-rev? string | |||
x--ro firmware-rev? string | x--ro firmware-rev? string | |||
x--ro software-rev? string | x--ro software-rev? string | |||
x--ro serial-num? string | x--ro serial-num? string | |||
x--ro mfg-name? string | x--ro mfg-name? string | |||
x--ro model-name? string | x--ro model-name? string | |||
x--ro alias? string | x--ro alias? string | |||
x--ro asset-id? string | x--ro asset-id? string | |||
x--ro is-fru? boolean | x--ro is-fru? boolean | |||
x--ro mfg-date? yang:date-and-time | x--ro mfg-date? yang:date-and-time | |||
x--ro uri* inet:uri | x--ro uri* inet:uri | |||
x--ro uuid? yang:uuid | x--ro uuid? yang:uuid | |||
x--ro state {hardware-state}? | x--ro state {hardware-state}? | |||
| x--ro state-last-changed? yang:date-and-time | | x--ro state-last-changed? yang:date-and-time | |||
| x--ro admin-state? hw:admin-state | | x--ro admin-state? hw:admin-state | |||
| x--ro oper-state? hw:oper-state | | x--ro oper-state? hw:oper-state | |||
| x--ro usage-state? hw:usage-state | | x--ro usage-state? hw:usage-state | |||
| x--ro alarm-state? hw:alarm-state | | x--ro alarm-state? hw:alarm-state | |||
| x--ro standby-state? hw:standby-state | | x--ro standby-state? hw:standby-state | |||
x--ro sensor-data {hardware-sensor}? | x--ro sensor-data {hardware-sensor}? | |||
x--ro value? hw:sensor-value | x--ro value? hw:sensor-value | |||
x--ro value-type? hw:sensor-value-type | x--ro value-type? hw:sensor-value-type | |||
x--ro value-scale? hw:sensor-value-scale | x--ro value-scale? hw:sensor-value-scale | |||
x--ro value-precision? hw:sensor-value-precision | x--ro value-precision? hw:sensor-value-precision | |||
x--ro oper-status? hw:sensor-status | x--ro oper-status? hw:sensor-status | |||
x--ro units-display? string | x--ro units-display? string | |||
x--ro value-timestamp? yang:date-and-time | x--ro value-timestamp? yang:date-and-time | |||
x--ro value-update-rate? uint32 | x--ro value-update-rate? uint32 | |||
notifications: | notifications: | |||
x---n hardware-state-change | x---n hardware-state-change | |||
x---n hardware-state-oper-enabled {hardware-state}? | x---n hardware-state-oper-enabled {hardware-state}? | |||
| x--ro name? -> /hardware/component/name | | x--ro name? -> /hardware/component/name | |||
| x--ro admin-state? -> /hardware/component/state/admin-state | | x--ro admin-state? -> /hardware/component/state/admin-state | |||
| x--ro alarm-state? -> /hardware/component/state/alarm-state | | x--ro alarm-state? -> /hardware/component/state/alarm-state | |||
x---n hardware-state-oper-disabled {hardware-state}? | x---n hardware-state-oper-disabled {hardware-state}? | |||
x--ro name? -> /hardware/component/name | x--ro name? -> /hardware/component/name | |||
x--ro admin-state? -> /hardware/component/state/admin-state | x--ro admin-state? -> /hardware/component/state/admin-state | |||
x--ro alarm-state? -> /hardware/component/state/alarm-state | x--ro alarm-state? -> /hardware/component/state/alarm-state | |||
A.1. Hardware State YANG Module | A.1. Hardware State YANG Module | |||
<CODE BEGINS> file "ietf-hardware-state@2017-12-18.yang" | <CODE BEGINS> file "ietf-hardware-state@2018-03-13.yang" | |||
module ietf-hardware-state { | module ietf-hardware-state { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-hardware-state"; | namespace "urn:ietf:params:xml:ns:yang:ietf-hardware-state"; | |||
prefix hw-state; | prefix hw-state; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
skipping to change at page 41, line 12 ¶ | skipping to change at page 43, line 42 ¶ | |||
prefix ianahw; | prefix ianahw; | |||
} | } | |||
import ietf-hardware { | import ietf-hardware { | |||
prefix hw; | prefix hw; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD (Network Modeling) Working Group"; | "IETF NETMOD (Network Modeling) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <https://datatracker.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
Editor: Andy Bierman | Editor: Andy Bierman | |||
<mailto:andy@yumaworks.com> | <mailto:andy@yumaworks.com> | |||
Editor: Martin Bjorklund | Editor: Martin Bjorklund | |||
<mailto:mbj@tail-f.com> | <mailto:mbj@tail-f.com> | |||
Editor: Jie Dong | Editor: Jie Dong | |||
<mailto:jie.dong@huawei.com> | <mailto:jie.dong@huawei.com> | |||
Editor: Dan Romascanu | Editor: Dan Romascanu | |||
<mailto:dromasca@gmail.com>"; | <mailto:dromasca@gmail.com>"; | |||
// RFC Ed.: replace XXXX and YYYY with actual RFC numbers and | ||||
// remove this note. | ||||
description | description | |||
"This module contains a collection of YANG definitions for | "This module contains a collection of YANG definitions for | |||
monitoring hardware. | monitoring hardware. | |||
This data model is designed as a temporary solution for | This data model is designed as a temporary solution for | |||
implementations that do not yet support the Network Management | implementations that do not yet support the Network Management | |||
Datastore Architecture (NMDA) defined in RFC YYYY. Such an | Datastore Architecture (NMDA) defined in RFC 8342. Such an | |||
implementation cannot implement the module 'ietf-hardware' | implementation cannot implement the module 'ietf-hardware' | |||
properly, since without NMDA support, it is not possible to | properly, since without NMDA support, it is not possible to | |||
distinguish between instances of nodes in the running | distinguish between instances of nodes in the running | |||
configuration and operational state. | configuration and operational states. | |||
The data model in this module is the same as the data model in | The data model in this module is the same as the data model in | |||
'ietf-hardware', except all nodes are marked as 'config false'. | 'ietf-hardware', except all nodes are marked as 'config false'. | |||
If a server that implements this module but doesn't support NMDA | If a server that implements this module but doesn't support NMDA | |||
also supports configuration of hardware components, it SHOULD | also supports configuration of hardware components, it SHOULD | |||
also implement the module 'ietf-hardware' in the configuration | also implement the module 'ietf-hardware' in the configuration | |||
datastores. The corresponding state data is found in the | datastores. The corresponding state data is found in the | |||
'/hw-state:hardware' subtree. | '/hw-state:hardware' subtree. | |||
Copyright (c) 2017 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC 8348; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
// RFC Ed.: update the date below with the date of RFC publication | revision 2018-03-13 { | |||
// and remove this note. | ||||
revision 2017-12-18 { | ||||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Hardware Management"; | "RFC 8348: A YANG Data Model for Hardware Management"; | |||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
feature entity-mib { | feature entity-mib { | |||
status deprecated; | status deprecated; | |||
description | description | |||
"This feature indicates that the device implements | "This feature indicates that the device implements | |||
the ENTITY-MIB."; | the ENTITY-MIB."; | |||
reference "RFC 6933: Entity MIB (Version 4)"; | reference | |||
"RFC 6933: Entity MIB (Version 4)"; | ||||
} | } | |||
feature hardware-state { | feature hardware-state { | |||
status deprecated; | status deprecated; | |||
description | description | |||
"Indicates the ENTITY-STATE-MIB objects are supported"; | "Indicates that ENTITY-STATE-MIB objects are supported"; | |||
reference "RFC 4268: Entity State MIB"; | reference | |||
"RFC 4268: Entity State MIB"; | ||||
} | } | |||
feature hardware-sensor { | feature hardware-sensor { | |||
status deprecated; | status deprecated; | |||
description | description | |||
"Indicates the ENTITY-SENSOR-MIB objects are supported"; | "Indicates that ENTITY-SENSOR-MIB objects are supported"; | |||
reference "RFC 3433: Entity Sensor MIB"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base"; | ||||
} | } | |||
/* | /* | |||
* Data nodes | * Data nodes | |||
*/ | */ | |||
container hardware { | container hardware { | |||
config false; | config false; | |||
status deprecated; | status deprecated; | |||
description | description | |||
skipping to change at page 43, line 35 ¶ | skipping to change at page 46, line 13 ¶ | |||
"List of components. | "List of components. | |||
When the server detects a new hardware component, it | When the server detects a new hardware component, it | |||
initializes a list entry in the operational state. | initializes a list entry in the operational state. | |||
If the server does not support configuration of hardware | If the server does not support configuration of hardware | |||
components, list entries in the operational state are | components, list entries in the operational state are | |||
initialized with values for all nodes as detected by the | initialized with values for all nodes as detected by the | |||
implementation. | implementation. | |||
Otherwise, the following procedure is followed: | Otherwise, this procedure is followed: | |||
1. If there is an entry in the /hardware/component list in | 1. If there is an entry in the '/hardware/component' list | |||
the intended configuration with values for the nodes | in the intended configuration with values for the nodes | |||
'class', 'parent', 'parent-rel-pos' that are equal to | 'class', 'parent', and 'parent-rel-pos' that are equal | |||
the detected values, then: | to the detected values, then: | |||
1a. If the configured entry has a value for 'mfg-name' | 1a. If the configured entry has a value for 'mfg-name' | |||
that is equal to the detected value, or if the | that is equal to the detected value or if the | |||
'mfg-name' value cannot be detected, then the list | 'mfg-name' value cannot be detected, then the list | |||
entry in the operational state is initialized with the | entry in the operational state is initialized with the | |||
configured values for all configured nodes, including | configured values for all configured nodes, including | |||
the 'name'. | the 'name'. | |||
Otherwise, the list entry in the operational state is | Otherwise, the list entry in the operational state is | |||
initialized with values for all nodes as detected by | initialized with values for all nodes as detected by | |||
the implementation. The implementation may raise an | the implementation. The implementation may raise an | |||
alarm that informs about the 'mfg-name' mismatch | alarm that informs about the 'mfg-name' mismatch | |||
condition. How this is done is outside the scope of | condition. How this is done is outside the scope of | |||
this document. | this document. | |||
1b. Otherwise (i.e., there is no matching configuration | 1b. Otherwise (i.e., there is no matching configuration | |||
entry), the list entry in the operational state is | entry), the list entry in the operational state is | |||
initialized with values for all nodes as detected by | initialized with values for all nodes as detected by | |||
the implementation. | the implementation. | |||
If the /hardware/component list in the intended | If the '/hardware/component' list in the intended | |||
configuration is modified, then the system MUST behave as if | configuration is modified, then the system MUST behave as if | |||
it re-initializes itself, and follow the procedure in (1)."; | it re-initializes itself and follow the procedure in (1)."; | |||
reference "RFC 6933: entPhysicalEntry"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalEntry"; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The name assigned to this component. | "The name assigned to this component. | |||
This name is not required to be the same as | This name is not required to be the same as | |||
entPhysicalName."; | entPhysicalName."; | |||
} | } | |||
leaf class { | leaf class { | |||
type identityref { | type identityref { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
} | } | |||
mandatory true; | mandatory true; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"An indication of the general hardware type of the | "An indication of the general hardware type of the | |||
skipping to change at page 44, line 37 ¶ | skipping to change at page 47, line 16 ¶ | |||
leaf class { | leaf class { | |||
type identityref { | type identityref { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
} | } | |||
mandatory true; | mandatory true; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"An indication of the general hardware type of the | "An indication of the general hardware type of the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalClass"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalClass"; | ||||
} | } | |||
leaf physical-index { | leaf physical-index { | |||
if-feature entity-mib; | if-feature entity-mib; | |||
type int32 { | type int32 { | |||
range "1..2147483647"; | range "1..2147483647"; | |||
} | } | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The entPhysicalIndex for the entPhysicalEntry represented | "The entPhysicalIndex for the entPhysicalEntry represented | |||
by this list entry."; | by this list entry."; | |||
reference "RFC 6933: entPhysicalIndex"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalIndex"; | ||||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"A textual description of component. This node should | "A textual description of the component. This node should | |||
contain a string that identifies the manufacturer's name | contain a string that identifies the manufacturer's name | |||
for the component and should be set to a distinct value | for the component and should be set to a distinct value | |||
for each version or model of the component."; | for each version or model of the component."; | |||
reference "RFC 6933: entPhysicalDescr"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalDescr"; | ||||
} | } | |||
leaf parent { | leaf parent { | |||
type leafref { | type leafref { | |||
path "../../component/name"; | path "../../component/name"; | |||
require-instance false; | require-instance false; | |||
} | } | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The name of the component that physically contains this | "The name of the component that physically contains this | |||
component. | component. | |||
If this leaf is not instantiated, it indicates that this | If this leaf is not instantiated, it indicates that this | |||
component is not contained in any other component. | component is not contained in any other component. | |||
In the event that a physical component is contained by | In the event that a physical component is contained by | |||
more than one physical component (e.g., double-wide | more than one physical component (e.g., double-wide | |||
modules), this node contains the name of one of these | modules), this node contains the name of one of these | |||
components. An implementation MUST use the same name | components. An implementation MUST use the same name | |||
every time this node is instantiated."; | every time this node is instantiated."; | |||
reference "RFC 6933: entPhysicalContainedIn"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - | ||||
entPhysicalContainedIn"; | ||||
} | } | |||
leaf parent-rel-pos { | leaf parent-rel-pos { | |||
type int32 { | type int32 { | |||
range "0 .. 2147483647"; | range "0 .. 2147483647"; | |||
} | } | |||
status deprecated; | status deprecated; | |||
description | description | |||
"An indication of the relative position of this child | "An indication of the relative position of this child | |||
component among all its sibling components. Sibling | component among all its sibling components. Sibling | |||
components are defined as components that: | components are defined as components that: | |||
o Share the same value of the 'parent' node; and | o share the same value of the 'parent' node and | |||
o Share a common base identity for the 'class' node. | o share a common base identity for the 'class' node. | |||
Note that the last rule gives implementations flexibility | Note that the last rule gives implementations flexibility | |||
in how components are numbered. For example, some | in how components are numbered. For example, some | |||
implementations might have a single number series for all | implementations might have a single number series for all | |||
components derived from 'ianahw:port', while some others | components derived from 'ianahw:port', while some others | |||
might have different number series for different | might have different number series for different | |||
components with identities derived from 'ianahw:port' (for | components with identities derived from 'ianahw:port' (for | |||
example, one for RJ45 and one for SFP)."; | example, one for RJ45 and one for SFP)."; | |||
reference "RFC 6933: entPhysicalParentRelPos"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - | ||||
entPhysicalParentRelPos"; | ||||
} | } | |||
leaf-list contains-child { | leaf-list contains-child { | |||
type leafref { | type leafref { | |||
path "../../component/name"; | path "../../component/name"; | |||
} | } | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The name of the contained component."; | "The name of the contained component."; | |||
reference "RFC 6933: entPhysicalChildIndex"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex"; | ||||
} | } | |||
leaf hardware-rev { | leaf hardware-rev { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The vendor-specific hardware revision string for the | "The vendor-specific hardware revision string for the | |||
component. The preferred value is the hardware revision | component. The preferred value is the hardware revision | |||
identifier actually printed on the component itself (if | identifier actually printed on the component itself (if | |||
present)."; | present)."; | |||
reference "RFC 6933: entPhysicalHardwareRev"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - | ||||
entPhysicalHardwareRev"; | ||||
} | } | |||
leaf firmware-rev { | leaf firmware-rev { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The vendor-specific firmware revision string for the | "The vendor-specific firmware revision string for the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalFirmwareRev"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - | ||||
entPhysicalFirmwareRev"; | ||||
} | } | |||
leaf software-rev { | leaf software-rev { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The vendor-specific software revision string for the | "The vendor-specific software revision string for the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalSoftwareRev"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - | ||||
entPhysicalSoftwareRev"; | ||||
} | } | |||
leaf serial-num { | leaf serial-num { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The vendor-specific serial number string for the | "The vendor-specific serial number string for the | |||
component. The preferred value is the serial number | component. The preferred value is the serial number | |||
string actually printed on the component itself (if | string actually printed on the component itself (if | |||
present)."; | present)."; | |||
reference "RFC 6933: entPhysicalSerialNum"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum"; | ||||
} | } | |||
leaf mfg-name { | leaf mfg-name { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The name of the manufacturer of this physical component. | "The name of the manufacturer of this physical component. | |||
The preferred value is the manufacturer name string | The preferred value is the manufacturer name string | |||
actually printed on the component itself (if present). | actually printed on the component itself (if present). | |||
Note that comparisons between instances of the model-name, | Note that comparisons between instances of the | |||
firmware-rev, software-rev, and the serial-num nodes are | 'model-name', 'firmware-rev', 'software-rev', and | |||
only meaningful amongst component with the same value of | 'serial-num' nodes are only meaningful amongst components | |||
mfg-name. | with the same value of 'mfg-name'. | |||
If the manufacturer name string associated with the | If the manufacturer name string associated with the | |||
physical component is unknown to the server, then this | physical component is unknown to the server, then this | |||
node is not instantiated."; | node is not instantiated."; | |||
reference "RFC 6933: entPhysicalMfgName"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName"; | ||||
} | } | |||
leaf model-name { | leaf model-name { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The vendor-specific model name identifier string | "The vendor-specific model name identifier string | |||
associated with this physical component. The preferred | associated with this physical component. The preferred | |||
value is the customer-visible part number, which may be | value is the customer-visible part number, which may be | |||
printed on the component itself. | printed on the component itself. | |||
If the model name string associated with the physical | If the model name string associated with the physical | |||
component is unknown to the server, then this node is not | component is unknown to the server, then this node is not | |||
instantiated."; | instantiated."; | |||
reference "RFC 6933: entPhysicalModelName"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalModelName"; | ||||
} | } | |||
leaf alias { | leaf alias { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"An 'alias' name for the component, as specified by a | "An 'alias' name for the component, as specified by a | |||
network manager, and provides a non-volatile 'handle' for | network manager, that provides a non-volatile 'handle' for | |||
the component. | the component. | |||
If no configured value exists, the server MAY set the | If no configured value exists, the server MAY set the | |||
value of this node to a locally unique value in the | value of this node to a locally unique value in the | |||
operational state. | operational state. | |||
A server implementation MAY map this leaf to the | A server implementation MAY map this leaf to the | |||
entPhysicalAlias MIB object. Such an implementation needs | entPhysicalAlias MIB object. Such an implementation needs | |||
to use some mechanism to handle the differences in size | to use some mechanism to handle the differences in size | |||
and characters allowed between this leaf and | and characters allowed between this leaf and | |||
entPhysicalAlias. The definition of such a mechanism is | entPhysicalAlias. The definition of such a mechanism is | |||
outside the scope of this document."; | outside the scope of this document."; | |||
reference "RFC 6933: entPhysicalAlias"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalAlias"; | ||||
} | } | |||
leaf asset-id { | leaf asset-id { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"This node is a user-assigned asset tracking identifier for | "This node is a user-assigned asset tracking identifier for | |||
the component. | the component. | |||
A server implementation MAY map this leaf to the | A server implementation MAY map this leaf to the | |||
entPhysicalAssetID MIB object. Such an implementation | entPhysicalAssetID MIB object. Such an implementation | |||
needs to use some mechanism to handle the differences in | needs to use some mechanism to handle the differences in | |||
size and characters allowed between this leaf and | size and characters allowed between this leaf and | |||
entPhysicalAssetID. The definition of such a mechanism is | entPhysicalAssetID. The definition of such a mechanism is | |||
outside the scope of this document."; | outside the scope of this document."; | |||
reference "RFC 6933: entPhysicalAssetID"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID"; | ||||
} | } | |||
leaf is-fru { | leaf is-fru { | |||
type boolean; | type boolean; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"This node indicates whether or not this component is | "This node indicates whether or not this component is | |||
considered a 'field replaceable unit' by the vendor. If | considered a 'field-replaceable unit' by the vendor. If | |||
this node contains the value 'true', then this component | this node contains the value 'true', then this component | |||
identifies a field replaceable unit. For all components | identifies a field-replaceable unit. For all components | |||
that are permanently contained within a field replaceable | that are permanently contained within a field-replaceable | |||
unit, the value 'false' should be returned for this | unit, the value 'false' should be returned for this | |||
node."; | node."; | |||
reference "RFC 6933: entPhysicalIsFRU"; | ||||
reference | ||||
"RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU"; | ||||
} | } | |||
leaf mfg-date { | leaf mfg-date { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The date of manufacturing of the managed component."; | "The date of manufacturing of the managed component."; | |||
reference "RFC 6933: entPhysicalMfgDate"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate"; | ||||
} | } | |||
leaf-list uri { | leaf-list uri { | |||
type inet:uri; | type inet:uri; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"This node contains identification information about the | "This node contains identification information about the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalUris"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalUris"; | ||||
} | } | |||
leaf uuid { | leaf uuid { | |||
type yang:uuid; | type yang:uuid; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"A Universally Unique Identifier of the component."; | "A Universally Unique Identifier of the component."; | |||
reference "RFC 6933: entPhysicalUUID"; | reference | |||
"RFC 6933: Entity MIB (Version 4) - entPhysicalUUID"; | ||||
} | } | |||
container state { | container state { | |||
if-feature hardware-state; | if-feature hardware-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"State-related nodes"; | "State-related nodes"; | |||
reference "RFC 4268: Entity State MIB"; | reference | |||
"RFC 4268: Entity State MIB"; | ||||
leaf state-last-changed { | leaf state-last-changed { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The date and time when the value of any of the | "The date and time when the value of any of the | |||
admin-state, oper-state, usage-state, alarm-state, or | admin-state, oper-state, usage-state, alarm-state, or | |||
standby-state changed for this component. | standby-state changed for this component. | |||
If there has been no change since the last | If there has been no change since the last | |||
re-initialization of the local system, this node | re-initialization of the local system, this node | |||
contains the date and time of local system | contains the date and time of local system | |||
initialization. If there has been no change since the | initialization. If there has been no change since the | |||
component was added to the local system, this node | component was added to the local system, this node | |||
contains the date and time of the insertion."; | contains the date and time of the insertion."; | |||
reference "RFC 4268: entStateLastChanged"; | reference | |||
"RFC 4268: Entity State MIB - entStateLastChanged"; | ||||
} | } | |||
leaf admin-state { | leaf admin-state { | |||
type hw:admin-state; | type hw:admin-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The administrative state for this component. | "The administrative state for this component. | |||
This node refers to a component's administrative | This node refers to a component's administrative | |||
permission to service both other components within its | permission to service both other components within its | |||
containment hierarchy as well other users of its | containment hierarchy as well as other users of its | |||
services defined by means outside the scope of this | services defined by means outside the scope of this | |||
module. | module. | |||
Some components exhibit only a subset of the remaining | Some components exhibit only a subset of the remaining | |||
administrative state values. Some components cannot be | administrative state values. Some components cannot be | |||
locked, and hence this node exhibits only the 'unlocked' | locked; hence, this node exhibits only the 'unlocked' | |||
state. Other components cannot be shutdown gracefully, | state. Other components cannot be shut down gracefully; | |||
and hence this node does not exhibit the 'shutting-down' | hence, this node does not exhibit the 'shutting-down' | |||
state."; | state."; | |||
reference "RFC 4268: entStateAdmin"; | reference | |||
"RFC 4268: Entity State MIB - entStateAdmin"; | ||||
} | } | |||
leaf oper-state { | leaf oper-state { | |||
type hw:oper-state; | type hw:oper-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The operational state for this component. | "The operational state for this component. | |||
Note that this node does not follow the administrative | Note that this node does not follow the administrative | |||
state. An administrative state of down does not predict | state. An administrative state of 'down' does not | |||
an operational state of disabled. | predict an operational state of 'disabled'. | |||
Note that some implementations may not be able to | Note that some implementations may not be able to | |||
accurately report oper-state while the admin-state node | accurately report oper-state while the admin-state node | |||
has a value other than 'unlocked'. In these cases, this | has a value other than 'unlocked'. In these cases, this | |||
node MUST have a value of 'unknown'."; | node MUST have a value of 'unknown'."; | |||
reference "RFC 4268: entStateOper"; | reference | |||
"RFC 4268: Entity State MIB - entStateOper"; | ||||
} | } | |||
leaf usage-state { | leaf usage-state { | |||
type hw:usage-state; | type hw:usage-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The usage state for this component. | "The usage state for this component. | |||
This node refers to a component's ability to service | This node refers to a component's ability to service | |||
more components in a containment hierarchy. | more components in a containment hierarchy. | |||
Some components will exhibit only a subset of the usage | Some components will exhibit only a subset of the usage | |||
state values. Components that are unable to ever | state values. Components that are unable to ever | |||
service any components within a containment hierarchy | service any components within a containment hierarchy | |||
will always have a usage state of 'busy'. Some | will always have a usage state of 'busy'. In some | |||
components will only ever be able to support one | cases, a component will be able to support only one | |||
component within its containment hierarchy and will | other component within its containment hierarchy and | |||
therefore only exhibit values of 'idle' and 'busy'."; | will therefore only exhibit values of 'idle' and | |||
reference "RFC 4268, entStateUsage"; | 'busy'."; | |||
reference | ||||
"RFC 4268: Entity State MIB - entStateUsage"; | ||||
} | } | |||
leaf alarm-state { | leaf alarm-state { | |||
type hw:alarm-state; | type hw:alarm-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The alarm state for this component. It does not | "The alarm state for this component. It does not | |||
include the alarms raised on child components within its | include the alarms raised on child components within its | |||
containment hierarchy."; | containment hierarchy."; | |||
reference "RFC 4268: entStateAlarm"; | reference | |||
"RFC 4268: Entity State MIB - entStateAlarm"; | ||||
} | } | |||
leaf standby-state { | leaf standby-state { | |||
type hw:standby-state; | type hw:standby-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The standby state for this component. | "The standby state for this component. | |||
Some components will exhibit only a subset of the | Some components will exhibit only a subset of the | |||
remaining standby state values. If this component | remaining standby state values. If this component | |||
cannot operate in a standby role, the value of this node | cannot operate in a standby role, the value of this node | |||
will always be 'providing-service'."; | will always be 'providing-service'."; | |||
reference "RFC 4268: entStateStandby"; | reference | |||
"RFC 4268: Entity State MIB - entStateStandby"; | ||||
} | } | |||
} | } | |||
container sensor-data { | container sensor-data { | |||
when 'derived-from-or-self(../class, | when 'derived-from-or-self(../class, | |||
"ianahw:sensor")' { | "ianahw:sensor")' { | |||
description | description | |||
"Sensor data nodes present for any component of type | "Sensor data nodes present for any component of type | |||
'sensor'"; | 'sensor'"; | |||
} | } | |||
if-feature hardware-sensor; | if-feature hardware-sensor; | |||
status deprecated; | status deprecated; | |||
skipping to change at page 51, line 49 ¶ | skipping to change at page 55, line 16 ¶ | |||
"ianahw:sensor")' { | "ianahw:sensor")' { | |||
description | description | |||
"Sensor data nodes present for any component of type | "Sensor data nodes present for any component of type | |||
'sensor'"; | 'sensor'"; | |||
} | } | |||
if-feature hardware-sensor; | if-feature hardware-sensor; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"Sensor-related nodes."; | "Sensor-related nodes."; | |||
reference "RFC 3433: Entity Sensor MIB"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base"; | ||||
leaf value { | leaf value { | |||
type hw:sensor-value; | type hw:sensor-value; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The most recent measurement obtained by the server | "The most recent measurement obtained by the server | |||
for this sensor. | for this sensor. | |||
A client that periodically fetches this node should also | A client that periodically fetches this node should also | |||
fetch the nodes 'value-type', 'value-scale', and | fetch the nodes 'value-type', 'value-scale', and | |||
'value-precision', since they may change when the value | 'value-precision', since they may change when the value | |||
is changed."; | is changed."; | |||
reference "RFC 3433: entPhySensorValue"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorValue"; | ||||
} | } | |||
leaf value-type { | leaf value-type { | |||
type hw:sensor-value-type; | type hw:sensor-value-type; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The type of data units associated with the | "The type of data units associated with the | |||
sensor value"; | sensor value"; | |||
reference "RFC 3433: entPhySensorType"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorType"; | ||||
} | } | |||
leaf value-scale { | leaf value-scale { | |||
type hw:sensor-value-scale; | type hw:sensor-value-scale; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The (power of 10) scaling factor associated | "The (power of 10) scaling factor associated | |||
with the sensor value"; | with the sensor value"; | |||
reference "RFC 3433: entPhySensorScale"; | ||||
reference | ||||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorScale"; | ||||
} | } | |||
leaf value-precision { | leaf value-precision { | |||
type hw:sensor-value-precision; | type hw:sensor-value-precision; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The number of decimal places of precision | "The number of decimal places of precision | |||
associated with the sensor value"; | associated with the sensor value"; | |||
reference "RFC 3433: entPhySensorPrecision"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorPrecision"; | ||||
} | } | |||
leaf oper-status { | leaf oper-status { | |||
type hw:sensor-status; | type hw:sensor-status; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The operational status of the sensor."; | "The operational status of the sensor."; | |||
reference "RFC 3433: entPhySensorOperStatus"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorOperStatus"; | ||||
} | } | |||
leaf units-display { | leaf units-display { | |||
type string; | type string; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"A textual description of the data units that should be | "A textual description of the data units that should be | |||
used in the display of the sensor value."; | used in the display of the sensor value."; | |||
reference "RFC 3433: entPhySensorUnitsDisplay"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorUnitsDisplay"; | ||||
} | } | |||
leaf value-timestamp { | leaf value-timestamp { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The time the status and/or value of this sensor was last | "The time the status and/or value of this sensor was last | |||
obtained by the server."; | obtained by the server."; | |||
reference "RFC 3433: entPhySensorValueTimeStamp"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorValueTimeStamp"; | ||||
} | } | |||
leaf value-update-rate { | leaf value-update-rate { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"An indication of the frequency that the server updates | "An indication of the frequency that the server updates | |||
the associated 'value' node, representing in | the associated 'value' node, represented in | |||
milliseconds. The value zero indicates: | milliseconds. The value zero indicates: | |||
- the sensor value is updated on demand (e.g., | - the sensor value is updated on demand (e.g., | |||
when polled by the server for a get-request), | when polled by the server for a get-request), | |||
- the sensor value is updated when the sensor | - the sensor value is updated when the sensor | |||
value changes (event-driven), | value changes (event-driven), or | |||
- the server does not know the update rate."; | - the server does not know the update rate."; | |||
reference "RFC 3433: entPhySensorValueUpdateRate"; | reference | |||
"RFC 3433: Entity Sensor Management Information Base - | ||||
entPhySensorValueUpdateRate"; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification hardware-state-change { | notification hardware-state-change { | |||
status deprecated; | status deprecated; | |||
description | description | |||
"A hardware-state-change notification is generated when the | "A hardware-state-change notification is generated when the | |||
value of /hardware/last-change changes in the operational | value of /hardware/last-change changes in the operational | |||
state."; | state."; | |||
reference | ||||
reference "RFC 6933, entConfigChange"; | "RFC 6933: Entity MIB (Version 4) - entConfigChange"; | |||
} | } | |||
notification hardware-state-oper-enabled { | notification hardware-state-oper-enabled { | |||
if-feature hardware-state; | if-feature hardware-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"A hardware-state-oper-enabled notification signifies that a | "A hardware-state-oper-enabled notification signifies that a | |||
component has transitioned into the 'enabled' state."; | component has transitioned into the 'enabled' state."; | |||
leaf name { | leaf name { | |||
skipping to change at page 54, line 40 ¶ | skipping to change at page 58, line 27 ¶ | |||
"The administrative state for the component."; | "The administrative state for the component."; | |||
} | } | |||
leaf alarm-state { | leaf alarm-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/alarm-state"; | path "/hardware/component/state/alarm-state"; | |||
} | } | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The alarm state for the component."; | "The alarm state for the component."; | |||
} | } | |||
reference "RFC 4268, entStateOperEnabled"; | reference | |||
"RFC 4268: Entity State MIB - entStateOperEnabled"; | ||||
} | } | |||
notification hardware-state-oper-disabled { | notification hardware-state-oper-disabled { | |||
if-feature hardware-state; | if-feature hardware-state; | |||
status deprecated; | status deprecated; | |||
description | description | |||
"A hardware-state-oper-disabled notification signifies that a | "A hardware-state-oper-disabled notification signifies that a | |||
component has transitioned into the 'disabled' state."; | component has transitioned into the 'disabled' state."; | |||
leaf name { | leaf name { | |||
skipping to change at page 55, line 27 ¶ | skipping to change at page 59, line 15 ¶ | |||
"The administrative state for the component."; | "The administrative state for the component."; | |||
} | } | |||
leaf alarm-state { | leaf alarm-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/alarm-state"; | path "/hardware/component/state/alarm-state"; | |||
} | } | |||
status deprecated; | status deprecated; | |||
description | description | |||
"The alarm state for the component."; | "The alarm state for the component."; | |||
} | } | |||
reference "RFC 4268, entStateOperDisabled"; | reference | |||
"RFC 4268: Entity State MIB - entStateOperDisabled"; | ||||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Acknowledgments | ||||
The authors wish to thank the following individuals, who all provided | ||||
helpful comments on various draft versions of this document: Bart | ||||
Bogaert, Timothy Carey, William Lupton, and Juergen Schoenwaelder. | ||||
Authors' Addresses | Authors' Addresses | |||
Andy Bierman | Andy Bierman | |||
YumaWorks | YumaWorks | |||
Email: andy@yumaworks.com | Email: andy@yumaworks.com | |||
Martin Bjorklund | Martin Bjorklund | |||
Tail-f Systems | Tail-f Systems | |||
End of changes. 270 change blocks. | ||||
1319 lines changed or deleted | 1447 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |