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/