<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ivy-network-inventory-yang-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title abbrev="Network Inventory YANG">A Base YANG Data Model for Network 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="2024" month="November" day="05"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 97?>

<t>This document defines a base YANG data model for network inventory. The scope of this base model is set to
be application- and technology-agnostic. However, the data model is designed with appropriate provisions to ease
future augmentations with application-specific and technology-specific details.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-ivy-wg.github.io/network-inventory-yang/draft-ietf-ivy-network-inventory-yang.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-ivy-network-inventory-yang/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-ivy-wg/network-inventory-yang"/>.</t>
    </note>
  </front>
  <middle>
    <?line 103?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a base network inventory
YANG data model that is application- and technology-agnostic.  The
base data model can be augmented to describe application-specific or
technology-specific information.</t>
      <t>Network inventory is a fundamental functional block in the overall network
management which was specified many years ago. Network inventory management is a critical
part for ensuring that the network remains healthy (e.g., auditing to identify faulty elements), well-planned (e.g., identify assets to upgrade or to decommission), and maintained appropriately to meet the performance objectives. Also, network inventory
management allows operators to keep track of which devices are deployed in their networks, including relevant embedded software and
hardware versions.</t>
      <t>Exposing standards interfaces to retrieve and query network elements capabilities as recorded in an inventory are key enablers for many applications that consume network inventory data. From that standpoint and given the emergence of standard data models and their deployment by operators, the conventional function of inventory management is also required to be defined as a data model.</t>
      <t>For example, <xref target="I-D.ietf-teas-actn-poi-applicability"/> identifies a gap about the lack of a YANG data model that could be used at Abstraction and Control of TE Networks (ACTN) Multi-Domain Service Coordinator-Provisioning Network Controller Interface (MPI) level to report whole or partial network hardware
inventory information available at domain controller level towards
upper layer systems (e.g., Multi-Domain Service Coordinator (MDSC) or Operations Support Systems (OSS) layers).</t>
      <t>It is key for operators to coordinate with the industry towards the use of a
standard YANG data model for Network Inventory data instead
of using vendors proprietary APIs.</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 towards the network elements rather than at the northbound interface of a network controller (e.g., toward an application or another hierarchical network controller). However, the YANG data model defined in <xref target="RFC8348"/> has been used as a reference for defining the YANG network inventory data model presented in this document.</t>
      <t>Network Inventory is a collection of data for network devices and
their components managed by a specific management system.  Per the
definition of <xref target="RFC8969"/>, the network inventory model is a network
model.</t>
      <t>This document defines one YANG module "ietf-network-inventory" in <xref target="ni-yang"/>.
This base data model is technology-agnostic (that is, valid for IP/MPLS, optical, and
microwave networks in particular) and can be augmented to
include required technology-specific inventory details together with specific hardware or software component's attributes.</t>
      <t>The YANG data model defined in the document is scoped to cover the common requirements for both hardware and software (but with base functions) use cases for Network Inventory.</t>
      <t><xref target="ni-augment"/> provides a set of augmentation considerations for future extensions
of hardware, software, entitlement, and inventory topology mapping.</t>
      <t>The YANG data model defined in this document conforms to the Network Management Datastore Architecture <xref target="RFC8342"/>.</t>
      <section anchor="editorial-note-to-be-removed-by-rfc-editor">
        <name>Editorial Note (To be removed by RFC Editor)</name>
        <ul empty="true">
          <li>
            <t>Note to the RFC Editor: This section is to be removed prior to publication.</t>
          </li>
        </ul>
        <t>This document contains placeholder values that need to be replaced
   with finalized values at the time of publication.  This note
   summarizes all of the substitutions that are needed.</t>
        <t>Please apply the following replacements:</t>
        <ul spacing="normal">
          <li>
            <t>XXXX --&gt; the assigned RFC number for this I-D</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="terminology-and-notations">
      <name>Terminology and Notations</name>
      <section anchor="requirements-notations">
        <name>Requirements Notations</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.
