<?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-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Network 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="I." surname="Busi" fullname="Italo Busi">
      <organization>Huawei Technologies</organization>
      <address>
        <email>italo.busi@huawei.com</email>
      </address>
    </author>
    <author initials="A." surname="Guo" fullname="Aihua Guo">
      <organization>Futurewei Technologies</organization>
      <address>
        <email>aihuaguo.ietf@gmail.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="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>
    <author initials="V." surname="Lopez" fullname="Victor Lopez">
      <organization>Nokia</organization>
      <address>
        <email>victor.lopez@nokia.com</email>
      </address>
    </author>

    <date year="2023" month="January" day="17"/>

    
    <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 inventory is a fundamental functionality in network management and was specified many years ago. Given the emerging 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 inventory management and monitoring is a critical part for ensuring the network stays healthy, well-planned, and functioning in the operator's network. Network inventory management allows the operator to keep track of what physical network devices are staying  in the network including relevant software and hardware versions.</t>

<t>The network 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 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 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 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 one YANG module: ietf-network-inventory.yang (<xref target="ni-yang"/>).</t>

<t>Note: review in future versions of this document the related modules, depending on the augmentation relationship.</t>

<t>The YANG data model defined in this document conforms 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-MTOSI"/>.</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="ni-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>ianahw</c>
      <c>iana-hardware</c>
      <c><xref target="RFC8348"/></c>
      <c>ni</c>
      <c>ietf-network-inventory</c>
      <c>RFC XXXX</c>
      <c>yang</c>
      <c>ietf-yang-types</c>
      <c><xref target="RFC6991"/></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-MTOSI"/>, 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  |
                           +------------+
                                 ||
                  ______1:N______||_____1:M_______
                  ||------------------ ---------||
                  \/                            \/      
           +--------------+               +-----------+
           | slot/subslot |               |   board   |
           +--------------+               +-----------+
                                                ||
                                                ||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 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 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-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-inventory
   +--ro network-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>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-references
        |  +--ro equipment-room-uuid?    leafref
        |  +--ro ne-uuid?                leafref
        |  +--ro rack-uuid?              leafref
        |  +--ro component-references
        |     +--ro component-reference* [index]
        |        +--ro index    uint8
        |        +--ro class?   leafref
        |        +--ro uuid?    leafref
        ...................................
]]></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>Note: add some more attributes about equipment room in the future.</t>

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

<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 firmware-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>
<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 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-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-inventory root.</t>

<t>The proposed YANG data model has been analysed so far to cover the requirements and use cases for Optical Network 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="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-inventory.yang (<xref target="ni-yang"/>).</t>

<figure title="Network inventory tree diagram" anchor="fig-ni-tree"><artwork type="ascii-art" name="ietf-network-inventory.tree"><![CDATA[
module: ietf-network-inventory
  +--ro network-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 rack-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 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 firmware-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-references
                 |  +--ro equipment-room-uuid?    leafref
                 |  +--ro ne-uuid?                leafref
                 |  +--ro rack-uuid?              leafref
                 |  +--ro 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="ni-yang"><name>YANG Model for Network Hardware Inventory</name>

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

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }
  
  import iana-hardware {
    prefix ianahw;
    reference
      "RFC 8348: A YANG Data Model for Hardware Management.";
  }
  
  import ietf-inet-types {
    prefix inet;
  } 
  
  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 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 2022-07-11 {
    description
      "version 3.0.0";
    reference
      "draft-yg3bp-ccamp-inventory-yang-01: A YANG Data
      Model for Network Inventory.";
  }
  
  revision 2022-03-04 {
    description
      "version 3.0.0";
    reference
      "draft-yg3bp-ccamp-inventory-yang-00: A YANG Data
      Model for Network Inventory.";
  }
  
  revision 2021-11-09 {
    description
      "version 2.0.0";
    reference
      "draft-yg3bp-ccamp-optical-inventory-yang-00: A YANG Data
      Model for Optical Network Inventory.";
  }

  revision 2021-10-25 {
    description
      "Initial revision.";
    reference
      "draft-yg3bp-ccamp-optical-inventory-yang-00: A YANG Data
      Model for Optical Network Inventory.";
  }
  
  container network-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
            "To be added.";
          leaf-list equipment-room-name {
            type leafref {
              path "/ni:network-inventory/ni:equipment-rooms/" +
                   "ni:equipment-room/ni: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
      "To be added.";
    leaf hardware-rev {
      type string;
      description
        "The vendor-specific hardware revision string for the NE.";
    }
    leaf firmware-rev {
      type string;
      description
        "The vendor-specific firmware 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
            "To be added.";
          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 "/ni:network-inventory/ni:network-elements"
                  + "/ni:network-element/ni:uuid";
                }
                description
                  "The reference to the network element containing
                  the chassis component.";
              }
              leaf component-ref {
                type leafref {
                  path "/ni:network-inventory/ni:network-elements"
                  + "/ni:network-element[ni:uuid"
                  + "=current()/../ne-ref]/ni:components"
                  + "/ni:component/ni:uuid";
                }
                description
                  "The reference to the chassis component within 
                  the network element and contained by the rack.";
              }
            }
          }
        }
      }
    }
  }
  
  grouping rack-specific-info-grouping {
    description
      "To be added.";
    container rack-location {
      description
        "To be added.";
      leaf equipment-room-name {
        type leafref {
          path "/ni:network-inventory/ni:equipment-rooms"
          + "/ni:equipment-room/ni: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 rack-number {
      type uint32;
      description
        "An integer identifier of rack.";
    }
    leaf height {
      type uint16;
      units millimeter;
      description
        "To be added.";
    }
    leaf width {
      type uint16;
      units millimeter;
      description
        "To be added.";
    }
    leaf depth {
      type uint16;
      units millimeter;
      description
        "To be added.";
    }
    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
            "To be added.
            
            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 "../ni:uuid";
          }
          description
            "The child components' identifier that are physically 
            contained by this component.";          
        }
        leaf parent-rel-pos {
          type int32 {
            range "0 .. 2147483647";
          }
          description
            "To be added.";
          reference
            "RFC 6933: Entity MIB (Version 4) -
                       entPhysicalParentRelPos";
        }
        container parent-references {
          description
            "To be added.";
          leaf equipment-room-uuid {
            type leafref {
              path "/ni:network-inventory/ni:equipment-rooms/" +
                   "ni:equipment-room/ni:uuid";
            }
            description
              "To be added.";
          }
          leaf ne-uuid {
            type leafref {
              path "/ni:network-inventory/ni:network-elements/" +
                   "ni:network-element/ni:uuid";
            }
            description
              "To be added.";
          }
          leaf rack-uuid {
            type leafref {
              path "/ni:network-inventory/ni:equipment-rooms/" +
                   "ni:equipment-room/ni:racks/ni:rack/ni:uuid";
            }
            description
              "To be added.";
          }
          container component-references {
            description
              "To be added.";
            list component-reference {
              key index;
              description
                "this list object is used to indicate its
                hierarchial parent components' identifier.
                This hierarchial relation can be found by index 
                parameter. The topest parent component should be 
                0-index.";
              leaf index {
                type uint8;
                description
                  "To be added.";
              }
              leaf class {
                type leafref {
                  path "../../../../ni:class";
                }
                description
                  "To be added.";
              }
              leaf uuid {
                type leafref {
                  path "../../../../ni:uuid";
                }
                description
                  "To be added.";
              }
            }
          }
        }
        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
        "To be added.";
      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 "./ni: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 "./ni: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
      "To be added.";
  }
  
  grouping slot-specific-info-grouping {
  //To be enriched in the future.
    description
      "To be added.";
  }
  
  grouping board-specific-info-grouping {
  //To be enriched in the future.
    description
      "To be added.";
  }
  
  grouping port-specific-info-grouping {
  //To be enriched in the future.
    description
      "To be added.";
  }
}
]]></sourcecode></figure>

</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-MTOSI" target="https://www.tmforum.org/resources/suite/mtosi-4-0/">
  <front>
    <title>TMF MTOSI 4.0 Equipment Model</title>
    <author >
      <organization>TM Forum (TMF)</organization>
    </author>
    <date year="2008"/>
  </front>
  <seriesInfo name="TMF SD2-20_EquipmentModel" 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'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='J. Dong' initials='J.' surname='Dong'><organization/></author>
<author fullname='D. Romascanu' initials='D.' surname='Romascanu'><organization/></author>
<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'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' surname='Schoenwaelder'><organization/></author>
<author fullname='P. Shafer' initials='P.' surname='Shafer'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<author fullname='R. Wilton' initials='R.' surname='Wilton'><organization/></author>
<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'><organization/></author>
<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'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'><organization/></author>
<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'><organization/></author>
<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'><organization/></author>
<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'><organization/></author>
<author fullname='L. Berger' initials='L.' role='editor' surname='Berger'><organization/></author>
<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'><organization/></author>
<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>




    </references>

    <references title='Informative References'>

<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='I-D.ietf-teas-actn-poi-applicability'>
   <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'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-teas-actn-poi-applicability-08.txt' type='TXT'/>
</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'><organization/></author>
<author fullname='J. Medved' initials='J.' surname='Medved'><organization/></author>
<author fullname='R. Varga' initials='R.' surname='Varga'><organization/></author>
<author fullname='N. Bahadur' initials='N.' surname='Bahadur'><organization/></author>
<author fullname='H. Ananthakrishnan' initials='H.' surname='Ananthakrishnan'><organization/></author>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<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 avoid that our inventory data model cannot cover these devices' inventory data, we have compared our inventory data model with the openconfig-platform.yang 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 model" 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. And for some of them, there is no need to manage for operators, such as 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>


  </back>

<!-- ##markdown-source:
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
DjztiNsAAA==

-->

</rfc>

