<?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-05" 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="July" day="11"/>

    <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 geo-location
    |     +--rw reference-frame
    |     |  +--rw alternate-system?    string {alternate-systems}?
    |     |  +--rw astronomical-body?   string
    |     |  +--rw geodetic-system
    |     |     +--rw geodetic-datum?    string
    |     |     +--rw coord-accuracy?    decimal64
    |     |     +--rw height-accuracy?   decimal64
    |     +--rw (location)?
    |     |  +--:(ellipsoid)
    |     |  |  +--rw latitude?    decimal64
    |     |  |  +--rw longitude?   decimal64
    |     |  |  +--rw height?      decimal64
    |     |  +--:(cartesian)
    |     |     +--rw x?           decimal64
    |     |     +--rw y?           decimal64
    |     |     +--rw z?           decimal64
    |     +--rw velocity
    |     |  +--rw v-north?   decimal64
    |     |  +--rw v-east?    decimal64
    |     |  +--rw v-up?      decimal64
    |     +--rw timestamp?         yang:date-and-time
    |     +--rw valid-until?       yang:date-and-time
    +--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 uid?                string
    +--rw (all-1-asset)?
    |  +--:(all-assets)
    |  |  +--rw all-assets?   boolean
    |  +--:(assets)
    |     +--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 resource* [id]
    |  +--rw id                string
    |  +--rw name?             string
    |  +--rw summary?          string
    |  +--rw characteristic* [id]
    |     +--rw id             string
    |     +--rw name?          string
    |     +--rw description?   string
    |     +--rw unit?          string
    |     +--rw value?         yang:counter64
    |     +--rw value-max?     yang:counter64
    +--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 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>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<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>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-assets-inventory@2022-07-07.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-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  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 {
    base ietf-lmo-common:lmo-class;
    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";
  }
  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;
      default 1;
      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";
    }
    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>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-licenses@2022-07-07.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-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  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 {
    base ietf-lmo-common:lmo-class;
    description "A license is a class of lmo that represents ...";
  }
  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 uid {
      type string;
      description
        "Unique License Identifier";
    }
    choice all-1-asset{
      description
        "Considering license is linked to all or explicitely a one/few assets";
      leaf all-assets {
        type boolean;
        default false;
        description
          "License apply to all assets; e.g., false (default) or true";
      }
      container assets {
        description
          "Assets to which this license are attached";
        list asset {
          key "lmo-class id";
          description
            "list of assests";
          leaf lmo-class {
            type leafref {
              path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
            }
            must "derived-from-or-self(current(), 'ietf-lmo-asset:asset')"; 
            description
              "Asset class to which this license is attached"; 
          }     
          leaf id {
            type leafref {
              path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
            }
            description
              "Asset to which this license is attached";
          }
        }  
      }
     } 
    list resource {
      key "id";
      description
        "Resource profile";
      leaf id {
        type string;
        description
          "Identify resource for license consumption metric";
      }
      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, i.e., number of cpu´s, limit BW.";
        leaf id {
          type string;
          description
            "Identifier for resource consumption characteristic";
        }
        leaf name {
          type string;
          description
            "Friendly name for resource consumption 
            characteristic";
        }
        leaf description {
          type string;
          description
            "Description 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";
        }
      }
    }
    container features {
      description
        "Features to which this license are attached";
      list feature {
        key "lmo-class id";
        description
          "list of features";
        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 {
          type leafref {
            path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
          }
          description
            "Feature to which this license is attached";
        }
      } 
    }
    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 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 {
      description
        "license attributes";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-licenses:license')";
        description
          "Asset class to which this license is attached";
      }    
      leaf id {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Asset to which this license is attached";
      }
    }
    
    // Fill more leafs for license if it is required here...
  }  
}      
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="feature"><name>Feature</name>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-feature@2022-07-07.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;
  }
  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-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-28 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  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 {
    base ietf-lmo-common:lmo-class;
    description 
      "A feature is a class of lmo that represents 
       options or functional capabilities available in an asset";
  }
  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')";
          description
            "Reference to lmo-class"; 
        }
        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{
      description
        "Asset that this feature is attached to";
      leaf lmo-class {
        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;
        description
          "Asset class to which this feature is attached";
      }    
      leaf id {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Asset to which this feature is attached";
      }  
    }
    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')";
          description
            "lmo-class reference";
        }
        leaf id {
          type leafref {
            path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
          }
          description
            "Reference to Feature ID";
        }
      }
    }
  }
}      
<CODE ENDS>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-usage@2022-07-07.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-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-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  revision 2022-02-22 {
    description
      "Introduced flexible root structure";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  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 {
    base ietf-lmo-common:lmo-class;
    description "A usage is a class of lmo that represents how 
    features of an asset are used";
  }
  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 {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Feature to which this license is attached";
      }
      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>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-incident-management@2022-07-07.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-yang-types {
    prefix yang;
  }
  import ietf-lmo-assets-inventory {
    prefix ietf-lmo-asset;
  }
  import ietf-lmo-feature {
    prefix ietf-lmo-feature;
  }
  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-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  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 {
    base ietf-lmo-common:lmo-class;
    description "An incident is a class of lmo that represents ...";
  }
  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 {
      description
          "Asset container to which this incident is attached";
      leaf lmo-class {
        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;
        description
          "Asset class to which this incident is attached";
      }    
      leaf id {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Asset to which this incident is attached";
      }
    }
    container feature {
      description
          "Feature to which this incident is attached";
      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 class to which this incident is attached";
      }    
      leaf id {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Feature to which this incident is attached";
      }
    }    
    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>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-organization@2022-07-07.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-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 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-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }
  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 {
    base ietf-lmo-common:lmo-class;
    description "An organization is a class of lmo that represents ...";
  }
  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;
      description 
        "organization address";
    }
    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
      description
        "Organization container";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-organization:organization')";
        description
          "Organization class to which this license is attached";
      }    
      leaf id {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Organization to which this license is attached";
      }
    }
    // Fill more leafs for license when organization module is present here...
  }   
}
<CODE ENDS>
]]></artwork></figure>

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

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-lmo-user@2022-07-07.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-07-07 {
    description
      "fixed YANG statements";
    reference
      "RFC XXXX: LMO YANG Model";
  }

  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 {
    base ietf-lmo-common:lmo-class;
    description "A user is a class of lmo that represents ...";
  }
  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;
      description "billing account information";
    }
    container represents {
      description
        "Organization to which this user is attached";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-organization:organization')";
        description
          "Organization class to which this user is attached";
      }
      leaf id {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "Organization to which this user is attached";
      }  
    }
    leaf authority {
      type enumeration {
        enum super-user {
          description
            "super-user";
          }
        enum standard-user {
          description
            "standard-user";
          }
        enum restricted-user {
          description
            "restricted-user";
          }
        enum admin {
          description
            "admin";
          }
      }
      default standard-user;
      description 
        "authority assign to the user";
    }
    leaf email {
      type string; 
      description
          "user 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
      description "user container";
      leaf lmo-class {
        type leafref {
          path "/ietf-lmo:lmos/ietf-lmo:lmo/ietf-lmo:lmo-class";
        }
        must "derived-from-or-self(current(), 'ietf-lmo-user:user')";
        description
          "User class to which this license is attached";
      }    
      leaf id {
        type leafref {
          path "deref(../lmo-class)/../ietf-lmo:inst/ietf-lmo:id";
        }
        description
          "User to which this license is attached";
      }
    }
  }
}
<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 05</t>

