draft-ietf-netmod-entity-06.txt | draft-ietf-netmod-entity-07.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: June 21, 2018 Tail-f Systems | Expires: June 24, 2018 Tail-f Systems | |||
J. Dong | J. Dong | |||
Huawei Technologies | Huawei Technologies | |||
D. Romascanu | D. Romascanu | |||
December 18, 2017 | ||||
December 21, 2017 | ||||
A YANG Data Model for Hardware Management | A YANG Data Model for Hardware Management | |||
draft-ietf-netmod-entity-06 | draft-ietf-netmod-entity-07 | |||
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 36 ¶ | |||
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 June 21, 2018. | This Internet-Draft will expire on June 24, 2018. | |||
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 29 ¶ | skipping to change at page 2, line 29 ¶ | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 | |||
8.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 35 | 8.1. URI Registrations . . . . . . . . . . . . . . . . . . . . 35 | |||
8.2. YANG Module Registrations . . . . . . . . . . . . . . . . 35 | 8.2. YANG Module Registrations . . . . . . . . . . . . . . . . 35 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 36 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 36 | |||
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 37 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 37 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 37 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 38 | 11.2. Informative References . . . . . . . . . . . . . . . . . 38 | |||
Appendix A. Hardware State Data Model . . . . . . . . . . . . . 39 | Appendix A. Hardware State Data Model . . . . . . . . . . . . . 39 | |||
A.1. Hardware State YANG Module . . . . . . . . . . . . . . . 40 | A.1. Hardware State YANG Module . . . . . . . . . . . . . . . 40 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 55 | |||
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 and system state (status | The data model includes configuration and system state (status | |||
information and counters for the collection of statistics). | information and counters for the collection of statistics). | |||
The data model in this document is designed to be compliant with the | The data model in this document is designed to be compliant with the | |||
skipping to change at page 3, line 37 ¶ | skipping to change at page 3, line 37 ¶ | |||
This section describes some of the design objectives for the hardware | This section describes some of the design objectives for the hardware | |||
model. | model. | |||
o There are many common properties used to identify hardware | o There are many common properties used to identify hardware | |||
components, which need to be supported in the hardware data model. | components, which need to be supported in the hardware data model. | |||
o There are many important information and states about the | o There are many important information and states about the | |||
components, which needs to be collected from the devices which | components, which needs to be collected from the devices which | |||
support the hardware data model. | support the hardware data model. | |||
o The hardware data model SHOULD be suitable for new implementations | o The hardware data model should be suitable for new implementations | |||
to use as is. | to use as is. | |||
o The hardware data model defined in this document can be | o The hardware data model defined in this document can be | |||
implemented on a system that also implements ENTITY-MIB, thus the | implemented on a system that also implements ENTITY-MIB, thus the | |||
mapping between the hardware data model and ENTITY-MIB SHOULD be | mapping between the hardware data model and ENTITY-MIB should be | |||
clear. | clear. | |||
o The data model should support pre-provisioning of hardware | o The data model should support pre-provisioning of hardware | |||
components. | components. | |||
3. Hardware Data Model | 3. Hardware Data Model | |||
This document defines the YANG module "ietf-hardware", which has the | This document defines the YANG module "ietf-hardware", which has the | |||
following structure: | following structure: | |||
skipping to change at page 4, line 19 ¶ | skipping to change at page 4, line 19 ¶ | |||
+--rw name string | +--rw name string | |||
+--rw class identityref | +--rw class identityref | |||
+--ro physical-index? int32 {entity-mib}? | +--ro physical-index? int32 {entity-mib}? | |||
+--ro description? string | +--ro description? string | |||
+--rw parent? -> ../../component/name | +--rw parent? -> ../../component/name | |||
+--rw parent-rel-pos? int32 | +--rw parent-rel-pos? int32 | |||
+--ro contains-child* -> ../../component/name | +--ro contains-child* -> ../../component/name | |||
+--ro hardware-rev? string | +--ro hardware-rev? string | |||
+--ro firmware-rev? string | +--ro firmware-rev? string | |||
+--ro software-rev? string | +--ro software-rev? string | |||
+--ro serial-num? string | +--rw serial-num? string | |||
+--rw mfg-name? string | +--rw mfg-name? string | |||
+--ro model-name? string | +--rw model-name? string | |||
+--rw alias? string | +--rw alias? string | |||
+--rw asset-id? string | +--rw asset-id? string | |||
+--ro is-fru? boolean | +--ro is-fru? boolean | |||
+--ro mfg-date? yang:date-and-time | +--ro mfg-date? yang:date-and-time | |||
+--rw uri* inet:uri | +--rw uri* inet:uri | |||
+--ro uuid? yang:uuid | +--ro uuid? yang:uuid | |||
+--rw state {hardware-state}? | +--rw state {hardware-state}? | |||
| +--ro state-last-changed? yang:date-and-time | | +--ro state-last-changed? yang:date-and-time | |||
| +--rw admin-state? admin-state | | +--rw admin-state? admin-state | |||
| +--ro oper-state? oper-state | | +--ro oper-state? oper-state | |||
skipping to change at page 20, line 16 ¶ | skipping to change at page 20, line 16 ¶ | |||
If the server does not support configuration of hardware | If the server does not support configuration of hardware | |||
components, list entries in the operational state are | components, list entries in the operational state are | |||
initialized with values for all nodes as detected by the | initialized with values for all nodes as detected by the | |||
implementation. | implementation. | |||
Otherwise, the following procedure is followed: | Otherwise, the following procedure is followed: | |||
1. If there is an entry in the /hardware/component list in | 1. If there is an entry in the /hardware/component list in | |||
the intended configuration with values for the nodes | the intended configuration with values for the nodes | |||
'class', 'parent', 'parent-rel-pos' that are equal to | 'class', 'parent', 'parent-rel-pos' that are equal to | |||
the detected values, then: | the detected values, then the list entry in operational | |||
state is initialized with the configured values, | ||||
1a. If the configured entry has a value for 'mfg-name' | including the 'name'. The leafs 'serial-num', | |||
that is equal to the detected value, or if the | 'mfg-name', and 'model-name' are treated specially; see | |||
'mfg-name' value cannot be detected, then the list | their descriptions for details. | |||
entry in the operational state is initialized with the | ||||
configured values for all configured nodes, including | ||||
the 'name'. | ||||
Otherwise, the list entry in the operational state 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 | 2. Otherwise (i.e., there is no matching configuration | |||
entry), the list entry in the operational state is | entry), the list entry in the operational state is | |||
initialized with values for all nodes as detected by | initialized with values for all nodes as detected by | |||
the implementation. | the implementation. | |||
If the /hardware/component list in the intended | If the /hardware/component list in the intended | |||
configuration is modified, then the system MUST behave as if | configuration is modified, then the system MUST behave as if | |||
it re-initializes itself, and follow the procedure in (1)."; | it re-initializes itself, and follow the procedure in (1)."; | |||
reference "RFC 6933: entPhysicalEntry"; | reference "RFC 6933: entPhysicalEntry"; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name assigned to this component. | "The name assigned to this component. | |||
skipping to change at page 23, line 27 ¶ | skipping to change at page 23, line 15 ¶ | |||
type string; | type string; | |||
config false; | config false; | |||
description | description | |||
"The vendor-specific software revision string for the | "The vendor-specific software revision string for the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalSoftwareRev"; | reference "RFC 6933: entPhysicalSoftwareRev"; | |||
} | } | |||
leaf serial-num { | leaf serial-num { | |||
type string; | type string; | |||
config false; | ||||
description | description | |||
"The vendor-specific serial number string for the | "The vendor-specific serial number string for the | |||
component. The preferred value is the serial number | component. The preferred value is the serial number | |||
string actually printed on the component itself (if | string actually printed on the component itself (if | |||
present)."; | present). | |||
This leaf can be configured. The configured value is used | ||||
only if the server cannot determine the vendor-specific | ||||
serial number from the component itself."; | ||||
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 value of | only meaningful amongst component with the same 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 is not instantiated."; | node is not instantiated. | |||
This leaf can be configured. The configured value is used | ||||
only if the server cannot determine the vendor-specific | ||||
serial number from the component itself."; | ||||
reference "RFC 6933: entPhysicalMfgName"; | reference "RFC 6933: entPhysicalMfgName"; | |||
} | } | |||
leaf model-name { | leaf model-name { | |||
type string; | type string; | |||
config false; | ||||
description | description | |||
"The vendor-specific model name identifier string | "The vendor-specific model name identifier string | |||
associated with this physical component. The preferred | associated with this physical component. The preferred | |||
value is the customer-visible part number, which may be | value is the customer-visible part number, which may be | |||
printed on the component itself. | printed on the component itself. | |||
If the model name string associated with the physical | If the model name string associated with the physical | |||
component is unknown to the server, then this node is not | component is unknown to the server, then this node is not | |||
instantiated."; | instantiated. | |||
This leaf can be configured. The configured value is used | ||||
only if the server cannot determine the vendor-specific | ||||
serial number from the component itself."; | ||||
reference "RFC 6933: entPhysicalModelName"; | reference "RFC 6933: entPhysicalModelName"; | |||
} | } | |||
leaf alias { | leaf alias { | |||
type string; | type string; | |||
description | description | |||
"An 'alias' name for the component, as specified by a | "An 'alias' name for the component, as specified by a | |||
network manager, and provides a non-volatile 'handle' for | network manager, and provides a non-volatile 'handle' for | |||
the component. | the component. | |||
skipping to change at page 36, line 22 ¶ | skipping to change at page 36, line 22 ¶ | |||
prefix: hw | prefix: hw | |||
reference: RFC XXXX | reference: RFC XXXX | |||
name: ietf-hardware-state | name: ietf-hardware-state | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-hardware-state | namespace: urn:ietf:params:xml:ns:yang:ietf-hardware-state | |||
prefix: hw-state | prefix: hw-state | |||
reference: RFC XXXX | reference: RFC XXXX | |||
9. Security Considerations | 9. Security Considerations | |||
The YANG modules defined in this document are designed to be accessed | The YANG modules specified in this document define a schema for data | |||
via network management protocols such as NETCONF [RFC6241] or | that is designed to be accessed via network management protocols such | |||
RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
layer, and the mandatory-to-implement secure transport is Secure | is the secure transport layer, and the mandatory-to-implement secure | |||
Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
mandatory-to-implement secure transport is TLS [RFC5246]. | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | ||||
The NETCONF access control model [RFC6536] provides the means to | The NETCONF access control model [RFC6536] provides the means to | |||
restrict access for particular NETCONF or RESTCONF users to a | restrict access for particular NETCONF or RESTCONF users to a | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
There are a number of data nodes defined in the YANG module | There are a number of data nodes defined in the YANG module | |||
"ietf-hardware" that are writable/creatable/deletable (i.e., config | "ietf-hardware" that are writable/creatable/deletable (i.e., config | |||
true, which is the default). These data nodes may be considered | true, which is the default). These data nodes may be considered | |||
sensitive or vulnerable in some network environments. Write | sensitive or vulnerable in some network environments. Write | |||
skipping to change at page 37, line 29 ¶ | skipping to change at page 37, line 29 ¶ | |||
helpful comments on various draft versions of this document: Bart | helpful comments on various draft versions of this document: Bart | |||
Bogaert, Timothy Carey, William Lupton, Juergen Schoenwaelder. | Bogaert, Timothy Carey, William Lupton, Juergen Schoenwaelder. | |||
11. References | 11. References | |||
11.1. Normative References | 11.1. Normative References | |||
[I-D.ietf-netmod-revised-datastores] | [I-D.ietf-netmod-revised-datastores] | |||
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
and R. Wilton, "Network Management Datastore | and R. Wilton, "Network Management Datastore | |||
Architecture", draft-ietf-netmod-revised-datastores-07 | Architecture", draft-ietf-netmod-revised-datastores-08 | |||
(work in progress), November 2017. | (work in progress), December 2017. | |||
[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/ | |||
DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | RFC2119, March 1997, <https://www.rfc-editor.org/info/ | |||
editor.org/info/rfc2119>. | 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/ | |||
DOI 10.17487/RFC3433, December 2002, <https://www.rfc- | RFC3433, December 2002, <https://www.rfc-editor.org/info/ | |||
editor.org/info/rfc3433>. | rfc3433>. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | |||
editor.org/info/rfc3688>. | editor.org/info/rfc3688>. | |||
[RFC4268] Chisholm, S. and D. Perkins, "Entity State MIB", RFC 4268, | [RFC4268] Chisholm, S. and D. Perkins, "Entity State MIB", RFC 4268, | |||
DOI 10.17487/RFC4268, November 2005, <https://www.rfc- | DOI 10.17487/RFC4268, November 2005, <https://www.rfc- | |||
editor.org/info/rfc4268>. | editor.org/info/rfc4268>. | |||
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
(TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/ | |||
DOI 10.17487/RFC5246, August 2008, <https://www.rfc- | RFC5246, August 2008, <https://www.rfc-editor.org/info/ | |||
editor.org/info/rfc5246>. | rfc5246>. | |||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
DOI 10.17487/RFC6020, October 2010, <https://www.rfc- | DOI 10.17487/RFC6020, October 2010, <https://www.rfc- | |||
editor.org/info/rfc6020>. | editor.org/info/rfc6020>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6241>. | <https://www.rfc-editor.org/info/rfc6241>. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<https://www.rfc-editor.org/info/rfc6242>. | <https://www.rfc-editor.org/info/rfc6242>. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, DOI | |||
DOI 10.17487/RFC6536, March 2012, <https://www.rfc- | 10.17487/RFC6536, March 2012, <https://www.rfc- | |||
editor.org/info/rfc6536>. | 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 | |||
DOI 10.17487/RFC6933, May 2013, <https://www.rfc- | 10.17487/RFC6933, May 2013, <https://www.rfc- | |||
editor.org/info/rfc6933>. | editor.org/info/rfc6933>. | |||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
<https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
11.2. Informative References | 11.2. Informative References | |||
[I-D.ietf-netmod-yang-tree-diagrams] | [I-D.ietf-netmod-yang-tree-diagrams] | |||
Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- | Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- | |||
ietf-netmod-yang-tree-diagrams-02 (work in progress), | ietf-netmod-yang-tree-diagrams-03 (work in progress), | |||
October 2017. | December 2017. | |||
Appendix A. Hardware State Data Model | Appendix A. Hardware State Data Model | |||
This non-normative appendix contains a data model designed as a | This non-normative appendix contains a data model designed as a | |||
temporary solution for implementations that do not yet support the | temporary solution for implementations that do not yet support the | |||
Network Management Datastore Architecture (NMDA) defined in | Network Management Datastore Architecture (NMDA) defined in | |||
[I-D.ietf-netmod-revised-datastores]. It has the following | [I-D.ietf-netmod-revised-datastores]. It has the following | |||
structure: | structure: | |||
module: ietf-hardware-state | module: ietf-hardware-state | |||
+--ro hardware | x--ro hardware | |||
+--ro last-change? yang:date-and-time | x--ro last-change? yang:date-and-time | |||
+--ro component* [name] | x--ro component* [name] | |||
+--ro name string | x--ro name string | |||
+--ro class identityref | x--ro class identityref | |||
+--ro physical-index? int32 {entity-mib}? | x--ro physical-index? int32 {entity-mib}? | |||
+--ro description? string | x--ro description? string | |||
+--ro parent? -> ../../component/name | x--ro parent? -> ../../component/name | |||
+--ro parent-rel-pos? int32 | x--ro parent-rel-pos? int32 | |||
+--ro contains-child* -> ../../component/name | x--ro contains-child* -> ../../component/name | |||
+--ro hardware-rev? string | x--ro hardware-rev? string | |||
+--ro firmware-rev? string | x--ro firmware-rev? string | |||
+--ro software-rev? string | x--ro software-rev? string | |||
+--ro serial-num? string | x--ro serial-num? string | |||
+--ro mfg-name? string | x--ro mfg-name? string | |||
+--ro model-name? string | x--ro model-name? string | |||
+--ro alias? string | x--ro alias? string | |||
+--ro asset-id? string | x--ro asset-id? string | |||
+--ro is-fru? boolean | x--ro is-fru? boolean | |||
+--ro mfg-date? yang:date-and-time | x--ro mfg-date? yang:date-and-time | |||
+--ro uri* inet:uri | x--ro uri* inet:uri | |||
+--ro uuid? yang:uuid | x--ro uuid? yang:uuid | |||
+--ro state {hardware-state}? | x--ro state {hardware-state}? | |||
| +--ro state-last-changed? yang:date-and-time | | x--ro state-last-changed? yang:date-and-time | |||
| +--ro admin-state? hw:admin-state | | x--ro admin-state? hw:admin-state | |||
| +--ro oper-state? hw:oper-state | | x--ro oper-state? hw:oper-state | |||
| +--ro usage-state? hw:usage-state | | x--ro usage-state? hw:usage-state | |||
| +--ro alarm-state? hw:alarm-state | | x--ro alarm-state? hw:alarm-state | |||
| +--ro standby-state? hw:standby-state | | x--ro standby-state? hw:standby-state | |||
+--ro sensor-data {hardware-sensor}? | x--ro sensor-data {hardware-sensor}? | |||
+--ro value? hw:sensor-value | x--ro value? hw:sensor-value | |||
+--ro value-type? hw:sensor-value-type | x--ro value-type? hw:sensor-value-type | |||
+--ro value-scale? hw:sensor-value-scale | x--ro value-scale? hw:sensor-value-scale | |||
+--ro value-precision? hw:sensor-value-precision | x--ro value-precision? hw:sensor-value-precision | |||
+--ro oper-status? hw:sensor-status | x--ro oper-status? hw:sensor-status | |||
+--ro units-display? string | x--ro units-display? string | |||
+--ro value-timestamp? yang:date-and-time | x--ro value-timestamp? yang:date-and-time | |||
+--ro value-update-rate? uint32 | x--ro value-update-rate? uint32 | |||
notifications: | notifications: | |||
+---n hardware-state-change | x---n hardware-state-change | |||
+---n hardware-state-oper-enabled {hardware-state}? | x---n hardware-state-oper-enabled {hardware-state}? | |||
| +--ro name? -> /hardware/component/name | | x--ro name? -> /hardware/component/name | |||
| +--ro admin-state? -> /hardware/component/state/admin-state | | x--ro admin-state? -> /hardware/component/state/admin-state | |||
| +--ro alarm-state? -> /hardware/component/state/alarm-state | | x--ro alarm-state? -> /hardware/component/state/alarm-state | |||
+---n hardware-state-oper-disabled {hardware-state}? | x---n hardware-state-oper-disabled {hardware-state}? | |||
+--ro name? -> /hardware/component/name | x--ro name? -> /hardware/component/name | |||
+--ro admin-state? -> /hardware/component/state/admin-state | x--ro admin-state? -> /hardware/component/state/admin-state | |||
+--ro alarm-state? -> /hardware/component/state/alarm-state | x--ro alarm-state? -> /hardware/component/state/alarm-state | |||
A.1. Hardware State YANG Module | A.1. Hardware State YANG Module | |||
<CODE BEGINS> file "ietf-hardware-state@2017-12-18.yang" | <CODE BEGINS> file "ietf-hardware-state@2017-12-18.yang" | |||
module ietf-hardware-state { | module ietf-hardware-state { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-hardware-state"; | namespace "urn:ietf:params:xml:ns:yang:ietf-hardware-state"; | |||
prefix hw-state; | prefix hw-state; | |||
skipping to change at page 42, line 9 ¶ | skipping to change at page 42, line 9 ¶ | |||
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 | |||
*/ | */ | |||
feature entity-mib { | feature entity-mib { | |||
status deprecated; | ||||
description | description | |||
"This feature indicates that the device implements | "This feature indicates that the device implements | |||
the ENTITY-MIB."; | the ENTITY-MIB."; | |||
reference "RFC 6933: Entity MIB (Version 4)"; | reference "RFC 6933: Entity MIB (Version 4)"; | |||
} | } | |||
feature hardware-state { | feature hardware-state { | |||
status deprecated; | ||||
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 hardware-sensor { | feature hardware-sensor { | |||
status deprecated; | ||||
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"; | |||
} | } | |||
/* | /* | |||
* Data nodes | * Data nodes | |||
*/ | */ | |||
container hardware { | container hardware { | |||
config false; | config false; | |||
status deprecated; | ||||
description | description | |||
"Data nodes representing components."; | "Data nodes representing components."; | |||
leaf last-change { | leaf last-change { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
status deprecated; | ||||
description | description | |||
"The time the '/hardware/component' list changed in the | "The time the '/hardware/component' list changed in the | |||
operational state."; | operational state."; | |||
} | } | |||
list component { | list component { | |||
key name; | key name; | |||
status deprecated; | ||||
description | description | |||
"List of components. | "List of components. | |||
When the server detects a new hardware component, it | When the server detects a new hardware component, it | |||
initializes a list entry in the operational state. | initializes a list entry in the operational state. | |||
If the server does not support configuration of hardware | If the server does not support configuration of hardware | |||
components, list entries in the operational state are | components, list entries in the operational state are | |||
initialized with values for all nodes as detected by the | initialized with values for all nodes as detected by the | |||
implementation. | implementation. | |||
skipping to change at page 43, line 41 ¶ | skipping to change at page 43, line 47 ¶ | |||
initialized with values for all nodes as detected by | initialized with values for all nodes as detected by | |||
the implementation. | the implementation. | |||
If the /hardware/component list in the intended | If the /hardware/component list in the intended | |||
configuration is modified, then the system MUST behave as if | configuration is modified, then the system MUST behave as if | |||
it re-initializes itself, and follow the procedure in (1)."; | it re-initializes itself, and follow the procedure in (1)."; | |||
reference "RFC 6933: entPhysicalEntry"; | reference "RFC 6933: entPhysicalEntry"; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"The name assigned to this component. | "The name assigned to this component. | |||
This name is not required to be the same as | This name is not required to be the same as | |||
entPhysicalName."; | entPhysicalName."; | |||
} | } | |||
leaf class { | leaf class { | |||
type identityref { | type identityref { | |||
base ianahw:hardware-class; | base ianahw:hardware-class; | |||
} | } | |||
mandatory true; | mandatory true; | |||
status deprecated; | ||||
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 physical-index { | leaf physical-index { | |||
if-feature entity-mib; | if-feature entity-mib; | |||
type int32 { | type int32 { | |||
range "1..2147483647"; | range "1..2147483647"; | |||
} | } | |||
status deprecated; | ||||
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; | |||
status deprecated; | ||||
description | description | |||
"A textual description of component. This node should | "A textual description of component. This node should | |||
contain a string that identifies the manufacturer's name | contain a string that identifies the manufacturer's name | |||
for the component and should be set to a distinct value | for the component and should be set to a distinct value | |||
for each version or model of the component."; | for each version or model of the component."; | |||
reference "RFC 6933: entPhysicalDescr"; | reference "RFC 6933: entPhysicalDescr"; | |||
} | } | |||
leaf parent { | leaf parent { | |||
type leafref { | type leafref { | |||
path "../../component/name"; | path "../../component/name"; | |||
require-instance false; | require-instance false; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The name of the component that physically contains this | "The name of the component that physically contains this | |||
component. | component. | |||
If this leaf is not instantiated, it indicates that this | If this leaf is not instantiated, it indicates that this | |||
component is not contained in any other component. | component is not contained in any other component. | |||
In the event that a physical component is contained by | In the event that a physical component is contained by | |||
more than one physical component (e.g., double-wide | more than one physical component (e.g., double-wide | |||
modules), this node contains the name of one of these | modules), this node contains the name of one of these | |||
skipping to change at page 45, line 4 ¶ | skipping to change at page 45, line 15 ¶ | |||
If this leaf is not instantiated, it indicates that this | If this leaf is not instantiated, it indicates that this | |||
component is not contained in any other component. | component is not contained in any other component. | |||
In the event that a physical component is contained by | In the event that a physical component is contained by | |||
more than one physical component (e.g., double-wide | more than one physical component (e.g., double-wide | |||
modules), this node contains the name of one of these | modules), this node contains the name of one of these | |||
components. An implementation MUST use the same name | components. An implementation MUST use the same name | |||
every time this node is instantiated."; | every time this node is instantiated."; | |||
reference "RFC 6933: entPhysicalContainedIn"; | reference "RFC 6933: entPhysicalContainedIn"; | |||
} | } | |||
leaf parent-rel-pos { | leaf parent-rel-pos { | |||
type int32 { | type int32 { | |||
range "0 .. 2147483647"; | range "0 .. 2147483647"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"An indication of the relative position of this child | "An indication of the relative position of this child | |||
component among all its sibling components. Sibling | component among all its sibling components. Sibling | |||
components are defined as components that: | components are defined as components that: | |||
o Share the same value of the 'parent' node; and | o Share the same value of the 'parent' node; and | |||
o Share a common base identity for the 'class' node. | o Share a common base identity for the 'class' node. | |||
Note that the last rule gives implementations flexibility | Note that the last rule gives implementations flexibility | |||
skipping to change at page 45, line 32 ¶ | skipping to change at page 45, line 45 ¶ | |||
components with identities derived from 'ianahw:port' (for | components with identities derived from 'ianahw:port' (for | |||
example, one for RJ45 and one for SFP)."; | example, one for RJ45 and one for SFP)."; | |||
reference "RFC 6933: entPhysicalParentRelPos"; | reference "RFC 6933: entPhysicalParentRelPos"; | |||
} | } | |||
leaf-list contains-child { | leaf-list contains-child { | |||
type leafref { | type leafref { | |||
path "../../component/name"; | path "../../component/name"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The name of the contained component."; | "The name of the contained component."; | |||
reference "RFC 6933: entPhysicalChildIndex"; | reference "RFC 6933: entPhysicalChildIndex"; | |||
} | } | |||
leaf hardware-rev { | leaf hardware-rev { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"The vendor-specific hardware revision string for the | "The vendor-specific hardware revision string for the | |||
component. The preferred value is the hardware revision | component. The preferred value is the hardware revision | |||
identifier actually printed on the component itself (if | identifier actually printed on the component itself (if | |||
present)."; | present)."; | |||
reference "RFC 6933: entPhysicalHardwareRev"; | reference "RFC 6933: entPhysicalHardwareRev"; | |||
} | } | |||
leaf firmware-rev { | leaf firmware-rev { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"The vendor-specific firmware revision string for the | "The vendor-specific firmware revision string for the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalFirmwareRev"; | reference "RFC 6933: entPhysicalFirmwareRev"; | |||
} | } | |||
leaf software-rev { | leaf software-rev { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"The vendor-specific software revision string for the | "The vendor-specific software revision string for the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalSoftwareRev"; | reference "RFC 6933: entPhysicalSoftwareRev"; | |||
} | } | |||
leaf serial-num { | leaf serial-num { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"The vendor-specific serial number string for the | "The vendor-specific serial number string for the | |||
component. The preferred value is the serial number | component. The preferred value is the serial number | |||
string actually printed on the component itself (if | string actually printed on the component itself (if | |||
present)."; | present)."; | |||
reference "RFC 6933: entPhysicalSerialNum"; | reference "RFC 6933: entPhysicalSerialNum"; | |||
} | } | |||
leaf mfg-name { | leaf mfg-name { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"The name of the manufacturer of this physical component. | "The name of the manufacturer of this physical component. | |||
The preferred value is the manufacturer name string | The preferred value is the manufacturer name string | |||
actually printed on the component itself (if present). | actually printed on the component itself (if present). | |||
Note that comparisons between instances of the model-name, | Note that comparisons between instances of the 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 value of | only meaningful amongst component with the same 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 is not instantiated."; | node is not instantiated."; | |||
reference "RFC 6933: entPhysicalMfgName"; | reference "RFC 6933: entPhysicalMfgName"; | |||
} | } | |||
leaf model-name { | leaf model-name { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"The vendor-specific model name identifier string | "The vendor-specific model name identifier string | |||
associated with this physical component. The preferred | associated with this physical component. The preferred | |||
value is the customer-visible part number, which may be | value is the customer-visible part number, which may be | |||
printed on the component itself. | printed on the component itself. | |||
If the model name string associated with the physical | If the model name string associated with the physical | |||
component is unknown to the server, then this node is not | component is unknown to the server, then this node is not | |||
instantiated."; | instantiated."; | |||
reference "RFC 6933: entPhysicalModelName"; | reference "RFC 6933: entPhysicalModelName"; | |||
} | } | |||
leaf alias { | leaf alias { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"An 'alias' name for the component, as specified by a | "An 'alias' name for the component, as specified by a | |||
network manager, and provides a non-volatile 'handle' for | network manager, and provides a non-volatile 'handle' for | |||
the component. | the component. | |||
If no configured value exists, the server MAY set the | If no configured value exists, the server MAY set the | |||
value of this node to a locally unique value in the | value of this node to a locally unique value in the | |||
operational state. | operational state. | |||
A server implementation MAY map this leaf to the | A server implementation MAY map this leaf to the | |||
entPhysicalAlias MIB object. Such an implementation needs | entPhysicalAlias MIB object. Such an implementation needs | |||
to use some mechanism to handle the differences in size | to use some mechanism to handle the differences in size | |||
and characters allowed between this leaf and | and characters allowed between this leaf and | |||
entPhysicalAlias. The definition of such a mechanism is | entPhysicalAlias. The definition of such a mechanism is | |||
outside the scope of this document."; | outside the scope of this document."; | |||
reference "RFC 6933: entPhysicalAlias"; | reference "RFC 6933: entPhysicalAlias"; | |||
} | } | |||
leaf asset-id { | leaf asset-id { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"This node is a user-assigned asset tracking identifier for | "This node is a user-assigned asset tracking identifier for | |||
the component. | the component. | |||
A server implementation MAY map this leaf to the | A server implementation MAY map this leaf to the | |||
entPhysicalAssetID MIB object. Such an implementation | entPhysicalAssetID MIB object. Such an implementation | |||
needs to use some mechanism to handle the differences in | needs to use some mechanism to handle the differences in | |||
size and characters allowed between this leaf and | size and characters allowed between this leaf and | |||
entPhysicalAssetID. The definition of such a mechanism is | entPhysicalAssetID. The definition of such a mechanism is | |||
outside the scope of this document."; | outside the scope of this document."; | |||
reference "RFC 6933: entPhysicalAssetID"; | reference "RFC 6933: entPhysicalAssetID"; | |||
} | } | |||
leaf is-fru { | leaf is-fru { | |||
type boolean; | type boolean; | |||
status deprecated; | ||||
description | description | |||
"This node indicates whether or not this component is | "This node indicates whether or not this component is | |||
considered a 'field replaceable unit' by the vendor. If | considered a 'field replaceable unit' by the vendor. If | |||
this node contains the value 'true', then this component | this node contains the value 'true', then this component | |||
identifies a field replaceable unit. For all components | identifies a field replaceable unit. For all components | |||
that are permanently contained within a field replaceable | that are permanently contained within a field replaceable | |||
unit, the value 'false' should be returned for this | unit, the value 'false' should be returned for this | |||
node."; | node."; | |||
reference "RFC 6933: entPhysicalIsFRU"; | reference "RFC 6933: entPhysicalIsFRU"; | |||
} | } | |||
leaf mfg-date { | leaf mfg-date { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
status deprecated; | ||||
description | description | |||
"The date of manufacturing of the managed component."; | "The date of manufacturing of the managed component."; | |||
reference "RFC 6933: entPhysicalMfgDate"; | reference "RFC 6933: entPhysicalMfgDate"; | |||
} | } | |||
leaf-list uri { | leaf-list uri { | |||
type inet:uri; | type inet:uri; | |||
status deprecated; | ||||
description | description | |||
"This node contains identification information about the | "This node contains identification information about the | |||
component."; | component."; | |||
reference "RFC 6933: entPhysicalUris"; | reference "RFC 6933: entPhysicalUris"; | |||
} | } | |||
leaf uuid { | leaf uuid { | |||
type yang:uuid; | type yang:uuid; | |||
status deprecated; | ||||
description | description | |||
"A Universally Unique Identifier of the component."; | "A Universally Unique Identifier of the component."; | |||
reference "RFC 6933: entPhysicalUUID"; | reference "RFC 6933: entPhysicalUUID"; | |||
} | } | |||
container state { | container state { | |||
if-feature hardware-state; | if-feature hardware-state; | |||
status deprecated; | ||||
description | description | |||
"State-related nodes"; | "State-related nodes"; | |||
reference "RFC 4268: Entity State MIB"; | reference "RFC 4268: Entity State MIB"; | |||
leaf state-last-changed { | leaf state-last-changed { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
status deprecated; | ||||
description | description | |||
"The date and time when the value of any of the | "The date and time when the value of any of the | |||
admin-state, oper-state, usage-state, alarm-state, or | admin-state, oper-state, usage-state, alarm-state, or | |||
standby-state changed for this component. | standby-state changed for this component. | |||
If there has been no change since the last | If there has been no change since the last | |||
re-initialization of the local system, this node | re-initialization of the local system, this node | |||
contains the date and time of local system | contains the date and time of local system | |||
initialization. If there has been no change since the | initialization. If there has been no change since the | |||
component was added to the local system, this node | component was added to the local system, this node | |||
skipping to change at page 49, line 4 ¶ | skipping to change at page 49, line 31 ¶ | |||
standby-state changed for this component. | standby-state changed for this component. | |||
If there has been no change since the last | If there has been no change since the last | |||
re-initialization of the local system, this node | re-initialization of the local system, this node | |||
contains the date and time of local system | contains the date and time of local system | |||
initialization. If there has been no change since the | initialization. If there has been no change since the | |||
component was added to the local system, this node | component was added to the local system, this node | |||
contains the date and time of the insertion."; | contains the date and time of the insertion."; | |||
reference "RFC 4268: entStateLastChanged"; | reference "RFC 4268: entStateLastChanged"; | |||
} | } | |||
leaf admin-state { | leaf admin-state { | |||
type hw:admin-state; | type hw:admin-state; | |||
status deprecated; | ||||
description | description | |||
"The administrative state for this component. | "The administrative state for this component. | |||
This node refers to a component's administrative | This node refers to a component's administrative | |||
permission to service both other components within its | permission to service both other components within its | |||
containment hierarchy as well other users of its | containment hierarchy as well other users of its | |||
services defined by means outside the scope of this | services defined by means outside the scope of this | |||
module. | module. | |||
Some components exhibit only a subset of the remaining | Some components exhibit only a subset of the remaining | |||
skipping to change at page 49, line 23 ¶ | skipping to change at page 50, line 4 ¶ | |||
module. | module. | |||
Some components exhibit only a subset of the remaining | Some components exhibit only a subset of the remaining | |||
administrative state values. Some components cannot be | administrative state values. Some components cannot be | |||
locked, and hence this node exhibits only the 'unlocked' | locked, and hence this node exhibits only the 'unlocked' | |||
state. Other components cannot be shutdown gracefully, | state. Other components cannot be shutdown gracefully, | |||
and hence this node does not exhibit the 'shutting-down' | and hence this node does not exhibit the 'shutting-down' | |||
state."; | state."; | |||
reference "RFC 4268: entStateAdmin"; | reference "RFC 4268: entStateAdmin"; | |||
} | } | |||
leaf oper-state { | leaf oper-state { | |||
type hw:oper-state; | type hw:oper-state; | |||
status deprecated; | ||||
description | description | |||
"The operational state for this component. | "The operational state for this component. | |||
Note that this node does not follow the administrative | Note that this node does not follow the administrative | |||
state. An administrative state of down does not predict | state. An administrative state of down does not predict | |||
an operational state of disabled. | an operational state of disabled. | |||
Note that some implementations may not be able to | Note that some implementations may not be able to | |||
accurately report oper-state while the admin-state node | accurately report oper-state while the admin-state node | |||
has a value other than 'unlocked'. In these cases, this | has a value other than 'unlocked'. In these cases, this | |||
node MUST have a value of 'unknown'."; | node MUST have a value of 'unknown'."; | |||
reference "RFC 4268: entStateOper"; | reference "RFC 4268: entStateOper"; | |||
} | } | |||
leaf usage-state { | leaf usage-state { | |||
type hw:usage-state; | type hw:usage-state; | |||
status deprecated; | ||||
description | description | |||
"The usage state for this component. | "The usage state for this component. | |||
This node refers to a component's ability to service | This node refers to a component's ability to service | |||
more components in a containment hierarchy. | more components in a containment hierarchy. | |||
Some components will exhibit only a subset of the usage | Some components will exhibit only a subset of the usage | |||
state values. Components that are unable to ever | state values. Components that are unable to ever | |||
service any components within a containment hierarchy | service any components within a containment hierarchy | |||
will always have a usage state of 'busy'. Some | will always have a usage state of 'busy'. 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-state { | leaf alarm-state { | |||
type hw:alarm-state; | type hw:alarm-state; | |||
status deprecated; | ||||
description | description | |||
"The alarm state for this component. It does not | "The alarm state for this component. It does not | |||
include the alarms raised on child components within its | include the alarms raised on child components within its | |||
containment hierarchy."; | containment hierarchy."; | |||
reference "RFC 4268: entStateAlarm"; | reference "RFC 4268: entStateAlarm"; | |||
} | } | |||
leaf standby-state { | leaf standby-state { | |||
type hw:standby-state; | type hw:standby-state; | |||
status deprecated; | ||||
description | description | |||
"The standby state for this component. | "The standby state for this component. | |||
Some components will exhibit only a subset of the | Some components will exhibit only a subset of the | |||
remaining standby state values. If this component | remaining standby state values. If this component | |||
cannot operate in a standby role, the value of this node | cannot operate in a standby role, the value of this node | |||
will always be 'providing-service'."; | will always be 'providing-service'."; | |||
reference "RFC 4268: entStateStandby"; | reference "RFC 4268: entStateStandby"; | |||
} | } | |||
} | } | |||
container sensor-data { | container sensor-data { | |||
when 'derived-from-or-self(../class, | when 'derived-from-or-self(../class, | |||
"ianahw:sensor")' { | "ianahw:sensor")' { | |||
description | description | |||
"Sensor data nodes present for any component of type | "Sensor data nodes present for any component of type | |||
'sensor'"; | 'sensor'"; | |||
} | } | |||
if-feature hardware-sensor; | if-feature hardware-sensor; | |||
status deprecated; | ||||
description | description | |||
"Sensor-related nodes."; | "Sensor-related nodes."; | |||
reference "RFC 3433: Entity Sensor MIB"; | reference "RFC 3433: Entity Sensor MIB"; | |||
leaf value { | leaf value { | |||
type hw:sensor-value; | type hw:sensor-value; | |||
status deprecated; | ||||
description | description | |||
"The most recent measurement obtained by the server | "The most recent measurement obtained by the server | |||
for this sensor. | for this sensor. | |||
A client that periodically fetches this node should also | A client that periodically fetches this node should also | |||
fetch the nodes 'value-type', 'value-scale', and | fetch the nodes 'value-type', 'value-scale', and | |||
'value-precision', since they may change when the value | 'value-precision', since they may change when the value | |||
is changed."; | is changed."; | |||
reference "RFC 3433: entPhySensorValue"; | reference "RFC 3433: entPhySensorValue"; | |||
} | } | |||
leaf value-type { | leaf value-type { | |||
type hw:sensor-value-type; | type hw:sensor-value-type; | |||
status deprecated; | ||||
description | description | |||
"The type of data units associated with the | "The type of data units associated with the | |||
sensor value"; | sensor value"; | |||
reference "RFC 3433: entPhySensorType"; | reference "RFC 3433: entPhySensorType"; | |||
} | } | |||
leaf value-scale { | leaf value-scale { | |||
type hw:sensor-value-scale; | type hw:sensor-value-scale; | |||
status deprecated; | ||||
description | description | |||
"The (power of 10) scaling factor associated | "The (power of 10) scaling factor associated | |||
with the sensor value"; | with the sensor value"; | |||
reference "RFC 3433: entPhySensorScale"; | reference "RFC 3433: entPhySensorScale"; | |||
} | } | |||
leaf value-precision { | leaf value-precision { | |||
type hw:sensor-value-precision; | type hw:sensor-value-precision; | |||
status deprecated; | ||||
description | description | |||
"The number of decimal places of precision | "The number of decimal places of precision | |||
associated with the sensor value"; | associated with the sensor value"; | |||
reference "RFC 3433: entPhySensorPrecision"; | reference "RFC 3433: entPhySensorPrecision"; | |||
} | } | |||
leaf oper-status { | leaf oper-status { | |||
type hw:sensor-status; | type hw:sensor-status; | |||
status deprecated; | ||||
description | description | |||
"The operational status of the sensor."; | "The operational status of the sensor."; | |||
reference "RFC 3433: entPhySensorOperStatus"; | reference "RFC 3433: entPhySensorOperStatus"; | |||
} | } | |||
leaf units-display { | leaf units-display { | |||
type string; | type string; | |||
status deprecated; | ||||
description | description | |||
"A textual description of the data units that should be | "A textual description of the data units that should be | |||
used in the display of the sensor value."; | used in the display of the sensor value."; | |||
reference "RFC 3433: entPhySensorUnitsDisplay"; | reference "RFC 3433: entPhySensorUnitsDisplay"; | |||
} | } | |||
leaf value-timestamp { | leaf value-timestamp { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
status deprecated; | ||||
description | description | |||
"The time the status and/or value of this sensor was last | "The time the status and/or value of this sensor was last | |||
obtained by the server."; | obtained by the server."; | |||
reference "RFC 3433: entPhySensorValueTimeStamp"; | reference "RFC 3433: entPhySensorValueTimeStamp"; | |||
} | } | |||
leaf value-update-rate { | leaf value-update-rate { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
status deprecated; | ||||
description | description | |||
"An indication of the frequency that the server updates | "An indication of the frequency that the server updates | |||
the associated 'value' node, representing in | the associated 'value' node, representing in | |||
milliseconds. The value zero indicates: | milliseconds. The value zero indicates: | |||
- the sensor value is updated on demand (e.g., | - the sensor value is updated on demand (e.g., | |||
when polled by the server for a get-request), | when polled by the server for a get-request), | |||
- the sensor value is updated when the sensor | - the sensor value is updated when the sensor | |||
value changes (event-driven), | value changes (event-driven), | |||
- the server does not know the update rate."; | - the server does not know the update rate."; | |||
skipping to change at page 52, line 33 ¶ | skipping to change at page 53, line 25 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/* | /* | |||
* Notifications | * Notifications | |||
*/ | */ | |||
notification hardware-state-change { | notification hardware-state-change { | |||
status deprecated; | ||||
description | description | |||
"A hardware-state-change notification is generated when the | "A hardware-state-change notification is generated when the | |||
value of /hardware/last-change changes in the operational | value of /hardware/last-change changes in the operational | |||
state."; | state."; | |||
reference "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; | |||
status deprecated; | ||||
description | description | |||
"A hardware-state-oper-enabled notification signifies that a | "A hardware-state-oper-enabled notification signifies that a | |||
component has transitioned into the 'enabled' state."; | component has transitioned into the 'enabled' state."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "/hardware/component/name"; | path "/hardware/component/name"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The name of the component that has transitioned into the | "The name of the component that has transitioned into the | |||
'enabled' state."; | 'enabled' state."; | |||
} | } | |||
leaf admin-state { | leaf admin-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/admin-state"; | path "/hardware/component/state/admin-state"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The administrative state for the component."; | "The administrative state for the component."; | |||
} | } | |||
leaf alarm-state { | leaf alarm-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/alarm-state"; | path "/hardware/component/state/alarm-state"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The alarm state 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; | |||
status deprecated; | ||||
description | description | |||
"A hardware-state-oper-disabled notification signifies that a | "A hardware-state-oper-disabled notification signifies that a | |||
component has transitioned into the 'disabled' state."; | component has transitioned into the 'disabled' state."; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "/hardware/component/name"; | path "/hardware/component/name"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The name of the component that has transitioned into the | "The name of the component that has transitioned into the | |||
'disabled' state."; | 'disabled' state."; | |||
} | } | |||
leaf admin-state { | leaf admin-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/admin-state"; | path "/hardware/component/state/admin-state"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The administrative state for the component."; | "The administrative state for the component."; | |||
} | } | |||
leaf alarm-state { | leaf alarm-state { | |||
type leafref { | type leafref { | |||
path "/hardware/component/state/alarm-state"; | path "/hardware/component/state/alarm-state"; | |||
} | } | |||
status deprecated; | ||||
description | description | |||
"The alarm state for the component."; | "The alarm state for the component."; | |||
} | } | |||
reference "RFC 4268, entStateOperDisabled"; | reference "RFC 4268, entStateOperDisabled"; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Authors' Addresses | Authors' Addresses | |||
Andy Bierman | Andy Bierman | |||
YumaWorks | YumaWorks | |||
End of changes. 84 change blocks. | ||||
107 lines changed or deleted | 159 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |