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


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

]>


<rfc ipr="trust200902" docName="draft-palmero-opsawg-dmlmo-04" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="DMLMO">Data Model for Lifecycle Management and Operations</title>

    <author initials="M." surname="Palmero" fullname="Marisol Palmero">
      <organization>Cisco Systems</organization>
      <address>
        <email>mpalmero@cisco.com</email>
      </address>
    </author>
    <author initials="F." surname="Brockners" fullname="Frank Brockners">
      <organization>Cisco Systems</organization>
      <address>
        <email>fbrockne@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Kumar" fullname="Sudhendu Kumar">
      <organization>NC State University</organization>
      <address>
        <email>skumar23@ncsu.edu</email>
      </address>
    </author>
    <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari">
      <organization>Thoughtspot</organization>
      <address>
        <email>shwetha.bhandari@thoughtspot.com</email>
      </address>
    </author>
    <author initials="C." surname="Cardona" fullname="Camilo Cardona">
      <organization>NTT</organization>
      <address>
        <email>camilo@ntt.net</email>
      </address>
    </author>
    <author initials="D." surname="Lopez" fullname="Diego Lopez">
      <organization>Telefonica I+D</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>

    <date year="2022" month="March" day="22"/>

    <area>operations</area>
    <workgroup>OPSA Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document motivates and specifies a data model for lifecycle management and operations. It describes the motivation and requirements to collect asset-centric metrics including but not limited to asset adoption and usability, licensing, supported features and capabilities, enabled features and capabilities, etc.; with the primary objective to measure and improve the overall user experience along the lifecycle journey, from technical requirements and technology selection through advocacy and renewal, including the end of life of an asset.</t>



    </abstract>



  </front>

  <middle>


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

<t>The virtualization of hardware assets and the development of applications using microservice architecture for cloud-native infrastructure created new consumption and licensing models. Any service can be deployed by composing multiple assets together where an asset refers to hardware, software, application, system or service. For example, cloud-native infrastructure from one vendor may be hosted on the physical server from another vendor or a combination of multiple cloud-native functions from one or more vendors can be combined to execute any service.</t>

<t>This introduces challenges for both lifecycle and adoption management of the assets. For example, a user may need to identify the capability availability of different assets or measure the usage of each capability (or the combination) from any specific asset to measure its optimal potential.  Moreover, the user could pinpoint the reason: the software application could not be optimally deployed, or is not simple to use, or is not well documented, etc.  The user may use feed such measurements and analysis metrics back to the support engineers and the developers, so they can focus their work effort only on features that users are adopting, or even determine when the lifecycle of the development could end.</t>

<t>This creates the need to collect and analyze asset-centric lifecycle management and operations data. From now on this data will be referred as Lifecycle Management and Operations (LMO); where LMO is not limited to virtualized or cloud environments, it covers all types of networking environments in which technology assets are deployed.</t>

<t>LMO data constitutes data needed to measure asset-centric lifecycle metrics including but not limited to asset adoption and usability, licensing, supported features and capabilities, enabled features and capabilities, etc. The primary objective is to facilitate the asset lifecycle management from the initial asset selection and positioning, licensing, feature enablement and usage, and beyond renewal to improve the overall user experience.</t>

<t>The main challenge in collecting LMO-related data, especially in a multi-vendor environment, relies on the ability to produce and consume such data in a vendor-agnostic, consistent and synchronized manner. APIs or telemetry are meant to collect and relay this data to receiving equipment for storing, analysis and/or visualization.</t>

<t>This document describes the motivation behind LMO, lists use cases, followed by the information model and data model of LMO. The list of use cases describes the need for new functional blocks and their interactions. The current version of this draft is focused on asset inventory, licenses information, feature usage and incident management. This draft specifies four YANG modules <xref target="RFC7950"/> focused on LMO, including:</t>

<figure><artwork><![CDATA[
* Licenses, 
* Assets, 
* Usage level of Asset features, and 
* Incident Management.
]]></artwork></figure>

<t>This document is organized as follows.  Section 2 establishes the terminology and abbreviations.  In Section 3, the goals and motivation of LMO are discussed.  In Section 4, use cases are introduced. Section 5 specifies the information model and the data models for LMO.</t>

<section anchor="requirements-language"><name>Requirements language</name>

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

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<t>Terminology and abbreviations used in this document:</t>

<t><list style="symbols">
  <t>Asset: refers to hardware, software, applications, or services. An asset can be physical or virtual.</t>
  <t>Consumer: refers to an entity that utilizes the outcomes of LMO. A consumer can be a user, a developer or some other interested third party.</t>
  <t>Developer: refers to the entity that creates or develops the entire asset or the part of the asset.</t>
  <t>EOL: End of Life.</t>
  <t>Features: are options or functional capabilities available in an asset.</t>
  <t>License: is issued by an entity such as the developer or the Open Source community and allows the user to operate the asset. Licenses determine how the asset can be leveraged and what is required in cases the asset is changed.</t>
  <t>LMO: Lifecycle Management and Operations.</t>
  <t>Optimal Software Version(OSV): refers to the elected software version considered optimal in the user environment.</t>
  <t>PID: Product Identifier.</t>
  <t>Usage: refers to how features of the asset are used.</t>
  <t>User: refers to the organization that owns or consumes the asset. Within the organization there are entities that: a) use the assets in their operations, b) manage the assets.</t>
  <t>User Experience: how a user interacts with and experiences a particular asset. It includes a user's perceptions of ease of use, efficiency, and utility of an asset.</t>
</list></t>

</section>
<section anchor="motivation"><name>Motivation</name>

<t>The user experience with a specific asset can be organized into four classes:</t>

<t><list style="numbers">
  <t>Asset characteristic class, covering anything related to asset, license, features, etc.</t>
  <t>Utilization class, to measure how the assets and features are used, duration of usage, uptime, etc.</t>
  <t>Notification class, covering any security advisory, retirement, etc.</t>
  <t>Incident class, to record and report any problem the user has faced with the asset.</t>
</list></t>

<t>The ability to measure, produce and consume LMO could benefit the user organization in addressing issues such as:</t>

<t><list style="symbols">
  <t>Licenses may not have been obtained at the optimum level for a given feature, where a user might have bought licenses that are not activated.</t>
  <t>Features of an asset might not be used as needed in all deployments within the organization.</t>
  <t>Resolution of incidents involving the asset and the developer of the technology used within the asset.</t>
</list></t>

<t>In addition to the resolution of incidents, LMO could allow developer organizations to optimize the features they offer.  For example, they could consider deprecating features that are used infrequently or focus on introducing more features for the assets that are widely deployed in various infrastructures.</t>

<t>LMO also covers the need of communication between users and the developer.  LMO can provide the capability for users to provide feedback about any asset (e.g., potential deficiency of a feature, feature enhancement request).  An administrator in the user organization may include specific metrics that identify a potential problem of that specific feature or a capability of the asset.  An engineer in the developer organization can determine the impact of the potential deficiency from the number of users providing feedback.  Note that this channel is different from a "call to a Technical Assistance Center" in which the user may request help in resolving operational issues with the asset.</t>

</section>
<section anchor="use-cases"><name>Use Cases</name>

<section anchor="license-inventory-and-activation"><name>License Inventory and Activation</name>

<t>An operations engineer would like to understand which licenses are activated and which are used and/or consumed. It is also important for asset users to understand which features within their assets might need a license and how to activate them.</t>

<t>It is relatively straightforward to have an inventory of existing licenses when there is only one asset developer (providing the asset) and one asset family.</t>

<t>But complexity grows when there are many different developers, systems and processes involved. New service offerings have introduced new attributes and datasets and require alignment with new business models (pay-per-product, subscription model, pay-as-you-go model, etc.). They might support different license types and models: asset activation keys, trust-based model, systems that act as proxy from the back end owned by the asset developer to support the control of licenses, etc.</t>

<t>Sometimes it is a challenge to report which licenses have been bought by the asset user, or who in the user organization owns that license because that information might rely on different asset developers; even within the same asset developer, licenses may correspond to different types or groups of assets. Asset users often need to interact with different license systems and processes.</t>

<t>Information on how assets are licensed could be delivered from a combination of attributes such as: sales order, purchase order, asset activation key, serial number, etc.</t>

<t>If there is no consistency on how to deal with those data points, complexity increases for the consumer, potentially requiring manual steps. Automating those manual steps or exceptions becomes time-consuming, eventually leading to higher costs for the asset consumer.</t>

<t>Having a common data model for LMO eases the integration between different data sources, processes, and consolidation of the information under a common reference.</t>

</section>
<section anchor="features-in-use"><name>Features in Use</name>