<?line -6?>
        </t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are defined in <xref target="RFC7950"/> and are not
  redefined here:</t>
        <ul spacing="normal">
          <li>
            <t>client</t>
          </li>
          <li>
            <t>server</t>
          </li>
          <li>
            <t>augment</t>
          </li>
          <li>
            <t>data model</t>
          </li>
          <li>
            <t>data node</t>
          </li>
        </ul>
        <t>The following terms are defined in <xref target="RFC6241"/> and are not redefined
  here:</t>
        <ul spacing="normal">
          <li>
            <t>configuration data</t>
          </li>
          <li>
            <t>state data</t>
          </li>
        </ul>
        <t>The terminology for describing YANG data models is found in <xref target="RFC7950"/>.</t>
        <ul empty="true">
          <li>
            <t>TBD: Recap the concept of chassis/slot/component/board/... in <xref target="TMF_SD2-20"/>.</t>
          </li>
        </ul>
        <t>Also, the document makes use of the following terms:</t>
        <dl>
          <dt>Network Inventory:</dt>
          <dd>
            <t>A collection of data for network devices and their components managed by a specific management system.</t>
          </dd>
          <dt>Network Element:</dt>
          <dd>
            <t>A manageable network entity that contains hardware and software units (e.g., a network device installed on one or several chassis).</t>
          </dd>
          <dt>Chassis:</dt>
          <dd>
            <t>A holder of the device installation.</t>
          </dd>
          <dt>Slot:</dt>
          <dd>
            <t>A holder of the board.</t>
          </dd>
          <dt>Component:</dt>
          <dd>
            <t>A unit of the network element, e.g., hardware components (chassis, card, port, etc.), software components (software-patch, bios, etc.), and boot-loader.</t>
          </dd>
          <dt>Board/Card:</dt>
          <dd>
            <t>A pluggable equipment can be inserted into one or several slots (or sub-slots) and can afford a specific transmission function independently.</t>
          </dd>
          <dt>Port:</dt>
          <dd>
            <t>An interface on a board.</t>
          </dd>
          <dt>Container:</dt>
          <dd>
            <t>A hardware component class that is capable of containing one or more removable physical entities (e.g., a slot in a chassis is containing a board).</t>
          </dd>
        </dl>
      </section>
      <section anchor="tree-diagrams">
        <name>Tree Diagrams</name>
        <t>The meanings of the symbols in the YANG tree diagrams are defined in <xref target="RFC8340"/>.</t>
      </section>
      <section anchor="yang-prefixes">
        <name>YANG Prefixes</name>
        <t><xref target="tab-prefixes"/> list the prefixes of the modules that are used in this document.</t>
        <table anchor="tab-prefixes">
          <name>Prefixes and corresponding YANG modules</name>
          <thead>
            <tr>
              <th align="left">Prefix</th>
              <th align="left">YANG Module</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">inet</td>
              <td align="left">ietf-inet-types</td>
              <td align="left">
                <xref section="4" sectionFormat="of" target="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left">yang</td>
              <td align="left">ietf-yang-types</td>
              <td align="left">
                <xref section="3" sectionFormat="of" target="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left">ianahw</td>
              <td align="left">iana-hardware</td>
              <td align="left">
                <xref target="IANA_YANG"/></td>
            </tr>
            <tr>
              <td align="left">nwi</td>
              <td align="left">ietf-network-inventory</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="yang-data-model-for-network-inventory-overview">
      <name>YANG Data Model for Network Inventory Overview</name>
      <t>The network element definition is generalized to support physical
devices and other types of inventory objects (e.g., virtual network
elements) that can be managed as physical network elements from an
inventory perspective. The data model for Network Element presented
in this document uses a flat list of network element.</t>
      <t>The "ne-type" is defined as a YANG identity to describe the type of the network element. This document defines only the "physical-network-element" identity.</t>
      <t>The component definition is also generalized to support any types of
component, such as hardware, software, or firmware.</t>
      <t>Different types of components can be distinguished by the class of component. The component "class" is defined as a union between the hardware class identity, defined in "iana-hardware", and the "non-hardware" identity, defined in this document. Attributes related to specific class of component can be found in the component-specific-info structure.</t>
      <t>The identity definition of additional types of "ne-type" and "non-
hardware" identity of component are outside the scope of this
document and could be defined in application-specific or technology-
specific companion augmentation data models, such as
<xref target="I-D.wzwb-ivy-network-inventory-software"/>.</t>
      <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>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 base network 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 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>
      <artwork type="ascii-art"><![CDATA[
  +--rw network-elements
     +--rw network-element* [ne-id]
        +--rw ne-id            string
        ............................................
        +--rw components
           +--rw component* [component-id]
              +--rw component-id            string
              ......................................
]]></artwork>
      <section anchor="common-attributes">
        <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>
        <artwork type="ascii-art"><![CDATA[
  +--rw network-elements
     +--rw network-element* [ne-id]
        +--rw ne-id            string
        +--rw ne-type?         identityref
        +--rw uuid?            yang:uuid
        +--rw name?            string
        +--rw description?     string
        +--rw alias?           string
        ...................................
        +--rw components
           +--rw component* [component-id]
              +--rw component-id            string
              +--rw uuid?                   yang:uuid
              +--rw name?                   string
              +--rw description?            string
              +--rw alias?                  string
              +--rw class                   union
              ...................................
]]></artwork>
      </section>
      <section anchor="network-element">
        <name>Network Element</name>
        <t>To be consistent with the component definition, some of the
attributes defined in <xref target="RFC8348"/> for components are reused for network
elements.  These attributes include:</t>
        <artwork type="ascii-art"><![CDATA[
  +--rw network-elements
     +--rw network-element* [ne-id]
        ...................................
        +--rw hardware-rev?    string
        +--rw software-rev?    string
        +--rw mfg-name?        string
        +--rw mfg-date?        yang:date-and-time
        +--rw part-number?     string
        +--rw serial-number?   string
        +--rw product-name?    string
        ...................................
]]></artwork>
        <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="ne-component">
        <name>Components</name>
        <t>The YANG data model for network 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>
        <t>The component definition is generalized to both hardware components
and non-hardware components (e.g., software components).</t>
        <artwork type="ascii-art"><![CDATA[
  +--rw components
      +--rw component* [component-id]
        +--rw component-id            string
        +--rw uuid?                   yang:uuid
        +--rw name?                   string
        +--rw description?            string
        +--rw alias?                  string
        +--rw class                   union
        +--rw child-component-ref
        +--rw parent-rel-pos?         int32
        +--rw parent-component-ref
        +--rw hardware-rev?           string
        +--rw firmware-rev?           string
        +--rw software-rev?           string
        +--rw serial-num?             string
        +--rw mfg-name?               string
        +--rw part-number?            string
        +--rw asset-id?               string
        +--rw is-fru?                 boolean
        +--rw mfg-date?               yang:date-and-time
        +--rw uri*                    inet:uri
]]></artwork>
        <t>For state data like admin-state, oper-state and so on, we consider they are related to device hardware management and not network 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>
        <section anchor="hardware-components">
          <name>Hardware Components</name>
          <t>Based on TMF classification in <xref target="TMF_SD2-20"/>, hardware components 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.</t>
          <t>The relationship between typical inventory objects in a physical network element can be described by <xref target="fig-hw-inventory-object-relationship"/> below:</t>
          <figure anchor="fig-hw-inventory-object-relationship">
            <name>Relationship between typical inventory objects in physical network elements</name>
            <artwork type="ascii-art"><![CDATA[
                            +-----------------+
                            | network element |
                            +-----------------+
                                    ||
                                    ||
                                    ||
                                    ||1:M
                                    ||
                                    ||
                                    ||
                                    \/
                              +-------------+
                              |   chassis/  |---+
                              | sub-chassis |<--|
                              +-------------+
                                    ||
                     ______1:N______||_____1:M_______
                     ||------------------ ---------||
                     \/                            \/
              +--------------+               +-----------+
          +---|     slot     |               |   board   |
          |-->|  /sub-slot   |               |           |
              +--------------+               +-----------+
                                                   ||
                                                   ||1:N
                                                   \/
                                             +-----------+
                                             |    port   |
                                             +-----------+
]]></artwork>
          </figure>
          <t>The "iana-hardware" module <xref target="IANA_YANG"/> defines YANG identities for
the hardware component types in the IANA-maintained "IANA-ENTITY-MIB"
registry.</t>
          <t>Some of the definitions taken from <xref target="RFC8348"/> are actually based on the ENTITY-MIB <xref target="RFC6933"/>.</t>
          <t>For the additional attributes of specific hardware, such as CPU,
