draft-ietf-netmod-entity-02.txt   draft-ietf-netmod-entity-03.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: July 27, 2017 Tail-f Systems Expires: September 14, 2017 Tail-f Systems
J. Dong J. Dong
Huawei Technologies Huawei Technologies
D. Romascanu D. Romascanu
January 23, 2017 March 13, 2017
A YANG Data Model for Hardware Management A YANG Data Model for Hardware Management
draft-ietf-netmod-entity-02 draft-ietf-netmod-entity-03
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 July 27, 2017. This Internet-Draft will expire on September 14, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2017 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
skipping to change at page 2, line 20 skipping to change at page 2, line 20
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 . . . . . . . . . . . . . . 7 6. Relationship to ENTITY-STATE-MIB . . . . . . . . . . . . . . 7
7. Hardware YANG Module . . . . . . . . . . . . . . . . . . . . 7 7. Hardware YANG Module . . . . . . . . . . . . . . . . . . . . 7
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37
9. Security Considerations . . . . . . . . . . . . . . . . . . . 37 9. Security Considerations . . . . . . . . . . . . . . . . . . . 38
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 38 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 38
11. Normative References . . . . . . . . . . . . . . . . . . . . 38 11. Normative References . . . . . . . . . . . . . . . . . . . . 39
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 39 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40
1. Introduction 1. Introduction
This document defines a YANG [RFC7950] data model for the management This document defines a YANG [RFC7950] data model 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
skipping to change at page 4, line 21 skipping to change at page 4, line 21
| +--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 {hardware-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-state? alarm-state
| | +--ro standby-status? standby-status | | +--ro standby-state? standby-state
| +--ro sensor-data {hardware-sensor}? | +--ro sensor-data {hardware-sensor}?
| +--ro data-type? sensor-data-type | +--ro value? sensor-value
| +--ro data-scale? sensor-data-scale | +--ro value-type? sensor-value-type
| +--ro precision? sensor-precision | +--ro value-scale? sensor-value-scale
| +--ro value? sensor-value | +--ro value-precision? sensor-value-precision
| +--ro oper-status? sensor-status | +--ro oper-status? sensor-status
| +--ro sensor-units-display? string | +--ro units-display? string
| +--ro value-timestamp? yang:date-and-time | +--ro value-timestamp? yang:date-and-time
| +--ro value-update-rate? uint32 | +--ro value-update-rate? uint32
+--rw hardware {hardware-config}? +--rw hardware {hardware-config}?
+--rw component* [name] +--rw component* [name]
+--rw name string +--rw name string
+--rw class identityref +--rw class identityref
+--rw parent? string +--rw parent? -> /hardware-state/component/name
+--rw parent-rel-pos? int32 +--rw parent-rel-pos? int32
+--rw mfg-name? string +--rw mfg-name? string
+--rw serial-num? string +--rw serial-num? string
+--rw alias? string +--rw alias? string
+--rw asset-id? string +--rw asset-id? string
+--rw uri* inet:uri +--rw uri* inet:uri
+--rw admin-state? admin-state {hardware-state}? +--rw admin-state? admin-state {hardware-state}?
notifications: notifications:
+---n harwdare-state-change +---n hardware-state-change
+---n hardware-state-oper-enabled {hardware-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-state?
| -> /hardware-state/component/state/alarm-status | -> /hardware-state/component/state/alarm-state
+---n hardware-state-oper-disabled {hardware-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-state?
-> /hardware-state/component/state/alarm-status -> /hardware-state/component/state/alarm-state
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-hardware" module defines YANG identities for the hardware The "iana-hardware" module defines YANG identities for the hardware
types in the IANA-maintained "IANA-ENTITY-MIB" registry. types in the IANA-maintained "IANA-ENTITY-MIB" registry.
skipping to change at page 7, line 9 skipping to change at page 7, line 9
5. Relationship to ENTITY-SENSOR-MIB 5. Relationship to ENTITY-SENSOR-MIB
If the device implements the ENTITY-SENSOR-MIB [RFC3433], each entry If the device implements the ENTITY-SENSOR-MIB [RFC3433], each entry
the in "/hardware-state/component" list where the container the in "/hardware-state/component" list where the container
"sensor-data" exists is mapped to one EntPhySensorEntry. "sensor-data" exists is mapped to one EntPhySensorEntry.
+-------------------------------------+-----------------------------+ +-------------------------------------+-----------------------------+
| YANG data node in /hardware- | ENTITY-SENSOR-MIB object | | YANG data node in /hardware- | ENTITY-SENSOR-MIB object |
| state/component/sensor-data | | | state/component/sensor-data | |
+-------------------------------------+-----------------------------+ +-------------------------------------+-----------------------------+
| data-type | entPhySensorType |
| data-scale | entPhySensorScale |
| precision | entPhySensorPrecision |
| value | entPhySensorValue | | value | entPhySensorValue |
| value-type | entPhySensorType |
| value-scale | entPhySensorScale |
| value-precision | entPhySensorPrecision |
| oper-status | entPhySensorOperStatus | | oper-status | entPhySensorOperStatus |
| sensor-units-display | entPhySensorUnitsDisplay | | units-display | entPhySensorUnitsDisplay |
| value-timestamp | entPhySensorValueTimeStamp | | value-timestamp | entPhySensorValueTimeStamp |
| value-update-rate | entPhySensorValueUpdateRate | | value-update-rate | entPhySensorValueUpdateRate |
+-------------------------------------+-----------------------------+ +-------------------------------------+-----------------------------+
YANG data nodes and related ENTITY-SENSOR-MIB objects YANG data nodes and related ENTITY-SENSOR-MIB objects
6. Relationship to ENTITY-STATE-MIB 6. Relationship to ENTITY-STATE-MIB
If the device implements the ENTITY-STATE-MIB [RFC4268], each entry If the device implements the ENTITY-STATE-MIB [RFC4268], each entry
the in "/hardware-state/component" list where the container "state" the in "/hardware-state/component" list where the container "state"
exists is mapped to one EntStateEntry. exists is mapped to one EntStateEntry.
+--------------------------------------------+----------------------+ +--------------------------------------------+----------------------+
| YANG data node in /hardware- | ENTITY-STATE-MIB | | YANG data node in /hardware- | ENTITY-STATE-MIB |
| state/component/state | object | | state/component/state | object |
+--------------------------------------------+----------------------+ +--------------------------------------------+----------------------+
| state-last-changed | entStateLastChanged | | state-last-changed | entStateLastChanged |
| admin-state | entStateAdmin | | admin-state | entStateAdmin |
| oper-state | entStateOper | | oper-state | entStateOper |
| usage-state | entStateUsage | | usage-state | entStateUsage |
| alarm-status | entStateAlarm | | alarm-state | entStateAlarm |
| standby-status | entStateStandby | | standby-state | entStateStandby |
+--------------------------------------------+----------------------+ +--------------------------------------------+----------------------+
YANG data nodes and related ENTITY-SENSOR-MIB objects YANG data nodes and related ENTITY-SENSOR-MIB objects
7. Hardware YANG Module 7. Hardware YANG Module
<CODE BEGINS> file "ietf-hardware@2017-01-18.yang" <CODE BEGINS> file "ietf-hardware@2017-03-07.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 {
skipping to change at page 9, line 9 skipping to change at page 9, line 9
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 2017-01-18 { revision 2017-03-07 {
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 11, line 42 skipping to change at page 11, line 42
description description
"The resource is currently in use, but it currently has no "The resource is currently in use, but it currently has 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-state {
type bits { type bits {
bit unknown { bit unknown {
position 0; position 0;
description description
"The resource is unable to report alarm state."; "The resource is unable to report alarm state.";
} }
bit under-repair { bit under-repair {
position 1; position 1;
description description
"The resource is currently being repaired, which, depending "The resource is currently being repaired, which, depending
skipping to change at page 12, line 40 skipping to change at page 12, line 40
resource."; 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.";
} }
} }
description description
"Represents the possible values of alarm status. An alarm is a "Represents the possible values of alarm states. An alarm is a
persistent indication of an error or warning condition. persistent indication of an error or warning condition.
When no bits of this attribute are set, then no active alarms When no bits of this attribute are set, then no active alarms
are known against this component and it is not under repair."; are known against this component and it is not under repair.";
reference "RFC 4268: EntityAlarmStatus"; reference "RFC 4268: EntityAlarmStatus";
} }
typedef standby-status { typedef standby-state {
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
skipping to change at page 13, line 31 skipping to change at page 13, line 31
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 states.";
reference "RFC 4268: EntityStandbyStatus"; reference "RFC 4268: EntityStandbyStatus";
} }
typedef sensor-data-type { typedef sensor-value-type {
type enumeration { type enumeration {
enum other { enum other {
value 1; value 1;
description description
"A measure other than those listed below."; "A measure other than those listed below.";
} }
enum unknown { enum unknown {
value 2; value 2;
description description
"An unknown measurement, or arbitrary, relative numbers"; "An unknown measurement, or arbitrary, relative numbers";
skipping to change at page 15, line 6 skipping to change at page 15, line 6
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
"A node using this data type represents the sensor measurement "A node using this data type represents the sensor measurement
data type associated with a physical sensor value. The actual data type associated with a physical sensor value. The actual
data units are determined by examining a node of this type data units are determined by examining a node of this type
together with the associated sensor-data-scale node. together with the associated sensor-value-scale node.
A node of this type SHOULD be defined together with nodes of A node of this type SHOULD be defined together with nodes of
type sensor-data-scale and sensor-precision. These three types type sensor-value-scale and sensor-value-precision. These
are used to identify the semantics of a node of type three types are used to identify the semantics of a node of
sensor-value."; type sensor-value.";
reference "RFC 3433: EntitySensorDataType"; reference "RFC 3433: EntitySensorDataType";
} }
typedef sensor-data-scale { typedef sensor-value-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.";
} }
enum zepto { enum zepto {
value 2; value 2;
description description
"Data scaling factor of 10^-21."; "Data scaling factor of 10^-21.";
skipping to change at page 17, line 11 skipping to change at page 17, line 11
enum yotta { enum yotta {
value 17; value 17;
description description
"Data scaling factor of 10^24."; "Data scaling factor of 10^24.";
} }
} }
description description
"A node using this data type represents a data scaling factor, "A node using this data type represents a data scaling factor,
represented with an International System of Units (SI) prefix. represented with an International System of Units (SI) prefix.
The actual data units are determined by examining a node of The actual data units are determined by examining a node of
this type together with the associated sensor-data-type. this type together with the associated sensor-value-type.
A node of this type SHOULD be defined together with nodes of A node of this type SHOULD be defined together with nodes of
type sensor-data-type and sensor-precision. Together, type sensor-value-type and sensor-value-precision. Together,
associated nodes of these three types are used to identify the associated nodes of these three types are used to identify the
semantics of a node of type sensor-value."; semantics of a node of type sensor-value.";
reference "RFC 3433: EntitySensorDataScale"; reference "RFC 3433: EntitySensorDataScale";
} }
typedef sensor-precision { typedef sensor-value-precision {
type int32 { type int32 {
range "-8 .. 9"; range "-8 .. 9";
} }
description description
"A node using this data type represents a sensor precision "A node using this data type represents a sensor value
range. precision range.
A node of this type SHOULD be defined together with nodes of A node of this type SHOULD be defined together with nodes of
type sensor-data-type and sensor-data-scale. Together, type sensor-value-type and sensor-value-scale. Together,
associated nodes of these three types are used to identify the associated nodes of these three types are used to identify the
semantics of a node of type sensor-value. semantics of a node of type sensor-value.
If a node of this type contains a value in the range 1 to 9, If a node of this type contains a value in the range 1 to 9,
it represents the number of decimal places in the fractional it represents the number of decimal places in the fractional
part of an associated sensor-value fixed- point number. part of an associated sensor-value fixed- point number.
If a node of this type contains a value in the range -8 to -1, If a node of this type contains a value in the range -8 to -1,
it represents the number of accurate digits in the associated it represents the number of accurate digits in the associated
sensor-value fixed-point number. sensor-value fixed-point number.
The value zero indicates the associated sensor-value node is The value zero indicates the associated sensor-value node is
not a fixed-point number. not a fixed-point number.
Server implementers must choose a value for the associated Server implementers must choose a value for the associated
sensor-precision node so that the precision and accuracy of sensor-value-precision node so that the precision and accuracy
the associated sensor-value node is correctly indicated. of the associated sensor-value node is correctly indicated.
For example, a component representing a temperature sensor For example, a component representing a temperature sensor
that can measure 0 degrees to 100 degrees C in 0.1 degree that can measure 0 degrees to 100 degrees C in 0.1 degree
increments, +/- 0.05 degrees, would have an sensor-precision increments, +/- 0.05 degrees, would have an
value of '1', an sensor-data-scale value of 'units', and an sensor-value-precision value of '1', an sensor-value-scale
sensor-value ranging from '0' to '1000'. The sensor-value value of 'units', and an sensor-value ranging from '0' to
would be interpreted as 'degrees C * 10'."; '1000'. The 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
"A node using this data type represents an sensor value. "A node using this data type represents an sensor value.
A node of this type SHOULD be defined together with nodes of A node of this type SHOULD be defined together with nodes of
type sensor-data-type, sensor-data-scale, and sensor-precision. type sensor-value-type, sensor-value-scale, and
Together, associated nodes of those three types are used to sensor-value-precision. Together, associated nodes of those
identify the semantics of a node of this data type. three types are used to identify the semantics of a node of
this data type.
The semantics of a node using this data type are determined by The semantics of a node using this data type are determined by
the value of the associated sensor-data-type node. the value of the associated sensor-value-type node.
If the associated sensor-data-type node is equal to 'voltsAC', If the associated sensor-value-type node is equal to 'voltsAC',
'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm', 'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm',
then a node of this type MUST contain a fixed point number then a node of this type MUST contain a fixed point number
ranging from -999,999,999 to +999,999,999. The value ranging from -999,999,999 to +999,999,999. The value
-1000000000 indicates an underflow error. The value +1000000000 -1000000000 indicates an underflow error. The value +1000000000
indicates an overflow error. The sensor-precision indicates indicates an overflow error. The sensor-value-precision
how many fractional digits are represented in the associated indicates how many fractional digits are represented in the
sensor-value node. associated sensor-value node.
If the associated sensor-data-type node is equal to If the associated sensor-value-type node is equal to
'percentRH', then a node of this type MUST contain a number 'percentRH', then a node of this type MUST contain a number
ranging from 0 to 100. ranging from 0 to 100.
If the associated sensor-data-type node is equal to 'rpm', then If the associated sensor-value-type node is equal to 'rpm',
a node of this type MUST contain a number ranging from then a node of this type MUST contain a number 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-value-type node is equal to
'truth-value', then a node of this type MUST contain either the 'truth-value', then a node of this type MUST contain 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 'other' or If the associated sensor-value-type node is equal to 'other' or
unknown', then a node of this type MUST contain a number unknown', then a node of this type MUST 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.";
} }
enum unavailable { enum unavailable {
value 2; value 2;
description description
skipping to change at page 25, line 30 skipping to change at page 25, line 30
container state { container state {
if-feature hardware-state; if-feature hardware-state;
description description
"State-related nodes"; "State-related nodes";
reference "RFC 4268: Entity State MIB"; reference "RFC 4268: Entity State MIB";
leaf state-last-changed { leaf state-last-changed {
type yang:date-and-time; type yang:date-and-time;
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-state, or
standby-status changed for this component. standby-state changed for this component.
If there has been no change since the last If there has been no change since the last
re-initialization of the local system, this node re-initialization of the local system, this node
contains the date and time of local system contains the date and time of local system
initialization. If there has been no change since the initialization. If there has been no change since the
component was added to the local system, this node component was added to the local system, this node
contains the date and time of the insertion."; contains the date and time of the insertion.";
reference "RFC 4268: entStateLastChanged"; reference "RFC 4268: entStateLastChanged";
} }
skipping to change at page 26, line 48 skipping to change at page 26, line 48
Some components will exhibit only a subset of the usage Some components will exhibit only a subset of the usage
state values. Components that are unable to ever state values. Components that are unable to ever
service any components within a containment hierarchy service any components within a containment hierarchy
will always have a usage state of 'busy'. Some will always have a usage state of 'busy'. Some
components will only ever be able to support one components will only ever be able to support one
component within its containment hierarchy and will component within its containment hierarchy and will
therefore only exhibit 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-state {
type alarm-status; type alarm-state;
description description
"The alarm status for this component. It does not "The alarm state for this component. It does not
include the alarms raised on child components within its include the alarms raised on child components within its
containment hierarchy."; containment hierarchy.";
reference "RFC 4268: entStateAlarm"; reference "RFC 4268: entStateAlarm";
} }
leaf standby-status { leaf standby-state {
type standby-status; type standby-state;
description description
"The standby status for this component. "The standby state for this component.
Some components will exhibit only a subset of the Some components will exhibit only a subset of the
remaining standby state values. If this component remaining standby state values. If this component
cannot operate in a standby role, the value of this node cannot operate in a standby role, the value of this node
will always be 'providing-service'."; will always be 'providing-service'.";
reference "RFC 4268: entStateStandby"; reference "RFC 4268: entStateStandby";
} }
} }
container sensor-data { container sensor-data {
skipping to change at page 27, line 33 skipping to change at page 27, line 33
"ianahw:sensor")' { "ianahw:sensor")' {
description description
"Sensor data nodes present for any component of type "Sensor data nodes present for any component of type
'sensor'"; 'sensor'";
} }
if-feature hardware-sensor; if-feature hardware-sensor;
description description
"Sensor-related nodes."; "Sensor-related nodes.";
reference "RFC 3433: Entity Sensor MIB"; reference "RFC 3433: Entity Sensor MIB";
leaf data-type { leaf value {
type sensor-data-type; type sensor-value;
description
"The most recent measurement obtained by the server
for this sensor.
A client that periodically fetches this node should also
fetch the nodes 'value-type', 'value-scale', and
'value-precision', since they may change when the value
is changed.";
reference "RFC 3433: entPhySensorValue";
}
leaf value-type {
type sensor-value-type;
description description
"The type of data units associated with the "The type of data units associated with the
sensor value"; sensor value";
reference "RFC 3433: entPhySensorType"; reference "RFC 3433: entPhySensorType";
} }
leaf data-scale { leaf value-scale {
type sensor-data-scale; type sensor-value-scale;
description description
"The (power of 10) scaling factor associated "The (power of 10) scaling factor associated
with the sensor value"; with the sensor value";
reference "RFC 3433: entPhySensorScale"; reference "RFC 3433: entPhySensorScale";
} }
leaf precision { leaf value-precision {
type sensor-precision; type sensor-value-precision;
description description
"The number of decimal places of precision "The number of decimal places of precision
associated with the sensor value"; associated with the sensor value";
reference "RFC 3433: entPhySensorPrecision"; reference "RFC 3433: entPhySensorPrecision";
} }
leaf value {
type sensor-value;
description
"The most recent measurement obtained by the server
for this sensor.";
reference "RFC 3433: entPhySensorValue";
}
leaf oper-status { leaf oper-status {
type sensor-status; type sensor-status;
description description
"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 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
skipping to change at page 29, line 48 skipping to change at page 29, line 52
base ianahw:hardware-class; base ianahw:hardware-class;
} }
mandatory true; mandatory true;
description description
"An indication of the general hardware type of the "An indication of the general hardware type of the
component."; component.";
reference "RFC 6933: entPhysicalClass"; reference "RFC 6933: entPhysicalClass";
} }
leaf parent { leaf parent {
type string; type leafref {
path "/hardware-state/component/name";
require-instance false;
}
description description
"The name of the component that contains this component."; "The name of the component that contains this component.";
reference "RFC 6933: entPhysicalContainedIn"; 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 same components are defined as components that share the same
instance values of each of the 'parent' and 'class' instance values of each of the 'parent' and 'class'
nodes."; nodes.";
skipping to change at page 32, line 5 skipping to change at page 32, line 14
state."; state.";
reference "RFC 4268, entStateAdmin"; reference "RFC 4268, entStateAdmin";
} }
} }
} }
/* /*
* Notifications * Notifications
*/ */
notification harwdare-state-change { notification hardware-state-change {
description description
"A hardware-state-change notification is generated when the "A hardware-state-change notification is generated when the
value of /hardware-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 hardware-state; if-feature hardware-state;
description description
"A hardware-state-oper-enabled notification signifies that a "A hardware-state-oper-enabled notification signifies that a
skipping to change at page 32, line 33 skipping to change at page 32, line 42
"The name of the component that has transitioned into the "The name of the component that has transitioned into the
'enabled' state."; 'enabled' state.";
} }
leaf admin-state { leaf admin-state {
type leafref { type leafref {
path "/hardware-state/component/state/admin-state"; path "/hardware-state/component/state/admin-state";
} }
description description
"The administrative state for the component."; "The administrative state for the component.";
} }
leaf alarm-status { leaf alarm-state {
type leafref { type leafref {
path "/hardware-state/component/state/alarm-status"; path "/hardware-state/component/state/alarm-state";
} }
description description
"The alarm status for the component."; "The alarm state for the component.";
} }
reference "RFC 4268, entStateOperEnabled"; reference "RFC 4268, entStateOperEnabled";
} }
notification hardware-state-oper-disabled { notification hardware-state-oper-disabled {
if-feature hardware-state; if-feature hardware-state;
description description
"A hardware-state-oper-disabled notification signifies that a "A hardware-state-oper-disabled notification signifies that a
component has transitioned into the 'disabled' state."; component has transitioned into the 'disabled' state.";
leaf name { leaf name {
type leafref { type leafref {
path "/hardware-state/component/name"; path "/hardware-state/component/name";
} }
skipping to change at page 33, line 15 skipping to change at page 33, line 25
"The name of the component that has transitioned into the "The name of the component that has transitioned into the
'disabled' state."; 'disabled' state.";
} }
leaf admin-state { leaf admin-state {
type leafref { type leafref {
path "/hardware-state/component/state/admin-state"; path "/hardware-state/component/state/admin-state";
} }
description description
"The administrative state for the component."; "The administrative state for the component.";
} }
leaf alarm-status { leaf alarm-state {
type leafref { type leafref {
path "/hardware-state/component/state/alarm-status"; path "/hardware-state/component/state/alarm-state";
} }
description description
"The alarm status for the component."; "The alarm state for the component.";
} }
reference "RFC 4268, entStateOperDisabled"; reference "RFC 4268, entStateOperDisabled";
} }
} }
<CODE ENDS> <CODE ENDS>
<CODE BEGINS> file "iana-hardware@2017-01-18.yang" <CODE BEGINS> file "iana-hardware@2017-03-07.yang"
module iana-hardware { module iana-hardware {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:iana-hardware"; namespace "urn:ietf:params:xml:ns:yang:iana-hardware";
prefix ianahw; prefix ianahw;
organization "IANA"; organization "IANA";
contact contact
" Internet Assigned Numbers Authority " Internet Assigned Numbers Authority
Postal: ICANN Postal: ICANN
4676 Admiralty Way, Suite 330 4676 Admiralty Way, Suite 330
Marina del Rey, CA 90292 Marina del Rey, CA 90292
skipping to change at page 34, line 10 skipping to change at page 34, line 19
description description
"IANA defined identities for hardware 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 2017-01-18 { revision 2017-03-07 {
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
*/ */
 End of changes. 68 change blocks. 
103 lines changed or deleted 114 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/