<t><list style="symbols">
  <t>introduce fixes for YANG statements</t>
</list></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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
h2qMEYtV9FrTdcwgLZX9GdGpLpIcn3MsoLapanyXlIBOR8ZMQa5v9329hgc4
yhdcFxuE49WDiWqg7EX5NUhY+OyLiRdnC7BDyEjq25CbxKEcnJBnlocReE6l
96r/AtQ5GGWkP7FfPMvmgAP7qceIhHzlvJjmJYbhQNnOWoHNYZQySH3rDkFH
R3VmjyCGgwQZznmx/xhg/OYHvrp8ayBQm0M15pZw6JTRvU4FbTpsAci7OKCG
HnmYEBgvL05AT4mXA213K+RieZrP13tA8EoPosq4DDGCenork17a42wx74rZ
FlnHe0yruB+9RlSfiJqO2yBcABup1Clsq2pe6/i74IhRrVnKFlCd6aXd0cAC
0PGTknWxD7vARIejkM61cM88S9f3BuYFhhYXfVN6W8yp2U/Cjqq59rOHrrSy
+AkpWvgLNZDW2sMAVZEM9mNha3ugSIOr5Lpile8I/sZFQIcVbL68pl92c8Ec
jbCzdvmHm0n4K94L3IjW38TFwM2r7BAnw4mrOycz/pYJ+BdLhdWlHX4XpHxD
QrKI2VmxZKVk6AuufGl+s5tccfUVliZqRGmn0y0+YozgUGUdqulcLig/r5HG
qE/c2Du38i/QUNHPW9qgqqxHbkMxjVvnWOJA9N/WpcbntlPeeqQn7GP78LeL
9zjly2470GMP3hvhsR9Sz7xPAZ60q2X45t7ev/2wygd7e5EtZw6GdJXvU3GL
rkyr7iuOwPPuukzfxUbo5y42ciuxkU/9+w9uGHmwheZ7cp+vU8zePPrgDPdh
RSBs0Cf2H9tEIpx1b6hHGkRREZf7eHpbE/KI/a49UBSBxrqrbHZ0Fe7tKdyb
P/ptfo0cSwqFJj/GLRnWCVxPHVv7vbJZqfZXJpM9mmL31LjuxFKHLd1zVBGL
xvWOcgy973hxFreAO6NTIj8nibm7coxSGqA7Rt+UM+TTOLhCOZRwqWCdFrjM
nSDG0NUiG169jN+K4b4duxhCUAtFv4dGSM6K9++H9C4KYXtDdu93eE4227t4
nLYt5WO5Em6vko910NqFfOLifbVne3jcNqb5nYn8ezCRnYRBOjt3tvGdbfz7
sI3f36o8t24po5h9TyxkR0DvUfAGg8YflEGMIE/wP9uVscGg9bDhOwVNDY6v
j/f6t7zg62BR3vfU+919ervCkBaGt4lEDmmpeiN/Y4HIX8aeGcTeB1V356Yk
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

-->

</rfc>