storage, port, power supply is defined in the hardware extension.</t>
        </section>
        <section anchor="software-components">
          <name>Software Components</name>
          <t>This document defines "software-rev" of NEs and components, which are
basic software attributes of a Network Element.</t>
          <t>The software and hardware components share the same attributes of the
component and have similar replaceable requirements. Generally, the
device also has other software data, for example, one or more
software patch information.</t>
          <t>The software components of other
classes, such as platform software, BIOS, bootloader, and software
patch information, are outside the scope of this document and defined other documents such as
<xref target="I-D.wzwb-ivy-network-inventory-software"/>.</t>
        </section>
      </section>
      <section anchor="changes-with-respect-to-rfc8348">
        <name>Changes with respect to RFC8348</name>
        <t>We re-defined some attributes listed in <xref target="RFC8348"/>, based on some integration experience for network wide inventory data.</t>
        <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>
          <artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [component-id]
        ...................................
        +--ro parent-component-references
        |   +--ro component-reference* [index]
        |      +--ro index    uint8
        |      +--ro class?   -> ../../../class
        |      +--ro uuid?    -> ../../../uuid
        ...................................
]]></artwork>
          <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 be defined under the component list node. Instead, they can be defined by augmenting the component-specific info container for the attributes applicable to HW e.g. boards/slot components only. Other component-specific attributes, such as SW-specific-info, may be defined in companion augmentation data models, such as
<xref target="I-D.wzwb-ivy-network-inventory-software"/> and are out of the scope of this model.</t>
          <artwork type="ascii-art"><![CDATA[
+--rw components
   +--rw component* [component-id]
   |  +--rw component-id            string
   |   .......................................
   |  +--ro chassis-specific-info
   |  +--ro slot-specific-info
   |  +--ro board-specific-info
   |  +--ro port-specific-info
]]></artwork>
        </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>
          <artwork type="ascii-art"><![CDATA[
  +--ro components
     +--ro component* [component-id]
        ...................................
        +--ro part-number?           string
        ...................................
]]></artwork>
        </section>
        <section anchor="component-identifiers">
          <name>Component identifiers</name>
          <t>There are some use cases where the name of the components are assigned and changed by the operator. In these cases, the assigned names are also not guaranteed to be always unique.</t>
          <t>In order to support these use cases, this model is not aligned with <xref target="RFC8348"/> in defining the component name as the key for the component list.</t>
          <t>Instead the name is defined as an optional attribute and the component-id is defined as the key for the component list (in alignment with the approach followed for the network-element list).</t>
        </section>
      </section>
    </section>
    <section anchor="ni-augment">
      <name>Extending Network Inventory</name>
      <t>This document defines the basic network inventory attributes