<t>Feature logic is required to identify the configured features from the running configuration and determine how they might be used. There is often a lack of an easy method to list any configured features available in the current asset.</t>

<t>This information is extracted from the running configuration many times, implemented by a rule system without having an easy method to list any configured features available in the current asset.</t>

<t>Some of these use cases need to be built on top of others, and from them, other more complex use cases could be created. For instance, Software Compliance use cases can be automated, based on use cases like security advisory, errata, End of Life(EOL), etc.</t>

<t>All this brings a complete set of use cases that fulfills Lifecycle Management of assets, complementing and providing metrics on how asset users are using assets and how their experience from using those assets can be improved.</t>

</section>
<section anchor="assets-in-use"><name>Assets in Use</name>

<t>Current approach to quantify how an asset is used, requires volume or aggregated usage/consumption metrics related to deployed assets, functions, features, integrations, etc. Also the need to quantify which metrics might be associated to a user, an organization, to specific services and how often are used; while others may be based on pre agreed profile (contractural or usage) of intented use. Examples include:</t>

<t><list style="symbols">
  <t>Number of search/queries sent by the user.</t>
  <t>Amount of data returned to the user.</t>
  <t>Amount of active time spent using the asset/feature.</t>
  <t>Number of concurrent users accessing the asset/feature.</t>
  <t>Number of features in use.</t>
  <t>Number of users or sites using those features, etc.</t>
</list></t>

<t>The information models and data models for LMO include data fields to support metrics that might be required by consumption-based charging and licensing of asset usage.</t>

</section>
<section anchor="risk-mitigation-check-rmc"><name>Risk Mitigation Check (RMC)</name>

<t>Network, software and cloud engineers would like to be aware of known issues that are causing assets to crash so that they can act to remediate the issue quickly, or even prevent the crash if alerts are triggered on time.  There are analytics tools that can process memory core dumps and crash-related files, providing the ability to the asset developers to determine the root cause.</t>

<t>Accordingly, asset users can remediate the problem, automate the remedy to enable incident deflection, allowing the support staff to focus on new problems.  The goal of introducing normalization is not to define attributes for each of the elements being part of the crash information, but the results of RMC should be normalized and registered.</t>

<t>Risk Mitigation Check could also include the possibility to be aware of current and historical restarts allowing network and software engineers to enhance the service quality to asset users.</t>

</section>
<section anchor="errata"><name>Errata</name>

<t>Both hardware and software critical issues or Errata need development to automate asset user matching:</t>

<t><list style="symbols">
  <t>Hardware Errata match on product identifiers (PIDs) + serial numbers along with additional hardware attributes.</t>
  <t>Software Errata match on software type and software version along with some additional device attributes.</t>
</list></t>

<t>Engineering might develop the logic to check whether any critical issue applies to a single serial number or a specific software release.</t>

<t>The information to be correlated includes customer identification, license, and asset information that the asset user might own. All this information needs to be correlated with hardware and software Errata, and EOL information to show which part of the asset inventory might be affected.</t>

</section>
<section anchor="security-advisory"><name>Security Advisory</name>

<t>The Security Advisory use case automates the matching of asset user data to security bulletins published by asset
developers.<br />
Security Advisory logic implemented by developers could apply to a specific software release.</t>

</section>
<section anchor="optimal-software-version-osv"><name>Optimal Software Version (OSV)</name>

<t>The objective of the Optimal Software Version (OSV) use case is that consumers can mark software images as OSV for their assets; based on this, it is easier for them to control and align their hardware and software assets to the set of OSVs.</t>

<t>Based on the logic of OSV, use cases like software compliance, risk trend analysis, acknowledge bugs, security advisories, errata, what-if analysis, etc., could be realized.</t>

<section anchor="software-conformance"><name>Software Conformance</name>

<t>All the assets should be at their latest recommended software version in case a security update is required to address a security issue of a specific feature.</t>

<t>The Software Conformance use case provides a view to the asset users and informs the users whether the assets that belong to a specific group conforms to the OSV or not.  It can provide the users with a report, including a representation of software compliance for the entire network and software applications.  This report could include the current software version running on the asset and the recommended software version. The report could enable users to quickly highlight which group of assets might need the most attention to inspire appropriate actions.</t>

<t>The Software Conformance use case uses data that might not be provided by the asset itself. Data needs to be provided and maintained also by the asset developers, through e.g., asset catalog information.  Similar logic applies to a feature catalog, where the asset developer maintains the data and updates it adequately based on existing bugs, security advisories, etc.</t>

<t>The Software Conformance process needs to correlate the Software catalog information with the software version running on the asset.</t>

</section>
<section anchor="risk-trend-analysis"><name>Risk Trend Analysis</name>

<t>The Risk Trend Analysis use case provides customers with a risk trend analysis, summarizing what might change before applying changes, including registered bugs, security advisories and errata.</t>

</section>
<section anchor="what-if-analysis"><name>What-if Analysis</name>

<t>The What-if Analysis use case allows asset users to plan for new hardware or software, giving them the possibility to change the config parameters or model how new hardware or software might change the software suggestions generated by OSV.</t>

<t>OSV and the associated use cases involve dependencies on attributes that might need to be collected from assets directly, including related inventory information (serial numbers, asset identifiers, software versions, etc.), but also dynamic information could be required, like:</t>

<t><list style="symbols">
  <t>Information on features that might be enabled on the particular asset.</t>
  <t>Catalogs, that might include information related to release notes. For example, consider a feature catalog. This catalog could include software versions that support a specific feature; the software releases that a feature is supported in; or the latest version that a feature is supported in, in case the feature is EOL.</t>
  <t>Data sources to correlate information coming from reports on critical issues or errata, security advisory, End of Life, etc.</t>
</list></t>

<t>Those catalogs and data sources with errata information, EOL, etc. need to be maintained and updated by asset developers, making sure, that the software running on the assets is safe to run and up to date.</t>

</section>
</section>
<section anchor="asset-retirement-end-of-life-eol"><name>Asset Retirement - End of Life (EOL)</name>

<t>Hardware EOL reports need to map Hardware EOL PIDs, focusing on base PIDs so that bundles, spares, non-base PIDs, etc., do not provide false EOL reporting to asset users. Software EOL reports are used to automate the matching of user software type and software version to software EOL bulletins.</t>

</section>
</section>
<section anchor="information-model"><name>Information Model</name>

<t>The broad metric classes defined in section 3 that quantify user experience can be modeled as shown in Figure 1. There is an inventory of all assets that the user possesses.  Each asset in the inventory may be entitled to one or more licenses; a license may contain one or more sub-licenses.  The level of usage for each feature and license associated with the asset is measured.  For every asset, a list of incidents could be created.</t>

<t>For example, a user needs to measure the utilization of a specific license for a specific type of asset.  The information about the license may reside in a license server.  The state (activated or not) of the license may reside with the asset itself or a proxy.  They can be aggregated/correlated as per the information model shown in Figure 1 to give information to the user regarding the utilization of the licenses.  The user experience is thus enhanced by
having accurate knowledge about the utility of the given license.</t>

<figure><artwork><![CDATA[
 may_be_part_of                                    may_be_part_of
   +------+                                            +-------+
   |      |                                            |       |
   |      v                                            v       |
+------------+  entitled_by            tracked_by   +------------+
|  Licenses  |<------------+          +-------------|   Usage    |
+------------+-----------+ | may_be_  | +---------->+------------+
|  License   | entitles  | | part_of  | | tracks    |   Asset    |
| attributes |           | | +------+ | |           |  Features  |
+------------+           | | |      | | |           | and usage  |
                         v | |      v v |           | attributes |
                        +----------------+          +------------+
                        |     Asset      |                         
          future_       +----------------+    generated_by        
          association   |     Asset      |<----------------+
            +---------->|   attributes   |---------------+ |
            |           +----------------+    generates  | |
            v                                            v |
      +-----------+                                 +------------+
      |  Future   |                                 |  Incident  |
      | Expansion |                                 +------------+
      +-----------+                                 |  Incident  |
                                                    | attributes |
                                                    +------------+

                 Figure 1: Information Model 
]]></artwork></figure>

<t>The model allows for future expansion by new metrics that will quantify user experience. Notice that future asociation relationship and future expansion might be linked to asset or to one of the other datasets: incident, feature usage or licenses.</t>

</section>
<section anchor="data-models"><name>Data Models</name>

<section anchor="tree-diagrams-of-the-modules-that-form-lmo"><name>Tree Diagrams of the modules that form LMO</name>

<section anchor="aggregated-asset-inventory"><name>Aggregated Asset Inventory</name>

