<?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.7 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ivy-network-inventory-yang-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.20.0 -->
  <front>
    <title abbrev="Network Inventory YANG">A YANG Data Model for Network Inventory</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ivy-network-inventory-yang-01"/>
    <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="March" day="04"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 96?>

<t>This document defines a base YANG data model for network inventory
that is application- and technology-agnostic.  This data model can be
augmented with application-specific and technology-specific details
in other, more specific network inventory data models.</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>The purpose of this document is to define 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 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 emergence of
data models and their deployment in operator's management and control
systems, the traditional function of inventory management is also
requested to be defined as a data model.</t>
      <t>Network 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 which physical
devices are deployed 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 HW network inventory information with the
links information reported in the network topology model. This represent a priority for operators to implement this with a standard YANG data model that could be used as soon as possible in multi-vendor integrations of PNCs with MDSCs.</t>
      <t>The intention is to define a generic YANG base 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 together with specific HW or SW component’s attributes.</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 inventory data model presented in this draft.</t>
      <t>The proposed YANG data model has been analyzed at the present stage to cover the common requirements for both HW and SW use cases for Network Inventory.</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"/>.</t>
      <t><xref target="ni-augment"/> provides a set of augmentation considerations for 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="terminology-and-notations">
        <name>Terminology and Notations</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>
        <t>TBD: Recap the concept of chassis/slot/component/board/... in <xref target="TMF_SD2-20"/>.</t>
        <t>Following terms are used for the representation of the hierarchies in the network inventory.</t>
        <t>Network Inventory:</t>
        <ul empty="true">
          <li>
            <t>a collection of data for network devices and their components managed by a specific management system.</t>
          </li>
        </ul>
        <t>Network Element:</t>
        <ul empty="true">
          <li>
            <t>a manageable network entity that contains hardware and software units, e.g. a network device installed on one or several chassis</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>a unit of the network element, e.g.  hardware components like chassis, card, port, software components like software-patch, bios, and boot-loader</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>
        <t>Container:
  &gt; Within this document , with the term "container" we consider an hardware component class capable of containing one or more removable physical entities, e.g. a slot in a chassis is containing a board.</t>
      </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.
<?line -6?>
        </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>
        <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 target="RFC6991"/></td>
            </tr>
            <tr>
              <td align="left">yang</td>
              <td align="left">ietf-yang-types</td>
              <td align="left">
                <xref 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">ni</td>
              <td align="left">ietf-network-inventory</td>
              <td align="left">RFC XXXX</td>
            </tr>
          </tbody>
        </table>
        <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-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-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>
        <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 define under the component list node. So, the model can be augmented with HW/SW specific-info-grouping containing attributes applicable to HW e.g. boards/slot or SW e.g. software-module/boot-loader component only.</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
   |  +--ro software-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* [uuid]
        ...................................
        +--ro part-number?           string
        ...................................
]]></artwork>
        </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 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 child-component-ref
                  +--ro parent-rel-pos?           int32
                  +--ro parent-component-ref
                  +--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 product-name?             string
                  +--ro asset-id?                 string
                  +--ro is-fru?                   boolean
                  +--ro mfg-date?                 yang:date-and-time
                  +--ro uri*                      inet:uri
                  +--ro chassis-specific-info
                  +--ro slot-specific-info
                  +--ro board-specific-info
                  +--ro port-specific-info
                  +--ro software-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-03-04.yang"><![CDATA[