applicable to typical network scenarios.  For finer-grained and
specific management scenarios, the relationship between this model
and other models is illustrated in Figure 4.</t>
      <artwork type="ascii-art"><![CDATA[
             +-------------------------+
             |                         |
             | Base Network Inventory  |
             |                         |
             +------------+------------+
                          |
       +------------------+-------------------+
       |                  |                   |
+------V------+    +------V------      +------V------    +-------------+
|             |    |             |     |             |   |             |
| Hardware    |    |  Software   |     |             |   |  Inventory  |
| Extensions  |    |  Extensions |     | Entitlement |   |  Topology   |
| e.g. Power  |    |  e.g.       |     |             |   |  Mapping    |
| supply unit |    |  SW patch   |     |             |   |             |
+-------------+    +-------------+     +-------------+   +-------------+
]]></artwork>
    </section>
    <section anchor="ni-tree">
      <name>Network 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" (<xref target="ni-yang"/>).</t>
      <figure anchor="fig-ni-tree">
        <name>Network inventory tree diagram</name>
        <artwork type="ascii-art" name="ietf-network-inventory.tree"><![CDATA[
module: ietf-network-inventory
  +--rw network-inventory
     +--rw network-elements
        +--rw network-element* [ne-id]
           +--rw ne-id                 string
           +--ro ne-type?              identityref
           +--ro uuid?                 yang:uuid
           +--rw name?                 string
           +--rw description?          string
           +--rw alias?                string
           +--ro hardware-rev?         string
           +--ro software-rev?         string
           +--ro software-patch-rev*   string
           +--ro mfg-name?             string
           +--ro mfg-date?             yang:date-and-time
           +--ro serial-number?        string
           +--ro product-name?         string
           +--rw components
              +--rw component* [component-id]
                 +--rw component-id             string
                 +--ro class                    union
                 +--ro uuid?                    yang:uuid
                 +--rw name?                    string
                 +--rw description?             string
                 +--rw alias?                   string
                 +--ro hardware-rev?            string
                 +--ro software-rev?            string
                 +--ro software-patch-rev*      string
                 +--ro mfg-name?                string
                 +--ro mfg-date?                yang:date-and-time
                 +--ro serial-number?           string
                 +--ro product-name?            string
                 +--ro firmware-rev?            string
                 +--ro part-number?             string
                 +--ro asset-id?                string
                 +--ro child-component-ref
                 +--ro parent-rel-pos?          int32
                 +--ro parent-component-ref
                 +--ro is-fru?                  boolean
                 +--ro uri*                     inet:uri
                 +--ro chassis-specific-info
                 +--ro slot-specific-info
                 +--ro board-specific-info
                 +--ro port-specific-info
]]></artwork>
      </figure>
    </section>
    <section anchor="ni-yang">
      <name>YANG Data Model for Network Inventory</name>
      <figure anchor="fig-ni-yang">
        <name>Network inventory YANG module</name>
        <sourcecode type="yang" markers="true" name="ietf-network-inventory@2024-10-02.yang"><![CDATA[
module ietf-network-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-network-inventory";
  prefix nwi;

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

  organization
    "IETF IVY Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/ivy/>
     WG List:  <mailto:inventory-yang@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 base model for retrieving network
     inventory.

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

     Copyright (c) 2024 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.: update the date below with the date of RFC publication
  // and remove this note.

  revision 2024-10-02 {
    description
      "Initial version";
    reference
      "RFC XXXX: A YANG Data Model for Network Inventory.";
  }

  /*
   * Identities
   */

  identity non-hardware-component-class {
    description
      "Base identity for non hardware components (e.g., software
       components) in a managed device.";
  }

  identity ne-type {
    description
      "Base identity for Network Element (NE) types.";
  }

    identity ne-physical {
      base nwi:ne-type;
      description
        "A physical network element (NE). ";
    }

  /*
   * Groupings
   */

  grouping common-entity-attributes {
    description
      "The set of attributes which are common to all the entities
       (e.g., component, network elements) defined in this module.";
    leaf uuid {
      type yang:uuid;
      config false;
      description
        "The Universally Unique Identifier of the entity
         (e.g., component).";
    }
    leaf name {
      type string;
      description
        "The name of the  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
        "The textual description of the entity (e.g., component).";
    }
    leaf alias {
      type string;
      description
        "The alias name of the entity (e.g., component). This alias
         name can be specified by network manager.";
    }
    leaf hardware-rev {
      type string;
      config false;
      description
        "The vendor-specific hardware revision string for the entity
         (e.g., component).";
    }
    leaf software-rev {
      type string;
      config false;
      description
        "The vendor-specific software revision string for the entity
         (e.g., component).";
    }
    leaf-list software-patch-rev {
      type string;
      config false;
      description
        "The vendor-specific patch software revision string for the
         entity (e.g., component).";
    }
    leaf mfg-name {
      type string;
      config false;
      description
        "The name of the manufacturer of this entity
         (e.g., component).";
    }
    leaf mfg-date {
      type yang:date-and-time;
      config false;
      description
        "The date of manufacturing of the entity (e.g., component).";
    }
    leaf serial-number {
      type string;
      config false;
      description
        "The vendor-specific serial number of the the entity
         (e.g., component) instance. It is expected that vendors
         assign unique serial numbers to different network element
         instances within the scope of the product name.";
    }
    leaf product-name {
      type string;
      config false;
      description
        "The vendor-specific and human-interpretable string
         describing the entity (e.g., component) type. It is expected
         that vendors assign unique product names to different entity
         (e.g., component) types within the scope of the vendor.";
    }
  }

  /* 
   * Data Nodes
   */

  container network-inventory {
    description
      "Top-level container for network inventory.";
    container network-elements {
      description
        "The top-level container for the list of network elements
         within the network.";
      list network-element {
        key "ne-id";
        description
          "The list of network elements within the network.";
        leaf ne-id {
          type string;
          description
            "An identifier that uniquely identifies the NE in
             a network.";
        }
        leaf ne-type {
          type identityref {
            base nwi:ne-type;
          }
          default "nwi:ne-physical";
          config false;
          description
            "The NE type.";
        }
        uses common-entity-attributes;
        container components {
          description
            "The top-level container for the list of components
             within a network element.";
          list component {
            key "component-id";
            description
              "The list of components within a network element.";
            leaf component-id {
              type string;
              description
                "An identifier that uniquely identifies the component
                 in a node.";
            }
            leaf class {
              type union {
                type identityref {
                  base ianahw:hardware-class;
                }
                type identityref {
                  base non-hardware-component-class;
                }
              }
              config false;
              mandatory true;
              description
                "The type of the component.";
            }
            uses common-entity-attributes {
              refine hardware-rev {
                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";
              }
              refine software-rev {
                reference
                  "RFC 6933: Entity MIB (Version 4) -
                            entPhysicalSoftwareRev";
              }
              refine mfg-name {
                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-number' 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";
              }
              refine mfg-date {
                description
                  "The date of manufacturing of the managed
                  component.";
                reference
                  "RFC 6933: Entity MIB (Version 4) -
                  entPhysicalMfgDate";
              }
            }
            leaf firmware-rev {
              type string;
              config false;
              description
                "The vendor-specific firmware revision string for the
                 component.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                           entPhysicalFirmwareRev";
            }
            leaf part-number {
              type string;
              config false;
              description
                "The vendor-specific part number of the component
                 type. It is expected that vendors assign unique part
                 numbers to different component types within the
                 scope of the vendor.";
            }
            leaf asset-id {
              type string;
              config false;
              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";
            }
            container child-component-ref {
              config false;
              description
                "A placeholder for adding the reference to child
                 component(s): to further discuss whether to define
                 a child leaf-list as RFC 8348 or a list of
                 sub-components as openconfig-platform.";
            }
            leaf parent-rel-pos {
              type int32 {
                range "0 .. 2147483647";
              }
              config false;
              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-ref {
              config false;
              description
                "A placeholder for adding the reference to parent
                 component(s): to further discuss whether to define
                 a parent attribute as RFC 8348 or a
                 parent-component-references container as in
                 draft-ietf-ccamp-network-inventory-yang-02.";
            }
            leaf is-fru {
              type boolean;
              config false;
              description
                "This node indicates whether or not this component is
                 considered a 'field-replaceable unit' by the vendor.
                 If this node contains the value 'true', then this
                 component identifies a field-replaceable unit.
                 For all components that are permanently contained
                 within a field-replaceable unit, the value 'false'
                 should be returned for this node.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                           entPhysicalIsFRU";
            }
            leaf-list uri {
              type inet:uri;
              config false;
              description
                "This node contains identification information about
                 the component.";
              reference
                "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
            }
            container chassis-specific-info {
              when "derived-from-or-self(../class, 
                    'ianahw:chassis')";
              config false;
              description
                "This container contains some attributes belong to
                chassis only.";
            }
            container slot-specific-info {
              when "derived-from-or-self(../class,
                    'ianahw:container')";
              config false;
              description
                "This container contains some attributes belong to
                slot only.";
            }
            container board-specific-info {
              when "derived-from-or-self(../class, 'ianahw:module')";
              config false;
              description
                "This container contains some attributes belong to
                board only.";
            }
            container port-specific-info {
              when "derived-from-or-self(../class, 'ianahw:port')";
              config false;
              description
                "This container contains some attributes belong to
                port only.";
            }
          }
        }
      }
    }
  }
}
]]></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 anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>n.d.</date>
          </front>
        </reference>
        <reference anchor="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">
          <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="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">
          <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="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">
          <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="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">
          <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">
          <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 anchor="sec-informative-references">
        <name>Informative References</name>
        <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>Cisco</organization>
            </author>
            <date day="5" month="July" year="2024"/>
            <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-technology (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-12"/>
        </reference>
        <reference anchor="RFC8969">
          <front>
            <title>A Framework for Automating Service and Network Management with YANG</title>
            <author fullname="Q. Wu" initials="Q." role="editor" surname="Wu"/>
            <author fullname="M. Boucadair" initials="M." role="editor" surname="Boucadair"/>
            <author fullname="D. Lopez" initials="D." surname="Lopez"/>
            <author fullname="C. Xie" initials="C." surname="Xie"/>
            <author fullname="L. Geng" initials="L." surname="Geng"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>Data models provide a programmatic approach to represent services and networks. Concretely, they can be used to derive configuration information for network and service components, and state information that will be monitored and tracked. Data models can be used during the service and network management life cycle (e.g., service instantiation, service provisioning, service optimization, service monitoring, service diagnosing, and service assurance). Data models are also instrumental in the automation of network management, and they can provide closed-loop control for adaptive and deterministic service creation, delivery, and maintenance.</t>
              <t>This document describes a framework for service and network management automation that takes advantage of YANG modeling technologies. This framework is drawn from a network operator perspective irrespective of the origin of a data model; thus, it can accommodate YANG modules that are developed outside the IETF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8969"/>
          <seriesInfo name="DOI" value="10.17487/RFC8969"/>
        </reference>
        <reference anchor="I-D.wzwb-ivy-network-inventory-software">
          <front>
            <title>A YANG Network Data Model of Network Inventory Software Extensions</title>
            <author fullname="Bo Wu" initials="B." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Cheng Zhou" initials="C." surname="Zhou">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Mohamed Boucadair" initials="M." surname="Boucadair">
              <organization>Orange</organization>
            </author>
            <date day="17" month="October" year="2024"/>
            <abstract>
              <t>   The base Network Inventory YANG model defines the physical network
   elements (NEs) and hardware components of NEs.  This document extends
   the base Network Inventory model for non-physical NEs (e.g.,
   controllers, virtual routers, virtual firewalls) and software
   components (e.g., platform operating system (OS), software-patch).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-wzwb-ivy-network-inventory-software-03"/>
        </reference>
      </references>
    </references>
    <?line 1012?>

<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>
      <table anchor="tab-oc">
        <name>Comparison between openconfig platform and inventory data models</name>
        <thead>
          <tr>
            <th align="left">Attributes in oc-platform</th>
            <th align="left">Attributes in our model</th>
            <th align="left">remark</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">name</td>
            <td align="left">name</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">type</td>
            <td align="left">class</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">id</td>
            <td align="left">uuid</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">location</td>
            <td align="left">location</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">description</td>
            <td align="left">description</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">mfg-name</td>
            <td align="left">mfg-name</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">mfg-date</td>
            <td align="left">mfg-date</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">hardware-version</td>
            <td align="left">hardware-rev</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">firmware-version</td>
            <td align="left">firmware-rev</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">software-version</td>
            <td align="left">software-rev</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">serial-no</td>
            <td align="left">serial-num</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">part-no</td>
            <td align="left">part-number</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">clei-code</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">removable</td>
            <td align="left">is-fru</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">oper-status</td>
            <td align="left"> </td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">empty</td>
            <td align="left">contained-child?</td>
            <td align="left">If there is no contained child, it is empty.</td>
          </tr>
          <tr>
            <td align="left">parent</td>
            <td align="left">parent-references</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">redundant-role</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">last-switchover-reason</td>
            <td align="left"> </td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">last-switchover-time</td>
            <td align="left"> </td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">last-reboot-reason</td>
            <td align="left"> </td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">last-reboot-time</td>
            <td align="left"> </td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">switchover-ready</td>
            <td align="left"> </td>
            <td align="left">state data</td>
          </tr>
          <tr>
            <td align="left">temperature</td>
            <td align="left"> </td>
            <td align="left">performance data</td>
          </tr>
          <tr>
            <td align="left">memory</td>
            <td align="left"> </td>
            <td align="left">performance data</td>
          </tr>
          <tr>
            <td align="left">allocated-power</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">used-power</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">pcie</td>
            <td align="left"> </td>
            <td align="left">alarm  data</td>
          </tr>
          <tr>
            <td align="left">properties</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">subcomponents</td>
            <td align="left">contained-child</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">chassis</td>
            <td align="left">chassis-specific-info</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">port</td>
            <td align="left">port-specific-info</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">power-supply</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">fan</td>
            <td align="left"> </td>
            <td align="left">Fan is considered as a specific board. And no need to define as a single component</td>
          </tr>
          <tr>
            <td align="left">fabric</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">storage</td>
            <td align="left"> </td>
            <td align="left">For Optical and IP technology, no need to manage storage on network element</td>
          </tr>
          <tr>
            <td align="left">cpu</td>
            <td align="left"> </td>
            <td align="left">For Optical and IP technology, no need to manage CPU on network element</td>
          </tr>
          <tr>
            <td align="left">integrated-circuit</td>
            <td align="left">board-specific-info</td>
            <td align="left"> </td>
          </tr>
          <tr>
            <td align="left">backplane</td>
            <td align="left"> </td>
            <td align="left">Backplane is considered as a part of board. And no need to define as a single component</td>
          </tr>
          <tr>
            <td align="left">software-module</td>
            <td align="left"> </td>
            <td align="left">TBD</td>
          </tr>
          <tr>
            <td align="left">controller-card</td>
            <td align="left"> </td>
            <td align="left">Controller card is considered as a specific functional board. And no need to define as a single component</td>
          </tr>
        </tbody>
      </table>
      <t>As it mentioned in <xref target="ne-component"/> 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 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 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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
EEVub41nCKpT7fwmFRaRzr7QoydoaaS/aXrenogv3EFmP9PfBpoReF4WJWzH
YVpMzMKnBnzwgRW8rYJUxItrtEvJG83HLRknnO00cA3HbbBKDEKkUqYqPblw
921XIjZuMP09QydbvM0MvE7LuokdN4Kxyqu1heWXXsdAvzKTuWOymaJJN85d
095Slii30MLOjq0eE5da8ayZA4G0tMqmol3eFNYWnnjQrxYOZhc2yCUx34Cd
XI7llkaGDa/1yvPk0OZitZQ9K85I9Fkj1EZhoCljWE7VHJj2DH5WqvpjTIbn
noFGO7seUIxXUBBgSWuSOXYutIXF/W5aLvAHNf40nZIEqS1vOAuhGm0M/gHO
btJqzroLqWck/t3yPKK2KwMq0iU5LOMFwq1vpLLs29WFgGryDF2ZPPDmvtp1
EJ3zIrfPw5V9MStOjdkD/Syx8uGZFbXbNU0Jo8DWbk+NZSZC0zUoymVDO3Mz
vIa/fINYPJmkygthqG85lXZV2Dfr7LG987EjE09To2WDFzzXXUxxbGojRsJK
uQoc8vQ4LV3j0/6eJQ+0G9MYeqYVR9c3PIjmGfJ+3Ly/GfdEU2nmVEvtmW85
HQr0pA2F0eFQQxgazWjI+gD1jGdF6blmHGbuigflrKb5hf5p3xj2Zp5m0rfi
phUv3Og+JAnYMohPOwbxjpqtmj4aekYePxaxZY3UTRrfHWnKQYe35zthZcM1
gk8wwumaPHUkm7MsbGwHJofSuE1QlYkgfwbDt5K65M2NgcVwXlbpAth3ymIJ
v0vLlDpkos/SjDYEvdvUVKKFZZc+tsfGKihT9mpuTeL/DR8gUpKmUVySPeGr
KCpvRGsFUXEt4Zdfiv8FMiSd/KeOd7Hl4KmrLWFIp46vws9oh08buJ1o9k33
JeBmpaaHYrD4Bnx3wZppq3T5J2ykfkrRLsSFpzAVHEVMKUW3X7A5O7Ki4YP2
7+rJ01GlhuwBI0lUFQtjErcwhHzHK+pIXLKcJKPDmXb/lidklRE3aKOczSRu
KgoyWTQNex5ghqvIghSF2ARjGgzn6/Ad5QEdCfZRzpoYdoq1tbHOsmIMvVjh
gvzPhlerC4pNwwg1dsLMGxB0USnjCe3csniMMskRMoyF739GYzArbri1/On1
mZq1GqzqlEFE2exJtWC5SbicZilQRmB8Z2WUod1RgrnLIS8AHdAriR78liAS
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
BPZ3N7jUibdlvJgUN3hp7P8D5sM4+NS9AAA=

-->

</rfc>
