module ietf-lmo-licenses {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-lmo-licenses";
prefix lmolicense;
import ietf-yang-types {
prefix yang;
}
import ietf-lmo-common {
prefix lmocom;
}
import ietf-lmo-assets-inventory {
prefix lmoasset;
}
organization
"IETF OPSA (Operations and Management Area) Working Group";
contact
"WG Web:
WG List:
Editor: Marisol Palmero
Editor: Josh Suhr
Editor: Sudhendu Kumar
";
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 2021-08-23 {
description
"Initial revision for Licenses Module as part of the LMO YANG
Model";
reference
"RFC XXXX: LMO YANG Model";
}
container capture-info {
config false;
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";
}
}
// 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??
container licenses {
config false;
description
"Licenses";
list license {
key "id";
description
"License ID";
leaf id {
type lmocom:license-id-t;
description
"Universal identifier for a license or bundle of licenses";
}
leaf virtual-account {
type string;
description
"Virtual Accounts help to organize assets in a way that is
logical for the business. The most common use of a Virtual
Account is to provide access and allocate specific
licenses to different departments or geographies while
maintaining an overall view of the organizational usage";
}
leaf model {
type lmocom:license-model-t;
mandatory true;
description
"License Model or Type";
}
leaf buying-program {
type identityref {
base lmocom:license-buying-program-t;
}
description
"License buying program, if applicable";
}
leaf offer-type {
type identityref {
base lmocom:offer-type-t;
}
description
"License offer type, if applicable";
}
leaf external-store {
type boolean;
default false;
description
"Licensing goes through an external store";
}
leaf pid {
type string;
mandatory true;
description
"License Product Identifier";
}
leaf purchase-order-id {
type lmocom:purchase-order-t;
description
"License Order Number";
}
leaf asset {
type leafref {
path "/lmoasset:assets/lmoasset:asset/lmoasset:id";
}
description
"Asset to which this license is attached";
}
leaf state {
type lmocom:license-state-t;
description
"License state; e.g., active, inactive, or unknown";
}
container renewal-profile {
description
"Profile of license renewal status and information";
leaf purchase-date {
type yang:date-and-time;
description
"Purchase Date";
}
leaf claim-date {
type yang:date-and-time;
description
"Claim Date - if different from Purchase Date";
}
leaf activation-date {
type yang:date-and-time;
description
"Activation Date";
}
leaf expiration-date {
type yang:date-and-time;
description
"Expiration Date";
}
}
container sublicenses {
description
"Sublicenses";
list sublicense {
key "id";
description
"Sublicenses";
leaf id {
type leafref {
path "/licenses/license/id";
}
description
"Universal license identifier";
}
}
}
}
}
}