<t>This specification uses <xref target="I-D.draft-ietf-netmod-geo-location-11"/>, <xref target="I-D.draft-ietf-opsawg-sbom-access-03"/></t>

<figure><artwork><![CDATA[
module: ietf-lmo-assets-inventory

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw vendor?                   ietf-lmo-common:vendor-id
    +--rw name?                     string
    +--rw description?              string
    +--rw pid?                      string
    +--rw serial-number?            string
    +--rw vid?                      string
    +--rw mac-address?              yang:mac-address
    +--rw ip-address*               inet:ip-address
    +--rw entity-name?              string
    +--rw product-description?      string
    +--rw udi?                      string
    +--rw transparency-info?        inet:uri
    +--rw role?                     identityref
    +--rw aggregation?              boolean
    +--rw number-of-instances?      uint32
    +--rw platform-dependency-os?   identityref
    +--rw install-location
    +--rw deployment-mode?          identityref
    +--rw activation-date?          yang:date-and-time
    +--rw software-version?         string
    +--ro hotfixes
    |  +--ro hostfix* []
    |     +--ro version?   identityref
    |     +--ro order?     uint8
    +--rw software-type?            string
    +--rw sign-of-life-timestamp?   yang:date-and-time
    +--rw tags?                     string
]]></artwork></figure>

</section>
<section anchor="licenses"><name>Licenses</name>

<figure><artwork><![CDATA[
module: ietf-lmo-licenses

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw virtual-account?     string
    +--rw model?               ietf-lmo-common:license-model-t
    +--rw buying-program?      identityref
    +--rw offer-type?          identityref
    +--rw external-store?      boolean
    +--rw pid?                 string
    +--rw purchase-order-id?   ietf-lmo-common:purchase-order-t
    +--rw account-id?          string
    +--rw assets
    |  +--rw asset* [lmo-class id]
    |     +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
    |     +--rw id           -> deref(../lmo-class)/../ietf-lmo:inst/id
    +--rw features
    |  +--rw feature* [lmo-class id]
    |     +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
    |     +--rw id           -> deref(../lmo-class)/../ietf-lmo:inst/id
    +--rw state?               ietf-lmo-common:license-state-t
    +--rw renewal-profile
       +--rw purchase-date?     yang:date-and-time
       +--rw claim-date?        yang:date-and-time
       +--rw activation-date?   yang:date-and-time
       +--rw expiration-date?   yang:date-and-time
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw licenses
       +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
       +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
]]></artwork></figure>

</section>
<section anchor="usage"><name>Usage</name>

<figure><artwork><![CDATA[
module: ietf-lmo-feature

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw features
       +--rw feature* [lmo-class id]
          +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
          +--rw id           -> deref(../lmo-class)/../ietf-lmo:inst/id
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw name?                      string
    +--rw summary?                   string
    +--rw category?                  string
    +--rw entitlement?               string
    +--rw first-available-version?   string
    +--ro backported-versions
    |  +--ro backported-version* []
    |     +--ro version?   identityref
    +--rw scope?                     identityref
    +--rw config-options* [id]
    |  +--rw id                string
    |  +--rw name?             string
    |  +--rw summary?          string
    |  +--rw characteristic* [id]
    |     +--rw id       string
    |     +--rw name?    string
    |     +--rw value?   string
    +--rw asset
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
    +--rw subfeatures
       +--rw subfeature* [lmo-class id]
          +--rw lmo-class    -> /ietf-lmo:lmos/lmo/lmo-class
          +--rw id           -> deref(../lmo-class)/../ietf-lmo:inst/id
]]></artwork></figure>

</section>
<section anchor="usage-1"><name>Usage</name>

<figure><artwork><![CDATA[
module: ietf-lmo-usage

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw feature
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
    +--rw name?                   string
    +--rw summary?                string
    +--rw uri?                    string
    +--rw deployment-mode?        identityref
    +--rw scope?                  identityref
    +--rw activation-status?      string
    +--rw instances?              uint32
    +--rw count-type?             identityref
    +--rw timestamp?              yang:date-and-time
    +--rw count?                  uint32
    +--rw frequency* [name]
    |  +--rw name         string
    |  +--rw type-freq?   string
    |  +--rw value?       yang:counter64
    +--rw resource-consumption* [id]
       +--rw id                string
       +--rw name?             string
       +--rw summary?          string
       +--rw characteristic* [id]
          +--rw id           string
          +--rw name?        string
          +--rw unit?        string
          +--rw value?       yang:counter64
          +--rw value-max?   yang:counter64
]]></artwork></figure>

</section>
<section anchor="incident-management"><name>Incident Management</name>

<figure><artwork><![CDATA[
module: ietf-lmo-incident-management

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw id?                 string
    +--rw title?              string
    +--rw summary?            string
    +--rw severity?           string
    +--rw status?             string
    +--rw created?            yang:date-and-time
    +--rw last_updated?       yang:date-and-time
    +--rw capability?         string
    +--rw technology?         string
    +--rw subtechnology?      string
    +--rw problem-type?       string
    +--rw resolution?         string
    +--rw owner?              string
    +--rw support-engineer?   string
    +--rw asset
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
    +--rw feature
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
    +--rw contract-number?    string
]]></artwork></figure>

</section>
<section anchor="organization"><name>Organization</name>

<figure><artwork><![CDATA[
module: ietf-lmo-organization

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw address?      string
    +--rw department?   boolean
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw organization
       +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
       +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
]]></artwork></figure>

</section>
<section anchor="user"><name>User</name>

<figure><artwork><![CDATA[
module: ietf-lmo-user

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw billing-account?   uint32
    +--rw represents
    |  +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
    |  +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
    +--rw authority?         enumeration
    +--rw email?             string
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst:
    +--rw user
       +--rw lmo-class?   -> /ietf-lmo:lmos/lmo/lmo-class
       +--rw id?          -> deref(../lmo-class)/../ietf-lmo:inst/id
]]></artwork></figure>

</section>
</section>
<section anchor="lmo-modules"><name>LMO Modules</name>

