Internet Engineering Task Force (IETF)                        A. Bierman
Request for Comments: 8348                                     YumaWorks
Category: Standards Track                                   M. Bjorklund
ISSN: 2070-1721                                           Tail-f Systems
                                                                 J. Dong
                                                     Huawei Technologies
                                                            D. Romascanu
                                                              March 2018
        
Internet Engineering Task Force (IETF)                        A. Bierman
Request for Comments: 8348                                     YumaWorks
Category: Standards Track                                   M. Bjorklund
ISSN: 2070-1721                                           Tail-f Systems
                                                                 J. Dong
                                                     Huawei Technologies
                                                            D. Romascanu
                                                              March 2018
        

A YANG Data Model for Hardware Management

一种用于硬件管理的YANG数据模型

Abstract

摘要

This document defines a YANG data model for the management of hardware on a single server.

本文档定义了用于管理单个服务器上硬件的数据模型。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 7841第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8348.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问https://www.rfc-editor.org/info/rfc8348.

Copyright Notice

版权公告

Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2018 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(https://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1. Introduction ....................................................3
      1.1. Terminology ................................................3
      1.2. Tree Diagrams ..............................................3
   2. Objectives ......................................................4
   3. Hardware Data Model .............................................4
      3.1. The Components Lists .......................................5
   4. Relationship to ENTITY-MIB ......................................6
   5. Relationship to ENTITY-SENSOR-MIB ...............................8
   6. Relationship to ENTITY-STATE-MIB ................................8
   7. Hardware YANG Modules ...........................................9
      7.1. "ietf-hardware" Module .....................................9
      7.2. "iana-hardware" Module ....................................34
   8. IANA Considerations ............................................38
      8.1. URI Registrations .........................................38
      8.2. YANG Module Registrations .................................39
   9. Security Considerations ........................................39
   10. References ....................................................40
      10.1. Normative References .....................................40
      10.2. Informative References ...................................41
   Appendix A.  Hardware State Data Model ............................42
     A.1.  Hardware State YANG Module ................................43
   Acknowledgments ...................................................60
   Authors' Addresses ................................................60
        
   1. Introduction ....................................................3
      1.1. Terminology ................................................3
      1.2. Tree Diagrams ..............................................3
   2. Objectives ......................................................4
   3. Hardware Data Model .............................................4
      3.1. The Components Lists .......................................5
   4. Relationship to ENTITY-MIB ......................................6
   5. Relationship to ENTITY-SENSOR-MIB ...............................8
   6. Relationship to ENTITY-STATE-MIB ................................8
   7. Hardware YANG Modules ...........................................9
      7.1. "ietf-hardware" Module .....................................9
      7.2. "iana-hardware" Module ....................................34
   8. IANA Considerations ............................................38
      8.1. URI Registrations .........................................38
      8.2. YANG Module Registrations .................................39
   9. Security Considerations ........................................39
   10. References ....................................................40
      10.1. Normative References .....................................40
      10.2. Informative References ...................................41
   Appendix A.  Hardware State Data Model ............................42
     A.1.  Hardware State YANG Module ................................43
   Acknowledgments ...................................................60
   Authors' Addresses ................................................60
        
1. Introduction
1. 介绍

This document defines a YANG data model [RFC7950] for the management of hardware on a single server.

本文档定义了一个数据模型[RFC7950],用于管理单台服务器上的硬件。

The data model includes configuration and system state (status information and counters for the collection of statistics).

数据模型包括配置和系统状态(用于收集统计信息的状态信息和计数器)。

The data model in this document is designed to be compliant with the Network Management Datastore Architecture (NMDA) [RFC8342]. For implementations that do not yet support NMDA, a temporary module with system state data only is defined in Appendix A.

本文档中的数据模型设计为符合网络管理数据存储体系结构(NMDA)[RFC8342]。对于尚不支持NMDA的实现,附录a中定义了仅包含系统状态数据的临时模块。

1.1. Terminology
1.1. 术语

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14[RFC2119][RFC8174]所述进行解释。

The following terms are defined in [RFC8342] and are not redefined here:

[RFC8342]中定义了以下术语,此处未重新定义:

o client

o 客户

o server

o 服务器

o configuration

o 配置

o system state

o 系统状态

o operational state

o 运行状态

o intended configuration

o 预期配置

1.2. Tree Diagrams
1.2. 树形图

Tree diagrams used in this document follow the notation defined in [RFC8340].

本文档中使用的树形图遵循[RFC8340]中定义的符号。

2. Objectives
2. 目标

This section describes some of the design objectives for the hardware data model.

本节描述了硬件数据模型的一些设计目标。

o The hardware data model needs to support many common properties used to identify hardware components.

o 硬件数据模型需要支持许多用于标识硬件组件的公共属性。

o Important information and states about hardware components need to be collected from devices that support the hardware data model.

o 需要从支持硬件数据模型的设备收集有关硬件组件的重要信息和状态。

o The hardware data model should be suitable for new implementations to use as is.

o 硬件数据模型应该适合新的实现,以便按原样使用。

o The hardware data model defined in this document can be implemented on a system that also implements ENTITY-MIB; thus, the mapping between the hardware data model and ENTITY-MIB should be clear.

o 本文档中定义的硬件数据模型可以在同样实现ENTITY-MIB的系统上实现;因此,硬件数据模型和ENTITY-MIB之间的映射应该是清晰的。

o The data model should support pre-provisioning of hardware components.

o 数据模型应支持硬件组件的预配置。

3. Hardware Data Model
3. 硬件数据模型

This document defines the YANG module "ietf-hardware", which has the following structure:

本文件定义了模块“ietf硬件”,其结构如下:

   module: ietf-hardware
     +--rw hardware
        +--ro last-change?   yang:date-and-time
        +--rw component* [name]
           +--rw name              string
           +--rw class             identityref
           +--ro physical-index?   int32 {entity-mib}?
           +--ro description?      string
           +--rw parent?           -> ../../component/name
           +--rw parent-rel-pos?   int32
           +--ro contains-child*   -> ../../component/name
           +--ro hardware-rev?     string
           +--ro firmware-rev?     string
           +--ro software-rev?     string
           +--ro serial-num?       string
           +--ro mfg-name?         string
           +--ro model-name?       string
           +--rw alias?            string
           +--rw asset-id?         string
           +--ro is-fru?           boolean
           +--ro mfg-date?         yang:date-and-time
        
   module: ietf-hardware
     +--rw hardware
        +--ro last-change?   yang:date-and-time
        +--rw component* [name]
           +--rw name              string
           +--rw class             identityref
           +--ro physical-index?   int32 {entity-mib}?
           +--ro description?      string
           +--rw parent?           -> ../../component/name
           +--rw parent-rel-pos?   int32
           +--ro contains-child*   -> ../../component/name
           +--ro hardware-rev?     string
           +--ro firmware-rev?     string
           +--ro software-rev?     string
           +--ro serial-num?       string
           +--ro mfg-name?         string
           +--ro model-name?       string
           +--rw alias?            string
           +--rw asset-id?         string
           +--ro is-fru?           boolean
           +--ro mfg-date?         yang:date-and-time
        
           +--rw uri*              inet:uri
           +--ro uuid?             yang:uuid
           +--rw state {hardware-state}?
           |  +--ro state-last-changed?   yang:date-and-time
           |  +--rw admin-state?          admin-state
           |  +--ro oper-state?           oper-state
           |  +--ro usage-state?          usage-state
           |  +--ro alarm-state?          alarm-state
           |  +--ro standby-state?        standby-state
           +--ro sensor-data {hardware-sensor}?
              +--ro value?               sensor-value
              +--ro value-type?          sensor-value-type
              +--ro value-scale?         sensor-value-scale
              +--ro value-precision?     sensor-value-precision
              +--ro oper-status?         sensor-status
              +--ro units-display?       string
              +--ro value-timestamp?     yang:date-and-time
              +--ro value-update-rate?   uint32
        
           +--rw uri*              inet:uri
           +--ro uuid?             yang:uuid
           +--rw state {hardware-state}?
           |  +--ro state-last-changed?   yang:date-and-time
           |  +--rw admin-state?          admin-state
           |  +--ro oper-state?           oper-state
           |  +--ro usage-state?          usage-state
           |  +--ro alarm-state?          alarm-state
           |  +--ro standby-state?        standby-state
           +--ro sensor-data {hardware-sensor}?
              +--ro value?               sensor-value
              +--ro value-type?          sensor-value-type
              +--ro value-scale?         sensor-value-scale
              +--ro value-precision?     sensor-value-precision
              +--ro oper-status?         sensor-status
              +--ro units-display?       string
              +--ro value-timestamp?     yang:date-and-time
              +--ro value-update-rate?   uint32
        
     notifications:
       +---n hardware-state-change
       +---n hardware-state-oper-enabled {hardware-state}?
       |  +--ro name?          -> /hardware/component/name
       |  +--ro admin-state?   -> /hardware/component/state/admin-state
       |  +--ro alarm-state?   -> /hardware/component/state/alarm-state
       +---n hardware-state-oper-disabled {hardware-state}?
          +--ro name?          -> /hardware/component/name
          +--ro admin-state?   -> /hardware/component/state/admin-state
          +--ro alarm-state?   -> /hardware/component/state/alarm-state
        
     notifications:
       +---n hardware-state-change
       +---n hardware-state-oper-enabled {hardware-state}?
       |  +--ro name?          -> /hardware/component/name
       |  +--ro admin-state?   -> /hardware/component/state/admin-state
       |  +--ro alarm-state?   -> /hardware/component/state/alarm-state
       +---n hardware-state-oper-disabled {hardware-state}?
          +--ro name?          -> /hardware/component/name
          +--ro admin-state?   -> /hardware/component/state/admin-state
          +--ro alarm-state?   -> /hardware/component/state/alarm-state
        
3.1. The Components Lists
3.1. 组件列表

The data model for hardware presented in this document uses a flat list of components. Each component in the list is identified by its name. Furthermore, each component has a mandatory "class" leaf.

本文档中介绍的硬件数据模型使用组件的平面列表。列表中的每个组件都由其名称标识。此外,每个组件都有一个强制的“类”叶。

The "iana-hardware" module defines YANG identities for the hardware types in the IANA-maintained "IANA-ENTITY-MIB" registry.

“iana硬件”模块定义iana维护的“iana-ENTITY-MIB”注册表中硬件类型的标识。

The "class" leaf is a YANG identity that describes the type of the hardware. Vendors are encouraged to either directly use one of the common IANA-defined identities or derive a more specific identity from one of them.

“类”叶是描述硬件类型的标识。鼓励供应商直接使用IANA定义的通用标识之一,或从其中一个标识中派生出更具体的标识。

4. Relationship to ENTITY-MIB
4. 与实体-MIB的关系

If the device implements the ENTITY-MIB [RFC6933], each entry in the "/hardware/component" list in the operational state is mapped to one EntPhysicalEntry. Objects that are writable in the MIB are mapped to "config true" nodes in the "/hardware/component" list, except entPhysicalSerialNum, which is writable in the MIB but "config false" in the YANG module.

如果设备实现了ENTITY-MIB[RFC6933],则处于运行状态的“/hardware/component”列表中的每个条目都映射到一个EntPhysicalEntry。MIB中可写的对象映射到“/hardware/component”列表中的“config true”节点,但entPhysicalSerialNum除外,它在MIB中可写,但在模块中为“config false”。

The "physical-index" leaf MUST contain the value of the corresponding entPhysicalEntry's entPhysicalIndex.

“物理索引”叶必须包含相应entPhysicalEntry的entPhysicalIndex的值。

The "class" leaf is mapped to both entPhysicalClass and entPhysicalVendorType. If the value of the "class" leaf is an identity that either is derived from or is one of the identities in the "iana-hardware" module, then entPhysicalClass contains the corresponding IANAPhysicalClass enumeration value. Otherwise, entPhysicalClass contains the IANAPhysicalClass value "other(1)". Vendors are encouraged to define an identity (derived from an identity in "iana-hardware" if possible) for each enterprise-specific registration identifier used for entPhysicalVendorType and use that identity for the "class" leaf.

“类”叶映射到entPhysicalClass和EntPhysicalType。如果“类”叶的值是从“iana硬件”模块中派生的标识,或者是其中一个标识,则entPhysicalClass包含相应的IANAPhysicalClass枚举值。否则,entPhysicalClass包含IANAPhysicalClass值“other(1)”。鼓励供应商为EntPhysicalType使用的每个特定于企业的注册标识符定义一个标识(如果可能,从“iana硬件”中的标识派生),并将该标识用于“类”叶。

The following table lists the YANG data nodes with corresponding objects in the ENTITY-MIB.

下表列出了ENTITY-MIB中具有相应对象的数据节点。

   +--------------------------------+----------------------------------+
   | YANG data node in              | ENTITY-MIB object                |
   | /hardware/component            |                                  |
   +--------------------------------+----------------------------------+
   | name                           | entPhysicalName                  |
   | class                          | entPhysicalClass                 |
   |                                | entPhysicalVendorType            |
   | physical-index                 | entPhysicalIndex                 |
   | description                    | entPhysicalDescr                 |
   | parent                         | entPhysicalContainedIn           |
   | parent-rel-pos                 | entPhysicalParentRelPos          |
   | contains-child                 | entPhysicalChildIndex            |
   | hardware-rev                   | entPhysicalHardwareRev           |
   | firmware-rev                   | entPhysicalFirmwareRev           |
   | software-rev                   | entPhysicalSoftwareRev           |
   | serial-num                     | entPhysicalSerialNum             |
   | mfg-name                       | entPhysicalMfgName               |
   | model-name                     | entPhysicalModelName             |
   | alias                          | entPhysicalAlias                 |
   | asset-id                       | entPhysicalAssetID               |
   | is-fru                         | entPhysicalIsFRU                 |
   | mfg-date                       | entPhysicalMfgDate               |
   | uri                            | entPhysicalUris                  |
   | uuid                           | entPhysicalUUID                  |
   +--------------------------------+----------------------------------+
        
   +--------------------------------+----------------------------------+
   | YANG data node in              | ENTITY-MIB object                |
   | /hardware/component            |                                  |
   +--------------------------------+----------------------------------+
   | name                           | entPhysicalName                  |
   | class                          | entPhysicalClass                 |
   |                                | entPhysicalVendorType            |
   | physical-index                 | entPhysicalIndex                 |
   | description                    | entPhysicalDescr                 |
   | parent                         | entPhysicalContainedIn           |
   | parent-rel-pos                 | entPhysicalParentRelPos          |
   | contains-child                 | entPhysicalChildIndex            |
   | hardware-rev                   | entPhysicalHardwareRev           |
   | firmware-rev                   | entPhysicalFirmwareRev           |
   | software-rev                   | entPhysicalSoftwareRev           |
   | serial-num                     | entPhysicalSerialNum             |
   | mfg-name                       | entPhysicalMfgName               |
   | model-name                     | entPhysicalModelName             |
   | alias                          | entPhysicalAlias                 |
   | asset-id                       | entPhysicalAssetID               |
   | is-fru                         | entPhysicalIsFRU                 |
   | mfg-date                       | entPhysicalMfgDate               |
   | uri                            | entPhysicalUris                  |
   | uuid                           | entPhysicalUUID                  |
   +--------------------------------+----------------------------------+
        

YANG Data Nodes and Related ENTITY-MIB Objects

YANG数据节点和相关实体MIB对象

5. Relationship to ENTITY-SENSOR-MIB
5. 与ENTITY-SENSOR-MIB的关系

If the device implements the ENTITY-SENSOR-MIB [RFC3433], each entry in the "/hardware/component" list where the container "sensor-data" exists is mapped to one EntPhySensorEntry.

如果设备实现实体-SENSOR-MIB[RFC3433],则存在容器“SENSOR data”的“/hardware/component”列表中的每个条目都映射到一个EntPhySensorEntry。

The following table lists the YANG data nodes with corresponding objects in the ENTITY-SENSOR-MIB.

下表列出了ENTITY-SENSOR-MIB中具有相应对象的数据节点。

   +-------------------------------------+-----------------------------+
   | YANG data node in                   | ENTITY-SENSOR-MIB object    |
   | /hardware/component/sensor-data     |                             |
   +-------------------------------------+-----------------------------+
   | value                               | entPhySensorValue           |
   | value-type                          | entPhySensorType            |
   | value-scale                         | entPhySensorScale           |
   | value-precision                     | entPhySensorPrecision       |
   | oper-status                         | entPhySensorOperStatus      |
   | units-display                       | entPhySensorUnitsDisplay    |
   | value-timestamp                     | entPhySensorValueTimeStamp  |
   | value-update-rate                   | entPhySensorValueUpdateRate |
   +-------------------------------------+-----------------------------+
        
   +-------------------------------------+-----------------------------+
   | YANG data node in                   | ENTITY-SENSOR-MIB object    |
   | /hardware/component/sensor-data     |                             |
   +-------------------------------------+-----------------------------+
   | value                               | entPhySensorValue           |
   | value-type                          | entPhySensorType            |
   | value-scale                         | entPhySensorScale           |
   | value-precision                     | entPhySensorPrecision       |
   | oper-status                         | entPhySensorOperStatus      |
   | units-display                       | entPhySensorUnitsDisplay    |
   | value-timestamp                     | entPhySensorValueTimeStamp  |
   | value-update-rate                   | entPhySensorValueUpdateRate |
   +-------------------------------------+-----------------------------+
        

YANG Data Nodes and Related ENTITY-SENSOR-MIB Objects

YANG数据节点和相关实体传感器MIB对象

6. Relationship to ENTITY-STATE-MIB
6. 与实体状态MIB的关系

If the device implements the ENTITY-STATE-MIB [RFC4268], each entry in the "/hardware/component" list where the container "state" exists is mapped to one EntStateEntry.

如果设备实现了ENTITY-STATE-MIB[RFC4268],则“/hardware/component”列表中容器“STATE”存在的每个条目都映射到一个EntStateEntry。

The following table lists the YANG data nodes with corresponding objects in the ENTITY-STATE-MIB.

下表列出了ENTITY-STATE-MIB中具有相应对象的数据节点。

   +------------------------------------------+------------------------+
   | YANG data node in                        | ENTITY-STATE-MIB       |
   | /hardware/component/state                | object                 |
   +------------------------------------------+------------------------+
   | state-last-changed                       | entStateLastChanged    |
   | admin-state                              | entStateAdmin          |
   | oper-state                               | entStateOper           |
   | usage-state                              | entStateUsage          |
   | alarm-state                              | entStateAlarm          |
   | standby-state                            | entStateStandby        |
   +------------------------------------------+------------------------+
        
   +------------------------------------------+------------------------+
   | YANG data node in                        | ENTITY-STATE-MIB       |
   | /hardware/component/state                | object                 |
   +------------------------------------------+------------------------+
   | state-last-changed                       | entStateLastChanged    |
   | admin-state                              | entStateAdmin          |
   | oper-state                               | entStateOper           |
   | usage-state                              | entStateUsage          |
   | alarm-state                              | entStateAlarm          |
   | standby-state                            | entStateStandby        |
   +------------------------------------------+------------------------+
        

YANG Data Nodes and Related ENTITY-SENSOR-MIB Objects

YANG数据节点和相关实体传感器MIB对象

7. Hardware YANG Modules
7. 硬件模块
7.1. "ietf-hardware" Module
7.1. “ietf硬件”模块

This YANG module imports typedefs from [RFC6991].

此模块从[RFC6991]导入typedefs。

   <CODE BEGINS> file "ietf-hardware@2018-03-13.yang"
        
   <CODE BEGINS> file "ietf-hardware@2018-03-13.yang"
        
  module ietf-hardware {
    yang-version 1.1;
    namespace "urn:ietf:params:xml:ns:yang:ietf-hardware";
    prefix hw;
        
  module ietf-hardware {
    yang-version 1.1;
    namespace "urn:ietf:params:xml:ns:yang:ietf-hardware";
    prefix hw;
        
    import ietf-inet-types {
      prefix inet;
    }
    import ietf-yang-types {
      prefix yang;
    }
    import iana-hardware {
      prefix ianahw;
    }
        
    import ietf-inet-types {
      prefix inet;
    }
    import ietf-yang-types {
      prefix yang;
    }
    import iana-hardware {
      prefix ianahw;
    }
        

organization "IETF NETMOD (Network Modeling) Working Group";

组织“IETF NETMOD(网络建模)工作组”;

    contact
      "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
       WG List:  <mailto:netmod@ietf.org>
        
    contact
      "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
       WG List:  <mailto:netmod@ietf.org>
        
       Editor:   Andy Bierman
                 <mailto:andy@yumaworks.com>
        
       Editor:   Andy Bierman
                 <mailto:andy@yumaworks.com>
        
       Editor:   Martin Bjorklund
                 <mailto:mbj@tail-f.com>
        
       Editor:   Martin Bjorklund
                 <mailto:mbj@tail-f.com>
        
       Editor:   Jie Dong
                 <mailto:jie.dong@huawei.com>
        
       Editor:   Jie Dong
                 <mailto:jie.dong@huawei.com>
        
       Editor:   Dan Romascanu
                 <mailto:dromasca@gmail.com>";
        
       Editor:   Dan Romascanu
                 <mailto:dromasca@gmail.com>";
        

description "This module contains a collection of YANG definitions for managing hardware.

description“此模块包含用于管理硬件的定义集合。

This data model is designed for the Network Management Datastore Architecture (NMDA) defined in RFC 8342.

该数据模型是为RFC 8342中定义的网络管理数据存储体系结构(NMDA)而设计的。

Copyright (c) 2018 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权所有(c)2018 IETF信托基金和被确定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(https://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC 8348; see the RFC itself for full legal notices.";

此模块的此版本是RFC 8348的一部分;有关完整的法律通知,请参见RFC本身。“;

    revision 2018-03-13 {
      description
        "Initial revision.";
      reference
        "RFC 8348: A YANG Data Model for Hardware Management";
    }
        
    revision 2018-03-13 {
      description
        "Initial revision.";
      reference
        "RFC 8348: A YANG Data Model for Hardware Management";
    }
        
    /*
     * Features
     */
        
    /*
     * Features
     */
        
    feature entity-mib {
      description
        "This feature indicates that the device implements
         the ENTITY-MIB.";
      reference
        "RFC 6933: Entity MIB (Version 4)";
    }
        
    feature entity-mib {
      description
        "This feature indicates that the device implements
         the ENTITY-MIB.";
      reference
        "RFC 6933: Entity MIB (Version 4)";
    }
        
    feature hardware-state {
      description
        "Indicates that ENTITY-STATE-MIB objects are supported";
      reference
        "RFC 4268: Entity State MIB";
    }
        
    feature hardware-state {
      description
        "Indicates that ENTITY-STATE-MIB objects are supported";
      reference
        "RFC 4268: Entity State MIB";
    }
        
    feature hardware-sensor {
      description
        "Indicates that ENTITY-SENSOR-MIB objects are supported";
      reference
        "RFC 3433: Entity Sensor Management Information Base";
    }
        
    feature hardware-sensor {
      description
        "Indicates that ENTITY-SENSOR-MIB objects are supported";
      reference
        "RFC 3433: Entity Sensor Management Information Base";
    }
        
    /*
     * Typedefs
        
    /*
     * Typedefs
        

*/

*/

    typedef admin-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report administrative state.";
        }
        enum locked {
          value 2;
          description
            "The resource is administratively prohibited from use.";
        }
        enum shutting-down {
          value 3;
          description
            "The resource usage is administratively limited to current
             instances of use.";
        }
        enum unlocked {
          value 4;
          description
            "The resource is not administratively prohibited from
             use.";
        }
      }
      description
        "Represents the various possible administrative states.";
      reference
        "RFC 4268: Entity State MIB - EntityAdminState";
    }
        
    typedef admin-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report administrative state.";
        }
        enum locked {
          value 2;
          description
            "The resource is administratively prohibited from use.";
        }
        enum shutting-down {
          value 3;
          description
            "The resource usage is administratively limited to current
             instances of use.";
        }
        enum unlocked {
          value 4;
          description
            "The resource is not administratively prohibited from
             use.";
        }
      }
      description
        "Represents the various possible administrative states.";
      reference
        "RFC 4268: Entity State MIB - EntityAdminState";
    }
        
    typedef oper-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report its operational state.";
        }
        enum disabled {
          value 2;
          description
            "The resource is totally inoperable.";
        }
        enum enabled {
          value 3;
        
    typedef oper-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report its operational state.";
        }
        enum disabled {
          value 2;
          description
            "The resource is totally inoperable.";
        }
        enum enabled {
          value 3;
        
          description
            "The resource is partially or fully operable.";
        }
        enum testing {
          value 4;
          description
            "The resource is currently being tested and cannot
             therefore report whether or not it is operational.";
        }
      }
      description
        "Represents the possible values of operational states.";
      reference
        "RFC 4268: Entity State MIB - EntityOperState";
    }
        
          description
            "The resource is partially or fully operable.";
        }
        enum testing {
          value 4;
          description
            "The resource is currently being tested and cannot
             therefore report whether or not it is operational.";
        }
      }
      description
        "Represents the possible values of operational states.";
      reference
        "RFC 4268: Entity State MIB - EntityOperState";
    }
        
    typedef usage-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report usage state.";
        }
        enum idle {
          value 2;
          description
            "The resource is servicing no users.";
        }
        enum active {
          value 3;
          description
            "The resource is currently in use, and it has sufficient
             spare capacity to provide for additional users.";
        }
        enum busy {
          value 4;
          description
            "The resource is currently in use, but it currently has no
             spare capacity to provide for additional users.";
        }
      }
      description
        "Represents the possible values of usage states.";
      reference
        "RFC 4268: Entity State MIB -  EntityUsageState";
    }
        
    typedef usage-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report usage state.";
        }
        enum idle {
          value 2;
          description
            "The resource is servicing no users.";
        }
        enum active {
          value 3;
          description
            "The resource is currently in use, and it has sufficient
             spare capacity to provide for additional users.";
        }
        enum busy {
          value 4;
          description
            "The resource is currently in use, but it currently has no
             spare capacity to provide for additional users.";
        }
      }
      description
        "Represents the possible values of usage states.";
      reference
        "RFC 4268: Entity State MIB -  EntityUsageState";
    }
        