module ietf-network-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-network-inventory";
  prefix ni;
  
  import iana-hardware {
    prefix ianahw;
    reference
    "https://www.iana.org/assignments/yang-parameters";
  }

  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }
  
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC6991: 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) 2023 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 2024-03-04 {
    description
      "Initial version";
    reference
      "RFC XXXX: A YANG Data Model for Network Inventory.";
      //RFC Editor: replace XXXX with actual RFC number, update date
      //information and remove this note
  }

  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 ni:ne-type;
      description
        "A physical network element (NE). ";
    }

  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 {
      config false;
      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 ne-specific-info-grouping {
    description
      "Attributes applicable to network elements.";
    leaf hardware-rev {
      config false;
      type string;
      description
        "The vendor-specific hardware revision string for the NE.";
    }
    leaf software-rev {
      config false;
      type string;
      description
        "The vendor-specific software revision string for the NE.";
    }
    leaf mfg-name {
      config false;
      type string;
      description "The name of the manufacturer of this NE";
    }
    leaf mfg-date {
      config false;
      type yang:date-and-time;
      description "The date of manufacturing of the NE.";
    }
    leaf serial-number {
      config false;
      type string;
      description
        "The vendor-specific serial number of NE. It is expected that
        vendors assign unique serial numbers to different NEs within 
        the scope of the part number.";
    }
    leaf product-name {
      config false;
      type string;
      description
        "The vendor-specific serial number of the network element 
        instance. It is expected that vendors assign unique serial 
        numbers to different network element instances within the 
        scope of the product name.";
    }
  }
  
  grouping component-specific-info-grouping {
    description 
      "Provide component-specific attributes for different 
      components.";
    
    container chassis-specific-info {
      when "../class = 'ianahw:chassis'";
      description 
        "This container contains some attributes belong to
        chassis only.";
      uses chassis-specific-info-grouping;
      config false;
    }
    
    container slot-specific-info {
      when "../class = 'ianahw:container'";
      description 
        "This container contains some attributes belong to
        slot only.";
      uses slot-specific-info-grouping;
      config false;
    }
    
    container board-specific-info {
      when "../class = 'ianahw:module'";
      description 
        "This container contains some attributes belong to
        board only.";
      uses board-specific-info-grouping;
      config false;
    }
    
    container port-specific-info {
      when "../class = 'ianahw:port'";
      description 
        "This container contains some attributes belong to
        port only.";
      uses port-specific-info-grouping;
      config false;
    }
    
    container software-specific-info {
      when "../class = 'ianahw:software'";
      description 
        "This container contains some attributes belong to
        software only.";
      uses software-specific-info-grouping;
      config false;
    }
  }

  grouping chassis-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to chassis only.";
  }
  
  grouping slot-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to slots only.";
  }
  
  grouping board-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to boards only.";
  }
  
  grouping port-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to ports only.";
  }

  grouping software-specific-info-grouping {
  //To be enriched in the future.
    description
      "Specific attributes applicable to software only.";
  }  
  
  grouping ne-info-grouping {  
    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
            "Network Element (NE) identifier.";
        }
        leaf ne-type {
          config false;
          type identityref {
            base ne-type;
          }
          default "ne-physical";
          description
            "The type of network element (NE).";
        }
        uses common-entity-attributes;
        uses ne-specific-info-grouping;
        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
                "Component identifier";
            }
          leaf class {
            config false;
            type union {
              type identityref {
                base ianahw:hardware-class;
              }
              type identityref {
                base non-hardware-component-class;
              }
            }
            mandatory true;
            description
              "The type of the component.";
          }
  
            uses common-entity-attributes;
            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 RFC8348 or a list of 
                sub-components as openconfig-platform.";
            }
            leaf parent-rel-pos {
              config false;
              type int32 {
                range "0 .. 2147483647";
              }
              description
                "The relative position with respect to the parent
                component among all the sibling components.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                          entPhysicalParentRelPos";
            }
            container parent-component-ref {
              config false;
              description
                "A placeholder for adding the reference to parent 
                component(s): to further discuss whether to define 
                a parent attribute as RFC8348 or a 
                parent-component-references container as in 
                draft-ietf-ccamp-network-inventory-yang-02.";
            }
            leaf hardware-rev {
              config false;
              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 {
              config false;
              type string;
              description
                "The vendor-specific firmware revision string for the
                component.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                          entPhysicalFirmwareRev";
            }
            leaf software-rev {
              config false;
              type string;
              description
                "The vendor-specific software revision string for the
                component.";
              reference
                "RFC 6933: Entity MIB (Version 4) -
                          entPhysicalSoftwareRev";
            }
            leaf serial-num {
              config false;
              type string;
              description
                "The vendor-specific serial number of the component 
                instance. It is expected that vendors assign unique 
                serial numbers to different component instances within
                the scope of the part number.";
            }
            leaf mfg-name {
              config false;
              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 {
              config false;
              type string;
              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 product-name {
              config false;
              type string;
              description
                "The vendor-specific and human-interpretable string 
                describing the component type. It is expected that 
                vendors assign unique product names to different 
                component types within the scope of the vendor.";
            } 
            leaf asset-id {
              config false;
              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 {
              config false;
              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 {
              config false;
              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 {
              config false;
              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;
          }
        }
      }
    }
  }
  
  container network-inventory {
    uses ne-info-grouping;
    
  }
}
]]></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>
      <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="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="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="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="22" month="February" 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-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-11"/>
        </reference>
        <reference anchor="RFC8345">
          <front>
            <title>A YANG Data Model for Network Topologies</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="J. Medved" initials="J." surname="Medved"/>
            <author fullname="R. Varga" initials="R." surname="Varga"/>
            <author fullname="N. Bahadur" initials="N." surname="Bahadur"/>
            <author fullname="H. Ananthakrishnan" initials="H." surname="Ananthakrishnan"/>
            <author fullname="X. Liu" initials="X." surname="Liu"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document defines an abstract (generic, or base) YANG data model for network/service topologies and inventories. The data model serves as a base model that is augmented with technology-specific details in other, more specific topology and inventory data models.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8345"/>
          <seriesInfo name="DOI" value="10.17487/RFC8345"/>
        </reference>
        <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="18" month="October" year="2023"/>
            <abstract>
              <t>   This document defines the YANG model for network inventory software
   extensions to support more comprehensive software components and
   software-enabled network devices, e.g. virtual Provider Edge (PE),
   virtul Fire Wall (FW).

   This document augments the 'ietf-network-inventory' data model
   defined in xxx by adding the software components identification and
   new Network Element (NE) type.

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

<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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
lzrxJg8Xk2yFFzv/P95aJraXwgAA

-->

</rfc>