<section anchor="lmo-common-module"><name>LMO Common Module</name>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-common@2022-02-28.yang"
module ietf-lmo-common {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-common";
  prefix ietf-lmo-common;
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module defines a collection of useful data types
     and identity for Lifecycle Management and Operations (LMO).

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-08-23 {
    description
      "Initial revision for Common Module as part of the LMO
       YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  typedef license-id-t {
    type string;
    description
      "License ID Type";
  }
  typedef license-model-t {
    type enumeration {
      enum perpetual {
        description
          "Perpetual license";
      }
      enum subscription {
        description
          "Subscription license";
      }
      enum usage-based {
        description
          "Usage-based license";
      }
      enum other {
        description
          "Undefined license type";
      }
    }
    description
      "License Model Type";
  }
  identity license-buying-program-t {
    description
      "License Buying Program that contains the plan to generate
       revenue for specific asset";
  }
  identity enterprise-agreement {
        base license-buying-program-t; 
        description
          "Enterprise Agreement";
  }
  identity managed-service-license-agreement {
        base license-buying-program-t; 
        description
          "Managed Service License Agreement";
  }
  identity service-provider-network-agreement {
        base license-buying-program-t; 
        description
          "Service Provider Network Agreement";
  }
  identity collab-active-user {
        base license-buying-program-t; 
        description
          "Collaboration Active User";
  }
  identity service-full-coverage {
        base license-buying-program-t; 
        description
          "Service Full-Coverage";
  }
  identity offer-type-t {
    description
      "License Offer Type, part of the plan to generate revenue
       for specific asset";
  }
  identity perpetual-software {
      base offer-type-t;
      description
          "Perpetual softwar gives the user the right to use the
           program indefinitely";
  }
  identity standalone-hardware {
      base offer-type-t;
      description
          "Standalone hardware is able to function independently
           of other hardware";
  }
  identity on-premise-software-subscription {
      base offer-type-t;
      description
          "On-Premise software subscription, relates to a temporary
           on-prem licencing model, allowing users to pay a per user 
           fee";
  }
  identity cloud-software-saas-subscription {
      base offer-type-t;
      description
          "Cloud Software (SaaS) subscription is a service busines
           model where the user is entitled to use the cloud software
           for a specific time period";
  }
  identity third-party-software {
      base offer-type-t;
      description
          "It includes licenses, agreements, obligations or other 
          commitment under which the user can use the asset not 
          directly sold by the manufacturer";
  }
  identity flex-cloud-prem-subscription {
      base offer-type-t;
      description
          "Flex Cloud-Prem subscription allows software vendros to 
          limit the number of licenses for the use of the specific 
          asset";
  }
  typedef license-key-t {
    type string;
    description
      "License Key Type";
  }
  typedef purchase-order-t {
    type string;
    description
      "License purchase order number";
  }
  typedef license-state-t {
    type enumeration {
      enum inactive {
        description
          "Inactive State";
      }
      enum active {
        description
          "Active State";
      }
      enum unknown {
        description
          "Unknown State";
      }
    }
    description
      "License State Type";
  }

  typedef asset-id {
    type string;
    description
      "Asset ID Type";
  }

  typedef vendor-id {
    type enumeration {
      enum cisco {
        description
          "Vendor-id is Cisco";
      }
      enum other {
        description
          "Vendor-id is not determined";
      }
    }
    description
      "Vendor identifier";
  }

  identity asset-type {
    description 
      "type of the asset: hardware, software, software cloud, ...";
  }
  identity hw {
    base asset-type; 
    description
      "Hardware refers to any physical device";
  }
  identity sw { 
    base asset-type; 
    description
      "Software refers to a collection of code installed on a 
      hardware asset";
  }
  identity sw-cloud { 
    base asset-type; 
    description
      "Cloud-based software, that allows users access to software 
      application that run on a shared computing resources via 
      Internet";
  }
  identity phone { 
    base asset-type;
    description
      "Mobile telephone or a handheld two-way communication device 
      over a cellular network.";
  }
  identity other { 
    base asset-type;
    description
      "Different or additional type not specified as part of another 
      defined asset-type.";
  }
  identity asset-subtype {
    description 
      "subtype of the asset: router, switch, wireless, 
      controller, ...";
  }
  identity router {
    base asset-subtype;
    description
      "Network connecting device. It operates at layer-3 of the OSI 
      model.";
  }
  identity switch {
    base asset-subtype;
    description
      "Network connecting device. It operates at layer-2(Data Link 
      Layer) of the OSI model.";
  }
  identity wireless { 
    base asset-subtype; 
    description
      "Network connecting device. It creates a wireless local area 
      network. It connects to a wired router, switch, or hub via an 
      Ethernet cable, and projects a Wi-Fi signal to a designated 
      area";
  }
  identity controller {
    base asset-subtype;
    description
      "Centralized device in the network which is used in combination 
      with network connection devices, when there is a need to manage 
      them in large quantities.";
  }
  identity board {
    base asset-subtype;
    description
      "Electronic circuit board in an asset which interconnects 
      another hardware assets attached to it.";
  }
  identity p-supply {
    base asset-subtype;
    description
      "Power supply, as it might have independent identity.";
  }
  identity transceiver {
    base asset-subtype;
    description
      "Device that is both a transmitter and a receiver. Usually 
      it's in a single device. 
      This is commonly used as a modular network interface";
  }
  identity others {
    base asset-subtype;
    description
      "Different or additional type not specified as part of another 
      defined asset-subtype.";
  }
  identity version {
    description
      "Base identity for all version types";
  }
  identity version-sw { 
  base version;
    description
      "Version release of the operating system that runs on the 
      asset";
  }  
  identity platform-dependency-os {
    description
      "Operating system that creates an environment for the asset
       to get deployed. Enum of options covering OS platform 
       dependency.";
  }
  identity linux {
    base platform-dependency-os;
    description
      "UNIX like operating system";
  }
  identity windows {
    base platform-dependency-os;
    description
      "Windows operating system";
  }
  identity macOS { 
    base platform-dependency-os;
    description
      "Mac operating system develop by Apple, Inc.";
  }
  identity darwin { 
    base platform-dependency-os;
    description
      "Open-source Unix-like operating system first released by Apple 
      Inc.";
  }
  identity ubuntu { 
    base platform-dependency-os;
    description
      "Linux distribution, used in desktop distribution";
  }
  identity red-hat {
    base platform-dependency-os;
    description
      "Red Hat Enterprise Linux, released in multiple server and 
      desktop versions";
  }
// NEED to extend and include iOS, Android, etc.;

  identity role {
    description
      "What the role of a given device/component is in the network.
      This attribute normally will be configured on the specific
      component during setup. This attribute normally will be 
      configured on the specific component during setup";
  }
  identity border-router { 
    base role;
    description
      "Router that provides connectivity between interior and 
      exterior network routers or to the cloud";
  }
  identity access { 
    base role;
    description
      "Router that provides access to a larger communication network 
      of some sort.";
  }
  identity control-plane { 
    base role;
    description
      "Network component that controls how data packets are 
      forwarded";
  }
  identity edge {
    base role;
    description
      "Router that provides an entry point into enterprise or service 
      provider core networks";
  }
  identity core { 
    base role;
    description
      "Component part of the high-speed backbone of the network. It 
      provides fast and efficient data transport";
  }
  identity datacenter { 
    base role;
    description
      "Component placed in the data center, mantaining and housing 
      back-end IT system and data stores";
  }
  identity branch {
    base role;
    description
      "Router in a remote branch of an enterprise's network";
  
  }
  identity deployment-mode {
    description
      "This attribute will denote the configured deployment mode
       for the asset and features, if applicable; e.g.,
       High Availability(HA) or Faiover cluster, virtual appliance, 
       etc.";
  }
  identity primary { 
    base deployment-mode;
    description
      "Asset or featurs that support critical applications to 
      minimize system downtime, to achieve high availabiilty or 
      failover";
  }
  identity secondary { 
    base deployment-mode;
    description
      "Redundant asset or feature, that is triggered when the 
      primary encounters performance issues, to achieve high 
      availability or failover";
  }
  identity cloud { 
    base deployment-mode;
    description
      "Especially it refers to remote, distributed and shared asset 
      resources (i.e. data storage, computing power, etc.), which 
      are hooked together and meant to operate as a single 
      ecosystem.";
  }
  identity virtual-appliance { 
    base deployment-mode;
    description
      "pre-configured virtual machine image, ready to run on a 
      hypervisor";
  }
  identity container { 
    base deployment-mode;
    description
      "Standard unit of software that packages up code and all its 
      dependencies so the application runs quickly and reliably from 
      one computing environment to another";

  }
  identity undeployed { 
    base deployment-mode;
    description
      "it refers to an asset that is undeployed";

  }
  identity counter-type {
    description
      "Specify the different type of counters, i.e accumulated-count,
       average-count, last-count, high-water mark count, low-water
       mark count" ;
  }
  identity accumulated {
    base counter-type;
    description
      "monotonically increasing counters. They're useful for 
       aggregating metric information such as the number of hits 
       on a web page, how many users log into a portal, etc.";
  }
  identity average { 
    base counter-type;
    description
      "typical value in a set of metrics, in particular the mean, 
      which is calculated by dividing the sum of the values in the 
      set by their number.";
  }
  identity last { 
    base counter-type;
    description
      "Last value measured and collected for specific metric.";
  }
  identity high-water-mark { 
    base counter-type;
    description
      "Highest level of value in a set of metrics.";
  }
  identity low-water-mark { 
    base counter-type;
    description
      "Lowest level of value in a set of metrics.";
  }
  identity feature-scope { 
    description
      "Optional tag that could apply to any usage feature, so that
       if there are multiple dimensions of reporting that need to
       be accommodated (i.e., report feature usage by 'site')";
  }
  identity site { 
    base feature-scope;
    description
      "Single location, part of the network";
  }
  identity network { 
    base feature-scope;
    description
      "scope limited to the networking assets";
  }
  typedef feature-usage-type {
    type enumeration {
      enum none {
        description
          "No Usage";
      }
      enum low {
        description
          "Usage meeting the Low Threshold";
      }
      enum medium {
        description
          "Usage meeting the Medium Threshold";
      }
      enum high {
        description
          "Usage meeting the High Threshold";
      }
      // NEED to elaborate more on this list, based on use case 
      // validation
    }
    description
      "feature usage % 0-25-50-75-100";
  }

  identity lmo-class {
    description "Base identity for classes of LMOs";
  }
}
<CODE ENDS>

### LMO Module