typedef alarm-state {

类型定义报警状态{

      type bits {
        bit unknown {
          position 0;
          description
            "The resource is unable to report alarm state.";
        }
        bit under-repair {
          position 1;
          description
            "The resource is currently being repaired, which, depending
             on the implementation, may make the other values in this
             bit string not meaningful.";
        }
        bit critical {
          position 2;
          description
            "One or more critical alarms are active against the
             resource.";
        }
        bit major {
          position 3;
          description
            "One or more major alarms are active against the
             resource.";
        }
        bit minor {
          position 4;
          description
            "One or more minor alarms are active against the
             resource.";
        }
        bit warning {
          position 5;
          description
            "One or more warning alarms are active against the
             resource.";
        }
        bit indeterminate {
          position 6;
          description
            "One or more alarms of whose perceived severity cannot be
             determined are active against this resource.";
        }
      }
      description
        "Represents the possible values of alarm states.  An alarm is a
         persistent indication of an error or warning condition.
        
      type bits {
        bit unknown {
          position 0;
          description
            "The resource is unable to report alarm state.";
        }
        bit under-repair {
          position 1;
          description
            "The resource is currently being repaired, which, depending
             on the implementation, may make the other values in this
             bit string not meaningful.";
        }
        bit critical {
          position 2;
          description
            "One or more critical alarms are active against the
             resource.";
        }
        bit major {
          position 3;
          description
            "One or more major alarms are active against the
             resource.";
        }
        bit minor {
          position 4;
          description
            "One or more minor alarms are active against the
             resource.";
        }
        bit warning {
          position 5;
          description
            "One or more warning alarms are active against the
             resource.";
        }
        bit indeterminate {
          position 6;
          description
            "One or more alarms of whose perceived severity cannot be
             determined are active against this resource.";
        }
      }
      description
        "Represents the possible values of alarm states.  An alarm is a
         persistent indication of an error or warning condition.
        
         When no bits of this attribute are set, then no active alarms
         are known against this component and it is not under repair.";
      reference
        "RFC 4268: Entity State MIB - EntityAlarmStatus";
    }
        
         When no bits of this attribute are set, then no active alarms
         are known against this component and it is not under repair.";
      reference
        "RFC 4268: Entity State MIB - EntityAlarmStatus";
    }
        
    typedef standby-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report standby state.";
        }
        enum hot-standby {
          value 2;
          description
            "The resource is not providing service, but it will be
             immediately able to take over the role of the resource to
             be backed up, without the need for initialization
             activity, and will contain the same information as the
             resource to be backed up.";
        }
        enum cold-standby {
          value 3;
          description
            "The resource is to back up another resource, but it will
             not be immediately able to take over the role of a
             resource to be backed up and will require some
             initialization activity.";
        }
        enum providing-service {
          value 4;
          description
            "The resource is providing service.";
        }
      }
      description
        "Represents the possible values of standby states.";
      reference
        "RFC 4268: Entity State MIB - EntityStandbyStatus";
    }
        
    typedef standby-state {
      type enumeration {
        enum unknown {
          value 1;
          description
            "The resource is unable to report standby state.";
        }
        enum hot-standby {
          value 2;
          description
            "The resource is not providing service, but it will be
             immediately able to take over the role of the resource to
             be backed up, without the need for initialization
             activity, and will contain the same information as the
             resource to be backed up.";
        }
        enum cold-standby {
          value 3;
          description
            "The resource is to back up another resource, but it will
             not be immediately able to take over the role of a
             resource to be backed up and will require some
             initialization activity.";
        }
        enum providing-service {
          value 4;
          description
            "The resource is providing service.";
        }
      }
      description
        "Represents the possible values of standby states.";
      reference
        "RFC 4268: Entity State MIB - EntityStandbyStatus";
    }
        
    typedef sensor-value-type {
      type enumeration {
        enum other {
          value 1;
          description
            "A measure other than those listed below.";
        
    typedef sensor-value-type {
      type enumeration {
        enum other {
          value 1;
          description
            "A measure other than those listed below.";
        
        }
        enum unknown {
          value 2;
          description
            "An unknown measurement or arbitrary, relative numbers";
        }
        enum volts-AC {
          value 3;
          description
            "A measure of electric potential (alternating current).";
        }
        enum volts-DC {
          value 4;
          description
            "A measure of electric potential (direct current).";
        }
        enum amperes {
          value 5;
          description
            "A measure of electric current.";
        }
        enum watts {
          value 6;
          description
            "A measure of power.";
        }
        enum hertz {
          value 7;
          description
            "A measure of frequency.";
        }
        enum celsius {
          value 8;
          description
            "A measure of temperature.";
        }
        enum percent-RH {
          value 9;
          description
            "A measure of percent relative humidity.";
        }
        enum rpm {
          value 10;
          description
            "A measure of shaft revolutions per minute.";
        }
        enum cmm {
          value 11;
        
        }
        enum unknown {
          value 2;
          description
            "An unknown measurement or arbitrary, relative numbers";
        }
        enum volts-AC {
          value 3;
          description
            "A measure of electric potential (alternating current).";
        }
        enum volts-DC {
          value 4;
          description
            "A measure of electric potential (direct current).";
        }
        enum amperes {
          value 5;
          description
            "A measure of electric current.";
        }
        enum watts {
          value 6;
          description
            "A measure of power.";
        }
        enum hertz {
          value 7;
          description
            "A measure of frequency.";
        }
        enum celsius {
          value 8;
          description
            "A measure of temperature.";
        }
        enum percent-RH {
          value 9;
          description
            "A measure of percent relative humidity.";
        }
        enum rpm {
          value 10;
          description
            "A measure of shaft revolutions per minute.";
        }
        enum cmm {
          value 11;
        
          description
            "A measure of cubic meters per minute (airflow).";
        }
        enum truth-value {
          value 12;
          description
            "Value is one of 1 (true) or 2 (false)";
        }
      }
      description
        "A node using this data type represents the sensor measurement
         data type associated with a physical sensor value.  The actual
         data units are determined by examining a node of this type
         together with the associated sensor-value-scale node.
        
          description
            "A measure of cubic meters per minute (airflow).";
        }
        enum truth-value {
          value 12;
          description
            "Value is one of 1 (true) or 2 (false)";
        }
      }
      description
        "A node using this data type represents the sensor measurement
         data type associated with a physical sensor value.  The actual
         data units are determined by examining a node of this type
         together with the associated sensor-value-scale node.
        
         A node of this type SHOULD be defined together with nodes of
         type sensor-value-scale and type sensor-value-precision.
         These three types are used to identify the semantics of a node
         of type sensor-value.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorDataType";
    }
        
         A node of this type SHOULD be defined together with nodes of
         type sensor-value-scale and type sensor-value-precision.
         These three types are used to identify the semantics of a node
         of type sensor-value.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorDataType";
    }
        
    typedef sensor-value-scale {
      type enumeration {
        enum yocto {
          value 1;
          description
            "Data scaling factor of 10^-24.";
        }
        enum zepto {
          value 2;
          description
            "Data scaling factor of 10^-21.";
        }
        enum atto {
          value 3;
          description
            "Data scaling factor of 10^-18.";
        }
        enum femto {
          value 4;
          description
            "Data scaling factor of 10^-15.";
        }
        enum pico {
          value 5;
        
    typedef sensor-value-scale {
      type enumeration {
        enum yocto {
          value 1;
          description
            "Data scaling factor of 10^-24.";
        }
        enum zepto {
          value 2;
          description
            "Data scaling factor of 10^-21.";
        }
        enum atto {
          value 3;
          description
            "Data scaling factor of 10^-18.";
        }
        enum femto {
          value 4;
          description
            "Data scaling factor of 10^-15.";
        }
        enum pico {
          value 5;
        
          description
            "Data scaling factor of 10^-12.";
        }
        enum nano {
          value 6;
          description
            "Data scaling factor of 10^-9.";
        }
        enum micro {
          value 7;
          description
            "Data scaling factor of 10^-6.";
        }
        enum milli {
          value 8;
          description
            "Data scaling factor of 10^-3.";
        }
        enum units {
          value 9;
          description
            "Data scaling factor of 10^0.";
        }
        enum kilo {
          value 10;
          description
            "Data scaling factor of 10^3.";
        }
        enum mega {
          value 11;
          description
            "Data scaling factor of 10^6.";
        }
        enum giga {
          value 12;
          description
            "Data scaling factor of 10^9.";
        }
        enum tera {
          value 13;
          description
            "Data scaling factor of 10^12.";
        }
        enum peta {
          value 14;
          description
            "Data scaling factor of 10^15.";
        }
        
          description
            "Data scaling factor of 10^-12.";
        }
        enum nano {
          value 6;
          description
            "Data scaling factor of 10^-9.";
        }
        enum micro {
          value 7;
          description
            "Data scaling factor of 10^-6.";
        }
        enum milli {
          value 8;
          description
            "Data scaling factor of 10^-3.";
        }
        enum units {
          value 9;
          description
            "Data scaling factor of 10^0.";
        }
        enum kilo {
          value 10;
          description
            "Data scaling factor of 10^3.";
        }
        enum mega {
          value 11;
          description
            "Data scaling factor of 10^6.";
        }
        enum giga {
          value 12;
          description
            "Data scaling factor of 10^9.";
        }
        enum tera {
          value 13;
          description
            "Data scaling factor of 10^12.";
        }
        enum peta {
          value 14;
          description
            "Data scaling factor of 10^15.";
        }
        
        enum exa {
          value 15;
          description
            "Data scaling factor of 10^18.";
        }
        enum zetta {
          value 16;
          description
            "Data scaling factor of 10^21.";
        }
        enum yotta {
          value 17;
          description
            "Data scaling factor of 10^24.";
        }
      }
      description
        "A node using this data type represents a data scaling factor,
         represented with an International System of Units (SI) prefix.
         The actual data units are determined by examining a node of
         this type together with the associated sensor-value-type.
        
        enum exa {
          value 15;
          description
            "Data scaling factor of 10^18.";
        }
        enum zetta {
          value 16;
          description
            "Data scaling factor of 10^21.";
        }
        enum yotta {
          value 17;
          description
            "Data scaling factor of 10^24.";
        }
      }
      description
        "A node using this data type represents a data scaling factor,
         represented with an International System of Units (SI) prefix.
         The actual data units are determined by examining a node of
         this type together with the associated sensor-value-type.
        
         A node of this type SHOULD be defined together with nodes of
         type sensor-value-type and type sensor-value-precision.
         Together, associated nodes of these three types are used to
         identify the semantics of a node of type sensor-value.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorDataScale";
    }
        
         A node of this type SHOULD be defined together with nodes of
         type sensor-value-type and type sensor-value-precision.
         Together, associated nodes of these three types are used to
         identify the semantics of a node of type sensor-value.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorDataScale";
    }
        
    typedef sensor-value-precision {
      type int8 {
        range "-8 .. 9";
      }
      description
        "A node using this data type represents a sensor value
         precision range.
        
    typedef sensor-value-precision {
      type int8 {
        range "-8 .. 9";
      }
      description
        "A node using this data type represents a sensor value
         precision range.
        

A node of this type SHOULD be defined together with nodes of type sensor-value-type and type sensor-value-scale. Together, associated nodes of these three types are used to identify the semantics of a node of type sensor-value.

此类型的节点应与传感器值类型和传感器值比例类型的节点一起定义。这三种类型的关联节点一起用于标识传感器值类型节点的语义。

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 part of an associated sensor-value fixed-point number.

如果此类型的节点包含范围为1到9的值,则表示相关传感器值定点数小数部分的小数位数。

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 sensor-value fixed-point number.

如果此类型的节点包含范围为-8到-1的值,则表示相关传感器值定点编号中的精确位数。

The value zero indicates the associated sensor-value node is not a fixed-point number.

值零表示关联的传感器值节点不是定点编号。

Server implementers must choose a value for the associated sensor-value-precision node so that the precision and accuracy of the associated sensor-value node is correctly indicated.

服务器实施者必须为关联的传感器值精度节点选择一个值,以便正确指示关联的传感器值节点的精度和精度。

         For example, a component representing a temperature sensor
         that can measure 0 to 100 degrees C in 0.1 degree
         increments, +/- 0.05 degrees, would have a
         sensor-value-precision value of '1', a sensor-value-scale
         value of 'units', and a sensor-value ranging from '0' to
         '1000'.  The sensor-value would be interpreted as
         'degrees C * 10'.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorPrecision";
    }
        
         For example, a component representing a temperature sensor
         that can measure 0 to 100 degrees C in 0.1 degree
         increments, +/- 0.05 degrees, would have a
         sensor-value-precision value of '1', a sensor-value-scale
         value of 'units', and a sensor-value ranging from '0' to
         '1000'.  The sensor-value would be interpreted as
         'degrees C * 10'.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorPrecision";
    }
        
    typedef sensor-value {
      type int32 {
        range "-1000000000 .. 1000000000";
      }
      description
       "A node using this data type represents a sensor value.
        
    typedef sensor-value {
      type int32 {
        range "-1000000000 .. 1000000000";
      }
      description
       "A node using this data type represents a sensor value.
        

A node of this type SHOULD be defined together with nodes of type sensor-value-type, type sensor-value-scale, and type sensor-value-precision. Together, associated nodes of those three types are used to identify the semantics of a node of this data type.

此类型的节点应与传感器值类型、传感器值比例类型和传感器值精度类型的节点一起定义。这三种类型的关联节点一起用于标识此数据类型的节点的语义。

The semantics of a node using this data type are determined by the value of the associated sensor-value-type node.

使用此数据类型的节点的语义由关联的传感器值类型节点的值确定。

If the associated sensor-value-type node is equal to 'voltsAC', 'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm', then a node of this type MUST contain a fixed-point number ranging from -999,999,999 to +999,999,999. The value -1000000000 indicates an underflow error. The value +1000000000 indicates an overflow error. The sensor-value-precision indicates how many fractional digits are represented in the associated sensor-value node.

如果关联的传感器值类型节点等于“voltsAC”、“voltsDC”、“安培”、“瓦特”、“赫兹”、“摄氏度”或“cmm”,则此类型的节点必须包含范围为-9999999到+9999999的定点编号。值-100000000表示下溢错误。值+100000000表示溢出错误。传感器值精度指示关联传感器值节点中表示的小数位数。

If the associated sensor-value-type node is equal to 'percentRH', then a node of this type MUST contain a number ranging from 0 to 100.

如果关联的传感器值类型节点等于“percentRH”,则此类型的节点必须包含0到100之间的数字。

If the associated sensor-value-type node is equal to 'rpm', then a node of this type MUST contain a number ranging from -999,999,999 to +999,999,999.

如果关联的传感器值类型节点等于“rpm”,则此类型的节点必须包含范围为-999999999到+999999999的数字。

If the associated sensor-value-type node is equal to 'truth-value', then a node of this type MUST contain either the value 1 (true) or the value 2 (false).

如果关联的传感器值类型节点等于“真值”,则此类型的节点必须包含值1(真)或值2(假)。

        If the associated sensor-value-type node is equal to 'other' or
        'unknown', then a node of this type MUST contain a number
        ranging from -1000000000 to 1000000000.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorValue";
    }
        
        If the associated sensor-value-type node is equal to 'other' or
        'unknown', then a node of this type MUST contain a number
        ranging from -1000000000 to 1000000000.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorValue";
    }
        
    typedef sensor-status {
      type enumeration {
        enum ok {
          value 1;
          description
            "Indicates that the server can obtain the sensor value.";
        }
        enum unavailable {
          value 2;
          description
            "Indicates that the server presently cannot obtain the
             sensor value.";
        }
        enum nonoperational {
          value 3;
          description
            "Indicates that the server believes the sensor is broken.
             The sensor could have a hard failure (disconnected wire)
             or a soft failure such as out-of-range, jittery, or wildly
             fluctuating readings.";
        }
      }
      description
        "A node using this data type represents the operational status
         of a physical sensor.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorStatus";
        
    typedef sensor-status {
      type enumeration {
        enum ok {
          value 1;
          description
            "Indicates that the server can obtain the sensor value.";
        }
        enum unavailable {
          value 2;
          description
            "Indicates that the server presently cannot obtain the
             sensor value.";
        }
        enum nonoperational {
          value 3;
          description
            "Indicates that the server believes the sensor is broken.
             The sensor could have a hard failure (disconnected wire)
             or a soft failure such as out-of-range, jittery, or wildly
             fluctuating readings.";
        }
      }
      description
        "A node using this data type represents the operational status
         of a physical sensor.";
      reference
        "RFC 3433: Entity Sensor Management Information Base -
                   EntitySensorStatus";
        

}

}

    /*
     * Data nodes
     */
        
    /*
     * Data nodes
     */
        

container hardware { description "Data nodes representing components.

容器硬件{description“表示组件的数据节点。

If the server supports configuration of hardware components, then this data model is instantiated in the configuration datastores supported by the server. The leaf-list 'datastore' for the module 'ietf-hardware' in the YANG library provides this information.";

如果服务器支持硬件组件的配置,那么该数据模型将在服务器支持的配置数据存储中实例化。YANG库中模块“ietf硬件”的叶列表“数据存储”提供了此信息。“;

      leaf last-change {
        type yang:date-and-time;
        config false;
        description
          "The time the '/hardware/component' list changed in the
           operational state.";
      }
        
      leaf last-change {
        type yang:date-and-time;
        config false;
        description
          "The time the '/hardware/component' list changed in the
           operational state.";
      }
        
      list component {
        key name;
        description
          "List of components.
        
      list component {
        key name;
        description
          "List of components.
        

When the server detects a new hardware component, it initializes a list entry in the operational state.

当服务器检测到一个新的硬件组件时,它会在操作状态下初始化一个列表条目。

If the server does not support configuration of hardware components, list entries in the operational state are initialized with values for all nodes as detected by the implementation.

如果服务器不支持硬件组件的配置,则使用实现检测到的所有节点的值初始化处于操作状态的列表项。

Otherwise, this procedure is followed:

否则,请遵循以下步骤:

1. If there is an entry in the '/hardware/component' list in the intended configuration with values for the nodes 'class', 'parent', and 'parent-rel-pos' that are equal to the detected values, then the list entry in the operational state is initialized with the configured values, including the 'name'.

1. 如果预期配置中的“/hardware/component”列表中有一个条目,其中节点“class”、“parent”和“parent rel pos”的值等于检测到的值,则使用配置值(包括“name”)初始化处于运行状态的列表条目。

2. Otherwise (i.e., there is no matching configuration entry), the list entry in the operational state is initialized with values for all nodes as detected by the implementation.

2. 否则(即,没有匹配的配置条目),将使用实现检测到的所有节点的值初始化处于操作状态的列表条目。

           If the '/hardware/component' list in the intended
           configuration is modified, then the system MUST behave as if
           it re-initializes itself and follow the procedure in (1).";
        reference
          "RFC 6933: Entity MIB (Version 4) - entPhysicalEntry";
        
           If the '/hardware/component' list in the intended
           configuration is modified, then the system MUST behave as if
           it re-initializes itself and follow the procedure in (1).";
        reference
          "RFC 6933: Entity MIB (Version 4) - entPhysicalEntry";
        
        leaf name {
          type string;
          description
            "The name assigned to this component.
        
        leaf name {
          type string;
          description
            "The name assigned to this component.
        
             This name is not required to be the same as
             entPhysicalName.";
        }
        
             This name is not required to be the same as
             entPhysicalName.";
        }
        
        leaf class {
          type identityref {
            base ianahw:hardware-class;
          }
          mandatory true;
          description
            "An indication of the general hardware type of the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalClass";
        }
        
        leaf class {
          type identityref {
            base ianahw:hardware-class;
          }
          mandatory true;
          description
            "An indication of the general hardware type of the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalClass";
        }
        
        leaf physical-index {
          if-feature entity-mib;
          type int32 {
            range "1..2147483647";
          }
          config false;
          description
            "The entPhysicalIndex for the entPhysicalEntry represented
             by this list entry.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
        }
        
        leaf physical-index {
          if-feature entity-mib;
          type int32 {
            range "1..2147483647";
          }
          config false;
          description
            "The entPhysicalIndex for the entPhysicalEntry represented
             by this list entry.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
        }
        
        leaf description {
          type string;
          config false;
        
        leaf description {
          type string;
          config false;
        
          description
            "A textual description of the component.  This node should
             contain a string that identifies the manufacturer's name
             for the component and should be set to a distinct value
             for each version or model of the component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr";
        }
        
          description
            "A textual description of the component.  This node should
             contain a string that identifies the manufacturer's name
             for the component and should be set to a distinct value
             for each version or model of the component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr";
        }
        
        leaf parent {
          type leafref {
            path "../../component/name";
            require-instance false;
          }
          description
            "The name of the component that physically contains this
             component.
        
        leaf parent {
          type leafref {
            path "../../component/name";
            require-instance false;
          }
          description
            "The name of the component that physically contains this
             component.
        

If this leaf is not instantiated, it indicates that this component is not contained in any other component.

如果此叶未实例化,则表示此组件未包含在任何其他组件中。

             In the event that a physical component is contained by
             more than one physical component (e.g., double-wide
             modules), this node contains the name of one of these
             components.  An implementation MUST use the same name
             every time this node is instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalContainedIn";
        }
        
             In the event that a physical component is contained by
             more than one physical component (e.g., double-wide
             modules), this node contains the name of one of these
             components.  An implementation MUST use the same name
             every time this node is instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalContainedIn";
        }
        
        leaf parent-rel-pos {
          type int32 {
            range "0 .. 2147483647";
          }
          description
            "An indication of the relative position of this child
             component among all its sibling components.  Sibling
             components are defined as components that:
        
        leaf parent-rel-pos {
          type int32 {
            range "0 .. 2147483647";
          }
          description
            "An indication of the relative position of this child
             component among all its sibling components.  Sibling
             components are defined as components that:
        

o share the same value of the 'parent' node and

o 共享“父”节点的相同值,并且

o share a common base identity for the 'class' node.

o 共享“类”节点的公共基标识。

Note that the last rule gives implementations flexibility in how components are numbered. For example, some implementations might have a single number series for all components derived from 'ianahw:port', while some others might have different number series for different

请注意,最后一条规则为实现提供了组件编号方式的灵活性。例如,一些实现可能对从“ianahw:port”派生的所有组件使用一个数字系列,而另一些实现可能对不同的组件使用不同的数字系列

components with identities derived from 'ianahw:port' (for example, one for registered jack 45 (RJ45) and one for small form-factor pluggable (SFP)).";

标识源自“ianahw:port”的组件(例如,一个用于注册插孔45(RJ45),一个用于小尺寸可插拔(SFP));

          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalParentRelPos";
        }
        
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalParentRelPos";
        }
        
        leaf-list contains-child {
          type leafref {
            path "../../component/name";
          }
          config false;
          description
            "The name of the contained component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex";
        }
        
        leaf-list contains-child {
          type leafref {
            path "../../component/name";
          }
          config false;
          description
            "The name of the contained component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex";
        }
        
        leaf hardware-rev {
          type string;
          config false;
          description
            "The vendor-specific hardware revision string for the
             component.  The preferred value is the hardware revision
             identifier actually printed on the component itself (if
             present).";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalHardwareRev";
        }
        
        leaf hardware-rev {
          type string;
          config false;
          description
            "The vendor-specific hardware revision string for the
             component.  The preferred value is the hardware revision
             identifier actually printed on the component itself (if
             present).";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalHardwareRev";
        }
        
        leaf firmware-rev {
          type string;
          config false;
          description
            "The vendor-specific firmware revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalFirmwareRev";
        }
        
        leaf firmware-rev {
          type string;
          config false;
          description
            "The vendor-specific firmware revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalFirmwareRev";
        }
        
        leaf software-rev {
          type string;
          config false;
        
        leaf software-rev {
          type string;
          config false;
        
          description
            "The vendor-specific software revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalSoftwareRev";
        }
        
          description
            "The vendor-specific software revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalSoftwareRev";
        }
        
        leaf serial-num {
          type string;
          config false;
          description
            "The vendor-specific serial number string for the
             component.  The preferred value is the serial number
             string actually printed on the component itself (if
             present).";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum";
        }
        
        leaf serial-num {
          type string;
          config false;
          description
            "The vendor-specific serial number string for the
             component.  The preferred value is the serial number
             string actually printed on the component itself (if
             present).";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum";
        }
        
        leaf mfg-name {
          type string;
          config false;
          description
            "The name of the manufacturer of this physical component.
             The preferred value is the manufacturer name string
             actually printed on the component itself (if present).
        
        leaf mfg-name {
          type string;
          config false;
          description
            "The name of the manufacturer of this physical component.
             The preferred value is the manufacturer name string
             actually printed on the component itself (if present).
        

Note that comparisons between instances of the 'model-name', 'firmware-rev', 'software-rev', and 'serial-num' nodes are only meaningful amongst components with the same value of 'mfg-name'.

请注意,“型号名称”、“固件版本”、“软件版本”和“序列号”节点实例之间的比较仅在具有相同“制造商名称”值的组件之间有意义。

             If the manufacturer name string associated with the
             physical component is unknown to the server, then this
             node is not instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
        }
        
             If the manufacturer name string associated with the
             physical component is unknown to the server, then this
             node is not instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
        }
        
        leaf model-name {
          type string;
          config false;
          description
            "The vendor-specific model name identifier string
             associated with this physical component.  The preferred
             value is the customer-visible part number, which may be
             printed on the component itself.
        
        leaf model-name {
          type string;
          config false;
          description
            "The vendor-specific model name identifier string
             associated with this physical component.  The preferred
             value is the customer-visible part number, which may be
             printed on the component itself.
        
             If the model name string associated with the physical
             component is unknown to the server, then this node is not
             instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName";
        }
        
             If the model name string associated with the physical
             component is unknown to the server, then this node is not
             instantiated.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName";
        }
        
        leaf alias {
          type string;
          description
            "An 'alias' name for the component, as specified by a
             network manager, that provides a non-volatile 'handle' for
             the component.
        
        leaf alias {
          type string;
          description
            "An 'alias' name for the component, as specified by a
             network manager, that provides a non-volatile 'handle' for
             the component.
        

If no configured value exists, the server MAY set the value of this node to a locally unique value in the operational state.

如果不存在已配置的值,服务器可以在操作状态下将此节点的值设置为本地唯一的值。

             A server implementation MAY map this leaf to the
             entPhysicalAlias MIB object.  Such an implementation needs
             to use some mechanism to handle the differences in size
             and characters allowed between this leaf and
             entPhysicalAlias.  The definition of such a mechanism is
             outside the scope of this document.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias";
        }
        
             A server implementation MAY map this leaf to the
             entPhysicalAlias MIB object.  Such an implementation needs
             to use some mechanism to handle the differences in size
             and characters allowed between this leaf and
             entPhysicalAlias.  The definition of such a mechanism is
             outside the scope of this document.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias";
        }
        
        leaf asset-id {
          type string;
          description
            "This node is a user-assigned asset tracking identifier for
             the component.
        
        leaf asset-id {
          type string;
          description
            "This node is a user-assigned asset tracking identifier for
             the component.
        
             A server implementation MAY map this leaf to the
             entPhysicalAssetID MIB object.  Such an implementation
             needs to use some mechanism to handle the differences in
             size and characters allowed between this leaf and
             entPhysicalAssetID.  The definition of such a mechanism is
             outside the scope of this document.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
        }
        
             A server implementation MAY map this leaf to the
             entPhysicalAssetID MIB object.  Such an implementation
             needs to use some mechanism to handle the differences in
             size and characters allowed between this leaf and
             entPhysicalAssetID.  The definition of such a mechanism is
             outside the scope of this document.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
        }
        
        leaf is-fru {
          type boolean;
          config false;
        
        leaf is-fru {
          type boolean;
          config false;
        
          description
            "This node indicates whether or not this component is
             considered a 'field-replaceable unit' by the vendor.  If
             this node contains the value 'true', then this component
             identifies a field-replaceable unit.  For all components
             that are permanently contained within a field-replaceable
             unit, the value 'false' should be returned for this
             node.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
        }
        
          description
            "This node indicates whether or not this component is
             considered a 'field-replaceable unit' by the vendor.  If
             this node contains the value 'true', then this component
             identifies a field-replaceable unit.  For all components
             that are permanently contained within a field-replaceable
             unit, the value 'false' should be returned for this
             node.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
        }
        
        leaf mfg-date {
          type yang:date-and-time;
          config false;
          description
            "The date of manufacturing of the managed component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
        }
        
        leaf mfg-date {
          type yang:date-and-time;
          config false;
          description
            "The date of manufacturing of the managed component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
        }
        
        leaf-list uri {
          type inet:uri;
          description
            "This node contains identification information about the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
        }
        
        leaf-list uri {
          type inet:uri;
          description
            "This node contains identification information about the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
        }
        
        leaf uuid {
          type yang:uuid;
          config false;
          description
            "A Universally Unique Identifier of the component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID";
        }
        
        leaf uuid {
          type yang:uuid;
          config false;
          description
            "A Universally Unique Identifier of the component.";
          reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID";
        }
        
        container state {
          if-feature hardware-state;
          description
            "State-related nodes";
          reference
            "RFC 4268: Entity State MIB";
        
        container state {
          if-feature hardware-state;
          description
            "State-related nodes";
          reference
            "RFC 4268: Entity State MIB";
        
          leaf state-last-changed {
            type yang:date-and-time;
        
          leaf state-last-changed {
            type yang:date-and-time;
        

config false; description "The date and time when the value of any of the admin-state, oper-state, usage-state, alarm-state, or standby-state changed for this component.

配置错误;description“此组件的任何管理状态、操作状态、使用状态、报警状态或待机状态的值更改的日期和时间。

               If there has been no change since the last
               re-initialization of the local system, this node
               contains the date and time of local system
               initialization.  If there has been no change since the
               component was added to the local system, this node
               contains the date and time of the insertion.";
            reference
              "RFC 4268: Entity State MIB - entStateLastChanged";
          }
        
               If there has been no change since the last
               re-initialization of the local system, this node
               contains the date and time of local system
               initialization.  If there has been no change since the
               component was added to the local system, this node
               contains the date and time of the insertion.";
            reference
              "RFC 4268: Entity State MIB - entStateLastChanged";
          }
        
          leaf admin-state {
            type admin-state;
            description
              "The administrative state for this component.
        
          leaf admin-state {
            type admin-state;
            description
              "The administrative state for this component.
        

This node refers to a component's administrative permission to service both other components within its containment hierarchy as well other users of its services defined by means outside the scope of this module.

此节点是指组件的管理权限,它可以为其包含层次结构内的其他组件以及通过此模块范围外的方式定义的其服务的其他用户提供服务。

               Some components exhibit only a subset of the remaining
               administrative state values.  Some components cannot be
               locked; hence, this node exhibits only the 'unlocked'
               state.  Other components cannot be shut down gracefully;
               hence, this node does not exhibit the 'shutting-down'
               state.";
            reference
              "RFC 4268: Entity State MIB - entStateAdmin";
          }
        
               Some components exhibit only a subset of the remaining
               administrative state values.  Some components cannot be
               locked; hence, this node exhibits only the 'unlocked'
               state.  Other components cannot be shut down gracefully;
               hence, this node does not exhibit the 'shutting-down'
               state.";
            reference
              "RFC 4268: Entity State MIB - entStateAdmin";
          }
        
          leaf oper-state {
            type oper-state;
            config false;
            description
              "The operational state for this component.
        
          leaf oper-state {
            type oper-state;
            config false;
            description
              "The operational state for this component.
        

Note that this node does not follow the administrative state. An administrative state of 'down' does not predict an operational state of 'disabled'.

请注意,此节点不遵循管理状态。“关闭”的管理状态不能预测“禁用”的操作状态。

               Note that some implementations may not be able to
               accurately report oper-state while the admin-state node
               has a value other than 'unlocked'.  In these cases, this
               node MUST have a value of 'unknown'.";
            reference
              "RFC 4268: Entity State MIB - entStateOper";
          }
        
               Note that some implementations may not be able to
               accurately report oper-state while the admin-state node
               has a value other than 'unlocked'.  In these cases, this
               node MUST have a value of 'unknown'.";
            reference
              "RFC 4268: Entity State MIB - entStateOper";
          }
        
          leaf usage-state {
            type usage-state;
            config false;
            description
              "The usage state for this component.
        
          leaf usage-state {
            type usage-state;
            config false;
            description
              "The usage state for this component.
        

This node refers to a component's ability to service more components in a containment hierarchy.

此节点表示组件为包含层次结构中的更多组件提供服务的能力。

               Some components will exhibit only a subset of the usage
               state values.  Components that are unable to ever
               service any components within a containment hierarchy
               will always have a usage state of 'busy'.  In some
               cases, a component will be able to support only one
               other component within its containment hierarchy and
               will therefore only exhibit values of 'idle' and
               'busy'.";
            reference
              "RFC 4268: Entity State MIB - entStateUsage";
          }
        
               Some components will exhibit only a subset of the usage
               state values.  Components that are unable to ever
               service any components within a containment hierarchy
               will always have a usage state of 'busy'.  In some
               cases, a component will be able to support only one
               other component within its containment hierarchy and
               will therefore only exhibit values of 'idle' and
               'busy'.";
            reference
              "RFC 4268: Entity State MIB - entStateUsage";
          }
        
          leaf alarm-state {
            type alarm-state;
            config false;
            description
              "The alarm state for this component.  It does not
               include the alarms raised on child components within its
               containment hierarchy.";
            reference
              "RFC 4268: Entity State MIB - entStateAlarm";
          }
        
          leaf alarm-state {
            type alarm-state;
            config false;
            description
              "The alarm state for this component.  It does not
               include the alarms raised on child components within its
               containment hierarchy.";
            reference
              "RFC 4268: Entity State MIB - entStateAlarm";
          }
        
          leaf standby-state {
            type standby-state;
            config false;
            description
              "The standby state for this component.
        
          leaf standby-state {
            type standby-state;
            config false;
            description
              "The standby state for this component.
        
               Some components will exhibit only a subset of the
               remaining standby state values.  If this component
               cannot operate in a standby role, the value of this node
               will always be 'providing-service'.";
            reference
              "RFC 4268: Entity State MIB - entStateStandby";
          }
        }
        
               Some components will exhibit only a subset of the
               remaining standby state values.  If this component
               cannot operate in a standby role, the value of this node
               will always be 'providing-service'.";
            reference
              "RFC 4268: Entity State MIB - entStateStandby";
          }
        }
        
        container sensor-data {
          when 'derived-from-or-self(../class,
                                     "ianahw:sensor")' {
            description
              "Sensor data nodes present for any component of type
               'sensor'";
          }
          if-feature hardware-sensor;
          config false;
        
        container sensor-data {
          when 'derived-from-or-self(../class,
                                     "ianahw:sensor")' {
            description
              "Sensor data nodes present for any component of type
               'sensor'";
          }
          if-feature hardware-sensor;
          config false;
        
          description
            "Sensor-related nodes.";
          reference
            "RFC 3433: Entity Sensor Management Information Base";
        
          description
            "Sensor-related nodes.";
          reference
            "RFC 3433: Entity Sensor Management Information Base";
        
          leaf value {
            type sensor-value;
            description
              "The most recent measurement obtained by the server
               for this sensor.
        
          leaf value {
            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: Entity Sensor Management Information Base -
                         entPhySensorValue";
          }
        
               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: Entity Sensor Management Information Base -
                         entPhySensorValue";
          }
        
          leaf value-type {
            type sensor-value-type;
            description
              "The type of data units associated with the
               sensor value";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorType";
          }
        
          leaf value-type {
            type sensor-value-type;
            description
              "The type of data units associated with the
               sensor value";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorType";
          }
        
          leaf value-scale {
            type sensor-value-scale;
            description
              "The (power of 10) scaling factor associated
               with the sensor value";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorScale";
          }
        
          leaf value-scale {
            type sensor-value-scale;
            description
              "The (power of 10) scaling factor associated
               with the sensor value";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorScale";
          }
        
          leaf value-precision {
            type sensor-value-precision;
            description
              "The number of decimal places of precision
               associated with the sensor value";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorPrecision";
          }
        
          leaf value-precision {
            type sensor-value-precision;
            description
              "The number of decimal places of precision
               associated with the sensor value";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorPrecision";
          }
        
          leaf oper-status {
            type sensor-status;
            description
              "The operational status of the sensor.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorOperStatus";
          }
        
          leaf oper-status {
            type sensor-status;
            description
              "The operational status of the sensor.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorOperStatus";
          }
        
          leaf units-display {
            type string;
            description
              "A textual description of the data units that should be
               used in the display of the sensor value.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorUnitsDisplay";
          }
        
          leaf units-display {
            type string;
            description
              "A textual description of the data units that should be
               used in the display of the sensor value.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorUnitsDisplay";
          }
        
          leaf value-timestamp {
            type yang:date-and-time;
            description
              "The time the status and/or value of this sensor was last
               obtained by the server.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorValueTimeStamp";
          }
        
          leaf value-timestamp {
            type yang:date-and-time;
            description
              "The time the status and/or value of this sensor was last
               obtained by the server.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorValueTimeStamp";
          }
        
          leaf value-update-rate {
            type uint32;
            units "milliseconds";
            description
              "An indication of the frequency that the server updates
               the associated 'value' node, represented in
               milliseconds.  The value zero indicates:
        
          leaf value-update-rate {
            type uint32;
            units "milliseconds";
            description
              "An indication of the frequency that the server updates
               the associated 'value' node, represented in
               milliseconds.  The value zero indicates:
        

- the sensor value is updated on demand (e.g., when polled by the server for a get-request),

- 传感器值按需更新(例如,当服务器轮询get请求时),

- the sensor value is updated when the sensor value changes (event-driven), or

- 当传感器值发生变化时(事件驱动),传感器值会更新,或

                - the server does not know the update rate.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorValueUpdateRate";
          }
        }
      }
    }
        
                - the server does not know the update rate.";
            reference
              "RFC 3433: Entity Sensor Management Information Base -
                         entPhySensorValueUpdateRate";
          }
        }
      }
    }
        
    /*
     * Notifications
     */
        
    /*
     * Notifications
     */
        
    notification hardware-state-change {
      description
        "A hardware-state-change notification is generated when the
         value of /hardware/last-change changes in the operational
         state.";
      reference
        "RFC 6933: Entity MIB (Version 4) - entConfigChange";
    }
        
    notification hardware-state-change {
      description
        "A hardware-state-change notification is generated when the
         value of /hardware/last-change changes in the operational
         state.";
      reference
        "RFC 6933: Entity MIB (Version 4) - entConfigChange";
    }
        
    notification hardware-state-oper-enabled {
      if-feature hardware-state;
      description
        "A hardware-state-oper-enabled notification signifies that a
         component has transitioned into the 'enabled' state.";
        
    notification hardware-state-oper-enabled {
      if-feature hardware-state;
      description
        "A hardware-state-oper-enabled notification signifies that a
         component has transitioned into the 'enabled' state.";
        
      leaf name {
        type leafref {
          path "/hardware/component/name";
        }
        
      leaf name {
        type leafref {
          path "/hardware/component/name";
        }
        
        description
          "The name of the component that has transitioned into the
           'enabled' state.";
      }
      leaf admin-state {
        type leafref {
          path "/hardware/component/state/admin-state";
        }
        description
          "The administrative state for the component.";
      }
      leaf alarm-state {
        type leafref {
          path "/hardware/component/state/alarm-state";
        }
        description
          "The alarm state for the component.";
      }
      reference
        "RFC 4268: Entity State MIB - entStateOperEnabled";
    }
        
        description
          "The name of the component that has transitioned into the
           'enabled' state.";
      }
      leaf admin-state {
        type leafref {
          path "/hardware/component/state/admin-state";
        }
        description
          "The administrative state for the component.";
      }
      leaf alarm-state {
        type leafref {
          path "/hardware/component/state/alarm-state";
        }
        description
          "The alarm state for the component.";
      }
      reference
        "RFC 4268: Entity State MIB - entStateOperEnabled";
    }
        
    notification hardware-state-oper-disabled {
      if-feature hardware-state;
      description
        "A hardware-state-oper-disabled notification signifies that a
         component has transitioned into the 'disabled' state.";
        
    notification hardware-state-oper-disabled {
      if-feature hardware-state;
      description
        "A hardware-state-oper-disabled notification signifies that a
         component has transitioned into the 'disabled' state.";
        
      leaf name {
        type leafref {
          path "/hardware/component/name";
        }
        description
          "The name of the component that has transitioned into the
           'disabled' state.";
      }
      leaf admin-state {
        type leafref {
          path "/hardware/component/state/admin-state";
        }
        description
          "The administrative state for the component.";
      }
      leaf alarm-state {
        type leafref {
          path "/hardware/component/state/alarm-state";
        }
        
      leaf name {
        type leafref {
          path "/hardware/component/name";
        }
        description
          "The name of the component that has transitioned into the
           'disabled' state.";
      }
      leaf admin-state {
        type leafref {
          path "/hardware/component/state/admin-state";
        }
        description
          "The administrative state for the component.";
      }
      leaf alarm-state {
        type leafref {
          path "/hardware/component/state/alarm-state";
        }
        
        description
          "The alarm state for the component.";
      }
      reference
        "RFC 4268: Entity State MIB - entStateOperDisabled";
    }
        
        description
          "The alarm state for the component.";
      }
      reference
        "RFC 4268: Entity State MIB - entStateOperDisabled";
    }
        

}

}

<CODE ENDS>

<代码结束>

7.2. "iana-hardware" Module
7.2. “iana硬件”模块
   <CODE BEGINS> file "iana-hardware@2018-03-13.yang"
        
   <CODE BEGINS> file "iana-hardware@2018-03-13.yang"
        
   module iana-hardware {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:iana-hardware";
     prefix ianahw;
        
   module iana-hardware {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:iana-hardware";
     prefix ianahw;
        

organization "IANA"; contact " Internet Assigned Numbers Authority

“IANA”组织;联系“互联网分配号码管理局”

Postal: ICANN 12025 Waterfront Drive, Suite 300 Los Angeles, CA 90094-2536 United States of America

邮政:美国加利福尼亚州洛杉矶市ICANN 12025滨水路300号套房90094-2536

        Tel:    +1 310 301 5800
        E-Mail: iana@iana.org>";
        
        Tel:    +1 310 301 5800
        E-Mail: iana@iana.org>";
        

description "IANA-defined identities for hardware class.

描述“IANA为硬件类定义的标识。

The latest revision of this YANG module can be obtained from the IANA website.

此模块的最新版本可从IANA网站获得。

Requests for new values should be made to IANA via email (iana@iana.org).

应通过电子邮件向IANA请求新值(iana@iana.org).

Copyright (c) 2018 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权所有(c)2018 IETF信托基金和被确定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License

根据简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改

set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info).

IETF信托法律条款第4.c节中规定的IETF文件(https://trustee.ietf.org/license-info).

        The initial version of this YANG module is part of RFC 8348;
        see the RFC itself for full legal notices.";
     reference
       "https://www.iana.org/assignments/yang-parameters";
        
        The initial version of this YANG module is part of RFC 8348;
        see the RFC itself for full legal notices.";
     reference
       "https://www.iana.org/assignments/yang-parameters";
        
     revision 2018-03-13 {
       description
         "Initial revision.";
       reference
         "RFC 8348: A YANG Data Model for Hardware Management";
     }
        
     revision 2018-03-13 {
       description
         "Initial revision.";
       reference
         "RFC 8348: A YANG Data Model for Hardware Management";
     }
        
     /*
      * Identities
      */
        
     /*
      * Identities
      */
        
     identity hardware-class {
       description
         "This identity is the base for all hardware class
          identifiers.";
     }
        
     identity hardware-class {
       description
         "This identity is the base for all hardware class
          identifiers.";
     }
        
     identity unknown {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is unknown
          to the server.";
     }
        
     identity unknown {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is unknown
          to the server.";
     }
        
     identity chassis {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is an
          overall container for networking equipment.  Any class of
          physical component, except a stack, may be contained within a
          chassis; a chassis may only be contained within a stack.";
     }
        
     identity chassis {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is an
          overall container for networking equipment.  Any class of
          physical component, except a stack, may be contained within a
          chassis; a chassis may only be contained within a stack.";
     }
        
     identity backplane {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of device for aggregating and forwarding networking traffic,
          such as a shared backplane in a modular ethernet switch.  Note
        
     identity backplane {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of device for aggregating and forwarding networking traffic,
          such as a shared backplane in a modular ethernet switch.  Note
        
          that an implementation may model a backplane as a single
          physical component, which is actually implemented as multiple
          discrete physical components (within a chassis or stack).";
     }
        
          that an implementation may model a backplane as a single
          physical component, which is actually implemented as multiple
          discrete physical components (within a chassis or stack).";
     }
        
     identity container {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is capable
          of containing one or more removable physical entities,
          possibly of different types.  For example, each (empty or
          full) slot in a chassis will be modeled as a container.  Note
          that all removable physical components should be modeled
          within a container component, such as field-replaceable
          modules, fans, or power supplies.  Note that all known
          containers should be modeled by the agent, including empty
          containers.";
     }
        
     identity container {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is capable
          of containing one or more removable physical entities,
          possibly of different types.  For example, each (empty or
          full) slot in a chassis will be modeled as a container.  Note
          that all removable physical components should be modeled
          within a container component, such as field-replaceable
          modules, fans, or power supplies.  Note that all known
          containers should be modeled by the agent, including empty
          containers.";
     }
        
     identity power-supply {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is a
          power-supplying component.";
     }
        
     identity power-supply {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is a
          power-supplying component.";
     }
        
     identity fan {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is a fan or
          other heat-reduction component.";
     }
        
     identity fan {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is a fan or
          other heat-reduction component.";
     }
        
     identity sensor {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of sensor, such as a temperature sensor within a router
          chassis.";
     }
        
     identity sensor {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of sensor, such as a temperature sensor within a router
          chassis.";
     }
        
     identity module {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of self-contained sub-system.  If a module component is
          removable, then it should be modeled within a container
        
     identity module {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of self-contained sub-system.  If a module component is
          removable, then it should be modeled within a container
        
          component; otherwise, it should be modeled directly within
          another physical component (e.g., a chassis or another
          module).";
     }
        
          component; otherwise, it should be modeled directly within
          another physical component (e.g., a chassis or another
          module).";
     }
        
     identity port {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of networking port capable of receiving and/or transmitting
          networking traffic.";
     }
        
     identity port {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of networking port capable of receiving and/or transmitting
          networking traffic.";
     }
        
     identity stack {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of super-container (possibly virtual) intended to group
          together multiple chassis entities.  A stack may be realized
          by a virtual cable, a real interconnect cable attached to
          multiple chassis, or multiple interconnect cables.  A stack
          should not be modeled within any other physical components,
          but a stack may be contained within another stack.  Only
          chassis components should be contained within a stack.";
     }
        
     identity stack {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of super-container (possibly virtual) intended to group
          together multiple chassis entities.  A stack may be realized
          by a virtual cable, a real interconnect cable attached to
          multiple chassis, or multiple interconnect cables.  A stack
          should not be modeled within any other physical components,
          but a stack may be contained within another stack.  Only
          chassis components should be contained within a stack.";
     }
        
     identity cpu {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of central processing unit.";
     }
        
     identity cpu {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of central processing unit.";
     }
        
     identity energy-object {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of energy object, i.e., it is a piece of equipment that is
          part of or attached to a communications network that is
          monitored, it is controlled, or it aids in the management of
          another device for Energy Management.";
     }
        
     identity energy-object {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of energy object, i.e., it is a piece of equipment that is
          part of or attached to a communications network that is
          monitored, it is controlled, or it aids in the management of
          another device for Energy Management.";
     }
        
     identity battery {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of battery.";
        
     identity battery {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of battery.";
        

}

}

     identity storage-drive {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of component with data storage capability as its main
          functionality, e.g., hard disk drive (HDD), solid-state device
          (SSD), solid-state hybrid drive (SSHD), object storage device
          (OSD), or other.";
     }
   }
        
     identity storage-drive {
       base ianahw:hardware-class;
       description
         "This identity is applicable if the hardware class is some sort
          of component with data storage capability as its main
          functionality, e.g., hard disk drive (HDD), solid-state device
          (SSD), solid-state hybrid drive (SSHD), object storage device
          (OSD), or other.";
     }
   }
        

<CODE ENDS>

<代码结束>

8. IANA Considerations
8. IANA考虑

This document defines the initial version of the IANA-maintained "iana-hardware" YANG module.

本文件定义了IANA维护的“IANA硬件”模块的初始版本。

The "iana-hardware" YANG module is intended to reflect the "IANA-ENTITY-MIB" MIB module so that if a new enumeration is added to the "IANAPhysicalClass" textual convention, the same class is added as an identity derived from "ianahw:hardware-class".

“iana hardware”模块旨在反映“iana-ENTITY-MIB”MIB模块,以便在“IANAPhysicalClass”文本约定中添加新枚举时,将同一类添加为从“ianahw:hardware class”派生的标识。

When the "iana-hardware" YANG module is updated, a new "revision" statement must be added in front of the existing revision statements.

更新“iana硬件”模块时,必须在现有修订声明之前添加新的“修订”声明。

8.1. URI Registrations
8.1. URI注册

This document registers three URIs in the "IETF XML Registry" [RFC3688]. Per the format in RFC 3688, the following registrations have been made.

本文档在“IETF XML注册表”[RFC3688]中注册了三个URI。按照RFC 3688中的格式,进行了以下注册。

URI: urn:ietf:params:xml:ns:yang:iana-hardware Registrant Contact: The IESG. XML: N/A, the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:iana硬件注册人联系人:IESG。XML:N/A,请求的URI是一个XML名称空间。

URI: urn:ietf:params:xml:ns:yang:ietf-hardware Registrant Contact: The IESG. XML: N/A, the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf硬件注册人联系人:IESG。XML:N/A,请求的URI是一个XML名称空间。

URI: urn:ietf:params:xml:ns:yang:ietf-hardware-state Registrant Contact: The IESG. XML: N/A, the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf硬件状态注册人联系人:IESG。XML:N/A,请求的URI是一个XML名称空间。

8.2. YANG Module Registrations
8.2. 杨模块注册

This document registers three YANG modules in the "YANG Module Names" registry [RFC6020].

本文件在“阳模块名称”注册表[RFC6020]中注册了三个阳模块。

     name:         iana-hardware
     namespace:    urn:ietf:params:xml:ns:yang:iana-hardware
     prefix:       ianahw
     reference:    RFC 8348
        
     name:         iana-hardware
     namespace:    urn:ietf:params:xml:ns:yang:iana-hardware
     prefix:       ianahw
     reference:    RFC 8348
        
     name:         ietf-hardware
     namespace:    urn:ietf:params:xml:ns:yang:ietf-hardware
     prefix:       hw
     reference:    RFC 8348
        
     name:         ietf-hardware
     namespace:    urn:ietf:params:xml:ns:yang:ietf-hardware
     prefix:       hw
     reference:    RFC 8348
        
     name:         ietf-hardware-state
     namespace:    urn:ietf:params:xml:ns:yang:ietf-hardware-state
     prefix:       hw-state
     reference:    RFC 8348
        
     name:         ietf-hardware-state
     namespace:    urn:ietf:params:xml:ns:yang:ietf-hardware-state
     prefix:       hw-state
     reference:    RFC 8348
        
9. Security Considerations
9. 安全考虑

The YANG modules specified in this document define a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC5246].

本文档中指定的模块为数据定义了一个模式,该模式旨在通过网络管理协议(如NETCONF[RFC6241]或restcconf[RFC8040])进行访问。最低的NETCONF层是安全传输层,实现安全传输的强制要求是安全Shell(SSH)[RFC6242]。最低的RESTCONF层是HTTPS,实现安全传输的强制层是TLS[RFC5246]。

The NETCONF access control model [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

NETCONF访问控制模型[RFC8341]提供了将特定NETCONF或RESTCONF用户的访问限制为所有可用NETCONF或RESTCONF协议操作和内容的预配置子集的方法。

There are a number of data nodes defined in the YANG module "ietf-hardware" that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. These are the subtrees and data nodes and their sensitivity/vulnerability:

模块“ietf硬件”中定义了许多数据节点,这些节点是可写/可创建/可删除的(即,默认为config true)。在某些网络环境中,这些数据节点可能被视为敏感或易受攻击。对这些数据节点的写入操作(如编辑配置)如果没有适当的保护,可能会对网络操作产生负面影响。这些是子树和数据节点及其敏感性/漏洞:

/hardware/component/admin-state: Setting this node to 'locked' or 'shutting-down' can cause disruption of services ranging from those running on a port to those on an entire device, depending on the type of component.

/硬件/组件/管理状态:根据组件的类型,将此节点设置为“锁定”或“关闭”可能会导致服务中断,服务范围从端口上运行的服务到整个设备上运行的服务。

Some of the readable data nodes in these YANG modules may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. These are the subtrees and data nodes and their sensitivity/vulnerability:

在某些网络环境中,这些模块中的一些可读数据节点可能被视为敏感或易受攻击。因此,控制对这些数据节点的读取访问(例如,通过get、get config或通知)非常重要。这些是子树和数据节点及其敏感性/漏洞:

/hardware/component: The leafs in this list expose information about the physical components in a device, which may be used to identify the vendor, model, version, and specific device-identification information of each system component.

/硬件/组件:此列表中的叶子显示设备中物理组件的信息,可用于标识每个系统组件的供应商、型号、版本和特定设备标识信息。

/hardware/component/sensor-data/value: This node may expose the values of particular physical sensors in a device.

/硬件/组件/传感器数据/值:此节点可以公开设备中特定物理传感器的值。

/hardware/component/state: Access to this node allows one to figure out what the active and standby resources in a device are.

/硬件/组件/状态:访问此节点可以确定设备中的活动和备用资源。

10. References
10. 工具书类
10.1. Normative References
10.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<https://www.rfc-editor.org/info/rfc2119>.

[RFC3433] Bierman, A., Romascanu, D., and K. Norseth, "Entity Sensor Management Information Base", RFC 3433, DOI 10.17487/RFC3433, December 2002, <https://www.rfc-editor.org/info/rfc3433>.

[RFC3433]Bierman,A.,Romascanu,D.,和K.Norseth,“实体传感器管理信息库”,RFC 3433,DOI 10.17487/RFC3433,2002年12月<https://www.rfc-editor.org/info/rfc3433>.

[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.

[RFC3688]Mealling,M.,“IETF XML注册表”,BCP 81,RFC 3688,DOI 10.17487/RFC3688,2004年1月<https://www.rfc-editor.org/info/rfc3688>.

[RFC4268] Chisholm, S. and D. Perkins, "Entity State MIB", RFC 4268, DOI 10.17487/RFC4268, November 2005, <https://www.rfc-editor.org/info/rfc4268>.

[RFC4268]Chisholm,S.和D.Perkins,“实体国家MIB”,RFC 4268,DOI 10.17487/RFC4268,2005年11月<https://www.rfc-editor.org/info/rfc4268>.

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <https://www.rfc-editor.org/info/rfc5246>.

[RFC5246]Dierks,T.和E.Rescorla,“传输层安全(TLS)协议版本1.2”,RFC 5246,DOI 10.17487/RFC5246,2008年8月<https://www.rfc-editor.org/info/rfc5246>.

[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.

[RFC6020]Bjorklund,M.,Ed.“YANG-网络配置协议的数据建模语言(NETCONF)”,RFC 6020,DOI 10.17487/RFC6020,2010年10月<https://www.rfc-editor.org/info/rfc6020>.

[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.

[RFC6241]Enns,R.,Ed.,Bjorklund,M.,Ed.,Schoenwaeld,J.,Ed.,和A.Bierman,Ed.,“网络配置协议(NETCONF)”,RFC 6241,DOI 10.17487/RFC6241,2011年6月<https://www.rfc-editor.org/info/rfc6241>.

[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>.

[RFC6242]Wasserman,M.“在安全外壳上使用NETCONF协议(SSH)”,RFC 6242,DOI 10.17487/RFC6242,2011年6月<https://www.rfc-editor.org/info/rfc6242>.

[RFC6933] Bierman, A., Romascanu, D., Quittek, J., and M. Chandramouli, "Entity MIB (Version 4)", RFC 6933, DOI 10.17487/RFC6933, May 2013, <https://www.rfc-editor.org/info/rfc6933>.

[RFC6933]Bierman,A.,Romascanu,D.,Quittek,J.,和M.Chandramouli,“实体MIB(版本4)”,RFC 6933,DOI 10.17487/RFC6933,2013年5月<https://www.rfc-editor.org/info/rfc6933>.

[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>.

[RFC6991]Schoenwaeld,J.,Ed.,“常见杨数据类型”,RFC 6991,DOI 10.17487/RFC69911913年7月<https://www.rfc-editor.org/info/rfc6991>.

[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.

[RFC7950]Bjorklund,M.,Ed.“YANG 1.1数据建模语言”,RFC 7950,DOI 10.17487/RFC7950,2016年8月<https://www.rfc-editor.org/info/rfc7950>.

[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>.

[RFC8040]Bierman,A.,Bjorklund,M.,和K.Watsen,“RESTCONF协议”,RFC 8040,DOI 10.17487/RFC8040,2017年1月<https://www.rfc-editor.org/info/rfc8040>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174]Leiba,B.,“RFC 2119关键词中大写与小写的歧义”,BCP 14,RFC 8174,DOI 10.17487/RFC8174,2017年5月<https://www.rfc-editor.org/info/rfc8174>.

[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>.

[RFC8341]Bierman,A.和M.Bjorklund,“网络配置访问控制模型”,STD 91,RFC 8341,DOI 10.17487/RFC8341,2018年3月<https://www.rfc-editor.org/info/rfc8341>.

[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, <https://www.rfc-editor.org/info/rfc8342>.

[RFC8342]Bjorklund,M.,Schoenwaeld,J.,Shafer,P.,Watsen,K.,和R.Wilton,“网络管理数据存储体系结构(NMDA)”,RFC 8342,DOI 10.17487/RFC8342,2018年3月<https://www.rfc-editor.org/info/rfc8342>.

10.2. Informative References
10.2. 资料性引用

[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.

[RFC8340]Bjorklund,M.和L.Berger,编辑,“杨树图”,BCP 215,RFC 8340,DOI 10.17487/RFC8340,2018年3月<https://www.rfc-editor.org/info/rfc8340>.

Appendix A. Hardware State Data Model
附录A.硬件状态数据模型

This non-normative appendix contains a data model designed as a temporary solution for implementations that do not yet support the Network Management Datastore Architecture (NMDA) defined in [RFC8342]. It has the following structure:

本非规范性附录包含一个数据模型,该模型是为尚未支持[RFC8342]中定义的网络管理数据存储体系结构(NMDA)的实施而设计的临时解决方案。其结构如下:

   module: ietf-hardware-state
     x--ro hardware
        x--ro last-change?   yang:date-and-time
        x--ro component* [name]
           x--ro name              string
           x--ro class             identityref
           x--ro physical-index?   int32 {entity-mib}?
           x--ro description?      string
           x--ro parent?           -> ../../component/name
           x--ro parent-rel-pos?   int32
           x--ro contains-child*   -> ../../component/name
           x--ro hardware-rev?     string
           x--ro firmware-rev?     string
           x--ro software-rev?     string
           x--ro serial-num?       string
           x--ro mfg-name?         string
           x--ro model-name?       string
           x--ro alias?            string
           x--ro asset-id?         string
           x--ro is-fru?           boolean
           x--ro mfg-date?         yang:date-and-time
           x--ro uri*              inet:uri
           x--ro uuid?             yang:uuid
           x--ro state {hardware-state}?
           |  x--ro state-last-changed?   yang:date-and-time
           |  x--ro admin-state?          hw:admin-state
           |  x--ro oper-state?           hw:oper-state
           |  x--ro usage-state?          hw:usage-state
           |  x--ro alarm-state?          hw:alarm-state
           |  x--ro standby-state?        hw:standby-state
           x--ro sensor-data {hardware-sensor}?
              x--ro value?               hw:sensor-value
              x--ro value-type?          hw:sensor-value-type
              x--ro value-scale?         hw:sensor-value-scale
              x--ro value-precision?     hw:sensor-value-precision
              x--ro oper-status?         hw:sensor-status
              x--ro units-display?       string
              x--ro value-timestamp?     yang:date-and-time
              x--ro value-update-rate?   uint32
        
   module: ietf-hardware-state
     x--ro hardware
        x--ro last-change?   yang:date-and-time
        x--ro component* [name]
           x--ro name              string
           x--ro class             identityref
           x--ro physical-index?   int32 {entity-mib}?
           x--ro description?      string
           x--ro parent?           -> ../../component/name
           x--ro parent-rel-pos?   int32
           x--ro contains-child*   -> ../../component/name
           x--ro hardware-rev?     string
           x--ro firmware-rev?     string
           x--ro software-rev?     string
           x--ro serial-num?       string
           x--ro mfg-name?         string
           x--ro model-name?       string
           x--ro alias?            string
           x--ro asset-id?         string
           x--ro is-fru?           boolean
           x--ro mfg-date?         yang:date-and-time
           x--ro uri*              inet:uri
           x--ro uuid?             yang:uuid
           x--ro state {hardware-state}?
           |  x--ro state-last-changed?   yang:date-and-time
           |  x--ro admin-state?          hw:admin-state
           |  x--ro oper-state?           hw:oper-state
           |  x--ro usage-state?          hw:usage-state
           |  x--ro alarm-state?          hw:alarm-state
           |  x--ro standby-state?        hw:standby-state
           x--ro sensor-data {hardware-sensor}?
              x--ro value?               hw:sensor-value
              x--ro value-type?          hw:sensor-value-type
              x--ro value-scale?         hw:sensor-value-scale
              x--ro value-precision?     hw:sensor-value-precision
              x--ro oper-status?         hw:sensor-status
              x--ro units-display?       string
              x--ro value-timestamp?     yang:date-and-time
              x--ro value-update-rate?   uint32
        
     notifications:
       x---n hardware-state-change
       x---n hardware-state-oper-enabled {hardware-state}?
       |  x--ro name?          -> /hardware/component/name
       |  x--ro admin-state?   -> /hardware/component/state/admin-state
       |  x--ro alarm-state?   -> /hardware/component/state/alarm-state
       x---n hardware-state-oper-disabled {hardware-state}?
          x--ro name?          -> /hardware/component/name
          x--ro admin-state?   -> /hardware/component/state/admin-state
          x--ro alarm-state?   -> /hardware/component/state/alarm-state
        
     notifications:
       x---n hardware-state-change
       x---n hardware-state-oper-enabled {hardware-state}?
       |  x--ro name?          -> /hardware/component/name
       |  x--ro admin-state?   -> /hardware/component/state/admin-state
       |  x--ro alarm-state?   -> /hardware/component/state/alarm-state
       x---n hardware-state-oper-disabled {hardware-state}?
          x--ro name?          -> /hardware/component/name
          x--ro admin-state?   -> /hardware/component/state/admin-state
          x--ro alarm-state?   -> /hardware/component/state/alarm-state
        
A.1. Hardware State YANG Module
A.1. 硬件状态模块
   <CODE BEGINS> file "ietf-hardware-state@2018-03-13.yang"
        
   <CODE BEGINS> file "ietf-hardware-state@2018-03-13.yang"
        
   module ietf-hardware-state {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-hardware-state";
     prefix hw-state;
        
   module ietf-hardware-state {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-hardware-state";
     prefix hw-state;
        
     import ietf-inet-types {
       prefix inet;
     }
     import ietf-yang-types {
       prefix yang;
     }
     import iana-hardware {
       prefix ianahw;
     }
     import ietf-hardware {
       prefix hw;
     }
        
     import ietf-inet-types {
       prefix inet;
     }
     import ietf-yang-types {
       prefix yang;
     }
     import iana-hardware {
       prefix ianahw;
     }
     import ietf-hardware {
       prefix hw;
     }
        

organization "IETF NETMOD (Network Modeling) Working Group";

组织“IETF NETMOD(网络建模)工作组”;

     contact
       "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
        WG List:  <mailto:netmod@ietf.org>
        
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
        WG List:  <mailto:netmod@ietf.org>
        
        Editor:   Andy Bierman
                  <mailto:andy@yumaworks.com>
        
        Editor:   Andy Bierman
                  <mailto:andy@yumaworks.com>
        
        Editor:   Martin Bjorklund
                  <mailto:mbj@tail-f.com>
        
        Editor:   Martin Bjorklund
                  <mailto:mbj@tail-f.com>
        
        Editor:   Jie Dong
                  <mailto:jie.dong@huawei.com>
        
        Editor:   Jie Dong
                  <mailto:jie.dong@huawei.com>
        
        Editor:   Dan Romascanu
                  <mailto:dromasca@gmail.com>";
        
        Editor:   Dan Romascanu
                  <mailto:dromasca@gmail.com>";
        

description "This module contains a collection of YANG definitions for monitoring hardware.

description“此模块包含监控硬件的定义集合。

This data model is designed as a temporary solution for implementations that do not yet support the Network Management Datastore Architecture (NMDA) defined in RFC 8342. Such an implementation cannot implement the module 'ietf-hardware' properly, since without NMDA support, it is not possible to distinguish between instances of nodes in the running configuration and operational states.

此数据模型设计为临时解决方案,用于尚未支持RFC 8342中定义的网络管理数据存储体系结构(NMDA)的实现。这种实现无法正确实现模块“ietf硬件”,因为如果没有NMDA支持,就无法区分运行配置和运行状态下的节点实例。

The data model in this module is the same as the data model in 'ietf-hardware', except all nodes are marked as 'config false'.

此模块中的数据模型与“ietf硬件”中的数据模型相同,只是所有节点都标记为“配置错误”。

If a server that implements this module but doesn't support NMDA also supports configuration of hardware components, it SHOULD also implement the module 'ietf-hardware' in the configuration datastores. The corresponding state data is found in the '/hw-state:hardware' subtree.

如果实现此模块但不支持NMDA的服务器也支持硬件组件的配置,则还应在配置数据存储中实现模块“ietf硬件”。在“/hw state:hardware”子树中可以找到相应的状态数据。

Copyright (c) 2018 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权所有(c)2018 IETF信托基金和被确定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(https://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC 8348; see the RFC itself for full legal notices.";

此模块的此版本是RFC 8348的一部分;有关完整的法律通知,请参见RFC本身。“;

     revision 2018-03-13 {
       description
         "Initial revision.";
       reference
         "RFC 8348: A YANG Data Model for Hardware Management";
     }
        
     revision 2018-03-13 {
       description
         "Initial revision.";
       reference
         "RFC 8348: A YANG Data Model for Hardware Management";
     }
        
     /*
      * Features
      */
        
     /*
      * Features
      */
        
     feature entity-mib {
       status deprecated;
       description
         "This feature indicates that the device implements
          the ENTITY-MIB.";
       reference
         "RFC 6933: Entity MIB (Version 4)";
     }
        
     feature entity-mib {
       status deprecated;
       description
         "This feature indicates that the device implements
          the ENTITY-MIB.";
       reference
         "RFC 6933: Entity MIB (Version 4)";
     }
        
     feature hardware-state {
       status deprecated;
       description
         "Indicates that ENTITY-STATE-MIB objects are supported";
       reference
         "RFC 4268: Entity State MIB";
     }
        
     feature hardware-state {
       status deprecated;
       description
         "Indicates that ENTITY-STATE-MIB objects are supported";
       reference
         "RFC 4268: Entity State MIB";
     }
        
     feature hardware-sensor {
       status deprecated;
       description
         "Indicates that ENTITY-SENSOR-MIB objects are supported";
       reference
         "RFC 3433: Entity Sensor Management Information Base";
     }
        
     feature hardware-sensor {
       status deprecated;
       description
         "Indicates that ENTITY-SENSOR-MIB objects are supported";
       reference
         "RFC 3433: Entity Sensor Management Information Base";
     }
        
     /*
      * Data nodes
      */
        
     /*
      * Data nodes
      */
        
     container hardware {
       config false;
       status deprecated;
       description
         "Data nodes representing components.";
        
     container hardware {
       config false;
       status deprecated;
       description
         "Data nodes representing components.";
        
       leaf last-change {
         type yang:date-and-time;
         status deprecated;
         description
           "The time the '/hardware/component' list changed in the
            operational state.";
       }
        
       leaf last-change {
         type yang:date-and-time;
         status deprecated;
         description
           "The time the '/hardware/component' list changed in the
            operational state.";
       }
        
       list component {
         key name;
         status deprecated;
         description
           "List of components.
        
       list component {
         key name;
         status deprecated;
         description
           "List of components.
        

When the server detects a new hardware component, it initializes a list entry in the operational state.

当服务器检测到一个新的硬件组件时,它会在操作状态下初始化一个列表条目。

If the server does not support configuration of hardware components, list entries in the operational state are initialized with values for all nodes as detected by the implementation.

如果服务器不支持硬件组件的配置,则使用实现检测到的所有节点的值初始化处于操作状态的列表项。

Otherwise, this procedure is followed:

否则,请遵循以下步骤:

1. If there is an entry in the '/hardware/component' list in the intended configuration with values for the nodes 'class', 'parent', and 'parent-rel-pos' that are equal to the detected values, then:

1. 如果在预期配置的“/hardware/component”列表中有一个条目,其中节点“class”、“parent”和“parent rel pos”的值等于检测到的值,则:

1a. If the configured entry has a value for 'mfg-name' that is equal to the detected value or if the 'mfg-name' value cannot be detected, then the list entry in the operational state is initialized with the configured values for all configured nodes, including the 'name'.

1a。如果配置条目的“mfg name”值等于检测到的值,或者如果无法检测到“mfg name”值,则使用所有配置节点(包括“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 entry), the list entry in the operational state is initialized with values for all nodes as detected by the implementation.

1b。否则(即,没有匹配的配置条目),将使用实现检测到的所有节点的值初始化处于操作状态的列表条目。

            If the '/hardware/component' list in the intended
            configuration is modified, then the system MUST behave as if
            it re-initializes itself and follow the procedure in (1).";
         reference
           "RFC 6933: Entity MIB (Version 4) - entPhysicalEntry";
        
            If the '/hardware/component' list in the intended
            configuration is modified, then the system MUST behave as if
            it re-initializes itself and follow the procedure in (1).";
         reference
           "RFC 6933: Entity MIB (Version 4) - entPhysicalEntry";
        
         leaf name {
           type string;
           status deprecated;
           description
             "The name assigned to this component.
        
         leaf name {
           type string;
           status deprecated;
           description
             "The name assigned to this component.
        

This name is not required to be the same as entPhysicalName.";

此名称不必与entPhysicalName相同。“;

}

}

         leaf class {
           type identityref {
             base ianahw:hardware-class;
           }
           mandatory true;
           status deprecated;
           description
             "An indication of the general hardware type of the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalClass";
         }
        
         leaf class {
           type identityref {
             base ianahw:hardware-class;
           }
           mandatory true;
           status deprecated;
           description
             "An indication of the general hardware type of the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalClass";
         }
        
         leaf physical-index {
           if-feature entity-mib;
           type int32 {
             range "1..2147483647";
           }
           status deprecated;
           description
             "The entPhysicalIndex for the entPhysicalEntry represented
              by this list entry.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
         }
        
         leaf physical-index {
           if-feature entity-mib;
           type int32 {
             range "1..2147483647";
           }
           status deprecated;
           description
             "The entPhysicalIndex for the entPhysicalEntry represented
              by this list entry.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
         }
        
         leaf description {
           type string;
           status deprecated;
           description
             "A textual description of the component.  This node should
              contain a string that identifies the manufacturer's name
              for the component and should be set to a distinct value
              for each version or model of the component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr";
         }
        
         leaf description {
           type string;
           status deprecated;
           description
             "A textual description of the component.  This node should
              contain a string that identifies the manufacturer's name
              for the component and should be set to a distinct value
              for each version or model of the component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr";
         }
        
         leaf parent {
           type leafref {
             path "../../component/name";
             require-instance false;
           }
           status deprecated;
        
         leaf parent {
           type leafref {
             path "../../component/name";
             require-instance false;
           }
           status deprecated;
        

description "The name of the component that physically contains this component.

description“物理上包含此组件的组件的名称。

If this leaf is not instantiated, it indicates that this component is not contained in any other component.

如果此叶未实例化,则表示此组件未包含在任何其他组件中。

              In the event that a physical component is contained by
              more than one physical component (e.g., double-wide
              modules), this node contains the name of one of these
              components.  An implementation MUST use the same name
              every time this node is instantiated.";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalContainedIn";
         }
        
              In the event that a physical component is contained by
              more than one physical component (e.g., double-wide
              modules), this node contains the name of one of these
              components.  An implementation MUST use the same name
              every time this node is instantiated.";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalContainedIn";
         }
        
         leaf parent-rel-pos {
           type int32 {
             range "0 .. 2147483647";
           }
           status deprecated;
           description
             "An indication of the relative position of this child
              component among all its sibling components.  Sibling
              components are defined as components that:
        
         leaf parent-rel-pos {
           type int32 {
             range "0 .. 2147483647";
           }
           status deprecated;
           description
             "An indication of the relative position of this child
              component among all its sibling components.  Sibling
              components are defined as components that:
        

o share the same value of the 'parent' node and

o 共享“父”节点的相同值,并且

o share a common base identity for the 'class' node.

o 共享“类”节点的公共基标识。

Note that the last rule gives implementations flexibility in how components are numbered. For example, some implementations might have a single number series for all components derived from 'ianahw:port', while some others might have different number series for different components with identities derived from 'ianahw:port' (for example, one for RJ45 and one for SFP).";

请注意,最后一条规则为实现提供了组件编号方式的灵活性。例如,一些实现可能对从“ianahw:port”派生的所有组件使用一个数字系列,而另一些实现可能对从“ianahw:port”派生的标识的不同组件使用不同的数字系列(例如,一个用于RJ45,一个用于SFP)。”;

           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalParentRelPos";
         }
        
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalParentRelPos";
         }
        
         leaf-list contains-child {
           type leafref {
             path "../../component/name";
           }
        
         leaf-list contains-child {
           type leafref {
             path "../../component/name";
           }
        
           status deprecated;
           description
             "The name of the contained component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex";
         }
        
           status deprecated;
           description
             "The name of the contained component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex";
         }
        
         leaf hardware-rev {
           type string;
           status deprecated;
           description
             "The vendor-specific hardware revision string for the
              component.  The preferred value is the hardware revision
              identifier actually printed on the component itself (if
              present).";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalHardwareRev";
         }
        
         leaf hardware-rev {
           type string;
           status deprecated;
           description
             "The vendor-specific hardware revision string for the
              component.  The preferred value is the hardware revision
              identifier actually printed on the component itself (if
              present).";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalHardwareRev";
         }
        
         leaf firmware-rev {
           type string;
           status deprecated;
           description
             "The vendor-specific firmware revision string for the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalFirmwareRev";
         }
        
         leaf firmware-rev {
           type string;
           status deprecated;
           description
             "The vendor-specific firmware revision string for the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalFirmwareRev";
         }
        
         leaf software-rev {
           type string;
           status deprecated;
           description
             "The vendor-specific software revision string for the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalSoftwareRev";
         }
        
         leaf software-rev {
           type string;
           status deprecated;
           description
             "The vendor-specific software revision string for the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) -
                        entPhysicalSoftwareRev";
         }
        
         leaf serial-num {
           type string;
           status deprecated;
        
         leaf serial-num {
           type string;
           status deprecated;
        
           description
             "The vendor-specific serial number string for the
              component.  The preferred value is the serial number
              string actually printed on the component itself (if
              present).";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum";
         }
        
           description
             "The vendor-specific serial number string for the
              component.  The preferred value is the serial number
              string actually printed on the component itself (if
              present).";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum";
         }
        
         leaf mfg-name {
           type string;
           status deprecated;
           description
             "The name of the manufacturer of this physical component.
              The preferred value is the manufacturer name string
              actually printed on the component itself (if present).
        
         leaf mfg-name {
           type string;
           status deprecated;
           description
             "The name of the manufacturer of this physical component.
              The preferred value is the manufacturer name string
              actually printed on the component itself (if present).
        

Note that comparisons between instances of the 'model-name', 'firmware-rev', 'software-rev', and 'serial-num' nodes are only meaningful amongst components with the same value of 'mfg-name'.

请注意,“型号名称”、“固件版本”、“软件版本”和“序列号”节点实例之间的比较仅在具有相同“制造商名称”值的组件之间有意义。

              If the manufacturer name string associated with the
              physical component is unknown to the server, then this
              node is not instantiated.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
         }
        
              If the manufacturer name string associated with the
              physical component is unknown to the server, then this
              node is not instantiated.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
         }
        
         leaf model-name {
           type string;
           status deprecated;
           description
             "The vendor-specific model name identifier string
              associated with this physical component.  The preferred
              value is the customer-visible part number, which may be
              printed on the component itself.
        
         leaf model-name {
           type string;
           status deprecated;
           description
             "The vendor-specific model name identifier string
              associated with this physical component.  The preferred
              value is the customer-visible part number, which may be
              printed on the component itself.
        
              If the model name string associated with the physical
              component is unknown to the server, then this node is not
              instantiated.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName";
         }
        
              If the model name string associated with the physical
              component is unknown to the server, then this node is not
              instantiated.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName";
         }
        
         leaf alias {
           type string;
           status deprecated;
        
         leaf alias {
           type string;
           status deprecated;
        

description "An 'alias' name for the component, as specified by a network manager, that provides a non-volatile 'handle' for the component.

description“由网络管理器指定的组件“别名”,为组件提供非易失性“句柄”。

If no configured value exists, the server MAY set the value of this node to a locally unique value in the operational state.

如果不存在已配置的值,服务器可以在操作状态下将此节点的值设置为本地唯一的值。

              A server implementation MAY map this leaf to the
              entPhysicalAlias MIB object.  Such an implementation needs
              to use some mechanism to handle the differences in size
              and characters allowed between this leaf and
              entPhysicalAlias.  The definition of such a mechanism is
              outside the scope of this document.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias";
         }
        
              A server implementation MAY map this leaf to the
              entPhysicalAlias MIB object.  Such an implementation needs
              to use some mechanism to handle the differences in size
              and characters allowed between this leaf and
              entPhysicalAlias.  The definition of such a mechanism is
              outside the scope of this document.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias";
         }
        
         leaf asset-id {
           type string;
           status deprecated;
           description
             "This node is a user-assigned asset tracking identifier for
              the component.
        
         leaf asset-id {
           type string;
           status deprecated;
           description
             "This node is a user-assigned asset tracking identifier for
              the component.
        
              A server implementation MAY map this leaf to the
              entPhysicalAssetID MIB object.  Such an implementation
              needs to use some mechanism to handle the differences in
              size and characters allowed between this leaf and
              entPhysicalAssetID.  The definition of such a mechanism is
              outside the scope of this document.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
         }
        
              A server implementation MAY map this leaf to the
              entPhysicalAssetID MIB object.  Such an implementation
              needs to use some mechanism to handle the differences in
              size and characters allowed between this leaf and
              entPhysicalAssetID.  The definition of such a mechanism is
              outside the scope of this document.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
         }
        
         leaf is-fru {
           type boolean;
           status deprecated;
           description
             "This node indicates whether or not this component is
              considered a 'field-replaceable unit' by the vendor.  If
              this node contains the value 'true', then this component
              identifies a field-replaceable unit.  For all components
              that are permanently contained within a field-replaceable
              unit, the value 'false' should be returned for this
              node.";
        
         leaf is-fru {
           type boolean;
           status deprecated;
           description
             "This node indicates whether or not this component is
              considered a 'field-replaceable unit' by the vendor.  If
              this node contains the value 'true', then this component
              identifies a field-replaceable unit.  For all components
              that are permanently contained within a field-replaceable
              unit, the value 'false' should be returned for this
              node.";
        
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
         }
        
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
         }
        
         leaf mfg-date {
           type yang:date-and-time;
           status deprecated;
           description
             "The date of manufacturing of the managed component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
         }
        
         leaf mfg-date {
           type yang:date-and-time;
           status deprecated;
           description
             "The date of manufacturing of the managed component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
         }
        
         leaf-list uri {
           type inet:uri;
           status deprecated;
           description
             "This node contains identification information about the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
         }
        
         leaf-list uri {
           type inet:uri;
           status deprecated;
           description
             "This node contains identification information about the
              component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
         }
        
         leaf uuid {
           type yang:uuid;
           status deprecated;
           description
             "A Universally Unique Identifier of the component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID";
         }
        
         leaf uuid {
           type yang:uuid;
           status deprecated;
           description
             "A Universally Unique Identifier of the component.";
           reference
             "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID";
         }
        
         container state {
           if-feature hardware-state;
           status deprecated;
           description
             "State-related nodes";
           reference
             "RFC 4268: Entity State MIB";
        
         container state {
           if-feature hardware-state;
           status deprecated;
           description
             "State-related nodes";
           reference
             "RFC 4268: Entity State MIB";
        
           leaf state-last-changed {
             type yang:date-and-time;
             status deprecated;
             description
               "The date and time when the value of any of the
                admin-state, oper-state, usage-state, alarm-state, or
                standby-state changed for this component.
        
           leaf state-last-changed {
             type yang:date-and-time;
             status deprecated;
             description
               "The date and time when the value of any of the
                admin-state, oper-state, usage-state, alarm-state, or
                standby-state changed for this component.
        
                If there has been no change since the last
                re-initialization of the local system, this node
                contains the date and time of local system
                initialization.  If there has been no change since the
                component was added to the local system, this node
                contains the date and time of the insertion.";
             reference
               "RFC 4268: Entity State MIB - entStateLastChanged";
           }
        
                If there has been no change since the last
                re-initialization of the local system, this node
                contains the date and time of local system
                initialization.  If there has been no change since the
                component was added to the local system, this node
                contains the date and time of the insertion.";
             reference
               "RFC 4268: Entity State MIB - entStateLastChanged";
           }
        
           leaf admin-state {
             type hw:admin-state;
             status deprecated;
             description
               "The administrative state for this component.
        
           leaf admin-state {
             type hw:admin-state;
             status deprecated;
             description
               "The administrative state for this component.
        

This node refers to a component's administrative permission to service both other components within its containment hierarchy as well as other users of its services defined by means outside the scope of this module.

此节点是指组件对其包含层次结构内的其他组件以及通过此模块范围外的方式定义的其服务的其他用户提供服务的管理权限。

                Some components exhibit only a subset of the remaining
                administrative state values.  Some components cannot be
                locked; hence, this node exhibits only the 'unlocked'
                state.  Other components cannot be shut down gracefully;
                hence, this node does not exhibit the 'shutting-down'
                state.";
             reference
               "RFC 4268: Entity State MIB - entStateAdmin";
           }
        
                Some components exhibit only a subset of the remaining
                administrative state values.  Some components cannot be
                locked; hence, this node exhibits only the 'unlocked'
                state.  Other components cannot be shut down gracefully;
                hence, this node does not exhibit the 'shutting-down'
                state.";
             reference
               "RFC 4268: Entity State MIB - entStateAdmin";
           }
        
           leaf oper-state {
             type hw:oper-state;
             status deprecated;
             description
               "The operational state for this component.
        
           leaf oper-state {
             type hw:oper-state;
             status deprecated;
             description
               "The operational state for this component.
        

Note that this node does not follow the administrative state. An administrative state of 'down' does not predict an operational state of 'disabled'.

请注意,此节点不遵循管理状态。“关闭”的管理状态不能预测“禁用”的操作状态。

                Note that some implementations may not be able to
                accurately report oper-state while the admin-state node
                has a value other than 'unlocked'.  In these cases, this
                node MUST have a value of 'unknown'.";
             reference
               "RFC 4268: Entity State MIB - entStateOper";
        
                Note that some implementations may not be able to
                accurately report oper-state while the admin-state node
                has a value other than 'unlocked'.  In these cases, this
                node MUST have a value of 'unknown'.";
             reference
               "RFC 4268: Entity State MIB - entStateOper";
        

}

}

           leaf usage-state {
             type hw:usage-state;
             status deprecated;
             description
               "The usage state for this component.
        
           leaf usage-state {
             type hw:usage-state;
             status deprecated;
             description
               "The usage state for this component.
        

This node refers to a component's ability to service more components in a containment hierarchy.

此节点表示组件为包含层次结构中的更多组件提供服务的能力。

                Some components will exhibit only a subset of the usage
                state values.  Components that are unable to ever
                service any components within a containment hierarchy
                will always have a usage state of 'busy'.  In some
                cases, a component will be able to support only one
                other component within its containment hierarchy and
                will therefore only exhibit values of 'idle' and
                'busy'.";
             reference
               "RFC 4268: Entity State MIB - entStateUsage";
           }
        
                Some components will exhibit only a subset of the usage
                state values.  Components that are unable to ever
                service any components within a containment hierarchy
                will always have a usage state of 'busy'.  In some
                cases, a component will be able to support only one
                other component within its containment hierarchy and
                will therefore only exhibit values of 'idle' and
                'busy'.";
             reference
               "RFC 4268: Entity State MIB - entStateUsage";
           }
        
           leaf alarm-state {
             type hw:alarm-state;
             status deprecated;
             description
               "The alarm state for this component.  It does not
                include the alarms raised on child components within its
                containment hierarchy.";
             reference
               "RFC 4268: Entity State MIB - entStateAlarm";
           }
        
           leaf alarm-state {
             type hw:alarm-state;
             status deprecated;
             description
               "The alarm state for this component.  It does not
                include the alarms raised on child components within its
                containment hierarchy.";
             reference
               "RFC 4268: Entity State MIB - entStateAlarm";
           }
        
           leaf standby-state {
             type hw:standby-state;
             status deprecated;
             description
               "The standby state for this component.
        
           leaf standby-state {
             type hw:standby-state;
             status deprecated;
             description
               "The standby state for this component.
        
                Some components will exhibit only a subset of the
                remaining standby state values.  If this component
                cannot operate in a standby role, the value of this node
                will always be 'providing-service'.";
             reference
               "RFC 4268: Entity State MIB - entStateStandby";
           }
         }
        
                Some components will exhibit only a subset of the
                remaining standby state values.  If this component
                cannot operate in a standby role, the value of this node
                will always be 'providing-service'.";
             reference
               "RFC 4268: Entity State MIB - entStateStandby";
           }
         }
        
         container sensor-data {
           when 'derived-from-or-self(../class,
                                      "ianahw:sensor")' {
             description
               "Sensor data nodes present for any component of type
                'sensor'";
           }
           if-feature hardware-sensor;
           status deprecated;
        
         container sensor-data {
           when 'derived-from-or-self(../class,
                                      "ianahw:sensor")' {
             description
               "Sensor data nodes present for any component of type
                'sensor'";
           }
           if-feature hardware-sensor;
           status deprecated;
        
           description
             "Sensor-related nodes.";
           reference
             "RFC 3433: Entity Sensor Management Information Base";
        
           description
             "Sensor-related nodes.";
           reference
             "RFC 3433: Entity Sensor Management Information Base";
        
           leaf value {
             type hw:sensor-value;
             status deprecated;
             description
               "The most recent measurement obtained by the server
                for this sensor.
        
           leaf value {
             type hw:sensor-value;
             status deprecated;
             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: Entity Sensor Management Information Base -
                          entPhySensorValue";
           }
        
                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: Entity Sensor Management Information Base -
                          entPhySensorValue";
           }
        
           leaf value-type {
             type hw:sensor-value-type;
             status deprecated;
             description
               "The type of data units associated with the
                sensor value";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorType";
           }
        
           leaf value-type {
             type hw:sensor-value-type;
             status deprecated;
             description
               "The type of data units associated with the
                sensor value";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorType";
           }
        
           leaf value-scale {
             type hw:sensor-value-scale;
             status deprecated;
             description
               "The (power of 10) scaling factor associated
                with the sensor value";
        
           leaf value-scale {
             type hw:sensor-value-scale;
             status deprecated;
             description
               "The (power of 10) scaling factor associated
                with the sensor value";
        
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorScale";
           }
        
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorScale";
           }
        
           leaf value-precision {
             type hw:sensor-value-precision;
             status deprecated;
             description
               "The number of decimal places of precision
                associated with the sensor value";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorPrecision";
           }
        
           leaf value-precision {
             type hw:sensor-value-precision;
             status deprecated;
             description
               "The number of decimal places of precision
                associated with the sensor value";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorPrecision";
           }
        
           leaf oper-status {
             type hw:sensor-status;
             status deprecated;
             description
               "The operational status of the sensor.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorOperStatus";
           }
        
           leaf oper-status {
             type hw:sensor-status;
             status deprecated;
             description
               "The operational status of the sensor.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorOperStatus";
           }
        
           leaf units-display {
             type string;
             status deprecated;
             description
               "A textual description of the data units that should be
                used in the display of the sensor value.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorUnitsDisplay";
           }
        
           leaf units-display {
             type string;
             status deprecated;
             description
               "A textual description of the data units that should be
                used in the display of the sensor value.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorUnitsDisplay";
           }
        
           leaf value-timestamp {
             type yang:date-and-time;
             status deprecated;
             description
               "The time the status and/or value of this sensor was last
                obtained by the server.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorValueTimeStamp";
           }
        
           leaf value-timestamp {
             type yang:date-and-time;
             status deprecated;
             description
               "The time the status and/or value of this sensor was last
                obtained by the server.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorValueTimeStamp";
           }
        
           leaf value-update-rate {
             type uint32;
             units "milliseconds";
             status deprecated;
             description
               "An indication of the frequency that the server updates
                the associated 'value' node, represented in
                milliseconds.  The value zero indicates:
        
           leaf value-update-rate {
             type uint32;
             units "milliseconds";
             status deprecated;
             description
               "An indication of the frequency that the server updates
                the associated 'value' node, represented in
                milliseconds.  The value zero indicates:
        

- the sensor value is updated on demand (e.g., when polled by the server for a get-request),

- 传感器值按需更新(例如,当服务器轮询get请求时),

- the sensor value is updated when the sensor value changes (event-driven), or

- 当传感器值发生变化时(事件驱动),传感器值会更新,或

                 - the server does not know the update rate.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorValueUpdateRate";
           }
         }
       }
     }
        
                 - the server does not know the update rate.";
             reference
               "RFC 3433: Entity Sensor Management Information Base -
                          entPhySensorValueUpdateRate";
           }
         }
       }
     }
        
     /*
      * Notifications
      */
        
     /*
      * Notifications
      */
        
     notification hardware-state-change {
       status deprecated;
       description
         "A hardware-state-change notification is generated when the
          value of /hardware/last-change changes in the operational
          state.";
       reference
         "RFC 6933: Entity MIB (Version 4) - entConfigChange";
     }
        
     notification hardware-state-change {
       status deprecated;
       description
         "A hardware-state-change notification is generated when the
          value of /hardware/last-change changes in the operational
          state.";
       reference
         "RFC 6933: Entity MIB (Version 4) - entConfigChange";
     }
        
     notification hardware-state-oper-enabled {
       if-feature hardware-state;
       status deprecated;
       description
         "A hardware-state-oper-enabled notification signifies that a
          component has transitioned into the 'enabled' state.";
        
     notification hardware-state-oper-enabled {
       if-feature hardware-state;
       status deprecated;
       description
         "A hardware-state-oper-enabled notification signifies that a
          component has transitioned into the 'enabled' state.";
        
       leaf name {
         type leafref {
           path "/hardware/component/name";
        
       leaf name {
         type leafref {
           path "/hardware/component/name";
        
         }
         status deprecated;
         description
           "The name of the component that has transitioned into the
            'enabled' state.";
       }
       leaf admin-state {
         type leafref {
           path "/hardware/component/state/admin-state";
         }
         status deprecated;
         description
           "The administrative state for the component.";
       }
       leaf alarm-state {
         type leafref {
           path "/hardware/component/state/alarm-state";
         }
         status deprecated;
         description
           "The alarm state for the component.";
       }
       reference
         "RFC 4268: Entity State MIB - entStateOperEnabled";
     }
        
         }
         status deprecated;
         description
           "The name of the component that has transitioned into the
            'enabled' state.";
       }
       leaf admin-state {
         type leafref {
           path "/hardware/component/state/admin-state";
         }
         status deprecated;
         description
           "The administrative state for the component.";
       }
       leaf alarm-state {
         type leafref {
           path "/hardware/component/state/alarm-state";
         }
         status deprecated;
         description
           "The alarm state for the component.";
       }
       reference
         "RFC 4268: Entity State MIB - entStateOperEnabled";
     }
        
     notification hardware-state-oper-disabled {
       if-feature hardware-state;
       status deprecated;
       description
         "A hardware-state-oper-disabled notification signifies that a
          component has transitioned into the 'disabled' state.";
        
     notification hardware-state-oper-disabled {
       if-feature hardware-state;
       status deprecated;
       description
         "A hardware-state-oper-disabled notification signifies that a
          component has transitioned into the 'disabled' state.";
        
       leaf name {
         type leafref {
           path "/hardware/component/name";
         }
         status deprecated;
         description
           "The name of the component that has transitioned into the
            'disabled' state.";
       }
       leaf admin-state {
         type leafref {
           path "/hardware/component/state/admin-state";
         }
         status deprecated;
        
       leaf name {
         type leafref {
           path "/hardware/component/name";
         }
         status deprecated;
         description
           "The name of the component that has transitioned into the
            'disabled' state.";
       }
       leaf admin-state {
         type leafref {
           path "/hardware/component/state/admin-state";
         }
         status deprecated;
        
         description
           "The administrative state for the component.";
       }
       leaf alarm-state {
         type leafref {
           path "/hardware/component/state/alarm-state";
         }
         status deprecated;
         description
           "The alarm state for the component.";
       }
       reference
         "RFC 4268: Entity State MIB - entStateOperDisabled";
     }
        
         description
           "The administrative state for the component.";
       }
       leaf alarm-state {
         type leafref {
           path "/hardware/component/state/alarm-state";
         }
         status deprecated;
         description
           "The alarm state for the component.";
       }
       reference
         "RFC 4268: Entity State MIB - entStateOperDisabled";
     }
        

}

}

<CODE ENDS>

<代码结束>

Acknowledgments

致谢

The authors wish to thank the following individuals, who all provided helpful comments on various draft versions of this document: Bart Bogaert, Timothy Carey, William Lupton, and Juergen Schoenwaelder.

作者希望感谢以下个人,他们都对本文件的各种草案版本提供了有益的意见:巴特·博格尔特、蒂莫西·凯里、威廉·卢普顿和尤尔根·斯肯瓦埃尔德。

Authors' Addresses

作者地址

Andy Bierman YumaWorks

安迪·比尔曼·尤马沃斯

   Email: andy@yumaworks.com
        
   Email: andy@yumaworks.com
        

Martin Bjorklund Tail-f Systems

Martin Bjorklund Tail-f系统

   Email: mbj@tail-f.com
        
   Email: mbj@tail-f.com
        

Jie Dong Huawei Technologies

杰东华为技术有限公司

   Email: jie.dong@huawei.com
        
   Email: jie.dong@huawei.com
        

Dan Romascanu

丹·罗马斯卡努

   Email: dromasca@gmail.com
        
   Email: dromasca@gmail.com