draft-ietf-netmod-entity-01.txt | draft-ietf-netmod-entity-02.txt | |||
---|---|---|---|---|
Network Working Group A. Bierman | Network Working Group A. Bierman | |||
Internet-Draft YumaWorks | Internet-Draft YumaWorks | |||
Intended status: Standards Track M. Bjorklund | Intended status: Standards Track M. Bjorklund | |||
Expires: May 4, 2017 Tail-f Systems | Expires: July 27, 2017 Tail-f Systems | |||
J. Dong | J. Dong | |||
Huawei Technologies | Huawei Technologies | |||
D. Romascanu | D. Romascanu | |||
October 31, 2016 | January 23, 2017 | |||
A YANG Data Model for Hardware Management | A YANG Data Model for Hardware Management | |||
draft-ietf-netmod-entity-01 | draft-ietf-netmod-entity-02 | |||
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 Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
skipping to change at page 1, line 35 ¶ | skipping to change at page 1, line 35 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on May 4, 2017. | This Internet-Draft will expire on July 27, 2017. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | (http://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 | |||
skipping to change at page 2, line 17 ¶ | skipping to change at page 2, line 17 ¶ | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . 2 | 1.1.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Hardware Data Model . . . . . . . . . . . . . . . . . . . . . 3 | 3. Hardware Data Model . . . . . . . . . . . . . . . . . . . . . 3 | |||
3.1. The Components Lists . . . . . . . . . . . . . . . . . . 5 | 3.1. The Components Lists . . . . . . . . . . . . . . . . . . 5 | |||
4. Relationship to ENTITY-MIB . . . . . . . . . . . . . . . . . 5 | 4. Relationship to ENTITY-MIB . . . . . . . . . . . . . . . . . 5 | |||
5. Relationship to ENTITY-SENSOR-MIB . . . . . . . . . . . . . . 6 | 5. Relationship to ENTITY-SENSOR-MIB . . . . . . . . . . . . . . 6 | |||
6. Relationship to ENTITY-STATE-MIB . . . . . . . . . . . . . . 6 | 6. Relationship to ENTITY-STATE-MIB . . . . . . . . . . . . . . 7 | |||
7. Hardware YANG Module . . . . . . . . . . . . . . . . . . . . 6 | 7. Hardware YANG Module . . . . . . . . . . . . . . . . . . . . 7 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 35 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 37 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
11. Normative References . . . . . . . . . . . . . . . . . . . . 35 | 11. Normative References . . . . . . . . . . . . . . . . . . . . 38 | |||
Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 36 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
1. Introduction | 1. Introduction | |||
This document defines a YANG [I-D.ietf-netmod-rfc6020bis] data model | This document defines a YANG [RFC7950] data model for the management | |||
for the management of hardware on a single server. | of hardware on a single server. | |||
The data model includes configuration data and state data (status | The data model includes configuration data and state data (status | |||
information and counters for the collection of statistics). | information and counters for the collection of statistics). | |||
1.1. Terminology | 1.1. Terminology | |||
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The keywords "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 BCP | |||
14, [RFC2119]. | 14, [RFC2119]. | |||
skipping to change at page 3, line 34 ¶ | skipping to change at page 3, line 34 ¶ | |||
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 | ||||
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 | |||
+--ro hardware-state | +--ro hardware-state | |||
| +--ro last-change? yang:date-and-time | | +--ro last-change? yang:date-and-time | |||
| +--ro component* [name] | | +--ro component* [name] | |||
| +--ro name string | | +--ro name string | |||
| +--ro class identityref | | +--ro class identityref | |||
| +--ro physical-index? int32 {entity-mib}? | | +--ro physical-index? int32 {entity-mib}? | |||
| +--ro description? string | | +--ro description? string | |||
| +--ro contained-in* -> ../../component/name | | +--ro parent? -> ../../component/name | |||
| +--ro contains-child* -> ../../component/name | ||||
| +--ro parent-rel-pos? int32 | | +--ro parent-rel-pos? int32 | |||
| +--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 | |||
| +--ro alias? string | | +--ro alias? string | |||
| +--ro asset-id? string | | +--ro 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 | |||
| +--ro uri* inet:uri | | +--ro uri* inet:uri | |||
| +--ro uuid? yang:uuid | | +--ro uuid? yang:uuid | |||
| +--ro state {entity-state}? | | +--ro state {hardware-state}? | |||
| | +--ro state-last-changed? yang:date-and-time | | | +--ro state-last-changed? yang:date-and-time | |||
| | +--ro admin-state? admin-state | | | +--ro 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-status? alarm-status | | | +--ro alarm-status? alarm-status | |||
| | +--ro standby-status? standby-status | | | +--ro standby-status? standby-status | |||
| +--ro sensor-data {entity-sensor}? | | +--ro sensor-data {hardware-sensor}? | |||
| +--ro data-type? sensor-data-type | | +--ro data-type? sensor-data-type | |||
| +--ro data-scale? sensor-data-scale | | +--ro data-scale? sensor-data-scale | |||
| +--ro precision? sensor-precision | | +--ro precision? sensor-precision | |||
| +--ro value? sensor-value | | +--ro value? sensor-value | |||
| +--ro oper-status? sensor-status | | +--ro oper-status? sensor-status | |||
| +--ro sensor-units-display? string | | +--ro sensor-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 | |||
+--rw hardware {hardware-config}? | +--rw hardware {hardware-config}? | |||
+--rw component* [name] | +--rw component* [name] | |||
+--rw name string | +--rw name string | |||
+--rw serial-num? string | +--rw class identityref | |||
+--rw alias? string | +--rw parent? string | |||
+--rw asset-id? string | +--rw parent-rel-pos? int32 | |||
+--rw uri* inet:uri | +--rw mfg-name? string | |||
+--rw admin-state? admin-state {entity-state}? | +--rw serial-num? string | |||
+--rw alias? string | ||||
+--rw asset-id? string | ||||
+--rw uri* inet:uri | ||||
+--rw admin-state? admin-state {hardware-state}? | ||||
notifications: | notifications: | |||
+---n harwdare-state-change | +---n harwdare-state-change | |||
+---n hardware-state-oper-enabled {entity-state}? | +---n hardware-state-oper-enabled {hardware-state}? | |||
| +--ro name? -> /hardware-state/component/name | | +--ro name? -> /hardware-state/component/name | |||
| +--ro admin-state? | | +--ro admin-state? | |||
| | -> /hardware-state/component/state/admin-state | | | -> /hardware-state/component/state/admin-state | |||
| +--ro alarm-status? | | +--ro alarm-status? | |||
| -> /hardware-state/component/state/alarm-status | | -> /hardware-state/component/state/alarm-status | |||
+---n hardware-state-oper-disabled {entity-state}? | +---n hardware-state-oper-disabled {hardware-state}? | |||
+--ro name? -> /hardware-state/component/name | +--ro name? -> /hardware-state/component/name | |||
+--ro admin-state? | +--ro admin-state? | |||
| -> /hardware-state/component/state/admin-state | | -> /hardware-state/component/state/admin-state | |||
+--ro alarm-status? | +--ro alarm-status? | |||
-> /hardware-state/component/state/alarm-status | -> /hardware-state/component/state/alarm-status | |||
3.1. The Components Lists | 3.1. The Components Lists | |||
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-entity" 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. | |||
There is one optional list of configured components ("/hardware/ | There is one optional list of configured components ("/hardware/ | |||
component"), and a separate list for the operational state of all | component"), and a separate list for the operational state of all | |||
components ("/hardware-state/component"). | components ("/hardware-state/component"). | |||
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-state/component list is mapped to one EntPhysicalEntry. | "/hardware-state/component" list is mapped to one EntPhysicalEntry. | |||
Objects that are writable in the MIB are mapped to nodes in the | Objects that are writable in the MIB are mapped to nodes in the | |||
/hardware/component list. | "/hardware/component" list. | |||
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 is either derived from or is one of the identities in | |||
the "iana-entity" 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-entity" 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 tables list the YANG data nodes with corresponding | |||
objects in the ENTITY-MIB. | objects in the ENTITY-MIB. | |||
+----------------------------------+--------------------------------+ | +----------------------------------+--------------------------------+ | |||
| YANG data node in /hardware- | ENTITY-MIB object | | | YANG data node in /hardware- | ENTITY-MIB object | | |||
| state/component | | | | state/component | | | |||
+----------------------------------+--------------------------------+ | +----------------------------------+--------------------------------+ | |||
| name | entPhysicalName | | | name | entPhysicalName | | |||
| class | entPhysicalClass | | | class | entPhysicalClass | | |||
| | entPhysicalVendorType | | | | entPhysicalVendorType | | |||
| physical-index | entPhysicalIndex | | | physical-index | entPhysicalIndex | | |||
| description | entPhysicalDescr | | | description | entPhysicalDescr | | |||
| contained-in | entPhysicalContainedIn | | | parent | entPhysicalContainedIn | | |||
| contains-child | entPhysicalChildIndex | | ||||
| parent-rel-pos | entPhysicalParentRelPos | | | parent-rel-pos | entPhysicalParentRelPos | | |||
| contains-child | entPhysicalChildIndex | | ||||
| hardware-rev | entPhysicalHardwareRev | | | hardware-rev | entPhysicalHardwareRev | | |||
| firmware-rev | entPhysicalFirmwareRev | | | firmware-rev | entPhysicalFirmwareRev | | |||
| software-rev | entPhysicalSoftwareRev | | | software-rev | entPhysicalSoftwareRev | | |||
| serial-num | entPhysicalSerialNum | | | serial-num | entPhysicalSerialNum | | |||
| mfg-name | entPhysicalMfgName | | | mfg-name | entPhysicalMfgName | | |||
| model-name | entPhysicalModelName | | | model-name | entPhysicalModelName | | |||
| alias | entPhysicalAlias | | | alias | entPhysicalAlias | | |||
| asset-id | entPhysicalAssetID | | | asset-id | entPhysicalAssetID | | |||
| is-fru | entPhysicalIsFRU | | | is-fru | entPhysicalIsFRU | | |||
| mfg-date | entPhysicalMfgDate | | | mfg-date | entPhysicalMfgDate | | |||
| uri | entPhysicalUris | | | uri | entPhysicalUris | | |||
| uuid | entPhysicalUUID | | | uuid | entPhysicalUUID | | |||
+----------------------------------+--------------------------------+ | +----------------------------------+--------------------------------+ | |||
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 | |||
TBD relationship to [RFC3433]. | If the device implements the ENTITY-SENSOR-MIB [RFC3433], each entry | |||
the in "/hardware-state/component" list where the container | ||||
"sensor-data" exists is mapped to one EntPhySensorEntry. | ||||
+-------------------------------------+-----------------------------+ | ||||
| YANG data node in /hardware- | ENTITY-SENSOR-MIB object | | ||||
| state/component/sensor-data | | | ||||
+-------------------------------------+-----------------------------+ | ||||
| data-type | entPhySensorType | | ||||
| data-scale | entPhySensorScale | | ||||
| precision | entPhySensorPrecision | | ||||
| value | entPhySensorValue | | ||||
| oper-status | entPhySensorOperStatus | | ||||
| sensor-units-display | entPhySensorUnitsDisplay | | ||||
| value-timestamp | entPhySensorValueTimeStamp | | ||||
| value-update-rate | entPhySensorValueUpdateRate | | ||||
+-------------------------------------+-----------------------------+ | ||||
YANG data nodes and related ENTITY-SENSOR-MIB objects | ||||
6. Relationship to ENTITY-STATE-MIB | 6. Relationship to ENTITY-STATE-MIB | |||
TBD relationship to [RFC4268]. | If the device implements the ENTITY-STATE-MIB [RFC4268], each entry | |||
the in "/hardware-state/component" list where the container "state" | ||||
exists is mapped to one EntStateEntry. | ||||
+--------------------------------------------+----------------------+ | ||||
| YANG data node in /hardware- | ENTITY-STATE-MIB | | ||||
| state/component/state | object | | ||||
+--------------------------------------------+----------------------+ | ||||
| state-last-changed | entStateLastChanged | | ||||
| admin-state | entStateAdmin | | ||||
| oper-state | entStateOper | | ||||
| usage-state | entStateUsage | | ||||
| alarm-status | entStateAlarm | | ||||
| standby-status | entStateStandby | | ||||
+--------------------------------------------+----------------------+ | ||||
YANG data nodes and related ENTITY-SENSOR-MIB objects | ||||
7. Hardware YANG Module | 7. Hardware YANG Module | |||
<CODE BEGINS> file "ietf-hardware@2016-10-25.yang" | <CODE BEGINS> file "ietf-hardware@2017-01-18.yang" | |||
module ietf-hardware { | module ietf-hardware { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-hardware"; | namespace "urn:ietf:params:xml:ns:yang:ietf-hardware"; | |||
prefix hw; | prefix hw; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix yang; | prefix yang; | |||
} | } | |||
import iana-entity { | import iana-hardware { | |||
prefix ianaent; | prefix ianahw; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
WG Chair: Lou Berger | WG Chair: Lou Berger | |||
skipping to change at page 7, line 43 ¶ | skipping to change at page 8, line 43 ¶ | |||
Editor: Dan Romascanu | Editor: Dan Romascanu | |||
<mailto:dromasca@gmail.com>"; | <mailto:dromasca@gmail.com>"; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
// note. | // note. | |||
description | description | |||
"This module contains a collection of YANG definitions for | "This module contains a collection of YANG definitions for | |||
managing hardware. | managing hardware. | |||
Copyright (c) 2016 IETF Trust and the persons identified as | Copyright (c) 2017 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). | (http://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 XXXX; 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 | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision 2016-10-25 { | revision 2017-01-18 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Hardware Management"; | "RFC XXXX: A YANG Data Model for Hardware Management"; | |||
} | } | |||
/* | /* | |||
* Features | * Features | |||
*/ | */ | |||
skipping to change at page 8, line 33 ¶ | skipping to change at page 9, line 33 ¶ | |||
the ENTITY-MIB."; | the ENTITY-MIB."; | |||
reference "RFC 6933: Entity MIB (Version 4)"; | reference "RFC 6933: Entity MIB (Version 4)"; | |||
} | } | |||
feature hardware-config { | feature hardware-config { | |||
description | description | |||
"Indicates that the server supports configuration of | "Indicates that the server supports configuration of | |||
hardware components."; | hardware components."; | |||
} | } | |||
feature entity-state { | feature hardware-state { | |||
description | description | |||
"Indicates the ENTITY-STATE-MIB objects are supported"; | "Indicates the ENTITY-STATE-MIB objects are supported"; | |||
reference "RFC 4268: Entity State MIB"; | reference "RFC 4268: Entity State MIB"; | |||
} | } | |||
feature entity-sensor { | feature hardware-sensor { | |||
description | description | |||
"Indicates the ENTITY-SENSOR-MIB objects are supported"; | "Indicates the ENTITY-SENSOR-MIB objects are supported"; | |||
reference "RFC 3433: Entity Sensor MIB"; | reference "RFC 3433: Entity Sensor MIB"; | |||
} | } | |||
/* | /* | |||
* Typedefs | * Typedefs | |||
*/ | */ | |||
typedef admin-state { | typedef admin-state { | |||
skipping to change at page 10, line 33 ¶ | skipping to change at page 11, line 33 ¶ | |||
} | } | |||
enum active { | enum active { | |||
value 3; | value 3; | |||
description | description | |||
"The resource is currently in use and it has sufficient | "The resource is currently in use and it has sufficient | |||
spare capacity to provide for additional users."; | spare capacity to provide for additional users."; | |||
} | } | |||
enum busy { | enum busy { | |||
value 4; | value 4; | |||
description | description | |||
"The resource is currently in use, but it currently has | "The resource is currently in use, but it currently has no | |||
no spare capacity to provide for additional users."; | spare capacity to provide for additional users."; | |||
} | } | |||
} | } | |||
description | description | |||
"Represents the possible values of usage states."; | "Represents the possible values of usage states."; | |||
reference "RFC 4268, EntityUsageState"; | reference "RFC 4268, EntityUsageState"; | |||
} | } | |||
typedef alarm-status { | typedef alarm-status { | |||
type bits { | type bits { | |||
bit unknown { | bit unknown { | |||
skipping to change at page 11, line 30 ¶ | skipping to change at page 12, line 30 ¶ | |||
bit minor { | bit minor { | |||
position 4; | position 4; | |||
description | description | |||
"One or more minor alarms are active against the | "One or more minor alarms are active against the | |||
resource."; | resource."; | |||
} | } | |||
bit warning { | bit warning { | |||
position 5; | position 5; | |||
description | description | |||
"One or more warning alarms are active against the | "One or more warning alarms are active against the | |||
resource. This alarm status is not defined in X.733."; | resource."; | |||
} | } | |||
bit indeterminate { | bit indeterminate { | |||
position 6; | position 6; | |||
description | description | |||
"One or more alarms of whose perceived severity cannot be | "One or more alarms of whose perceived severity cannot be | |||
determined are active against this resource. | determined are active against this resource."; | |||
This alarm status is not defined in X.733."; | ||||
} | } | |||
} | } | |||
description | description | |||
"Represents the possible values of alarm status. | "Represents the possible values of alarm status. An alarm is a | |||
An Alarm [RFC3877] is a persistent indication of an error or | persistent indication of an error or warning condition. | |||
warning condition. | ||||
When no bits of this attribute are set, then no active | When no bits of this attribute are set, then no active alarms | |||
alarms are known against this component and it is not under | are known against this component and it is not under repair."; | |||
repair."; | ||||
reference "RFC 4268: EntityAlarmStatus"; | reference "RFC 4268: EntityAlarmStatus"; | |||
} | } | |||
typedef standby-status { | typedef standby-status { | |||
type enumeration { | type enumeration { | |||
enum unknown { | enum unknown { | |||
value 1; | value 1; | |||
description | description | |||
"The resource is unable to report standby state."; | "The resource is unable to report standby state."; | |||
} | } | |||
enum hot-standby { | enum hot-standby { | |||
value 2; | value 2; | |||
description | description | |||
"The resource is not providing service, but it will be | "The resource is not providing service, but it will be | |||
immediately able to take over the role of the resource | immediately able to take over the role of the resource to | |||
to be backed up, without the need for initialization | be backed up, without the need for initialization | |||
activity, and will contain the same information as the | activity, and will contain the same information as the | |||
resource to be backed up."; | resource to be backed up."; | |||
} | } | |||
enum cold-standby { | enum cold-standby { | |||
value 3; | value 3; | |||
description | description | |||
"The resource is to back up another resource, but will not | "The resource is to back up another resource, but will not | |||
be immediately able to take over the role of a resource | be immediately able to take over the role of a resource to | |||
to be backed up, and will require some initialization | be backed up, and will require some initialization | |||
activity."; | activity."; | |||
} | } | |||
enum providing-service { | enum providing-service { | |||
value 4; | value 4; | |||
description | description | |||
"The resource is providing service."; | "The resource is providing service."; | |||
} | } | |||
} | } | |||
description | description | |||
"Represents the possible values of standby status."; | "Represents the possible values of standby status."; | |||
skipping to change at page 14, line 4 ¶ | skipping to change at page 14, line 49 ¶ | |||
enum cmm { | enum cmm { | |||
value 11; | value 11; | |||
description | description | |||
"A measure of cubic meters per minute (airflow)."; | "A measure of cubic meters per minute (airflow)."; | |||
} | } | |||
enum truth-value { | enum truth-value { | |||
value 12; | value 12; | |||
description | description | |||
"Value is one of 1 (true) or 2 (false)"; | "Value is one of 1 (true) or 2 (false)"; | |||
} | } | |||
} | } | |||
description | description | |||
"An node using this data type represents the Entity Sensor | "A node using this data type represents the sensor measurement | |||
measurement data type associated with a physical sensor | data type associated with a physical sensor value. The actual | |||
value. The actual data units are determined by examining an | data units are determined by examining a node of this type | |||
node of this type together with the associated | together with the associated sensor-data-scale node. | |||
sensor-data-scale node. | ||||
An node of this type SHOULD be defined together with nodes | A node of this type SHOULD be defined together with nodes of | |||
of type sensor-data-scale and | type sensor-data-scale and sensor-precision. These three types | |||
sensor-precision. These three types are used to | are used to identify the semantics of a node of type | |||
identify the semantics of an node of type | ||||
sensor-value."; | sensor-value."; | |||
reference "RFC 3433: EntitySensorDataType"; | reference "RFC 3433: EntitySensorDataType"; | |||
} | } | |||
typedef sensor-data-scale { | typedef sensor-data-scale { | |||
type enumeration { | type enumeration { | |||
enum yocto { | enum yocto { | |||
value 1; | value 1; | |||
description | description | |||
"Data scaling factor of 10^-24."; | "Data scaling factor of 10^-24."; | |||
skipping to change at page 16, line 13 ¶ | skipping to change at page 17, line 8 ¶ | |||
description | description | |||
"Data scaling factor of 10^21."; | "Data scaling factor of 10^21."; | |||
} | } | |||
enum yotta { | enum yotta { | |||
value 17; | value 17; | |||
description | description | |||
"Data scaling factor of 10^24."; | "Data scaling factor of 10^24."; | |||
} | } | |||
} | } | |||
description | description | |||
"An node using this data type represents a data scaling | "A node using this data type represents a data scaling factor, | |||
factor, represented with an International System of Units (SI) | represented with an International System of Units (SI) prefix. | |||
prefix. The actual data units are determined by examining an | The actual data units are determined by examining a node of | |||
node of this type together with the associated | this type together with the associated sensor-data-type. | |||
sensor-data-type. | ||||
An node of this type SHOULD be defined together with nodes | A node of this type SHOULD be defined together with nodes of | |||
of type sensor-data-type and sensor-precision. | type sensor-data-type and sensor-precision. Together, | |||
Together, associated nodes of these three types are used to | associated nodes of these three types are used to identify the | |||
identify the semantics of an node of type | semantics of a node of type sensor-value."; | |||
sensor-value."; | ||||
reference "RFC 3433: EntitySensorDataScale"; | reference "RFC 3433: EntitySensorDataScale"; | |||
} | } | |||
typedef sensor-precision { | typedef sensor-precision { | |||
type int32 { | type int32 { | |||
range "-8 .. 9"; | range "-8 .. 9"; | |||
} | } | |||
description | description | |||
"An node using this data type represents a sensor | "A node using this data type represents a sensor precision | |||
precision range. | range. | |||
An node of this type SHOULD be defined together with nodes | A node of this type SHOULD be defined together with nodes of | |||
of type sensor-data-type and sensor-data-scale. | type sensor-data-type and sensor-data-scale. Together, | |||
Together, associated nodes of these three types are used to | associated nodes of these three types are used to identify the | |||
identify the semantics of an node of type | semantics of a node of type sensor-value. | |||
sensor-value. | ||||
If an 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 an node of this type contains a value in the range -8 to | If a node of this type contains a value in the range -8 to -1, | |||
-1, it represents the number of accurate digits in the | it represents the number of accurate digits in the associated | |||
associated sensor-value fixed-point number. | sensor-value fixed-point number. | |||
The value zero indicates the associated sensor-value | The value zero indicates the associated sensor-value node is | |||
node is not a fixed-point number. | not a fixed-point number. | |||
Server implementors must choose a value for the associated | Server implementers must choose a value for the associated | |||
sensor-precision node so that the precision and | sensor-precision node so that the precision and accuracy of | |||
accuracy of the associated sensor-value node is | the associated sensor-value node is correctly indicated. | |||
correctly indicated. | ||||
For example, a component representing a temperature | For example, a component representing a temperature sensor | |||
sensor that can measure 0 degrees to 100 degrees C in 0.1 | that can measure 0 degrees to 100 degrees C in 0.1 degree | |||
degree increments, +/- 0.05 degrees, would have an | increments, +/- 0.05 degrees, would have an sensor-precision | |||
sensor-precision value of '1', an | value of '1', an sensor-data-scale value of 'units', and an | |||
sensor-data-scale value of 'units', and an | sensor-value ranging from '0' to '1000'. The sensor-value | |||
sensor-value ranging from '0' to '1000'. The | would be interpreted as 'degrees C * 10'."; | |||
sensor-value would be interpreted as | ||||
'degrees C * 10'."; | ||||
reference "RFC 3433: EntitySensorPrecision"; | reference "RFC 3433: EntitySensorPrecision"; | |||
} | } | |||
typedef sensor-value { | typedef sensor-value { | |||
type int32 { | type int32 { | |||
range "-1000000000 .. 1000000000"; | range "-1000000000 .. 1000000000"; | |||
} | } | |||
description | description | |||
"An node using this data type represents an Entity Sensor | "A node using this data type represents an sensor value. | |||
value. | ||||
An node of this type SHOULD be defined together with nodes | A node of this type SHOULD be defined together with nodes of | |||
of type sensor-data-type, sensor-data-scale, and | type sensor-data-type, sensor-data-scale, and sensor-precision. | |||
sensor-precision. Together, associated nodes of those | Together, associated nodes of those three types are used to | |||
three types are used to identify the semantics of an node of | identify the semantics of a node of this data type. | |||
this data type. | ||||
The semantics of an node using this data type are determined | The semantics of a node using this data type are determined by | |||
by the value of the associated sensor-data-type node. | the value of the associated sensor-data-type node. | |||
If the associated sensor-data-type node is equal to | If the associated sensor-data-type node is equal to 'voltsAC', | |||
'voltsAC', 'voltsDC', 'amperes', 'watts', 'hertz', | 'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm', | |||
'celsius', or 'cmm', then an node of this type MUST | then a node of this type MUST contain a fixed point number | |||
contain a fixed point number ranging from -999,999,999 to | ranging from -999,999,999 to +999,999,999. The value | |||
+999,999,999. The value -1000000000 indicates an underflow | -1000000000 indicates an underflow error. The value +1000000000 | |||
error. The value +1000000000 indicates an overflow error. The | indicates an overflow error. The sensor-precision indicates | |||
sensor-precision indicates how many fractional digits | how many fractional digits are represented in the associated | |||
are represented in the associated sensor-value node. | sensor-value node. | |||
If the associated sensor-data-type node is equal to | If the associated sensor-data-type node is equal to | |||
'percentRH', then an node of this type MUST contain a | 'percentRH', then a node of this type MUST contain a number | |||
number ranging from 0 to 100. | ranging from 0 to 100. | |||
If the associated sensor-data-type node is equal to | If the associated sensor-data-type node is equal to 'rpm', then | |||
'rpm', then an node of this type MUST contain a number | a node of this type MUST contain a number ranging from | |||
ranging from -999,999,999 to +999,999,999. | -999,999,999 to +999,999,999. | |||
If the associated sensor-data-type node is equal to | If the associated sensor-data-type node is equal to | |||
'truthvalue', then an node of this type MUST contain | 'truth-value', then a node of this type MUST contain either the | |||
either the value 1 (true) or the value 2 (false)'. | value 1 (true) or the value 2 (false)'. | |||
If the associated sensor-data-type node is equal to | If the associated sensor-data-type node is equal to 'other' or | |||
'other' or unknown', then an node of this type MUST | unknown', then a node of this type MUST contain a number | |||
contain a number ranging from -1000000000 to 1000000000."; | ranging from -1000000000 to 1000000000."; | |||
reference "RFC 3433: EntitySensorValue"; | reference "RFC 3433: EntitySensorValue"; | |||
} | } | |||
typedef sensor-status { | typedef sensor-status { | |||
type enumeration { | type enumeration { | |||
enum ok { | enum ok { | |||
value 1; | value 1; | |||
description | description | |||
"Indicates that the server can obtain the sensor value."; | "Indicates that the server can obtain the sensor value."; | |||
} | } | |||
skipping to change at page 18, line 39 ¶ | skipping to change at page 19, line 26 ¶ | |||
enum nonoperational { | enum nonoperational { | |||
value 3; | value 3; | |||
description | description | |||
"Indicates that the server believes the sensor is broken. | "Indicates that the server believes the sensor is broken. | |||
The sensor could have a hard failure (disconnected wire), | The sensor could have a hard failure (disconnected wire), | |||
or a soft failure such as out-of-range, jittery, or wildly | or a soft failure such as out-of-range, jittery, or wildly | |||
fluctuating readings."; | fluctuating readings."; | |||
} | } | |||
} | } | |||
description | description | |||
"An node using this data type represents the operational | "A node using this data type represents the operational status | |||
status of a physical sensor."; | of a physical sensor."; | |||
reference "RFC 3433: EntitySensorStatus"; | reference "RFC 3433: EntitySensorStatus"; | |||
} | } | |||
/* | /* | |||
* Operational state data nodes | * Operational state data nodes | |||
*/ | */ | |||
container hardware-state { | container hardware-state { | |||
config false; | config false; | |||
description | description | |||
"Data nodes for the operational state of components."; | "Data nodes for the operational state of components."; | |||
leaf last-change { | leaf last-change { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time the '/hardware-state/component' list | "The time the '/hardware-state/component' list changed."; | |||
changed."; | ||||
} | } | |||
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 | ||||
initializes an entry in this list. | ||||
If the server does not support the feature | ||||
'hardware-config', the entry is initialized with values for | ||||
all nodes as detected by the implementation. | ||||
Otherwise, the following procedure is followed: | ||||
1. If there is an entry in the /hardware/component list | ||||
with values for the nodes 'class', 'parent', | ||||
'parent-rel-pos' that are equal to the detected values, | ||||
then: | ||||
1a. If the configured entry has a value for 'mfg-name' | ||||
that is equal to the detected value, or if the | ||||
'mfg-name' value cannot be detected, then the entry is | ||||
initialized with the configured values for all | ||||
configured leafs, including the 'name'. | ||||
Otherwise, the entry is initialized with values for | ||||
all nodes as detected by the implementation. The | ||||
implementation may raise an alarm that informs about | ||||
the 'mfg-name' mismatch condition. How this is done | ||||
is outside the scope of this document. | ||||
1b. Otherwise (i.e., there is no matching configuration | ||||
entry), the entry is initialized with values for all | ||||
nodes as detected by the implementation. | ||||
If the /hardware/component list is modified (i.e., someone | ||||
changed the configuration), then the system MUST behave as | ||||
if it re-initializes itself, and follow the procedure in | ||||
(1)."; | ||||
reference "RFC 6933: entPhysicalEntry"; | reference "RFC 6933: entPhysicalEntry"; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"Administrative name assigned to this component. | "The name assigned to this component. | |||
No restrictions apply. 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 ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"An indication of the general hardware type | "An indication of the general hardware type of the | |||
of the component."; | component."; | |||
reference "RFC 6933: entPhysicalClass"; | reference "RFC 6933: 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"; | |||
} | } | |||
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: entPhysicalIndex"; | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"A textual description of component. This node | "A textual description of component. This node should | |||
should contain a string that identifies the manufacturer's | contain a string that identifies the manufacturer's name | |||
name for the component and should be set to a | for the component and should be set to a distinct value | |||
distinct value for each version or model of the | for each version or model of the component."; | |||
component."; | ||||
reference "RFC 6933: entPhysicalDescr"; | reference "RFC 6933: entPhysicalDescr"; | |||
} | } | |||
leaf-list contained-in { | leaf parent { | |||
type leafref { | type leafref { | |||
path "../../component/name"; | path "../../component/name"; | |||
} | } | |||
description | description | |||
"The name of the component that 'contains' | "The name of the component that physically contains this | |||
this component."; | component. | |||
reference "RFC 6933: entPhysicalContainedIn"; | ||||
} | ||||
leaf-list contains-child { | If this leaf is not instantiated, it indicates that this | |||
type leafref { | component is not contained in any other component. | |||
path "../../component/name"; | ||||
} | ||||
description | ||||
"The name of the contained component."; | ||||
reference "RFC 6933: entPhysicalChildIndex"; | ||||
} | ||||
In the event that a physical component is contained by | ||||
more than one physical component (e.g., double-wide | ||||
modules), this node contains the name of one of these | ||||
components. An implementation MUST use the same name | ||||
every time this node is instantiated."; | ||||
reference "RFC 6933: 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 share the | components are defined as components that share the same | |||
same instance values of each of the contained-in | instance values of each of the 'parent' and 'class' | |||
and class elements."; | nodes."; | |||
reference "RFC 6933: entPhysicalParentRelPos"; | reference "RFC 6933: entPhysicalParentRelPos"; | |||
} | } | |||
leaf-list contains-child { | ||||
type leafref { | ||||
path "../../component/name"; | ||||
} | ||||
description | ||||
"The name of the contained component."; | ||||
reference "RFC 6933: entPhysicalChildIndex"; | ||||
} | ||||
leaf hardware-rev { | leaf hardware-rev { | |||
type string; | type string; | |||
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 | component. The preferred value is the hardware revision | |||
revision identifier actually printed on the component | identifier actually printed on the component itself (if | |||
itself (if present)."; | present)."; | |||
reference "RFC 6933: entPhysicalHardwareRev"; | reference "RFC 6933: entPhysicalHardwareRev"; | |||
} | } | |||
leaf firmware-rev { | leaf firmware-rev { | |||
type string; | type string; | |||
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: entPhysicalFirmwareRev"; | |||
} | } | |||
leaf software-rev { | leaf software-rev { | |||
type string; | type string; | |||
skipping to change at page 21, line 19 ¶ | skipping to change at page 23, line 4 ¶ | |||
reference "RFC 6933: entPhysicalFirmwareRev"; | reference "RFC 6933: entPhysicalFirmwareRev"; | |||
} | } | |||
leaf software-rev { | leaf software-rev { | |||
type string; | type string; | |||
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: entPhysicalSoftwareRev"; | |||
} | } | |||
leaf serial-num { | leaf serial-num { | |||
type string; | type string; | |||
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). | |||
If a serial number has been configured for this component | If a serial number has been configured for this component | |||
in /hardware/component/serial-num, this node contains | in /hardware/component/serial-num, this node contains the | |||
the configured value."; | configured value."; | |||
reference "RFC 6933: entPhysicalSerialNum"; | reference "RFC 6933: entPhysicalSerialNum"; | |||
} | } | |||
leaf mfg-name { | leaf mfg-name { | |||
type string; | type string; | |||
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 model-name, | |||
firmware-rev, software-rev, and the serial-num nodes are | firmware-rev, software-rev, and the serial-num nodes are | |||
only meaningful amongst component with the same | only meaningful amongst component with the same value of | |||
value of mfg-name. | 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 will contain a zero-length string."; | node is not instantiated."; | |||
reference "RFC 6933: entPhysicalMfgName"; | reference "RFC 6933: entPhysicalMfgName"; | |||
} | } | |||
leaf model-name { | leaf model-name { | |||
type string; | type string; | |||
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 will | component is unknown to the server, then this node is not | |||
contain a zero-length string."; | instantiated."; | |||
reference "RFC 6933: entPhysicalModelName"; | reference "RFC 6933: entPhysicalModelName"; | |||
} | } | |||
leaf alias { | leaf alias { | |||
type string { | type string; | |||
length "0 .. 32"; | ||||
} | ||||
description | description | |||
"An 'alias' name for the component, as specified by | "An 'alias' name for the component, as specified by a | |||
a network manager, and provides a non-volatile 'handle' | network manager, and provides a non-volatile 'handle' for | |||
for the component. | the component. | |||
If an alias has been configured for this component in | If an alias has been configured for this component in | |||
/hardware/component/alias, this node contains the | /hardware/component/alias, this node contains the | |||
configured value. If no such alias has been configured, | configured value. If no such alias has been configured, | |||
the server may set the value of this node to a locally | the server may set the value of this node to a locally | |||
unique value."; | unique value."; | |||
reference "RFC 6933: entPhysicalAlias"; | reference "RFC 6933: entPhysicalAlias"; | |||
} | } | |||
leaf asset-id { | leaf asset-id { | |||
type string { | type string; | |||
length "0 .. 32"; | ||||
} | ||||
description | description | |||
"This node is a user-assigned asset tracking identifier | "This node is a user-assigned asset tracking identifier for | |||
(as specified by a network manager) for the component | the component. | |||
and provides non-volatile storage of this information. | ||||
If an asset tracking identifier has been configured for | If an asset tracking identifier has been configured for | |||
this component in /hardware/component/addet-id, this | this component in /hardware/component/asset-id, this node | |||
node contains the configured value."; | contains the configured value."; | |||
reference "RFC 6933: entPhysicalAssetID"; | reference "RFC 6933: entPhysicalAssetID"; | |||
} | } | |||
leaf is-fru { | leaf is-fru { | |||
type boolean; | type boolean; | |||
description | description | |||
"This node indicates whether or not this component | "This node indicates whether or not this component is | |||
is considered a 'field replaceable unit' by the vendor. | considered a 'field replaceable unit' by the vendor. If | |||
If this node contains the value 'true', then this | this node contains the value 'true', then this component | |||
component identifies a field replaceable unit. For all | identifies a field replaceable unit. For all components | |||
components that are permanently contained within a field | that are permanently contained within a field replaceable | |||
replaceable unit, the value 'false' should be returned | unit, the value 'false' should be returned for this | |||
for this node."; | node."; | |||
reference "RFC 6933: entPhysicalIsFRU"; | reference "RFC 6933: entPhysicalIsFRU"; | |||
} | } | |||
leaf mfg-date { | leaf mfg-date { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
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: 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. | |||
If uris have been configured for this component in | If uris have been configured for this component in | |||
/hardware/component/uri, this node contains the | /hardware/component/uri, this node contains the configured | |||
configured values."; | values."; | |||
reference "RFC 6933: entPhysicalUris"; | reference "RFC 6933: entPhysicalUris"; | |||
} | } | |||
leaf uuid { | leaf uuid { | |||
type yang:uuid; | type yang:uuid; | |||
description | description | |||
"A Universally Unique Identifier of the component."; | "A Universally Unique Identifier of the component."; | |||
reference "RFC 6933: entPhysicalUUID"; | reference "RFC 6933: entPhysicalUUID"; | |||
} | } | |||
container state { | container state { | |||
if-feature entity-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; | |||
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-status, or | admin-state, oper-state, usage-state, alarm-status, or | |||
standby-status changed for this component. | standby-status changed for this component. | |||
skipping to change at page 24, line 20 ¶ | skipping to change at page 25, line 47 ¶ | |||
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: 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 an entities administrative | This node refers to a component's administrative | |||
permission to service both other entities 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 | Some components exhibit only a subset of the remaining | |||
remaining administrative state values. Some entities | administrative state values. Some components cannot be | |||
cannot be locked, and hence this node exhibits only the | locked, and hence this node exhibits only the 'unlocked' | |||
'unlocked' state. Other entities cannot be shutdown | state. Other components cannot be shutdown gracefully, | |||
gracefully, and hence this node does not exhibit the | and hence this node does not exhibit the 'shutting-down' | |||
'shutting-down' state."; | state."; | |||
reference "RFC 4268: entStateAdmin"; | reference "RFC 4268: entStateAdmin"; | |||
} | } | |||
leaf oper-state { | leaf oper-state { | |||
type oper-state; | type oper-state; | |||
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 predict | |||
skipping to change at page 25, line 11 ¶ | skipping to change at page 26, line 38 ¶ | |||
} | } | |||
leaf usage-state { | leaf usage-state { | |||
type usage-state; | type usage-state; | |||
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 entities will exhibit only a subset of the usage | Some components will exhibit only a subset of the usage | |||
state values. Entities that are unable to ever service | state values. Components that are unable to ever | |||
any entities within a containment hierarchy will always | service any components within a containment hierarchy | |||
have a usage state of 'busy'. Some entities will only | will always have a usage state of 'busy'. Some | |||
ever be able to support one component within its | components will only ever be able to support one | |||
containment hierarchy and will therefore only exhibit | component within its containment hierarchy and will | |||
values of 'idle' and 'busy'."; | therefore only exhibit values of 'idle' and 'busy'."; | |||
reference "RFC 4268, entStateUsage"; | reference "RFC 4268, entStateUsage"; | |||
} | } | |||
leaf alarm-status { | leaf alarm-status { | |||
type alarm-status; | type alarm-status; | |||
description | description | |||
"The alarm status for this component. It does not | "The alarm status 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: entStateAlarm"; | |||
} | } | |||
leaf standby-status { | leaf standby-status { | |||
type standby-status; | type standby-status; | |||
description | description | |||
"The standby status for this component. | "The standby status for this component. | |||
Some entities 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 | cannot operate in a standby role, the value of this node | |||
node will always be 'providing-service'."; | will always be 'providing-service'."; | |||
reference "RFC 4268: entStateStandby"; | reference "RFC 4268: entStateStandby"; | |||
} | } | |||
} | } | |||
container sensor-data { | container sensor-data { | |||
when 'derived-from-or-self(../class, | when 'derived-from-or-self(../class, | |||
"ianaent: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 entity-sensor; | if-feature hardware-sensor; | |||
description | description | |||
"Sensor-related nodes."; | "Sensor-related nodes."; | |||
reference "RFC 3433: Entity Sensor MIB"; | reference "RFC 3433: Entity Sensor MIB"; | |||
leaf data-type { | leaf data-type { | |||
type sensor-data-type; | type sensor-data-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: entPhySensorType"; | |||
skipping to change at page 27, line 4 ¶ | skipping to change at page 28, line 30 ¶ | |||
"The operational status of the sensor."; | "The operational status of the sensor."; | |||
reference "RFC 3433: entPhySensorOperStatus"; | reference "RFC 3433: entPhySensorOperStatus"; | |||
} | } | |||
leaf sensor-units-display { | leaf sensor-units-display { | |||
type string; | type string; | |||
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: entPhySensorUnitsDisplay"; | |||
} | } | |||
leaf value-timestamp { | leaf value-timestamp { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time the status and/or value of this sensor was | "The time the status and/or value of this sensor was last | |||
last obtained by the server."; | obtained by the server."; | |||
reference "RFC 3433: entPhySensorValueTimeStamp"; | reference "RFC 3433: entPhySensorValueTimeStamp"; | |||
} | } | |||
leaf value-update-rate { | leaf value-update-rate { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
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, representing in | |||
milliseconds. The value zero indicates: | milliseconds. The value zero indicates: | |||
skipping to change at page 27, line 46 ¶ | skipping to change at page 29, line 24 ¶ | |||
*/ | */ | |||
container hardware { | container hardware { | |||
if-feature hardware-config; | if-feature hardware-config; | |||
description | description | |||
"Configuration parameters for components."; | "Configuration parameters for components."; | |||
list component { | list component { | |||
key name; | key name; | |||
description | description | |||
"List of configuration data for components."; | "List of configuration data for components. | |||
See the description of /hardware-state/component for | ||||
information on how this list is used by a server."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"Administrative name assigned to this component. | "Administrative name for this component. No restrictions | |||
No restrictions apply."; | apply."; | |||
} | ||||
leaf class { | ||||
type identityref { | ||||
base ianahw:hardware-class; | ||||
} | ||||
mandatory true; | ||||
description | ||||
"An indication of the general hardware type of the | ||||
component."; | ||||
reference "RFC 6933: entPhysicalClass"; | ||||
} | ||||
leaf parent { | ||||
type string; | ||||
description | ||||
"The name of the component that contains this component."; | ||||
reference "RFC 6933: entPhysicalContainedIn"; | ||||
} | ||||
leaf parent-rel-pos { | ||||
type int32 { | ||||
range "0 .. 2147483647"; | ||||
} | ||||
description | ||||
"An indication of the relative position of this child | ||||
component among all its sibling components. Sibling | ||||
components are defined as components that share the same | ||||
instance values of each of the 'parent' and 'class' | ||||
nodes."; | ||||
reference "RFC 6933: entPhysicalParentRelPos"; | ||||
} | ||||
leaf mfg-name { | ||||
type string; | ||||
description | ||||
"The name of the manufacturer of this physical component."; | ||||
reference "RFC 6933: entPhysicalMfgName"; | ||||
} | } | |||
leaf serial-num { | leaf serial-num { | |||
type string; | type string; | |||
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). | |||
This node is indented to be used for components | This node is indented to be used for components for which | |||
for which the server cannot determine the serial number."; | the server cannot determine the serial number."; | |||
reference "RFC 6933: entPhysicalSerialNum"; | reference "RFC 6933: entPhysicalSerialNum"; | |||
} | } | |||
leaf alias { | leaf alias { | |||
type string { | type string; | |||
length "0 .. 32"; | ||||
} | ||||
description | description | |||
"This node is an 'alias' name for the component, as | "This node is an 'alias' name for the component, as | |||
specified by a network manager, and provides a non- | specified by a network manager, and provides a non- | |||
volatile 'handle' for the component."; | volatile 'handle' for the component. | |||
A server implementation MAY map this leaf to the | ||||
entPhysicalAlias MIB object. Such an implementation needs | ||||
to use some mechanism to handle the differences in size | ||||
and characters allowed between this leaf and | ||||
entPhysicalAlias. The definition of such a mechanism is | ||||
outside the scope of this document."; | ||||
reference "RFC 6933: entPhysicalAlias"; | reference "RFC 6933: entPhysicalAlias"; | |||
} | } | |||
leaf asset-id { | leaf asset-id { | |||
type string { | type string; | |||
length "0 .. 32"; | ||||
} | ||||
description | description | |||
"This node is a user-assigned asset tracking identifier | "This node is a user-assigned asset tracking identifier (as | |||
(as specified by a network manager) for the component"; | specified by a network manager) for the component. | |||
A server implementation MAY map this leaf to the | ||||
entPhysicalAssetID MIB object. Such an implementation | ||||
needs to use some mechanism to handle the differences in | ||||
size and characters allowed between this leaf and | ||||
entPhysicalAssetID. The definition of such a mechanism is | ||||
outside the scope of this document."; | ||||
reference "RFC 6933: entPhysicalAssetID"; | reference "RFC 6933: entPhysicalAssetID"; | |||
} | } | |||
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: entPhysicalUris"; | |||
} | } | |||
leaf admin-state { | leaf admin-state { | |||
if-feature entity-state; | if-feature hardware-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 entities within | permission to service both other components within its | |||
its containment hierarchy as well other users of | containment hierarchy as well other users of its services | |||
its services defined by means outside the scope | defined by means outside the scope of this module. | |||
of this module. | ||||
Some components exhibit only a subset of the | Some components exhibit only a subset of the remaining | |||
remaining administrative state values. Some entities | administrative state values. Some components cannot be | |||
cannot be locked, and hence this node exhibits only | locked, and hence this node exhibits only the 'unlocked' | |||
the 'unlocked' state. Other entities cannot be shutdown | state. Other components cannot be shutdown gracefully, | |||
gracefully, and hence this node does not exhibit the | and hence this node does not exhibit the 'shutting-down' | |||
'shutting-down' state."; | state."; | |||
reference "RFC 4268, entStateAdmin"; | reference "RFC 4268, entStateAdmin"; | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification harwdare-state-change { | notification harwdare-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-state/last-change changes."; | value of /hardware-state/last-change changes."; | |||
reference "RFC 6933, entConfigChange"; | reference "RFC 6933, entConfigChange"; | |||
} | } | |||
notification hardware-state-oper-enabled { | notification hardware-state-oper-enabled { | |||
if-feature entity-state; | if-feature hardware-state; | |||
description | description | |||
"A hardware-state-oper-enabled notification signifies that | "A hardware-state-oper-enabled notification signifies that a | |||
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-state/component/name"; | path "/hardware-state/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 { | |||
skipping to change at page 30, line 18 ¶ | skipping to change at page 32, line 44 ¶ | |||
type leafref { | type leafref { | |||
path "/hardware-state/component/state/alarm-status"; | path "/hardware-state/component/state/alarm-status"; | |||
} | } | |||
description | description | |||
"The alarm status for the component."; | "The alarm status for the component."; | |||
} | } | |||
reference "RFC 4268, entStateOperEnabled"; | reference "RFC 4268, entStateOperEnabled"; | |||
} | } | |||
notification hardware-state-oper-disabled { | notification hardware-state-oper-disabled { | |||
if-feature entity-state; | if-feature hardware-state; | |||
description | description | |||
"A hardware-state-oper-disabled notification signifies that | "A hardware-state-oper-disabled notification signifies that a | |||
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-state/component/name"; | path "/hardware-state/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 { | |||
skipping to change at page 31, line 4 ¶ | skipping to change at page 33, line 28 ¶ | |||
} | } | |||
description | description | |||
"The alarm status for the component."; | "The alarm status for the component."; | |||
} | } | |||
reference "RFC 4268, entStateOperDisabled"; | reference "RFC 4268, entStateOperDisabled"; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
<CODE BEGINS> file "iana-entity@2016-10-25.yang" | ||||
module iana-entity { | <CODE BEGINS> file "iana-hardware@2017-01-18.yang" | |||
namespace "urn:ietf:params:xml:ns:yang:iana-entity"; | ||||
prefix ianaent; | module iana-hardware { | |||
namespace "urn:ietf:params:xml:ns:yang:iana-hardware"; | ||||
prefix ianahw; | ||||
organization "IANA"; | organization "IANA"; | |||
contact | contact | |||
" Internet Assigned Numbers Authority | " Internet Assigned Numbers Authority | |||
Postal: ICANN | Postal: ICANN | |||
4676 Admiralty Way, Suite 330 | 4676 Admiralty Way, Suite 330 | |||
Marina del Rey, CA 90292 | Marina del Rey, CA 90292 | |||
Tel: +1 310 823 9358 | Tel: +1 310 823 9358 | |||
<mailto:iana@iana.org>"; | <mailto:iana@iana.org>"; | |||
description | description | |||
"IANA defined identities for physical class."; | "IANA defined identities for hardware class."; | |||
reference | reference | |||
"https://www.iana.org/assignments/ianaentity-mib/ianaentity-mib"; | "https://www.iana.org/assignments/ianaentity-mib/ianaentity-mib"; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
// note. | // note. | |||
// RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision 2016-10-25 { | revision 2017-01-18 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for hardware Management"; | "RFC XXXX: A YANG Data Model for Hardware Management"; | |||
} | } | |||
/* | /* | |||
* Identities | * Identities | |||
*/ | */ | |||
identity entity-physical-class { | identity hardware-class { | |||
description | description | |||
"This identity is the base for all physical entity class | "This identity is the base for all hardware class | |||
identifiers."; | identifiers."; | |||
} | } | |||
identity unknown { | identity unknown { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is unknown | |||
is unknown to the server."; | to the server."; | |||
} | } | |||
identity chassis { | identity chassis { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is an | |||
is an overall container for networking equipment. Any class | overall container for networking equipment. Any class of | |||
of physical entity, except a stack, may be contained within a | physical component, except a stack, may be contained within a | |||
chassis; a chassis may only be contained within a stack."; | chassis; a chassis may only be contained within a stack."; | |||
} | } | |||
identity backplane { | identity backplane { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of device for aggregating and forwarding | of device for aggregating and forwarding networking traffic, | |||
networking traffic, such as a shared backplane in a modular | such as a shared backplane in a modular ethernet switch. Note | |||
ethernet switch. Note that an implementation may model a | that an implementation may model a backplane as a single | |||
backplane as a single physical entity, which is actually | physical component, which is actually implemented as multiple | |||
implemented as multiple discrete physical components (within a | discrete physical components (within a chassis or stack)."; | |||
chassis or stack)."; | ||||
} | } | |||
identity container { | identity container { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is capable | |||
is capable of containing one or more removable physical | of containing one or more removable physical entities, | |||
entities, possibly of different types. For example, each | possibly of different types. For example, each (empty or | |||
(empty or full) slot in a chassis will be modeled as a | full) slot in a chassis will be modeled as a container. Note | |||
container. Note that all removable physical entities should | that all removable physical components should be modeled | |||
be modeled within a container entity, such as field- | within a container component, such as field-replaceable | |||
replaceable modules, fans, or power supplies. Note that all | modules, fans, or power supplies. Note that all known | |||
known containers should be modeled by the agent, including | containers should be modeled by the agent, including empty | |||
empty containers."; | containers."; | |||
} | } | |||
identity power-supply { | identity power-supply { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is a | |||
is a power-supplying component."; | power-supplying component."; | |||
} | } | |||
identity fan { | identity fan { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is a fan or | |||
is a fan or other heat-reduction component."; | other heat-reduction component."; | |||
} | } | |||
identity sensor { | identity sensor { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of sensor, such as a temperature sensor within a | of sensor, such as a temperature sensor within a router | |||
router chassis."; | chassis."; | |||
} | } | |||
identity module { | identity module { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of self-contained sub-system. If a 'module' | of self-contained sub-system. If a module component is | |||
entity is removable, then it should be modeled within a | removable, then it should be modeled within a container | |||
container entity; otherwise, it should be modeled directly | component; otherwise, it should be modeled directly within | |||
within another physical entity (e.g., a chassis or another | another physical component (e.g., a chassis or another | |||
module)."; | module)."; | |||
} | } | |||
identity port { | identity port { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of networking port, capable of receiving and/or | of networking port, capable of receiving and/or transmitting | |||
transmitting networking traffic."; | networking traffic."; | |||
} | } | |||
identity stack { | identity stack { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of super-container (possibly virtual) intended to | of super-container (possibly virtual) intended to group | |||
group together multiple chassis entities. A stack may be | together multiple chassis entities. A stack may be realized | |||
realized by a 'virtual' cable, a real interconnect cable | by a virtual cable, a real interconnect cable attached to | |||
attached to multiple chassis, or multiple interconnect cables. | multiple chassis, or multiple interconnect cables. A stack | |||
A stack should not be modeled within any other physical | should not be modeled within any other physical components, | |||
entities, but a stack may be contained within another stack. | but a stack may be contained within another stack. Only | |||
Only chassis entities should be contained within a stack."; | chassis components should be contained within a stack."; | |||
} | } | |||
identity cpu { | identity cpu { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of central processing unit."; | of central processing unit."; | |||
} | } | |||
identity energy-object { | identity energy-object { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of energy object, i.e., a piece of equipment that | of energy object, i.e., a piece of equipment that is part of | |||
is part of or attached to a communications network that is | or attached to a communications network that is monitored, | |||
monitored, controlled, or aids in the management of another | controlled, or aids in the management of another device for | |||
device for Energy Management."; | Energy Management."; | |||
} | } | |||
identity battery { | identity battery { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of battery."; | of battery."; | |||
} | } | |||
identity storage-drive { | identity storage-drive { | |||
base ianaent:entity-physical-class; | base ianahw:hardware-class; | |||
description | description | |||
"This identity is applicable if the physical entity class | "This identity is applicable if the hardware class is some sort | |||
is some sort of entity with data storage capability as main | of component with data storage capability as main | |||
functionality, e.g., disk drive (HDD), solid state device | functionality, e.g., disk drive (HDD), solid state device | |||
(SSD), hybrid (SSHD), object storage (OSD) or other."; | (SSD), hybrid (SSHD), object storage (OSD) or other."; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
8. IANA Considerations | 8. IANA Considerations | |||
This document registers a URI in the IETF XML registry [RFC3688]. | This document registers two URIs in the IETF XML registry [RFC3688]. | |||
Following the format in RFC 3688, the following registration is | Following the format in RFC 3688, the following registrations are | |||
requested to be made. | requested to be made. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-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. | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-hardware | ||||
Registrant Contact: The IESG. | ||||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
This document registers a YANG module in the YANG Module Names | This document registers two YANG modules in the YANG Module Names | |||
registry [RFC6020]. | registry [RFC6020]. | |||
name: iana-hardware | ||||
namespace: urn:ietf:params:xml:ns:yang:iana-hardware | ||||
prefix: ianahw | ||||
reference: RFC XXXX | ||||
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 XXXX | |||
9. Security Considerations | 9. Security Considerations | |||
TBD | The YANG module defined in this memo is designed to be accessed via | |||
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | ||||
secure transport layer, and the mandatory-to-implement secure | ||||
transport is Secure Shell (SSH) [RFC6242]. The NETCONF access | ||||
control model [RFC6536] provides the means to restrict access for | ||||
particular NETCONF users to a pre-configured subset of all available | ||||
NETCONF protocol operations and content. | ||||
10. Acknowledgements | There are a number of data nodes defined in this YANG module that are | |||
writable/creatable/deletable (i.e., config true, which is the | ||||
default). These data nodes may be considered sensitive or vulnerable | ||||
in some network environments. Write operations (e.g., edit-config) | ||||
to these data nodes without proper protection can have a negative | ||||
effect on network operations. These are the subtrees and data nodes | ||||
and their sensitivity/vulnerability: | ||||
TBD | /hardware/component/admin-state: Setting this node to 'locked' or | |||
'shutting-down' can cause disruption of services ranging from | ||||
those running on a port to those on an entire device, depending on | ||||
the type of component. | ||||
11. Normative References | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. It is thus | ||||
important to control read access (e.g., via get, get-config, or | ||||
notification) to these data nodes. These are the subtrees and data | ||||
nodes and their sensitivity/vulnerability: | ||||
[I-D.ietf-netmod-rfc6020bis] | /hardware-state/component: The leafs in this list expose information | |||
Bjorklund, M., "The YANG 1.1 Data Modeling Language", | about the physical components in a device, which may be used to | |||
draft-ietf-netmod-rfc6020bis-14 (work in progress), June | identify the vendor, model, version, and specific device- | |||
2016. | identification information of each system component. | |||
/hardware-state/component/sensor-data/value: This node may expose | ||||
the values of particular physical sensors in a device. | ||||
/hardware-state/component/state: Access to this node allows one to | ||||
figure out what the active and standby resources in a device are. | ||||
10. 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, Juergen Schoenwaelder. | ||||
11. Normative References | ||||
[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, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://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, | DOI 10.17487/RFC3433, December 2002, | |||
<http://www.rfc-editor.org/info/rfc3433>. | <http://www.rfc-editor.org/info/rfc3433>. | |||
skipping to change at page 36, line 5 ¶ | skipping to change at page 39, line 18 ¶ | |||
[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, | DOI 10.17487/RFC4268, November 2005, | |||
<http://www.rfc-editor.org/info/rfc4268>. | <http://www.rfc-editor.org/info/rfc4268>. | |||
[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, | DOI 10.17487/RFC6020, October 2010, | |||
<http://www.rfc-editor.org/info/rfc6020>. | <http://www.rfc-editor.org/info/rfc6020>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
and A. Bierman, Ed., "Network Configuration Protocol | ||||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
<http://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
<http://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, | ||||
<http://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, | DOI 10.17487/RFC6933, May 2013, | |||
<http://www.rfc-editor.org/info/rfc6933>. | <http://www.rfc-editor.org/info/rfc6933>. | |||
Appendix A. Open Issues | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | ||||
o Should the model support pre-configuration of hardware components? | <http://www.rfc-editor.org/info/rfc7950>. | |||
The current model supports pre-configuration of components | ||||
provided the operator knows the name of the component to be | ||||
installed. A more useful model would use the parent component, | ||||
class, and parent-rel-pos as identification. If the system | ||||
detects a component and there is configuration available for the | ||||
parent component, class, and parent-rel-pos then the system would | ||||
instatiate the component with the provided name, and optionally | ||||
additional parameters. | ||||
o Is there a need for a standard action 'reset' that can be used to | ||||
reset components? | ||||
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. 160 change blocks. | ||||
357 lines changed or deleted | 512 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |