<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 2.7.0) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-ccamp-network-inventory-yang-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Network Hardware Inventory YANG">A YANG Data Model for Network Hardware Inventory</title>

    <author initials="C." surname="Yu" fullname="Chaode Yu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>yuchaode@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Belotti" fullname="Sergio Belotti">
      <organization>Nokia</organization>
      <address>
        <email>sergio.belotti@nokia.com</email>
      </address>
    </author>
    <author initials="J.-F." surname="Bouquier" fullname="Jean-Francois Bouquier">
      <organization>Vodafone</organization>
      <address>
        <email>jeff.bouquier@vodafone.com</email>
      </address>
    </author>
    <author initials="F." surname="Peruzzini" fullname="Fabio Peruzzini">
      <organization>TIM</organization>
      <address>
        <email>fabio.peruzzini@telecomitalia.it</email>
      </address>
    </author>
    <author initials="P." surname="Bedard" fullname="Phil Bedard">
      <organization>Cisco</organization>
      <address>
        <email>phbedard@cisco.com</email>
      </address>
    </author>

    <date year="2023" month="July" day="07"/>

    
    <workgroup>CCAMP Working Group</workgroup>
    

    <abstract>


<t>This document defines a YANG data model for network hardware inventory data information.</t>

<t>The YANG data model presented in this document is intended to be used as the basis toward a generic YANG data model for network hardware inventory data information which can be augmented, when required, with technology-specific (e.g., optical) inventory data, to be defined either in a future version of this document or in another document.</t>

<t>The YANG data model defined in this document conforms to the Network Management Datastore Architecture (NMDA).</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Network hardware inventory management is a key component in operators' OSS architectures.</t>

<t>Network hardware inventory is a fundamental functionality in network management and was specified many years ago. Given the emergence of data models and their deployment in operator's management and control systems, the traditional function of inventory management is also requested to be defined as a data model.</t>

<t>Network hardware inventory management and monitoring is a critical part for ensuring the network stays healthy, well-planned, and functioning in the operator's network. Network hardware inventory management allows the operator to keep track of which physical devices are deployed in the network including relevant software and hardware versions.</t>

<t>The network hardware inventory management also helps the operator to know when to acquire new assets and what is needed, or to decommission old or faulty ones, which can help to improve network performance and capacity planning.</t>

<t>In <xref target="I-D.ietf-teas-actn-poi-applicability"/> a gap was identified regarding the lack of a YANG data model that could be used at ACTN MPI interface level to report whole/partial network hardware inventory information available at domain controller level towards north-bound systems (e.g., MDSC or OSS layer).</t>

<t><xref target="RFC8345"/> initial goal was to make possible the augmentation of the YANG data model with network hardware inventory data model but this was never developed and the scope was kept limited to network topology data only.</t>

<t>It is key for operators to drive the industry towards the use of a standard YANG data model for network hardware inventory data instead of using vendors proprietary APIs (e.g., REST API).</t>

<t>In the ACTN architecture, this would bring also clear benefits at MDSC level for packet over optical integration scenarios since this would enable the correlation of the inventory information with the links information reported in the network topology model.</t>

<t>The intention is to define a generic YANG data model that would be as much as possible technology agnostic (valid for IP, optical and microwave networks) and that could be augmented, when required, to include some technology-specific inventory details.</t>

<t><xref target="RFC8348"/> defines a YANG data model for the management of the hardware on a single server and therefore it is more applicable to the domain controller South Bound Interface (SBI) towards the network elements rather than at the domain controller's northbound. However, the YANG data model defined in <xref target="RFC8348"/> has been used as a reference for defining the YANG network hardware inventory data model presented in this draft.</t>

<t>For optical network hardware inventory, the network hardware inventory YANG data model should support the use cases (4a and 4b) and requirements as defined in <xref target="ONF_TR-547"/>, in order to guarantee a seamless integration at MDSC/OSS/orchestration layers.</t>

<t>The proposed YANG data model has been analysed at the present stage to cover the requirements and use cases for Optical Network Hardware Inventory.</t>

<t>Being based on <xref target="RFC8348"/>, this data model should be a good starting point toward a generic data model and applicable to any technology. However, further analysis of requirements and use cases is needed to extend the applicability of this YANG data model to other types of networks (IP and microwave) and to identify which aspects are generic and which aspects are technology-specific for optical networks.</t>

<t>This document defines two YANG modules: "ietf-network-hardware-inventory", defined in <xref target="ni-yang"/>, and "ietf-hw-inventory-ref-topo", defined in <xref target="ref-yang"/>.</t>

<t>The YANG data models defined in this document conform to the Network Management Datastore Architecture <xref target="RFC8342"/>.</t>

<section anchor="terminology-and-notations"><name>Terminology and Notations</name>

<t>The following terms are defined in <xref target="RFC7950"/> and are not
  redefined here:</t>

<t><list style="symbols">
  <t>client</t>
  <t>server</t>
  <t>augment</t>
  <t>data model</t>
  <t>data node</t>
</list></t>

<t>The following terms are defined in <xref target="RFC6241"/> and are not redefined
  here:</t>

<t><list style="symbols">
  <t>configuration data</t>
  <t>state data</t>
</list></t>

<t>The terminology for describing YANG data models is found in
  <xref target="RFC7950"/>.</t>

<t>TBD: Recap the concept of chassis/slot/component/board/... in <xref target="TMF_SD2-20"/>.</t>

<t>Following terms are used for the representation of the hierarchies in the network hardware inventory.</t>

<t>Network Element:</t>

<ul empty="true"><li>
  <t>a device installed on one or several chassis and can afford some specific transmission function independently.</t>
</li></ul>

<t>Rack:</t>

<ul empty="true"><li>
  <t>a holder of the device and provides power supply for the device in it.</t>
</li></ul>

<t>Chassis:</t>

<ul empty="true"><li>
  <t>a holder of the device installation.</t>
</li></ul>

<t>Slot:</t>

<ul empty="true"><li>
  <t>a holder of the board.</t>
</li></ul>

<t>Component:</t>

<ul empty="true"><li>
  <t>holders and equipment of the network element, including chassis, slot, sub-slot, board and port.</t>
</li></ul>

<t>Board/Card:</t>

<ul empty="true"><li>
  <t>a pluggable equipment can be inserted into one or several slots/sub-slots and can afford a specific transmission function independently.</t>
</li></ul>

<t>Port:</t>

<ul empty="true"><li>
  <t>an interface on board</t>
</li></ul>

</section>
<section anchor="requirements-notation"><name>Requirements Notation</name>

<t>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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="tree-diagram"><name>Tree Diagram</name>

<t>A simplified graphical representation of the data model is used in <xref target="tree"/> of this document.
The meaning of the symbols in this diagram is defined in <xref target="RFC8340"/>.</t>

</section>
<section anchor="prefix-in-data-node-names"><name>Prefix in Data Node Names</name>

<t>In this document, names of data nodes and other data model objects
  are prefixed using the standard prefix associated with the
  corresponding YANG imported modules, as shown in the following table.</t>

<texttable title="Prefixes and corresponding YANG modules" anchor="tab-prefixes">
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>Yang Module</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>inet</c>
      <c>ietf-inet-types</c>
      <c><xref target="RFC6991"/></c>
      <c>yang</c>
      <c>ietf-yang-types</c>
      <c><xref target="RFC6991"/></c>
      <c>ianahw</c>
      <c>iana-hardware</c>
      <c><xref target="IANA_YANG"/></c>
      <c>ni</c>
      <c>ietf-network-hardware-inventory</c>
      <c>RFC XXXX</c>
      <c>hirt</c>
      <c>ietf-hw-inventory-ref-topo</c>
      <c>RFC XXXX</c>
</texttable>

<t>RFC Editor Note:
Please replace XXXX with the RFC number assigned to this document.
Please remove this note.</t>

</section>
</section>
<section anchor="yang-data-model-for-network-hardware-inventory"><name>YANG Data Model for Network Hardware Inventory</name>

<section anchor="yang-model-overview"><name>YANG Model Overview</name>

<t>Based on TMF classification in <xref target="TMF_SD2-20"/>, inventory objects can be divided into two groups, holder group and equipment group. The holder group contains rack, chassis, slot, sub-slot while the equipment group contains network-element, board and port. With the requirement of GIS and on-demand domain controller selection raised, the equipment room becomes a new inventory object to be managed besides TMF classification.</t>

<t>Logically,  the relationship between these inventory objects can be described by <xref target="fig-inventory-object-relationship"/> below:</t>

<figure title="Relationship between inventory objects" anchor="fig-inventory-object-relationship"><artwork type="ascii-art"><![CDATA[
                +-------------+
                |  inventory  |
                +-------------+
                    // \\
              1:N  //   \\ 1:M
                  //     \\
  +----------------+     +-----------------+ 
  | equipment room |     | network element |
  +----------------+     +-----------------+
          ||                     ||
          || 1:N                 ||
          \/                     || 
    +------------+               ||1:M
    |    rack    |               ||
    +------------+               ||
          ||                     ||
          || 1:N                 \/
          ||______________\+-------------+
          |---------------/|   chassis/  |---+
                           | sub-chassis |<--|
                           +-------------+
                                 ||
                  ______1:N______||_____1:M_______
                  ||------------------ ---------||
                  \/                            \/
           +--------------+               +-----------+
       +---|     slot     |               |   board   |
       |-->|  /sub-slot   |               |           |
           +--------------+               +-----------+
                                                ||
                                                ||1:N
                                                \/
                                          +-----------+ 
                                          |    port   |
                                          +-----------+

]]></artwork></figure>

<t>In <xref target="RFC8348"/>, rack, chassis, slot, sub-slot, board and port are defined as components of network elements with generic attributes.</t>

<t>Considering there are some special scenarios, there is no direct relationship between the rack and network element. In some cases, one network element contains multiple racks while in other cases one rack contains several shelves belonging to one or more network elements.</t>

<t>While <xref target="RFC8348"/> is used to manage the hardware of a single server (e.g., a network element), the Network Hardware Inventory YANG data model is used to retrieve the network hardware inventory information that a controller discovers from all the network elements under its control.</t>

<t>However, the YANG data model defined in <xref target="RFC8348"/> has been used as a reference for defining the YANG network hardware inventory data model. This approach can simplify the implementation of this network hardware inventory model when the controller uses the YANG data model defined in <xref target="RFC8348"/> to retrieve the hardware  from the network elements under its control.</t>

<t>Note: review in future versions of this document whether to re-use definitions from <xref target="RFC8348"/> or use schema-mount.</t>

<figure><artwork type="ascii-art"><![CDATA[
  +--ro network-hardware-inventory
     +--ro equipment-rooms
     |  +--ro equipment-room* [uuid]
     |     +--ro uuid        yang:uuid
     |     ...................................
     |     +--ro racks
     |        +--ro rack* [uuid]
     |           +--ro uuid           yang:uuid
     |           ...................................
     |           +--ro contained-chassis* [ne-ref component-ref]
     |              +--ro ne-ref?          leafref
     |              +--ro component-ref?   leafref
     +--ro network-elements
        +--ro network-element* [uuid]
           +--ro uuid          yang:uuid
           ...................................
           +--ro components
              +--ro component* [uuid]
                 +--ro uuid              yang:uuid
                 ...................................
]]></artwork></figure>

<section anchor="common-design-for-all-inventory-objects"><name>Common Design for All Inventory Objects</name>

<t>For all the inventory objects, there are some common attributes existing. Such as:</t>

<t>Identifier: here we suggest to use uuid format which is widely implemented with systems. It is guaranteed to be globally unique.</t>

<t>Name: name is a human-readable label information which could be used to present on GUI. This name is suggested to be provided by server.</t>

<t>Alias: alias is also a human-readable label information which could be modified by user. It could also be present on GUI instead of name.</t>

<t>Description: description is a human-readable information which could be also input by user. Description provides more detailed information to prompt users when performing maintenance operations.</t>

<t>Location: location is a common management requirement of operators. This location could be an absolute position (e.g. mailing address), or a relative position (e.g. port index). Different types of inventory objects may require different types of position.</t>

<figure><artwork type="ascii-art"><![CDATA[
module: ietf-network-hardware-inventory
   +--ro network-hardware-inventory
      +--ro equipment-rooms
      |  +--ro equipment-room* [uuid]
      |     +--ro uuid           yang:uuid
      |     +--ro name?          string
      |     +--ro description?   string
      |     +--ro alias?         string
      |     +--ro location?      string
      |     ...................................
      |     +--ro racks
      |        +--ro rack* [uuid]
      |           +--ro uuid                 yang:uuid
      |           +--ro name?                string
      |           +--ro description?         string
      |           +--ro alias?               string
      |           +--ro rack-location
      |           |  +--ro equipment-room-name?   leafref
      |           |  +--ro row-number?            uint32
      |           |  +--ro column-number?         uint32
      |           ...................................
      +--ro network-elements
         +--ro network-element* [uuid]
            +--ro uuid             yang:uuid
            +--ro name?            string
            +--ro description?     string
            +--ro alias?           string
            +--ro ne-location
            |  +--ro equipment-room-name*   leafref
            ...................................
            +--ro components
               +--ro component* [uuid]
                  +--ro uuid                     yang:uuid
                  +--ro name?                    string
                  +--ro description?             string
                  +--ro alias?                   string
                  +--ro location                 string
                  ...................................
]]></artwork></figure>

</section>
<section anchor="reference-RFC8348"><name>Reference from RFC8348</name>

<t>The YANG data model for network hardware inventory mainly follows the same approach of <xref target="RFC8348"/> and reports the network hardware inventory as a list of components with different types (e.g., chassis, module, port).</t>

<figure><artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [uuid]
        +--ro uuid              yang:uuid
        +--ro name?             string
        +--ro description?      string
        +--ro class?            identityref
        +--ro contained-child*  -> ../uuid
        +--ro hardware-rev?     string
        +--ro firmware-rev?     string
        +--ro software-rev?     string
        +--ro serial-num?       string
        +--ro mfg-name?         string
        +--ro asset-id?         string
        +--ro is-fru?           boolean
        +--ro mfg-date?         yang:date-and-time
        +--ro uri*              inet:uri
]]></artwork></figure>

<t>Some of the definitions taken from <xref target="RFC8348"/> are actually based on the ENTITY-MIB <xref target="RFC6933"/>.</t>

<t>For the component location information, the suggested pattern is the same as the pattern defined in section 4.2 of <xref target="ONF_TR-547"/> for the INVENTORY_ID property.</t>

<t>In this draft the term 'chassis' is used instead of the term 'shelf', used in <xref target="ONF_TR-547"/>, since the term 'chassis' has broader applicability than the term 'shelf' and it is aligned with the terminology of <xref target="RFC8348"/>. However, the component location string will use the acronyms 'sh' and 's_sh' for consistency with the <xref target="ONF_TR-547"/> definitions.</t>

<t><xref target="tab-onf"/> summarizes the relationship between the &lt;field&gt; defined in <xref target="ONF_TR-547"/> and the components defined in this document.</t>

<texttable title="Meaning of &lt;field&gt;" anchor="tab-onf">
      <ttcol align='left'>&lt;field&gt;</ttcol>
      <ttcol align='left'>meaning</ttcol>
      <c>ne</c>
      <c>network element</c>
      <c>r</c>
      <c>rack</c>
      <c>sh</c>
      <c>chassis component</c>
      <c>s_sh</c>
      <c>sub-chassis component</c>
      <c>sl</c>
      <c>slot component</c>
      <c>s_sl</c>
      <c>sub-slot component</c>
      <c>p</c>
      <c>port component</c>
</texttable>

<t>This pattern is a common practice in optical transport networks, but we consider it as also applicable for other technologies.</t>

<t>For state data like admin-state, oper-state and so on, we consider they are related to device hardware management and not hardware inventory. Therefore, they are outside of scope of this document. Same for the sensor-data, they should be defined in some other performance monitoring data models instead of inventory data model.</t>

<t>We re-defined some attributes listed in <xref target="RFC8348"/>, based on some integration experience for network wide inventory data.</t>

</section>
<section anchor="changes-with-respect-to-rfc8348"><name>Changes with respect to RFC8348</name>

<section anchor="new-parent-identifiers-reference"><name>New Parent Identifiers' Reference</name>

<t><xref target="RFC8348"/> provided a "parent-ref" attribute, which was an identifier reference to its parent component. When the MDSC or OSS systems want to find this component's grandparent or higher level component in the hierarchy, they need to retrieve this parent-ref step by step. To reduce this iterative work, we decided to provide a list of hierarchical parent components' identifier references.</t>

<figure><artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [uuid]
        ...................................
        +--ro parent-component-references
        |   +--ro component-reference* [index]
        |      +--ro index    uint8
        |      +--ro class?   -> ../../../class
        |      +--ro uuid?    -> ../../../uuid
        ...................................
]]></artwork></figure>

<t>The hierarchical components' identifier could be found by the "component-reference" list. The "index" attribute is used to order the list by the hierarchical relationship from topmost component (with the "index" set to 0) to bottom component.</t>

</section>
<section anchor="component-specific-info-design"><name>Component-Specific Info Design</name>

<t>According to the management requirements from operators, some important attributes are not defined in <xref target="RFC8348"/>. These attributes could be component-specific and are not suitable to define under the component list node. So, we defined a choice-case structure for this component-specific extension, as follows:</t>

<figure><artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [uuid]
        ...................................
        +--ro (component-class)?
           +--:(chassis)
           |  +--ro chassis-specific-info
           +--:(container)
           |  +--ro slot-specific-info
           +--:(module)
           |  +--ro board-specific-info
           +--:(port)
              +--ro port-specific-info
        ...................................
]]></artwork></figure>

<t>Note: The detail of each *-specific-info YANG container is still under discussion, and the leaf attributes will be defined in future.</t>

</section>
<section anchor="part-number"><name>Part Number</name>

<t>According to the description in <xref target="RFC8348"/>, the attribute named "model-name" under the component, is preferred to have a customer-visible part number value. "Model-name" is not straightforward to understand and we suggest to rename it as "part-number" directly.</t>

<figure><artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [uuid]
        ...................................
        +--ro part-number?           string
        ...................................
]]></artwork></figure>

</section>
</section>
<section anchor="equipment-room"><name>Equipment Room</name>

<t>Usually the information about equipment rooms is not detectable by domain controller and configured manually. Sometimes, this information is not configured in the domain controller but directly in the Operators' owned OSS and therefore reporting information about the equipment rooms is optional when implementing this data model.</t>

<t>Another scenario to analyze is when racks are not located in any equipment room: one possible solution is that the domain controller provides a "default" equipment room that contains all these racks.</t>

<t>Note: add some more attributes about equipment room in the future.</t>

</section>
<section anchor="rack"><name>Rack</name>

<t>Likewise for equipment rooms, usually the information about the rack is not detectable by domain controller and configured manually. Therefore reporting information about the racks is optional when implementing this data model.</t>

<t>Besides the common attributes mentioned in above section, rack could have some specific attributes, such as appearance-related attributes and electricity-related attributes.
The height, depth and width are described by the figure below (please consider that the door of the rack is facing the user):</t>

<figure title="height, width and depth of rack" anchor="fig-rack-appearance"><artwork type="ascii-art"><![CDATA[
                 ----------------      ---
                /|              /|      |
               / |             / |      | 
              /  |            /  |      |
             ----|-----------|   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |    height
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   | Door    Q |   |      |
             |   |         Q |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   |           |   |      |
             |   /-----------|----     ---
             |  /            |   /      /
             | /             |  /      depth
             |/              | /      /
             -----------------      ---
             |______width____|
             |               |

]]></artwork></figure>

<t>The rack attributes include:</t>

<figure><artwork type="ascii-art"><![CDATA[
   +--ro racks
      +--ro rack* [uuid]
         ...................................
         +--ro height?              uint16
         +--ro width?               uint16
         +--ro depth?               uint16
         +--ro max-voltage?         uint16
         ...................................
]]></artwork></figure>

<t>Max-voltage: the maximum voltage supported by the rack.</t>

</section>
<section anchor="network-element"><name>Network Element</name>

<t>We consider that some of the attributes defined in <xref target="RFC8348"/> for components are also applicable for network element. These attributes include:</t>

<figure><artwork type="ascii-art"><![CDATA[
      +--ro network-elements
         +--ro network-element* [uuid]
            ...................................
            +--ro hardware-rev?    string
            +--ro software-rev?    string
            +--ro mfg-name?        string
            +--ro mfg-date?        yang:date-and-time
            +--ro part-number?     string
            +--ro serial-number?   string
            +--ro product-name?    string
            ...................................
]]></artwork></figure>

<t>Note: Not all the attributes defined in <xref target="RFC8348"/> are applicable for network element. And there could also be some missing attributes which are not recognized by <xref target="RFC8348"/>. More extensions could be introduced in later revisions after the missing attributes are fully discussed.</t>

</section>
<section anchor="relationship-between-hardware-inventory-and-network-topology-models"><name>Relationship between Hardware Inventory and Network Topology models</name>

<t>Network topology is a logical abstraction based on hardware inventory objects. The abstraction may be based on technology requirements (e.g., layer 0 or layer 1 resources) or on some specific requirements (e.g., for path computation or service provisioning).</t>

<t>Therefore the relationship between hardware inventory objects and network topology objects can be 1:N (N&gt;=1).</t>

<t>Taking the Optical technology as example, an Optical Transport Network (OTN) Network Element (NE) can be installed with several kinds of boards, including an Ethernet client signal switching board, a line board which is used for OTN layer switching. This line board may also be used as a starting point for the WDM layer. In terms of technologies, this OTN NE supports multi-layer network topology connections, so that it should appear in L0, L1 and L2 network topology.</t>

<t>It is important to describe this relationship for the sake of network Operation and Maintenance (O&amp;M). For example, the actual path of a connection is described by the objects in network topology. When there is a failure along this connection, the O&amp;M engineers are more concerned with the physical location information behind the network objects for troubleshooting.</t>

<t>Generally speaking, a node object in the network topology corresponds to a network element object in the hardware inventory. A Link Termination Point (LTP) object in the network topology corresponds to a port component in the hardware inventory. A link object in the network topology corresponds to a fiber/cable object in the hardware inventory.</t>

<t>NOTE: take fiber&amp;cable object into scope in the future version.</t>

<t>Compared with network topology, hardware inventory objects are the most basic of the network: from an automation perspective, the MDSC or OSS systems would integrate with hardware inventory data before network topology data.</t>

<t>Therefore it is better to keep separated the network topology information and the hardware inventory information: the "ietf-hw-inventory-ref-topo" YANG module provides this relationship augmenting the network topology model, when required, with references between network topology objects and corresponding hardware inventory objects.</t>

<t>This figure below shows the relationship between the three modules:</t>

<figure title="Relationship between the three YANG modules" anchor="fig-modules-relationship"><artwork type="ascii-art"><![CDATA[
     +------------------+
     | Network topology |
     |      module      |
     +------------------+
             ^
             |
             |augments
             |
     +------------------+          +------------------+
     | ietf-hw-inventory| imports  | ietf-network-hard|
     |   -ref-topo      |--------> |  ware-inventory  |
     +------------------+          +------------------+
]]></artwork></figure>

<figure><artwork type="ascii-art"><![CDATA[
module: ietf-hw-inventory-ref-topo
augment /nw:networks/nw:network/nw:node:
   +--ro inventory-id?   leafref
augment /nw:networks/nw:network/nw:node/nt:termination-point:
   +--ro inventory-id?   leafref
]]></artwork></figure>

<t>NOTE: the association between a link and a fiber&amp;cable object has to be added in the future version.</t>

</section>
</section>
<section anchor="efficiency-issue"><name>Efficiency Issue</name>

<t>During  the integration with OSS in some operators, some efficiency/scalability concerns have been discovered when synchronizing network hardware inventory data for big networks.  More discussions are needed to address these concerns.</t>

<t>Considering that relational databases are widely used by traditional OSS systems and also by some network controllers, the inventory objects are most likely to be saved in different tables. With the model defined in current draft, when doing a full synchronization, network controller needs to convert all inventory objects of each NE into component objects and combine them together into a single list, and then construct a response and send to OSS or MDSC. The OSS or MDSC needs to classify the component list and divide them into different groups, in order to save them in different tables. The combining-regrouping steps are impacting the network controller &amp; OSS/MDSC processing, which may result in efficiency/scalability limitations in large scale networks.</t>

<t>An alternative YANG model structure, which defines the inventory objects directly, instead of defining generic components, has also been analyzed. However, also with this model, there still could be some scalability limitations when synchronizing full inventory resources in large scale of networks. This scalability limitation is caused by the limited transmission capabilities of HTTP protocol. We think that this scalability limitation should be solved at protocol level rather than data model level.</t>

<t>The model proposed by this draft is designed to be as generic as possible so to cover future special types of inventory objects that could be used in other technologies, that have not been identified yet. If the inventory objects were to be defined directly with fixed hierarchical relationships in YANG model, this new type of inventory objects needs to be manually defined, which is not a backward compatible change and therefore is not an acceptable approach for implementation. With a generic model, it is only needed to augment a new component class and extend some specific attributes for this new inventory component class, which is more flexible. We consider that this generic data model, enabling a flexible and backward compatible approach for other technologies, represents the main scope of this draft. Solution description to efficiency/scalability limitations mentioned above is considered as out-of-scope.</t>

</section>
<section anchor="some-other-considerations"><name>Some Other Considerations</name>

<t>Note: review in future versions of this document whether the component list should be under the network-hardware-inventory instead of the network-element container.</t>

<t>Note that in <xref target="RFC8345"/>, topology and inventory are two subsets of network information. However, considering the complexity of the existing topology models and having a better extension capability, we define a separate root for the inventory model. We will consider some other ways to do some associations between the topology model and inventory model in the future.</t>

<t>Note: review in future versions of this document whether network hardware inventory should be defined as an augmentation of the network model defined in <xref target="RFC8345"/> instead of under a new network-hardware-inventory root.</t>

<t>The proposed YANG data model has been analysed so far to cover the requirements and use cases for Optical Network Hardware Inventory.</t>

<t>Further analysis of requirements and use cases is needed to extend the applicability of this YANG data model to other types of networks (IP and microwave) and to identify which aspects are generic and which aspects are technology-specific for optical.</t>

</section>
</section>
<section anchor="tree"><name>Tree Diagrams</name>

<section anchor="ni-tree"><name>Network Hardware Inventory Tree Diagram</name>

<t><xref target="fig-ni-tree"/> below shows the tree diagram of the YANG data model defined in module "ietf-network-hardware-inventory" (<xref target="ni-yang"/>).</t>

<figure title="Network Hardware inventory tree diagram" anchor="fig-ni-tree"><artwork type="ascii-art" name="ietf-network-hardware-inventory.tree"><![CDATA[
module: ietf-network-hardware-inventory
  +--ro network-hardware-inventory
     +--ro equipment-rooms
     |  +--ro equipment-room* [uuid]
     |     +--ro uuid           yang:uuid
     |     +--ro name?          string
     |     +--ro description?   string
     |     +--ro alias?         string
     |     +--ro location?      string
     |     +--ro racks
     |        +--ro rack* [uuid]
     |           +--ro uuid                 yang:uuid
     |           +--ro name?                string
     |           +--ro description?         string
     |           +--ro alias?               string
     |           +--ro rack-location
     |           |  +--ro equipment-room-name?   leafref
     |           |  +--ro row-number?            uint32
     |           |  +--ro column-number?         uint32
     |           +--ro height?              uint16
     |           +--ro width?               uint16
     |           +--ro depth?               uint16
     |           +--ro max-voltage?         uint16
     |           +--ro contained-chassis* [ne-ref component-ref]
     |              +--ro ne-ref               leafref
     |              +--ro component-ref        leafref
     |              +--ro relative-position?   uint8
     +--ro network-elements
        +--ro network-element* [uuid]
           +--ro uuid             yang:uuid
           +--ro name?            string
           +--ro description?     string
           +--ro alias?           string
           +--ro ne-location
           |  +--ro equipment-room-name*   leafref
           +--ro hardware-rev?    string
           +--ro software-rev?    string
           +--ro mfg-name?        string
           +--ro mfg-date?        yang:date-and-time
           +--ro part-number?     string
           +--ro serial-number?   string
           +--ro product-name?    string
           +--ro components
              +--ro component* [uuid]
                 +--ro uuid                           yang:uuid
                 +--ro name?                          string
                 +--ro description?                   string
                 +--ro alias?                         string
                 +--ro location?                      string
                 +--ro class?                         identityref
                 +--ro contained-child*               -> ../uuid
                 +--ro parent-rel-pos?                int32
                 +--ro parent-component-references
                 |  +--ro component-reference* [index]
                 |     +--ro index    uint8
                 |     +--ro class?   -> ../../../class
                 |     +--ro uuid?    -> ../../../uuid
                 +--ro hardware-rev?                  string
                 +--ro firmware-rev?                  string
                 +--ro software-rev?                  string
                 +--ro serial-num?                    string
                 +--ro mfg-name?                      string
                 +--ro part-number?                   string
                 +--ro asset-id?                      string
                 +--ro is-fru?                        boolean
                 +--ro mfg-date?
                 |       yang:date-and-time
                 +--ro uri*                           inet:uri
                 +--ro (component-class)?
                    +--:(chassis)
                    |  +--ro chassis-specific-info
                    +--:(container)
                    |  +--ro slot-specific-info
                    +--:(module)
                    |  +--ro board-specific-info
                    +--:(port)
                       +--ro port-specific-info
]]></artwork></figure>

</section>
<section anchor="ref-tree"><name>Relationship between Topology and Network Inventory Tree Diagram</name>

<t><xref target="fig-ref-tree"/> below shows the tree diagram of the YANG data model defined in module "ietf-hw-inventory-ref-topo" (<xref target="ref-yang"/>).</t>

<figure title="Relationship between Topology and Network Inventory Tree Diagram" anchor="fig-ref-tree"><artwork type="ascii-art" name="ietf-hw-inventory-ref-topo.tree"><![CDATA[
module: ietf-hw-inventory-ref-topo

  augment /nw:networks/nw:network/nw:node:
    +--ro inventory-id?   leafref
  augment /nw:networks/nw:network/nw:node/nt:termination-point:
    +--ro inventory-id?   leafref
]]></artwork></figure>

</section>
</section>
<section anchor="yang"><name>YANG Data Models</name>

<section anchor="ni-yang"><name>YANG Data Model for Network Hardware Inventory</name>

<figure title="Network Hardware inventory YANG module" anchor="fig-ni-yang"><sourcecode type="yang" markers="true" name="ietf-network-hardware-inventory@2023-03-07.yang"><![CDATA[
module ietf-network-hardware-inventory {
  yang-version 1.1;
  namespace 
    "urn:ietf:params:xml:ns:yang:ietf-network-hardware-inventory";
  prefix nhi;

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }
  
  import iana-hardware {
    prefix ianahw;
    reference
      "https://www.iana.org/assignments/yang-parameters";
  }
  
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC6991: Common YANG Data Types.";
  } 

  organization
    "IETF CCAMP Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/ccamp/>
     WG List:  <mailto:ccamp@ietf.org>

     Editor:   Chaode Yu
               <yuchaode@huawei.com>

     Editor:   Italo Busi
               <italo.busi@huawei.com>

     Editor:   Aihua Guo
               <aihuaguo.ietf@gmail.com>

     Editor:   Sergio Belotti
               <sergio.belotti@nokia.com>

     Editor:   Jean-Francois Bouquier
               <jeff.bouquier@vodafone.com>

     Editor:   Fabio Peruzzini
               <fabio.peruzzini@telecomitalia.it>";

  description
    "This module defines a model for retrieving network hardware
    inventory.

    The model fully conforms to the Network Management 
    Datastore Architecture (NMDA).
    
    Copyright (c) 2022 IETF Trust and the persons
    identified as authors of the code.  All rights reserved.

    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 Revised 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).

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

    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 (RFC 2119) (RFC 8174) when, and only when,
    they appear in all capitals, as shown here.";

  // RFC Ed.: replace XXXX with actual RFC number and remove this
  // note.
  // RFC Ed.: update the date below with the date of RFC publication
  // and remove this note.
  
  revision 2023-03-09 {
    description
      "Initial version";
    reference
      "RFC XXXX: A YANG Data Model for Network Hardware Inventory.";
      //RFC Editor: replace XXXX with actual RFC number, update date
      //information and remove this note
  }
    
  container network-hardware-inventory {
    config false;
    description
      "The top-level container for the network inventory
      information.";
    uses equipment-rooms-grouping;
    uses network-elements-grouping;
  }
  
  grouping common-entity-attributes {
    description
      "A set of attributes which are common to all the entities
      (e.g., component, equipment room) defined in this module.";
    leaf uuid {
      type yang:uuid;
      description
        "Uniquely identifies an entity (e.g., component).";
    }
    leaf name {
      type string;
      description
        "A name for an entity (e.g., component), as specified by
        a network manager, that provides a non-volatile 'handle'
        for the entity and that can be modified anytime during the
        entity lifetime.

        If no configured value exists, the server MAY set the value
        of this node to a locally unique value in the operational
        state.";
    }
    leaf description {
      type string;
      description "a textual description of inventory object";
    }
    leaf alias {
      type string;
      description 
      "a alias name of inventory objects. This alias name can be 
      specified by network manager.";
    }
  }
 
  grouping network-elements-grouping {
    description
      "The attributes of the network elements.";
    container network-elements {
      description
        "The container for the list of network elements.";
      list network-element {
        key uuid;
        description
          "The list of network elements within the network.";
        uses common-entity-attributes;
        container ne-location {
          description
            "The location information of this network element.";
          leaf-list equipment-room-name {
            type leafref {
              path "/nhi:network-hardware-inventory/" +
                   "nhi:equipment-rooms/nhi:equipment-room/nhi:name";
            }
            description
              "Names of equipment rooms where the NE is located. 
              Please note that a NE could be located in several 
              equipment rooms.";
          }
        }
        uses ne-specific-info-grouping;
        uses components-grouping;
      }
    }
  }
  
  grouping ne-specific-info-grouping {
    description
      "Attributes applicable to network elements.";
    leaf hardware-rev {
      type string;
      description
        "The vendor-specific hardware revision string for the NE.";
    }
    leaf software-rev {
      type string;
      description
        "The vendor-specific software revision string for the NE.";
    }
    leaf mfg-name {
      type string;
      description "The name of the manufacturer of this NE";
    }
    leaf mfg-date {
      type yang:date-and-time;
      description "The date of manufacturing of the NE.";
    }
    leaf part-number {
      type string;
      description
        "The vendor-specific model name identifier string associated
         with this NE.  The preferred value is the customer-visible 
         part number, which may be printed on the NE itself.";
    }
    leaf serial-number {
      type string;
      description
        "The vendor-specific serial number string for the NE";
    }
    leaf product-name {
      type string;
      description
        "indicates the vendor-spefic device type infomation.";
    }
  }
  
  grouping equipment-rooms-grouping {
    description
      "The attributes of the equipment rooms.";
    container equipment-rooms {
      description
        "The container for the list of equipment rooms.";
      list equipment-room {
        key uuid;
        description
          "The list of equipment rooms within the network.";
        uses common-entity-attributes;
        leaf location {
          type string;
          description
            "compared with the location information of the other
            inventory objects, a GIS address is preferred for
            equipment room";
        }
        container racks {
          description
            "Top level container for the list of racks.";
          list rack {
            key uuid;
            description
              "The list of racks within an equipment room.";
            uses common-entity-attributes;
            uses rack-specific-info-grouping;
            list contained-chassis {
              key "ne-ref component-ref";
              description
                "The list of chassis within a rack.";
              leaf ne-ref {
                type leafref {
                  path "/nhi:network-hardware-inventory"
                  + "/nhi:network-elements/nhi:network-element"
                  + "/nhi:uuid";
                }
                description
                  "The reference to the network element containing
                  the chassis component.";
              }
              leaf component-ref {
                type leafref {
                  path "/nhi:network-hardware-inventory"
                  + "/nhi:network-elements/nhi:network-element"
                  + "[nhi:uuid=current()/../ne-ref]/nhi:components"
                  + "/nhi:component/nhi:uuid";
                }
                description
                  "The reference to the chassis component within 
                  the network element and contained by the rack.";
              }
              leaf relative-position {
                type uint8;
                description "A relative position of chassis within
                the rack";
              }
            }
          }
        }
      }
    }
  }
  
  grouping rack-specific-info-grouping {
    description
      "Attributes applicable to racks only.";
    container rack-location {
      description
        "The location information of the rack, which comprises the 
        name of the equipment room, row number, and column number.";
      leaf equipment-room-name {
        type leafref {
          path "/nhi:network-hardware-inventory/nhi:equipment-rooms"
          + "/nhi:equipment-room/nhi:name";
        }
        description 
        "Name of equipment room where this rack is located.";
      }
      leaf row-number {
        type uint32;
        description
          "Identifies the row within the equipment room where
          the rack is located.";
      }
      leaf column-number {
        type uint32;
        description
          "Identifies the physical location of the rack within
          the column.";
      }
    }
    leaf height {
      type uint16;
      units millimeter;
      description
        "Rack height.";
    }
    leaf width {
      type uint16;
      units millimeter;
      description
        "Rack width.";
    }
    leaf depth {
      type uint16;
      units millimeter;
      description
        "Rack depth.";
    }
    leaf max-voltage {
      type uint16;
      units volt;
      description
        "The maximum voltage could be supported by the rack.";
    }
  }

  grouping components-grouping {
    description
      "The attributes of the hardware components.";
    container components {
      description
        "The container for the list of components.";
      list component {
        key uuid;
        description
          "The list of components within a network element.";
        uses common-entity-attributes;
        leaf location {
          type string;
          description
            "A relative location information of this component.
            In optical transport network, the location string is 
            using the following pattern: 
              '/ne=<nw-ne-name>[/r=<r_index>][/sh=<sh_index>
              [/s_sh=<s_sh_index> ...]][[/sl=<sl_index>
              [/s_sl=<s_sl_index> ...]][/p=<p_index> …]]'
            ";
        }
        leaf class {
          type identityref {
            base ianahw:hardware-class;
          }
          description
            "An indication of the general hardware type of the
             component.";
          reference
            "RFC 8348: A YANG Data Model for Hardware Management.";
        }
        leaf-list contained-child {
          type leafref {
            path "../nhi:uuid";
          }
          description
            "The list of the identifiers of the child components 
            physically contained within this component.";
        }
        leaf parent-rel-pos {
          type int32 {
            range "0 .. 2147483647";
          }
          description
            "The relative position with respect to the parent
            component among all the sibling components.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalParentRelPos";
        }
        
        container parent-component-references {
          description
              "The top level container for the list of the 
              identifiers of the parents of this component in a 
              hierarchy.";
          list component-reference {
            key index;
            description
              "The list of the identifiers of the parents of this 
              component in a hierarchy.
              
              The index parameter defines the hierarchy: the topmost 
              parent has an index of 0.";
            leaf index {
              type uint8;
              description
                "The index of the parent with respect to the 
                hierarchy.";
            }
            leaf class {
              type leafref {
                path "../../../nhi:class";
              }
              description
                "Class of the hierarchial parent component.";
            }
            leaf uuid {
              type leafref {
                path "../../../nhi:uuid";
              }
              description
                "The identifier of the parent's component in the 
                hierarchy.";
            }
          }
        }

        leaf hardware-rev {
          type string;
          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;
          description
            "The vendor-specific firmware revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalFirmwareRev";
        }
        leaf software-rev {
          type string;
          description
            "The vendor-specific software revision string for the
             component.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalSoftwareRev";
        }
        leaf serial-num {
          type string;
          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;
          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";
        }
        leaf part-number {
          type string;
          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";
        }
        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";
        }
        leaf is-fru {
          type boolean;
          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;
          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";
        }
        uses component-specific-info-grouping;
      }
    }
  }
  
  grouping component-specific-info-grouping {
    description 
      "In case if there are some missing attributes of component not 
      defined by RFC8348. These attributes could be 
      component-specific.
      Here we provide a extension structure for all the components 
      we recognized. We will enrich these component specifc 
      containers in the future.";
    choice component-class {
      description
        "This extension differs between different component 
        classes.";
      case chassis {
        when "./class = 'ianahw:chassis'";
        container chassis-specific-info {
          description 
            "This container contains some attributes belong to
            chassis only.";
          uses chassis-specific-info-grouping;
        }
      }
      case container {
        when "./class = 'ianahw:container'";
        container slot-specific-info {
          description 
            "This container contains some attributes belong to
            slot or sub-slot only.";
          uses slot-specific-info-grouping;
        }
      }
      case module {
        when "./nhi:class = 'ianahw:module'";
        container board-specific-info {
          description 
            "This container contains some attributes belong to
            board only.";
          uses board-specific-info-grouping;
        }
      }
      case port {
        when "./nhi:class = 'ianahw:port'";
        container port-specific-info {
          description 
            "This container contains some attributes belong to
            port only.";
          uses port-specific-info-grouping;
        }
      }
    //TO BE ADDED: transceiver
    }
  }
  
  grouping chassis-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to chassis only.";
  }
  
  grouping slot-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to slots only.";
  }
  
  grouping board-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to boards only.";
  }
  
  grouping port-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to ports only.";
  }
}
]]></sourcecode></figure>

</section>
<section anchor="ref-yang"><name>YANG Data Model for Relationship between Topology and Network Inventory</name>

<figure title="Relationship between Topology and Network Inventory YANG module" anchor="fig-ref-yang"><sourcecode type="yang" markers="true" name="ietf-hw-inventory-ref-topo@2023-03-10.yang"><![CDATA[
module ietf-hw-inventory-ref-topo {
 yang-version 1.1;
 namespace "urn:ietf:params:xml:ns:yang:ietf-hw-inventory-ref-topo";
 prefix hirt;

  import ietf-network {
    prefix nw;
    reference
      "RFC8345: A YANG Data Model for Network Topologies";
  }
  
  import ietf-network-topology {
    prefix nt;
    reference
      "RFC8345: A YANG Data Model for Network Topologies";
  }
  
  import ietf-network-hardware-inventory {
    prefix nhi;
    reference
      "RFC XXXX: A YANG Data Model for Network Hardware Inventory.";
      //RFC Editor: replace XXXX with actual RFC number, update date
      //information and remove this note
  }

 organization
   "IETF CCAMP Working Group";
 contact
   "WG Web:   <https://datatracker.ietf.org/wg/ccamp/>
    WG List:  <mailto:ccamp@ietf.org>

    Editor:   Chaode Yu
              <yuchaode@huawei.com>

    Editor:   Sergio Belotti
              <sergio.belotti@nokia.com>

    Editor:   Jean-Francois Bouquier
              <jeff.bouquier@vodafone.com>

    Editor:   Fabio Peruzzini
              <fabio.peruzzini@telecomitalia.it>

    Editor:   Phil Bedard
              <phbedard@cisco.com>";

 description
   "This module defines a model for navigation between hardware
   inventory data module and network topology module.

   The model fully conforms to the Network Management
   Datastore Architecture (NMDA).

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

   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).
   This version of this YANG module is part of RFC XXXX; see
   the RFC itself for full legal notices.

   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 (RFC 2119) (RFC 8174) when, and only when,
   they appear in all capitals, as shown here.";

 // RFC Ed.: replace XXXX with actual RFC number and remove this
 // note.
 // RFC Ed.: update the date below with the date of RFC publication
 // and remove this note.

  revision 2023-03-10 {
    description
      "Initial revision.";
     reference
       "RFC XXXX: A YANG Data Model for Network Hardware Inventory.";
       //RFC Editor: replace XXXX with actual RFC number, update date
       //information and remove this note
  }

  augment "/nw:networks/nw:network/nw:node" {
    description 
      "Information that allows the relationship between the node in 
      the topology and the Network Element (NE) in the network 
      hardware inventory model from which the node is abstracted";
    
    leaf inventory-id {
    type leafref {
      path "/nhi:network-hardware-inventory/nhi:network-elements"
      + "/nhi:network-element/nhi:uuid";
    }
    config false;
    description
      "The identifier of the Network Element (NE) from which this
      node is abstracted";
    }
  }
  
  augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
    description 
      "Information that allows the relationship between the Link 
      Termination Point (LTP) and the port component in the network 
      hardware inventory model from which this LTP is abstracted.";
    
    leaf inventory-id {
    type leafref {
      path "/nhi:network-hardware-inventory/nhi:network-elements"
      + "/nhi:network-element/nhi:components/nhi:component"
      + "/nhi:uuid";
    }
    config false;
    description 
        "The identifier of the port component from which this Link
        Termination Point (LTP) is abstracted";
    }
  }
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="manageability-considerations"><name>Manageability Considerations</name>

<t>&lt;Add any manageability considerations&gt;</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>&lt;Add any security considerations&gt;</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>&lt;Add any IANA considerations&gt;</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

<reference anchor="TMF_SD2-20" target="https://www.tmforum.org/resources/suite/mtosi-4-0/">
  <front>
    <title>SD2-20_Equipment Model</title>
    <author >
      <organization>TM Forum</organization>
    </author>
    <date year="2008" month="May"/>
  </front>
  <seriesInfo name="TMF MTOSI 4.0, Network Resource Fulfilment (NRF), SD2-20" value=""/>
</reference>
<reference anchor="IANA_YANG" target="https://www.iana.org/assignments/yang-parameters">
  <front>
    <title>YANG Parameters</title>
    <author >
      <organization>IANA</organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="ONF_TR-547" target="https://opennetworking.org/wp-content/uploads/2020/08/TR-547-TAPI-v2.1.3-Reference-Implementation-Agreement-1.pdf">
  <front>
    <title>TAPI v2.1.3 Reference Implementation Agreement</title>
    <author >
      <organization>Open Networking Foundation (ONF)</organization>
    </author>
    <date year="2020" month="July"/>
  </front>
  <seriesInfo name="ONF TR-547 TAPI RIA v1.0" value=""/>
</reference>


<reference anchor='RFC8348' target='https://www.rfc-editor.org/info/rfc8348'>
  <front>
    <title>A YANG Data Model for Hardware Management</title>
    <author fullname='A. Bierman' initials='A.' surname='Bierman'/>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <author fullname='J. Dong' initials='J.' surname='Dong'/>
    <author fullname='D. Romascanu' initials='D.' surname='Romascanu'/>
    <date month='March' year='2018'/>
    <abstract>
      <t>This document defines a YANG data model for the management of hardware on a single server.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8348'/>
  <seriesInfo name='DOI' value='10.17487/RFC8348'/>
</reference>

<reference anchor='RFC8342' target='https://www.rfc-editor.org/info/rfc8342'>
  <front>
    <title>Network Management Datastore Architecture (NMDA)</title>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <author fullname='J. Schoenwaelder' initials='J.' surname='Schoenwaelder'/>
    <author fullname='P. Shafer' initials='P.' surname='Shafer'/>
    <author fullname='K. Watsen' initials='K.' surname='Watsen'/>
    <author fullname='R. Wilton' initials='R.' surname='Wilton'/>
    <date month='March' year='2018'/>
    <abstract>
      <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8342'/>
  <seriesInfo name='DOI' value='10.17487/RFC8342'/>
</reference>

<reference anchor='RFC7950' target='https://www.rfc-editor.org/info/rfc7950'>
  <front>
    <title>The YANG 1.1 Data Modeling Language</title>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <date month='August' year='2016'/>
    <abstract>
      <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='7950'/>
  <seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>

<reference anchor='RFC6241' target='https://www.rfc-editor.org/info/rfc6241'>
  <front>
    <title>Network Configuration Protocol (NETCONF)</title>
    <author fullname='R. Enns' initials='R.' role='editor' surname='Enns'/>
    <author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'/>
    <author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'/>
    <author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'/>
    <date month='June' year='2011'/>
    <abstract>
      <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6241'/>
  <seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>

<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>

<reference anchor='RFC8340' target='https://www.rfc-editor.org/info/rfc8340'>
  <front>
    <title>YANG Tree Diagrams</title>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <author fullname='L. Berger' initials='L.' role='editor' surname='Berger'/>
    <date month='March' year='2018'/>
    <abstract>
      <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='215'/>
  <seriesInfo name='RFC' value='8340'/>
  <seriesInfo name='DOI' value='10.17487/RFC8340'/>
</reference>

<reference anchor='RFC6991' target='https://www.rfc-editor.org/info/rfc6991'>
  <front>
    <title>Common YANG Data Types</title>
    <author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'/>
    <date month='July' year='2013'/>
    <abstract>
      <t>This document introduces a collection of common data types to be used with the YANG data modeling language. This document obsoletes RFC 6021.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6991'/>
  <seriesInfo name='DOI' value='10.17487/RFC6991'/>
</reference>

<reference anchor='RFC6933' target='https://www.rfc-editor.org/info/rfc6933'>
  <front>
    <title>Entity MIB (Version 4)</title>
    <author fullname='A. Bierman' initials='A.' surname='Bierman'/>
    <author fullname='D. Romascanu' initials='D.' surname='Romascanu'/>
    <author fullname='J. Quittek' initials='J.' surname='Quittek'/>
    <author fullname='M. Chandramouli' initials='M.' surname='Chandramouli'/>
    <date month='May' year='2013'/>
    <abstract>
      <t>This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects used for managing multiple logical and physical entities managed by a single Simple Network Management Protocol (SNMP) agent. This document specifies version 4 of the Entity MIB. This memo obsoletes version 3 of the Entity MIB module published as RFC 4133.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='6933'/>
  <seriesInfo name='DOI' value='10.17487/RFC6933'/>
</reference>




    </references>

    <references title='Informative References'>




<reference anchor='I-D.ietf-teas-actn-poi-applicability' target='https://datatracker.ietf.org/doc/html/draft-ietf-teas-actn-poi-applicability-08'>
   <front>
      <title>Applicability of Abstraction and Control of Traffic Engineered Networks (ACTN) to Packet Optical Integration (POI)</title>
      <author fullname='Fabio Peruzzini' initials='F.' surname='Peruzzini'>
         <organization>TIM</organization>
      </author>
      <author fullname='Jean-Francois Bouquier' initials='J.' surname='Bouquier'>
         <organization>Vodafone</organization>
      </author>
      <author fullname='Italo Busi' initials='I.' surname='Busi'>
         <organization>Huawei</organization>
      </author>
      <author fullname='Daniel King' initials='D.' surname='King'>
         <organization>Old Dog Consulting</organization>
      </author>
      <author fullname='Daniele Ceccarelli' initials='D.' surname='Ceccarelli'>
         <organization>Ericsson</organization>
      </author>
      <date day='11' month='January' year='2023'/>
      <abstract>
	 <t>   This document considers the applicability of Abstraction and Control
   of TE Networks (ACTN) architecture to Packet Optical Integration
   (POI)in the context of IP/MPLS and optical internetworking. It
   identifies the YANG data models defined by the IETF to support this
   deployment architecture and specific scenarios relevant to Service
   Providers.

   Existing IETF protocols and data models are identified for each
   multi-layer (packet over optical) scenario with a specific focus on
   the MPI (Multi-Domain Service Coordinator to Provisioning Network
   Controllers Interface)in the ACTN architecture.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-teas-actn-poi-applicability-08'/>
   
</reference>

<reference anchor='RFC8345' target='https://www.rfc-editor.org/info/rfc8345'>
  <front>
    <title>A YANG Data Model for Network Topologies</title>
    <author fullname='A. Clemm' initials='A.' surname='Clemm'/>
    <author fullname='J. Medved' initials='J.' surname='Medved'/>
    <author fullname='R. Varga' initials='R.' surname='Varga'/>
    <author fullname='N. Bahadur' initials='N.' surname='Bahadur'/>
    <author fullname='H. Ananthakrishnan' initials='H.' surname='Ananthakrishnan'/>
    <author fullname='X. Liu' initials='X.' surname='Liu'/>
    <date month='March' year='2018'/>
    <abstract>
      <t>This document defines an abstract (generic, or base) YANG data model for network/service topologies and inventories. The data model serves as a base model that is augmented with technology-specific details in other, more specific topology and inventory data models.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8345'/>
  <seriesInfo name='DOI' value='10.17487/RFC8345'/>
</reference>




    </references>


<section anchor="appendix"><name>Appendix</name>

<section anchor="comparison-with-openconfig-platform-data-model"><name>Comparison With Openconfig-platform Data Model</name>

<t>Since more and more devices can be managed by domain controller through OpenConfig, to ensure that our inventory data model can cover these devices' inventory data, we have compared our inventory data model with the "openconfig-platform" model which is the data model used to manage inventory information in OpenConfig.</t>

<t>Openconfig-platform data model is NE-level and uses a generic component concept to describe its inner devices and containers, which is similar to "ietf-hardware" model in <xref target="RFC8348"/>. Since we have also reused the component concept of <xref target="RFC8348"/> in our inventory data model, we can compare the component's attributes between "openconfig-platform" and our model directly , which is stated below:</t>

<texttable title="Comparison between openconfig platform and inventory data models" anchor="tab-oc">
      <ttcol align='left'>Attributes in oc-platform</ttcol>
      <ttcol align='left'>Attributes in our model</ttcol>
      <ttcol align='left'>remark</ttcol>
      <c>name</c>
      <c>name</c>
      <c>&#160;</c>
      <c>type</c>
      <c>class</c>
      <c>&#160;</c>
      <c>id</c>
      <c>uuid</c>
      <c>&#160;</c>
      <c>location</c>
      <c>location</c>
      <c>&#160;</c>
      <c>description</c>
      <c>description</c>
      <c>&#160;</c>
      <c>mfg-name</c>
      <c>mfg-name</c>
      <c>&#160;</c>
      <c>mfg-date</c>
      <c>mfg-date</c>
      <c>&#160;</c>
      <c>hardware-version</c>
      <c>hardware-rev</c>
      <c>&#160;</c>
      <c>firmware-version</c>
      <c>firmware-rev</c>
      <c>&#160;</c>
      <c>software-version</c>
      <c>software-rev</c>
      <c>&#160;</c>
      <c>serial-no</c>
      <c>serial-num</c>
      <c>&#160;</c>
      <c>part-no</c>
      <c>part-number</c>
      <c>&#160;</c>
      <c>clei-code</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>removable</c>
      <c>is-fru</c>
      <c>&#160;</c>
      <c>oper-status</c>
      <c>&#160;</c>
      <c>state data</c>
      <c>empty</c>
      <c>contained-child?</c>
      <c>If there is no contained child, it is empty.</c>
      <c>parent</c>
      <c>parent-references</c>
      <c>&#160;</c>
      <c>redundant-role</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>last-switchover-reason</c>
      <c>&#160;</c>
      <c>state data</c>
      <c>last-switchover-time</c>
      <c>&#160;</c>
      <c>state data</c>
      <c>last-reboot-reason</c>
      <c>&#160;</c>
      <c>state data</c>
      <c>last-reboot-time</c>
      <c>&#160;</c>
      <c>state data</c>
      <c>switchover-ready</c>
      <c>&#160;</c>
      <c>state data</c>
      <c>temperature</c>
      <c>&#160;</c>
      <c>performance data</c>
      <c>memory</c>
      <c>&#160;</c>
      <c>performance data</c>
      <c>allocated-power</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>used-power</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>pcie</c>
      <c>&#160;</c>
      <c>alarm  data</c>
      <c>properties</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>subcomponents</c>
      <c>contained-child</c>
      <c>&#160;</c>
      <c>chassis</c>
      <c>chassis-specific-info</c>
      <c>&#160;</c>
      <c>port</c>
      <c>port-specific-info</c>
      <c>&#160;</c>
      <c>power-supply</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>fan</c>
      <c>&#160;</c>
      <c>Fan is considered as a specific board. And no need to define as a single component</c>
      <c>fabric</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>storage</c>
      <c>&#160;</c>
      <c>For Optical and IP technology, no need to manage storage on network element</c>
      <c>cpu</c>
      <c>&#160;</c>
      <c>For Optical and IP technology, no need to manage CPU on network element</c>
      <c>integrated-circuit</c>
      <c>board-specific-info</c>
      <c>&#160;</c>
      <c>backplane</c>
      <c>&#160;</c>
      <c>Backplane is considered as a part of board. And no need to define as a single component</c>
      <c>software-module</c>
      <c>&#160;</c>
      <c>TBD</c>
      <c>controller-card</c>
      <c>&#160;</c>
      <c>Controller card is considered as a specific functional board. And no need to define as a single component</c>
</texttable>

<t>As it mentioned in <xref target="reference-RFC8348"/> that state data and performance data are out of scope of our data model, it is same for alarm data and it should be defined in some other alarm data models separately. And for some component specific structures in "openconfig-platform", we consider some of them can be contained by our existing structure, such as fan, backplane, and controller-card, while some others do not need to be included in this network inventory model like storage and cpu.</t>

<t>Mostly, our inventory data model can cover the attributes from OpenConfig.</t>

</section>
</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors of this document would like to thank the authors of <xref target="I-D.ietf-teas-actn-poi-applicability"/> for having identified the gap and requirements to trigger this work.</t>

<t>This document was prepared using kramdown.</t>

</section>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </contact>
    <contact initials="A." surname="Guo" fullname="Aihua Guo">
      <organization>Futurewei Technologies</organization>
      <address>
        <email>aihuaguo.ietf@gmail.com、</email>
      </address>
    </contact>
    <contact initials="V." surname="Lopez" fullname="Victor Lopez">
      <organization>Nokia</organization>
      <address>
        <email>victor.lopez@nokia.com</email>
      </address>
    </contact>
    <contact initials="B." surname="Wu" fullname="Bo Wu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>lana.wubo@huawei.com</email>
      </address>
    </contact>
    <contact initials="C." surname="Zhang" fullname="Chenfang Zhang">
      <organization>China Unicom</organization>
      <address>
        <email>zhangcf80@chinaunicom.cn</email>
      </address>
    </contact>
    <contact initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </contact>
    <contact initials="N." surname="Davis" fullname="Nigel Davis">
      <organization>Ciena</organization>
      <address>
        <email>ndavis@ciena.com</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
pojW8/w6g7L/F6ly3d+IAgEA

-->

</rfc>