<CODE BEGINS> file "ietf-lmo@2022-03-01.yang"
module ietf-lmo {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo";
  prefix ietf-lmo;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-yang-types {
    prefix yang;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module add the flexibility to define its own 
     and extensible set of lmo classes.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-03-01 {
    description
      "Initial revision for LMO Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  
  container lmos {
    //config false; //temporarily commented out for easy testing
    description
      "Container that includes instances for all types of datasets
       which are part of DMLMO";
    list lmo {
      key lmo-class;
      description
        "list that includes the instances for all DMLMO datasets";
      leaf lmo-class {
        type identityref {
          base ietf-lmo-common:lmo-class;
        }
        description
          "lmo-class defining the type of instance";  
      }
      list inst {
        key id;
        description
          "defines the specific instance";
        leaf id {
          type string;
          description
            "Identifies the instance";
        }
        container parent {
          description
            "identifies the hierarchy structure for a given instance";
          leaf lmo-class {
            type leafref {
              path /lmos/lmo/lmo-class;
            }
            description
              "lmo-class that defines the parent type of instance";
          }
          leaf id {
            type leafref {
              path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
            }
            description
              "identifies the parent type of instance";
          }
        }
        container capture-info {
          // Moved capture-info to the instance level, as
          // asset/... data will generally be collected
          // from one source at one time.
          description
            "Capture information for this data";
          leaf collected-on {
            type yang:date-and-time;
            description
              "Time at which this data was collected";
          }
          leaf collected-from {
            type string;
            description
              "Identifier for original source of this data";
          }
        }
      }
    }
  }
}
<CODE ENDS>

### Aggregated Asset Inventory

<CODE BEGINS> file "ietf-lmo-assets-inventory@2022-02-22.yang"
module ietf-lmo-assets-inventory {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-assets-inventory";
  prefix ietf-lmo-asset;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-inet-types {
    prefix inet;
  }
  import ietf-geo-location {
    prefix ietf-geo-location;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the concept asset aggregation
     and platform dependency of an asset.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-02-22 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Aggregated Assets Inventory as part of
       the LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity asset {
    description "An asset is a class of lmo that represents a 
    hardware, software, application, or service component.
    An asset can also be physical or virtual";
    base ietf-lmo-common:lmo-class;
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-asset:asset')";
    description
      "Assets container includes attributes that add the aggregated
       view";
    leaf vendor {
      type ietf-lmo-common:vendor-id;
      description
        "Vendor or Manufacturer name or identifier; e.g. Cisco";
    }
    leaf name {
      type string;
      description
        "name of the asset, aka hostname";
    }
    leaf description {
      type string;
      description
        "brief description of the asset";
    }
    leaf pid {
      type string;
      description
        "Part or Product Identifier";
    }
    leaf serial-number {
      type string;
      description
        "Serial number";
    }
    leaf vid {
      type string;
      description
        "Hardware Version ID";
    }
    leaf mac-address {
      type yang:mac-address;
      description
        "The mac-address type represents an IEEE 802 MAC address.
      The canonical representation uses lowercase characters.";
    }
    leaf-list ip-address {
      type inet:ip-address;
      description
        "IP address, representing the management IP of the asset.
      It can refer to ipv4 and/or ipv6 address.";
    }
    leaf entity-name {
      type string;
      description
        "Hardware type, e.g., chassis, slot, or power-supply";
    }
    leaf product-description {
      type string;
      description
        "Standard description of the assset; e.g., '1-port Gigabit
          Ethernet'";
    }
    leaf udi {
      type string;
      description
        "Identify uniquely an asset = vendor-id + pid + id";
    }
    leaf transparency-info { 
      type inet:uri;
      description
        "Link to software bill of material and security advisory
        information, see draft-ietf-opsawg-sbom-access";
    }
    leaf role {
      type identityref {
        base ietf-lmo-common:role;
      }
      description
        "What the role of a given device/component is in the 
        network. This attribute normally will be configured on the 
        specific component during setup";
    }
    leaf aggregation {
      type boolean;
      must "../number-of-instances = 1 or current() = 'true'";
      default false;
      description
        "Asset aggregation; e.g., false (default) or true";
    }
    leaf number-of-instances {
      type uint32;
      description
        "Number of instances or endpoints covered by the aggregated
          asset. If different from 1, it should enforce that
          aggregation attribute is set to true";
      default 1;
    }
    leaf platform-dependency-os {
      type identityref {
          base ietf-lmo-common:platform-dependency-os;  
      }
      description
        "Operating system for the asset to be deployed."; 
    }
    container install-location {
      uses ietf-geo-location:geo-location;
      description
        "Physical installed location of the product. Location is
          provided based on what customer/user configures";
    }
    leaf deployment-mode {
      type identityref {
        base ietf-lmo-common:deployment-mode;
      }
      description
        "Deployment mode for the asset, if applicable; e.g.,
          HA cluster, virtual appliance, etc.";
    }
    leaf activation-date {
      type yang:date-and-time;
      description
        "Date of asset activation or initial contact";
    }
    leaf software-version {
      type string;
      description
        "Software version running on the hardware device or
          software component";
    }
    container hotfixes {
      config false;
      description "list of hotfixes";
      list hostfix {
      description
        "List of hotfixes that have been installed"; 
        leaf version {
          type identityref {
            base ietf-lmo-common:version;
          }
          description
            "It includes the first hotfix installed";
        }
        leaf order {
          type uint8;
          description
            "It refers to the order of how the hotfixes have been
              installed, range 0..100";
        }
      }
    }
    leaf software-type {
      type string;
      description
        "Software type or Operating System";
    }
    leaf sign-of-life-timestamp {
      type yang:date-and-time;
      description
        "Date of last contact";
    }
    leaf tags {
      type string;
      description
        "Comma-separated descriptive tags for this asset";
    }
  }
}
<CODE ENDS>

### Licenses

<CODE BEGINS> file "ietf-lmo-licenses@2022-02-28.yang"
module ietf-lmo-licenses {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-licenses";
  prefix ietf-lmo-licenses;
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  import ietf-lmo-assets-inventory {
    prefix ietf-lmo-asset;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the licenses attributes of a
     product.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Licenses Module as part of the LMO YANG 
      Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

// Can we capture licensing ties to API access where we may be 
// licensed on events queries per second, minute, hour, etc. 
// This is a popular model in the cloud space for example the Google 
// MAPs API??

  identity license {
    description "A license is a class of lmo that represents ...";
    base ietf-lmo-common:lmo-class;
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-licenses:license')";
    description
      "licenses container includes attributes for licenses";

    leaf virtual-account {
      type string;
      description
        "Virtual Accounts help to organize assets in a way that is
         logical for the business. The most common use of a Virtual
         Account is to provide access and allocate specific 
         licenses to different departments or geographies while 
         maintaining an overall view of the organizational usage";
    }
    leaf model {
      type ietf-lmo-common:license-model-t; 
      description
        "License Model or Type";
    }
    leaf buying-program {
      type identityref {
        base ietf-lmo-common:license-buying-program-t;
      }
      description
        "License buying program, if applicable";
    }
    leaf offer-type {
      type identityref {
        base ietf-lmo-common:offer-type-t;
      }
      description
        "License offer type, if applicable";
    }
    leaf external-store {
      type boolean;
      default false;
      description
        "Licensing goes through an external store";
    }

    leaf pid {
      type string;
      description
        "License Product Identifier";
    }
    leaf purchase-order-id {
      type ietf-lmo-common:purchase-order-t;
      description
        "License Order Number";
    }
    leaf account-id {
      type string;
      description
        "Account identifier entitled to the license. Account-id 
        could e.g., be composed by account or customer name + 
        organization identifier";
    }
    container assets {
      description
        "Assets to which this license are attached";
      list asset {
        key "lmo-class id";
        description
          "list of assests";
        leaf lmo-class {
          description
            "Asset class to which this license is attached";
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
          }
          must "derived-from-or-self(current(), 'ietf-lmo-asset:asset')";
        }    
        leaf id {
          description
            "Asset to which this license is attached";
          type leafref {
            path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
          }
        }
      }  
    }
    container features {
      description
        "Features to which this license are attached";
      list feature {
        description
          "list of features";
        key "lmo-class id";
        leaf lmo-class {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
          }
          must "derived-from-or-self(current(), 'ietf-lmo-feature:feature')";
          description
            "feature to which this license is attached";
        }
        leaf id {
          description
            "Feature to which this license is attached";
          type leafref {
            path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
          }
        }
      } 
    }
    leaf state {
      type ietf-lmo-common:license-state-t;
      description
        "License state; e.g., active, inactive, or unknown";
    }
    container renewal-profile {
      description
        "Profile of license renewal status and information";
      leaf purchase-date {
        type yang:date-and-time;
        description
          "Purchase Date";
      }
      leaf claim-date {
        type yang:date-and-time;
        description
          "Claim Date - if different from Purchase Date";
      }
      leaf activation-date {
        type yang:date-and-time;
        description
          "Activation Date";
      }
      leaf expiration-date {
        type yang:date-and-time;
        description
          "Expiration Date";
      }
    }
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-asset:asset')";
    description
      "assets attributes related to licenses";
  
    container licenses {
      leaf lmo-class {
        description
          "Asset class to which this license is attached";
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-licenses:license')";
      }    
      leaf id {
        description
          "Asset to which this license is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }
    }
    // Fill more leafs for license if it is required here...
  }  
}
<CODE ENDS>

### Feature

<CODE BEGINS> file "ietf-lmo-feature@2022-02-28.yang"
module ietf-lmo-feature {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-feature";
  prefix ietf-lmo-feature;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets-inventory {
    prefix ietf-lmo-asset;
  }
  import ietf-yang-types {
    prefix yang;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the different attributes that define
     description, usage and resource consumption for specific 
     features or capabilities of assets.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Product Usage Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity feature {
    description "A feature is a class of lmo that represents 
    options or functional capabilities available in an asset";
    base ietf-lmo-common:lmo-class;
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-asset:asset')";
    description
      "feature attributes related to assets";

    container features {
      description
        "Features to be part of an asset";
      list feature {
        key "lmo-class id";
        description
          "Subfeature ID";
        leaf lmo-class {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
          }
          must "derived-from-or-self(current(), 'ietf-lmo-feature:feature')";
        }
        leaf id {
          type leafref {
            path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
          }
          description
            "Reference to Feature ID";    
        }
      }
    }
    // Fill more leafs for license when organization module is present here...
  }  
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-feature:feature')";
    description
      "feature attributes";

    leaf name {
      type string;
      description
        "Friendly name of the feature";
    }
    leaf summary {
      type string;
      description
        "Brief description of the feature";
    }
    leaf category {
      type string;
      description
        "Feature category or tag list (as applicable to the 
        product)";
    }
    leaf entitlement {
      type string;
      description
        "Minimum entitlement level, subscription, or license level
          required for the feature";
    }
    leaf first-available-version {
      type string;
      description
        "The first version in which this feature was enabled";
    }
    container backported-versions {
      config false;
      description
        "software patch or update is taken from a recent software 
        version and applied to an older version of the same 
        software";
      list backported-version {
        config false;
        description
          "Backport releases to older release";
        leaf version {
          type identityref {
            base ietf-lmo-common:version;
          }
          description
            "version of the backport release";
        }
      }
    }
    leaf scope {
      type identityref {
        base ietf-lmo-common:feature-scope;
      }
      description
        "Optional tag that could apply to any of the usage 
        features, so that if there are multiple dimensions of 
        reporting that need to be accommodated (i.e., report 
        feature usage by 'site')";
    }
    list config-options {
      key "id";
      description
        "Feature configuration profile - optional, for features 
        that require configuration beyond enable/disable";
      leaf id {
        type string;
        description
          "Identify feature configuration option uniquely across 
          all products";
      }
      leaf name {
        type string;
        description
          "Friendly name of the feature option";
      }
      leaf summary {
        type string;
        description
          "Brief description of the feature option";
      }
      list characteristic {
        key "id";
        description
          "Characteristics of feature configuration options,
            i.e. value=enabled/disabled";
        leaf id {
          type string;
          description
            "Identifier for feature option configuration
              characteristic";
        }
        leaf name {
          type string;
          description
            "Friendly name for feature option configuration
              characteristic";
        }
        leaf value {
          type string;
          description
            "Configuration characteristic value; describes how 
            this feature option characteristic is configured";
        }
      }
    }
    container asset{
      leaf lmo-class {
        description
          "Asset class to which this feature is attached";
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-asset:asset')";
        default ietf-lmo-asset:asset;
      }    
      leaf id {
        description
          "Asset to which this feature is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }  
    }
    container subfeatures {
      description
        "Sub-features to the top-level feature";
      list subfeature {
        key "lmo-class id";
        description
          "Subfeature ID";
        leaf lmo-class {
          type leafref {
            path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
          }
          must "derived-from-or-self(current(), 'ietf-lmo-feature:feature')";
        }
        leaf id {
          type leafref {
            path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
          }
          description
            "Reference to Feature ID";
        }
      }
    }
  }
}
<CODE ENDS>

### Usage

<CODE BEGINS> file "ietf-lmo-usage@2022-02-22.yang"
module ietf-lmo-usage {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-usage";
  prefix ietf-lmo-usage;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets-inventory {
    prefix ietf-lmo-asset;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  import ietf-yang-types {
    prefix yang;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module includes the different attributes that define
     description, usage and resource consumption for specific 
     features or capabilities of assets.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-02-22 {
    description
      "Introduced flexible root structure";
  }
  revision 2021-10-25 {
    description
      "Initial revision for Product Usage Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity usage {
    description "A usage is a class of lmo that represents how 
    features of an asset are used";
    base ietf-lmo-common:lmo-class;
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-usage:usage')";
    description
      "usage attributes";
    container feature {
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-feature:feature')";
        default ietf-lmo-feature:feature;
        description
          "feature to which this license is attached";
      }
      leaf id {
        description
          "Feature to which this license is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }
      description
        "usage link to a feature";
    }
    leaf name {
      type string;
      description
        "Name of feature usage characteristic";
    }
    leaf summary {
      type string;
      description
        "Brief description of feature usage characteristic";
    }
    leaf uri {
      type string;
      description
        "Target URI of feature characteristic, if applicable - e.g.,
         for clickstream or API";
    }
    leaf deployment-mode {
      type identityref {
        base ietf-lmo-common:deployment-mode;
      }
      description
        "Deployment mode for the feature. When applicable, feature
         might be independent of the deployment mode in the asset;
         e.g., cloud, HA cluster, virtual appliance, etc.";
    }
    leaf scope {
      type identityref {
        base ietf-lmo-common:feature-scope;
      }
      description
        "Optional tag that could apply to any of the usage 
        features, so that if there are multiple dimensions of 
        reporting that need to be accommodated, (i.e., report 
        feature usage by 'site')";
    }
    leaf activation-status {
      type string;
      description
        "Feature activation status for this instance of the 
        product (on/off; active/inactive; enabled/disabled)";
    }
    leaf instances {
      type uint32;
      description
        "Number of instances or end-points using this feature";
    }

    leaf count-type {
      type identityref {
        base ietf-lmo-common:counter-type;
      }
      description
        "Specify the counter type i.e accumulated-count,
          average-count, last-count, high-water mark count
          (+time stamp), low-water mark count (+time stamp)";
    }
    leaf timestamp {
      type yang:date-and-time;
      description  
        "Some counters will benefit from timestamp based on the 
        time when the counter has been collected";
    }
    leaf count {
      type uint32;
      units "times";
      description
        "Count of times the feature has been used";
    }
    list frequency {
      key "name";
      description
        "Frequency with which the feature is used";
      leaf name {
        type string {
          length "1..64";
        }
        description
          "reference in case that feature is for different 
          purpose of usage";
      }
      leaf type-freq {
        type string;
        description
          "Frequency type, i.e daily, weekly, monthly";
      }
      leaf value {
        type yang:counter64;
        description
          "Value collected for the usage";
      }
    }
    list resource-consumption {
      key "id";
      description
        "Resource consumption profile";
      leaf id {
        type string;
        description
          "Identify resource for consumption measurement";
      }
      leaf name {
        type string;
        description
          "Friendly name of the resource";
      }
      leaf summary {
        type string;
        description
          "Brief description of the resource";
      }
      list characteristic {
        key "id";
        description
          "Characteristic of resource consumption";
        leaf id {
          type string;
          description
            "Identifier for resource consumption characteristic";
        }
        leaf name {
          type string;
          description
            "Friendly name for resource consumption 
            characteristic";
        }

        leaf unit {
          type string;
          description
            "unit of measurement for the characteristic";
        }

        // NEED to define identity type for unit: min, hour, sec, 
        // days, ...

        leaf value {
          type yang:counter64;
          description
            "Resource consumption characteristic measurement";
        }
        leaf value-max {
          type yang:counter64;
          description
            "Maximum resource consumption characteristic value";
        }
      }
    }
  }
}
<CODE ENDS>

### Incident Management

<CODE BEGINS> file "ietf-lmo-incident-management@2022-02-28.yang"
module ietf-lmo-incident-management {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-incident-management";
  prefix ietf-lmo-incident;

  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets-inventory {
    prefix ietf-lmo-asset;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  import ietf-yang-types {
    prefix yang;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>
     Editor:  Josh Suhr
              <mailto:josuhr@cisco.com>
     Editor:  Sudhendu Kumar
              <mailto:skumar23@ncsu.edu>";
  description
    "This YANG module includes the incident management attributes
     to handle incidents.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }  
  revision 2021-10-25 {
    description
      "Initial revision for Incident Management as part of
       the LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity incident {
    description "An incident is a class of lmo that represents ...";
    base ietf-lmo-common:lmo-class;
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-incident:incident')";
    description
      "licenses container includes attributes for licenses";

    leaf id {
      type string;
      description 
        "Technical Support Center Case Number id";
    }
    leaf title {
      type string;
      description 
        "headline Incident Case";
    }
    leaf summary {
      type string;
      description 
        "Problem description summary";
    } 
    leaf severity {
      type string;
      description 
      "severity, in some cases also defined as priority";
      // NEED to define different levels of severity, from 
      // severity 1 to 6, i.e. Sev1: network down, Sev6: enhacement
    }
    leaf status {
      type string;
      description 
      "case status, i.e. Customer-Pending, Customer 
      Engineer-Pending, Developer-Pending, Closed, Open, etc.";
      // NEED to define different status
    }
    leaf created {
      type yang:date-and-time;
      description 
      "created date-and-time";
    }
    leaf last_updated {
      type yang:date-and-time;
      description 
      "last updated date-and-time";
    }
    leaf capability {
      type string;
      description 
      "i.e. to reveal associated RMA items";
    }
    leaf technology{
      type string;
      description 
      "Technology related";
    } 
    leaf subtechnology{
      type string;
      description 
      "Subtechnology related";
    } 
    leaf problem-type{
      type string;
      description 
      "Problem type definition, i.e. network, faulty hardware, 
      performance, security, etc. ";
    } 
    leaf resolution{
      type string;
      description 
      "code (closed cases only)";
    } 
    leaf owner{
      type string; 
      description 
      "Customer in charge of the case";
    // NEED to refer to user lmo-class
    } 
    leaf support-engineer{
      type string;
      description 
      "Customer Support Engineer in charge of the case";
    // NEED to refer to user lmo-class
    } 
    container asset {
      leaf lmo-class {
        description
          "Asset class to which this incident is attached";
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-asset:asset')";
        default ietf-lmo-asset:asset;
      }    
      leaf id {
        description
          "Asset to which this incident is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }
    }
    container feature {
      leaf lmo-class {
        description
          "Feature class to which this incident is attached";
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-feature:feature')";
        default ietf-lmo-feature:feature;
      }    
      leaf id {
        description
          "Feature to which this incident is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }
    }    
    leaf contract-number {
      type string;
      description
      "Support contract number";
    // NEED to evaluate if it should be independent container. It 
    // should be associated to asset and license
    }
  }
}
<CODE ENDS>

### Organization

<CODE BEGINS> file "ietf-lmo-organization@2022-03-01.yang"
module ietf-lmo-organization {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-organization";
  prefix ietf-lmo-organization;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-assets-inventory {
    prefix ietf-lmo-asset;
  }
  import ietf-lmo-licenses {
    prefix ietf-lmo-licenses;
  }
  import ietf-yang-types {
    prefix yang;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module defines the organization module and the different 
     attributes that defines it.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-03-01 {
    description
      "Initial revision for Organization Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity organization {
    description "An organization is a class of lmo that represents ...";
    base ietf-lmo-common:lmo-class;
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-organization:organization')";
    description
      "organization attributes";

    leaf address {
      type string;
    }
    leaf department {
      type boolean;
      default false;
      description
        "How to categorize the organization";
    }
    // Fill more leafs for organizations here...
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-licenses:license')";
    description
      "license attributes related to organization";
  
    container organization {
      //NEED to determine how the model will consume organization/service/user
      //Leaving it here for the moment
      leaf lmo-class {
        description
          "Organization class to which this license is attached";
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-organization:organization')";
      }    
      leaf id {
        description
          "Organization to which this license is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }
    }
    // Fill more leafs for license when organization module is present here...
  }   
}
<CODE ENDS>

### User

<CODE BEGINS> file "ietf-lmo-user@2022-03-01.yang"
module ietf-lmo-user {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-user";
  prefix ietf-lmo-user;
  import ietf-lmo-common {
    prefix ietf-lmo-common;
  }
  import ietf-lmo {
    prefix ietf-lmo;
  }
  import ietf-lmo-organization {
    prefix ietf-lmo-organization;
  }
  import ietf-lmo-licenses {
    prefix ietf-lmo-licenses;
  }
  organization
    "IETF OPSA (Operations and Management Area) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>
     Editor:  Jan Lindblad
              <mailto:jlindbla@cisco.com>
     Editor:  Marisol Palmero
              <mailto:mpalmero@cisco.com>";
  description
    "This YANG module includes the user module and the different 
     attributes that defines it.

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

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

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.";
  revision 2022-03-01 {
    description
      "Initial revision for User Module as part of the
       LMO YANG Model";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  identity user {
    description "A user is a class of lmo that represents ...";
    base ietf-lmo-common:lmo-class;
  }
  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-user:user')";
    description
      "user attributes";

    leaf billing-account {
      type uint32;
    }
    container represents {
      leaf lmo-class {
        description
          "Organization class to which this user is attached";
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-organization:organization')";
      }
      leaf id {
        description
          "Organization to which this user is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }  
    }
    leaf authority {
      type enumeration {
        enum super-user;
        enum standard-user;
        enum restricted-user;
        enum admin;
      }
      default standard-user;
    }
    leaf email {
      type string; 
      description
          "user´s email";
    }    
    // Fill in more leafs you want on organizations here...
  }

  augment /ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:inst {
    when "derived-from-or-self(../ietf-lmo:lmo-class, 'ietf-lmo-licenses:license')";
    description
      "license attributes related to user";

    container user {
      //NEED to determine how the model will consume organization/service/user
      //Leaving it here for the moment
      leaf lmo-class {
        description
          "User class to which this license is attached";
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-user:user')";
      }    
      leaf id {
        description
          "User to which this license is attached";
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
      }
    }
  }
}
<CODE ENDS>

]]></artwork></figure>

</section>
</section>
</section>
<section anchor="deployment-considerations"><name>Deployment Considerations</name>

<t>LMO Data Models defines the data schemas for LMO data. LMO Data Models are based on YANG. YANG data models can be used independent of the transport and can be converted into any encoding format supported by the network configuration protocol. YANG is a protocol independent.</t>

<t>To enable the exchange of LMO data among all interested parties, deployment considerations that are out of the scope of this document, will need to include:</t>

<t><list style="symbols">
  <t>The data structure to describe all metrics and quantify relevant data consistently, i.e. specific formats like XML or JSON encoded message would be deemed valid or invalid based on LMO models.</t>
  <t>The process to share and collect LMO data across the consumers consistently, including the transport mechanism. The LMO YANG models can be used with network management protocols such as NETCONF <xref target="RFC6241"/>, RESTCONF <xref target="RFC8040"/>, streaming telemetry, etc. OpenAPI specification might also help to consume LMO metrics.</t>
  <t>How the configuration of assets should be done.</t>
</list></t>

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

<t>The security considerations mentioned in section 17 of <xref target="RFC7950"/> apply.</t>

<t>LMO brings several security and privacy implications because of the various components and attributes of the information model. For example, each functional component can be tampered with to give manipulated data. LMO when used alone or with other relevant data, can identify an individual, revealing Personal Identifiable Information (PII). Misconfigurations can lead to data being accessed by unauthorized entities.</t>

<t>Methods exist to secure the communication of management information. The transport entity of the functional model MUST implement methods for secure transport. This document also contains an Information model and Data-Model in which none of the objects defined are writable. If the objects are deemed sensitive in a particular environment, access to them MUST be restricted using appropriately configured security and access control rights. The information model contains several optional elements which can be enabled or disabled for the sake of privacy and security. Proper authentication and audit trail MUST be included for all the users/processes that access the LMO.</t>

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

<section anchor="the-ietf-xml-registry"><name>The IETF XML Registry</name>

<t>This document registers URIs in the IETF XML registry <xref target="RFC3688"/>. Following the format in <xref target="RFC3688"/>, the registrations defined below are requested:</t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-common <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-assets-inventory <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-licenses <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-feature <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-usage <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-incident-management <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-organization <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

<t>URI: urn:ietf:params:xml:ns:yang:ietf-lmo-user <br />
Registrant Contact: The OPSA WG of the IETF. <br />
XML: N/A, the requested URI is an XML namespace. <br /></t>

</section>
<section anchor="the-yang-module-names-registry"><name>The YANG Module Names Registry</name>

<t>This document registers YANG modules in the YANG Module Names registry <xref target="RFC7950"/>. Following the format in <xref target="RFC7950"/>, the registrations defined below are requested:</t>

<t>name: ietf-lmo <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo <br />
maintained by IANA: N <br />
prefix: lmocom <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-common <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-common <br />
maintained by IANA: N <br />
prefix: lmocom <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-asset-inventory <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-assets-inventory <br />
maintained by IANA: N <br />
prefix: lmoasset <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-licenses <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-licenses <br />
maintained by IANA: N <br />
prefix: lmolicense <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-feature <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-feature <br />
maintained by IANA: N <br />
prefix: lmousage <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-usage <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-usage <br />
maintained by IANA: N <br />
prefix: lmousage <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-incident-management <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-incident-management <br />
maintained by IANA: N <br />
prefix: lmoscm <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-organization <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-organization <br />
maintained by IANA: N <br />
prefix: lmoscm <br />
reference: RFC XXXX <br /></t>

<t>name: ietf-lmo-user <br />
namespace: urn:ietf:params:xml:ns:yang:ietf-lmo-user <br />
maintained by IANA: N <br />
prefix: lmoscm <br />
reference: RFC XXXX <br /></t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>





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



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




    </references>

    <references title='Informative References'>





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


<reference anchor='I-D.draft-ietf-netmod-geo-location-11'>
   <front>
      <title>A YANG Grouping for Geographic Locations</title>
      <author fullname='Christian Hopps' initials='C.' surname='Hopps'>
         <organization>LabN Consulting, L.L.C.</organization>
      </author>
      <date day='11' month='February' year='2022'/>
      <abstract>
	 <t>This document defines a generic geographical location YANG grouping.  The geographical location grouping is intended to be used in YANG data models for specifying a location on or in reference to Earth or any other astronomical object.
	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-netmod-geo-location-11'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-netmod-geo-location-11.txt' type='TXT'/>
</reference>


<reference anchor='I-D.draft-ietf-opsawg-sbom-access-03'>
   <front>
      <title>Discovering and Retrieving Software Transparency and Vulnerability Information</title>
      <author fullname='Eliot Lear' initials='E.' surname='Lear'>
         <organization>Cisco Systems</organization>
      </author>
      <author fullname='Scott Rose' initials='S.' surname='Rose'>
         <organization>NIST</organization>
      </author>
      <date day='24' month='October' year='2021'/>
      <abstract>
	 <t>   To improve cybersecurity posture, automation is necessary to locate
   what software is running on a device, whether that software has known
   vulnerabilities, and what, if any recommendations suppliers may have.
   This memo specifies a model to provide access to this information.
   It may optionally be discovered through manufacturer usage
   descriptions.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-opsawg-sbom-access-03'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-opsawg-sbom-access-03.txt' type='TXT'/>
</reference>



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



<reference anchor='RFC8040' target='https://www.rfc-editor.org/info/rfc8040'>
<front>
<title>RESTCONF Protocol</title>
<author fullname='A. Bierman' initials='A.' surname='Bierman'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<date month='January' year='2017'/>
<abstract><t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='8040'/>
<seriesInfo name='DOI' value='10.17487/RFC8040'/>
</reference>



<reference anchor='RFC3688' target='https://www.rfc-editor.org/info/rfc3688'>
<front>
<title>The IETF XML Registry</title>
<author fullname='M. Mealling' initials='M.' surname='Mealling'><organization/></author>
<date month='January' year='2004'/>
<abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract>
</front>
<seriesInfo name='BCP' value='81'/>
<seriesInfo name='RFC' value='3688'/>
<seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>




    </references>


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

<t>The ideas in this document originate from early work by Tony Colon, Carlos Pignataro, and Yenu Gobena originally referred to as Experience Telemetry.</t>

<t>This document was created by meaningful contributions from Josh Suhr, Eric Vyncke, Yannis Viniotis, Nagendra Kumar Nainar, Yenu Gobena, Dhiren Tailor and Jan Lindblad.</t>

<t>The authors wish to thank Gonzalo Salgueiro, Martin Beverley and many others for their helpful comments and suggestions.</t>

</section>
<section numbered="false" anchor="change-log"><name>Change log</name>

<t>RFC Editor Note: This section is to be removed during the final publication of the document.</t>

<t>version 04</t>

<t><list style="symbols">
  <t>Remove ietf-lmo-service YANG module, as service is considered within the asset concept</t>
  <t>Fix introduced to the .xml and .txt avoiding a compiling issue on the YANG modules.</t>
</list></t>

<t>version 03</t>

<t><list style="symbols">
  <t>Flexible root structure has been introduced by the ietf-lmo YANG module: Modules are arranged into layers, with ietf-lmo-common and ietf-lmo at the core. Other modules can be added in layers on top.
 This structure allows flexibility and the option to be enhanced by vendor implementation.<br />
 The new structure allows to include other lmo classes, or exclude current lmo classes.</t>
  <t>Feature and Usage containers have been split in two independent modules.  Where Usage relates to runtime data.</t>
  <t>Organization attribute, has been enhanced to an independent YANG module, adding flexibility and the option to be called independently and enhanced.</t>
  <t>Service and User YANG modules, have been also introduced in a similar flexible structure, being part of new lmo classes.</t>
  <t>Information Model, has been enhanced with new modules: Organization, Service and User modules.  On this version the new lmo classes can be called independently or from the licenses module.  There is no restriction to be called from any of the other YANG odules.</t>
</list></t>

<t>version 02</t>

<t><list style="symbols">
  <t>"Support case" renamed to "incident".</t>
  <t>Add MAC address and IP address attributes under asset-inventory YANG module.</t>
  <t>Link among objects &amp; YANG modules (notably with feature).</t>
  <t>New text about asset usage.</t>
</list></t>

<t>version 01</t>

<t><list style="symbols">
  <t>Fixes for YANG validator and idnits warnings.</t>
</list></t>

<t>version 00</t>

<t><list style="symbols">
  <t>Initial version.</t>
</list></t>

</section>


  </back>

<!-- ##markdown-source:
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
Z8dkjXl24PSaRs1gmGYSzZmt3cO+OSa+rqOl3gCSwHm/G0wJti7rxRP3hfQS
G0VVS288KWkHWqej4DunhL6vnVLjPtAZNVsRTfc1QiN1b+WCz2tzD0SPFqeu
w0YTPtaXUylO235/2Io47NuGVjMcS91404Nwh7s8PojmChEwUmzDlgfVinyq
mEIUvQE+QH5i7k8Nm2Ge94bRy6MUI6QlEdhA5wlmAXiaMqAQz583gB62KXWb
K65Jga4l94reb2VU3fGUtACGVT5pk8cf4r2jGmrHtYXt6Z5jjsdNPuqEv2ce
UEczip2vlYpS3NdARNbMxr73vu3FJ11Fdmol4g3R3ldkSzORNiC6O4t4mI/5
shDQcqjNAxfLpGfWNJftDF+un7LyoGNrodgf2Ktoljl6szeIGC/ER2sDjdUm
wxLwxLJOpnFRy8zq0uY6a172nFRTgWHWuiZeiVOeYZJnRW0lAdVyFiHm67mN
0FJDybgZ1H2qhsDcD0eb1nEzULbpHlvBIcLUdVngj3jSZgLtY/iceaMVTspE
6+4W9fvFQUANBamR0b+J4NRk2JpU8T7qS+fu2dF06IHfeDmo4XG7QdRCjjcH
3SfKfwL03GnqtsA/80ijRpE01WMZYKy4SXJjDE/r0ov2B4oLp9DHntKzltL3
fiOkrtvpY4yQ9uXA6cTctoffexj1VhB7m2HULRlxhXEj7ej5uqrG4czxflGT
gGwVcoe4pqUkMsDOc+cCu3OBdbjA9uCXfbfOKQCwQxyfVOvdqoezFn7bMXz/
5ko97k3f/ivE79vSJG509fwuEeCj7yZ2F7+/i9/fxe8/gsrh/xrxe1/uN6L3
/PX22L1nT1pGYwPG5FiE8+tqVh9HkJ5QMKL/7hKuE95cD9bhTyMWv3uW8Idt
rG5T5BsGa+2FnQ2im92AabgP97GBb3rz5ddKJu6xbJk0EymMG22P+h0cU34u
/l3f19/pKPtnxZZvBk6VH1Yt+XWUz4ER/vDqwnPperPX7nMHYVsFSe7PHE/e
wOQqWqI+d/ryohvwj6WEpqBkGPyI7NpiYaC/8dGwJM10jCqhLtNq6rJMa1NI
hZKGiwx+pPo31i4ZHFab8y4yiD+7RQYHtxcarF2/krtth5xUzfOdMqgyqikW
aFoKCi69ASSYFtzL0pNsNnssV/9O9M2/x0E9LNOztPddBzqUQtAV1xNyfLwN
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

-->

</rfc>

