cisco-smart-license

Smart licensing configuration, RPC, notification and operational data. Copyright (c) 2016-2020 by Cisco Systems, Inc. All right...

  • Version: 2021-03-01

    cisco-smart-license@2021-03-01


    
      module cisco-smart-license {
    
        yang-version 1;
    
        namespace
          "http://cisco.com/ns/yang/cisco-smart-license";
    
        prefix cisco-smart-license;
    
        import cisco-semver {
          prefix cisco-semver;
        }
        import ietf-yang-types {
          prefix yang;
        }
        import ietf-inet-types {
          prefix inet;
        }
    
        include cisco-smart-license-errors;
    
        organization "Cisco Systems, Inc.";
    
        contact
          "Cisco Systems, Inc.
         Customer Service
         Postal: 170 W Tasman Drive
         San Jose, CA 95134
         Tel: +1 1800 553-NETS
         E-mail: cs-yang@cisco.com";
    
        description
          "Smart licensing configuration, RPC, notification and operational data.
    
         Copyright (c) 2016-2020 by Cisco Systems, Inc.
         All rights reserved.";
    
        revision "2021-03-01" {
          description
            "- Added support for conversion status for each product instance in an
             HA configuration
           - Added support for RUM report keys for all closed and unacked reports
           - Added support for RUM ACK status information
           - Added support for information about licenses purchased and installed
             for each device at manufacturing time
           - Added support for information about all licenses that are authorized";
        }
    
        revision "2020-11-01" {
          description
            "- Added support for policies & usage reporting for 17.4.1
           - Added leaf node authorization return string for online and offline
             authorization code return";
        }
    
        revision "2019-07-01" {
          description
            "Establish semantic version baseline";
        }
    
        revision "2017-10-11" {
          description
            "Initial Revision to allow register/de-register, enable/disable,
           get register status, receive notifications, get
            license usage and other state information.";
          reference
            "https://software.cisco.com/";
    
        }
    
        cisco-semver:module-version "1.0.0";
    
        typedef fail-message-type {
          type string {
            length "0..255";
          }
          description
            "If an operation failed then this the message that
            can be displayed for the user. This is not a parsable string.";
        }
    
        typedef notif-register-failure-enum {
          type enumeration {
            enum "general-failure" {
              value 0;
              description "General failure.";
            }
            enum "already-registered-failure" {
              value 1;
              description
                "This smart licensing instance is already registered.";
            }
            enum "de-register-failure" {
              value 2;
              description
                "The de-register failed because this instance is not registered.";
            }
          }
          description
            "Registration failure reasons. In all cases
           notif-failure-data-group.message will contain a more
           detailed failure message.";
        }
    
        typedef registration-state-enum {
          type enumeration {
            enum "reg-state-not-registered" {
              value 0;
              description
                "This smart licensing instance is not registered.";
            }
            enum "reg-state-complete" {
              value 1;
              description
                "Registration was successful and this smart licensing
               instance is registered.";
            }
            enum "reg-state-in-progress" {
              value 2;
              description
                "Registration is in progress.";
            }
            enum "reg-state-retry" {
              value 3;
              description
                "The initial registration attempt failed but
               a retry is in progress.";
            }
            enum "reg-state-failed" {
              value 4;
              description "Registration failed.";
            }
          }
          description
            "The smart licensing registration state.";
        }
    
        typedef authorization-state-enum {
          type enumeration {
            enum "auth-state-none" {
              value 0;
              description
                "No licenses are in use so there is no authorization
               state to report.";
            }
            enum "auth-state-eval" {
              value 1;
              description
                "Evaluation period is in use and is counting down.";
            }
            enum "auth-state-eval-expired" {
              value 2;
              description
                "Evaluation period in use but it has expired.";
            }
            enum "auth-state-authorized" {
              value 3;
              description
                "All license usage is authorized and within terms
               of the customer's contract.";
            }
            enum
              "auth-state-authorized-reservation" {
              value 4;
              description
                "All license usage is authorized because a
               reservation authorization code is installed.";
            }
            enum "auth-state-out-of-compliance" {
              value 5;
              description
                "License usage is out of compliance with the
               terms of the contract. Either too many licenses are in
               use or licenses that were not purchased are in use.";
            }
            enum
              "auth-state-authorization-expired" {
              value 6;
              description
                "The authorization period has expired because this
               product instance has not communicated with the
               SSM or satellite in over 90 days.";
            }
          }
          description
            "The smart licensing authorization state.";
        }
    
        typedef utility-reporting-type-enum {
          type enumeration {
            enum "utility-reporting-type-none" {
              value 0;
              description
                "The system is not reporting utility usage data.";
            }
            enum
              "utility-reporting-type-subscription" {
              value 1;
              description
                "The system is reporting utility usage data because it has
               received subscription information from either the SSM or
               satellite.";
            }
            enum
              "utility-reporting-type-certificate" {
              value 2;
              description
                "The system is reporting utility usage data because it has
               received a utility certificate from a Third Party
               Billing Platform.";
            }
          }
          description
            "What has triggered the system to start reporting utility usage.";
        }
    
        typedef transport-type-enum {
          type enumeration {
            enum "transport-type-callhome" {
              value 0;
              description
                "Smart Licensing is using callhome for communications.";
            }
            enum "transport-type-smart" {
              value 1;
              description
                "Smart licensing is using the smart transport for
               communications.";
            }
            enum "transport-type-cslu" {
              value 2;
              description
                "Smart licensing is using the Cisco Smart License Utility
               cslu transport for communications.";
            }
            enum "transport-type-off" {
              value 3;
              description
                "Smart licensing is using the Offline method for communications.";
            }
            enum "transport-type-automatic" {
              value 4;
              description
                "Smart licensing will automatically select
               transport for communications.";
            }
          }
          description
            "The type of transport in use by smart licensing.";
        }
    
        typedef enforcement-mode-enum {
          type enumeration {
            enum "enforcement-waiting" {
              value 0;
              description
                "The initial state after an entitlement request while we are waiting
               the Authorization request response. In this mode the device will
               have established communications with Cisco and successfully
               registered with the Cisco Licensing cloud.";
            }
            enum "enforcement-in-compliance" {
              value 1;
              description
                "Cisco Smart Software Manager (CSSM) has responded that
               the entitlement requested is in compliance.";
            }
            enum "enforcement-out-of-compliance" {
              value 2;
              description
                "Cisco Smart Software Manager (CSSM) has responded that
               the entitlement requested is out of compliance.
               either too many licenses /entitlements are in use or the license
               has not been purchased";
            }
            enum "enforcement-overage" {
              value 3;
              description
                "more licenses are in use than were purchased but the customer
                is still within the terms of their contract";
            }
            enum "enforcement-evaluation" {
              value 4;
              description
                "The evaluation period is in use.
               It will remain in use until the following
               two messages have been received by the product from the
               Cisco Smart Software Manager (CSSM):
                Successful response to a registration request,
                successful response to an entitlement authorization request";
            }
            enum
              "enforcement-evaluation-expired" {
              value 5;
              description
                "The evaluation period has expired";
            }
            enum
              "enforcement-authorization-expired" {
              value 6;
              description
                "Authorization period has expired. This will occur if the product
               has not been able to communicate with Cisco or a satellite
               for an extended period of time, usually 90 days.";
            }
            enum
              "enforcement-reservation-in-compliance" {
              value 7;
              description
                "The entitlement requested is in compliance because
               a reservation authorization code is installed and the product
               is in Permanent License Reservation mode.";
            }
            enum "enforcement-invalid-tag" {
              value 8;
              description
                "The entitlement tag is invalid.
               The CSSM does not recognize the entitlement tag
               because it is not in the database. This usually only occurs
               during testing.";
            }
            enum "enforcement-disabled" {
              value 9;
              description
                "Smart licensing has been disabled. The feature using this license
               should be disabled.";
            }
          }
          description
            "For an entitlement tag (license) that is in use this enumeration
            tells us how the license is being enforced.";
        }
    
        typedef policy-types-enum {
          type enumeration {
            enum "policy-type-cisco-invalid" {
              value 0;
              description "The invalid policy.";
            }
            enum "policy-type-cisco-default" {
              value 1;
              description
                "The cisco default policy.";
            }
            enum "policy-type-platform-default" {
              value 2;
              description
                "The default policy for this platform.";
            }
            enum "policy-type-factory-installed" {
              value 3;
              description
                "The default policy installed in factory.";
            }
            enum "policy-type-custom" {
              value 4;
              description
                "The policy configure by user.";
            }
            enum "policy-type-plr" {
              value 5;
              description
                "Special policy type for PLR.";
            }
            enum "policy-type-fla" {
              value 6;
              description
                "Special policy type for FLA.";
            }
            enum "policy-type-controller" {
              value 7;
              description
                "The policy type for controller.";
            }
            enum "policy-type-merged" {
              value 8;
              description
                "Merged policy - policy is merged from multiple source.";
            }
          }
          description
            "The types of policies that can be in use.";
        }
    
        typedef conversion-status-enum {
          type enumeration {
            enum
              "conversion-status-not-supported" {
              value 0;
              description
                "The license conversion is not supported on this
               product instance.";
            }
            enum "conversion-status-not-started" {
              value 1;
              description
                "The license conversion has not started yet";
            }
            enum "conversion-status-started" {
              value 2;
              description
                "Conversion has started. The conversion data has been sent
               to Cisco. A reply confirming receipt is expected.";
            }
            enum "Conversion-status-success" {
              value 3;
              description "Conversion Success";
            }
            enum
              "conversion-status-already-converted" {
              value 4;
              description
                "Conversion data was received by Cisco. Already converted";
            }
            enum "conversion-status-failed" {
              value 5;
              description
                "Conversion has failed.";
            }
            enum "conversion-status-polling" {
              value 6;
              description
                "Conversion polling the satellite for a response.";
            }
          }
          description
            "Status of a license conversion.";
        }
    
        typedef rum-report-state-enum {
          type enumeration {
            enum "rum-report-state-invalid" {
              value 0;
              description
                "Rum report is newly created and measurement
               and metadata can be added.";
            }
            enum "rum-report-state-open" {
              value 1;
              description
                "Report is currently open. New measurements may
               still be added.";
            }
            enum "rum-report-state-closed" {
              value 2;
              description
                "Report is closed. New measurements will not be added.
               Report has not been requested from the data model.";
            }
            enum "rum-report-state-pending" {
              value 3;
              description
                "Report was sent to a remote end point but was not
               acknowledged yet.";
            }
            enum
              "rum-report-state-unacknowledged" {
              value 4;
              description
                "Report has been requested from the data model at least once
               but not acknowledged.";
            }
            enum "rum-report-state-acknowledged" {
              value 5;
              description
                "Report was sent to remote end and acknowledged.";
            }
          }
          description
            "The state of a ISO19770-4 Resource Utilization Measurement
           (RUM) report in the data model. This state is
           used by the Cisco Smart License Utility (CSLU) so it can
           easily determine which RUM
           reports it has requested in the past and which are new reports
           that it should request.";
        }
    
        typedef license-enforcement-type-enum {
          type enumeration {
            enum
              "license-enforcement-type-invalid" {
              value 0;
              description
                "License type is invalid.";
            }
            enum
              "license-enforcement-type-unenforced" {
              value 1;
              description
                "License type is unenforced.";
            }
            enum
              "license-enforcement-type-enforced" {
              value 2;
              description
                "License type is enforced.";
            }
            enum
              "license-enforcement-type-export" {
              value 3;
              description
                "License type is export restricted.";
            }
          }
          description
            "The license (entitlement tag) type.";
        }
    
        typedef license-term-type-enum {
          type enumeration {
            enum "license-term-type-none" {
              value 0;
              description
                "License term type is none.";
            }
            enum "license-term-type-perpetual" {
              value 1;
              description
                "License term type is perpetual.";
            }
            enum "license-term-type-term" {
              value 2;
              description
                "License term type is term.";
            }
            enum
              "license-term-type-subscription" {
              value 3;
              description
                "License term type is subscription.";
            }
          }
          description
            "The license (entitlement tag) term type.";
        }
    
        typedef license-auth-type-enum {
          type enumeration {
            enum "authorization-type-none" {
              value 0;
              description
                "Authorization code is not installed";
            }
            enum "authorization-type-auth-code" {
              value 1;
              description
                "Smart license authorization code";
            }
            enum "authorization-type-slr" {
              value 2;
              description
                "Specific License Reservation authorization code";
            }
            enum "authorization-type-plr" {
              value 3;
              description
                "Permanent License Reservation
               authorization code";
            }
            enum "authorization-type-fla" {
              value 4;
              description
                "Federal License Authorization code";
            }
            enum "authorization-type-pak" {
              value 5;
              description
                "This is an authorization that was fulfilled from a
               Product Activation Key (PAK) and was previously installed
               using Cisco Software Licensing (CSL).";
            }
          }
          description
            "The types of authorizations that may be installed";
        }
    
        grouping registration-fail-info {
          description
            "Failure info for a registration failure.";
          leaf fail-time {
            type yang:date-and-time;
            description
              "Time the registration failed.";
          }
    
          leaf fail-message {
            type fail-message-type;
            description
              "Failure message that can be displayed for the user.
             This is not a parsable message.";
          }
        }  // grouping registration-fail-info
    
        grouping registration-state {
          description
            "The state of the registration for this product instance.";
          leaf registration-state {
            type registration-state-enum;
            description
              "The current registration state.";
          }
    
          container registration-in-progress {
            when
              "../registration-state = 'reg-state-in-progress'";
            description
              "Registration is in progress.";
            leaf start-time {
              type yang:date-and-time;
              description
                "Time the registration started.";
            }
          }  // container registration-in-progress
    
          container registration-failed {
            when
              "../registration-state = 'reg-state-failed'";
            description "Registration failed.";
            uses registration-fail-info;
          }  // container registration-failed
    
          container registration-retry {
            when
              "../registration-state = 'reg-state-retry'";
            description
              "Registration failed and doing a retry.";
            leaf retry-next-time {
              type yang:date-and-time;
              description
                "Time the registration will be retried.";
            }
    
            uses registration-fail-info;
          }  // container registration-retry
    
          container registration-complete {
            when
              "../registration-state = 'reg-state-complete'";
            description "Registration success.";
            leaf complete-time {
              type yang:date-and-time;
              description
                "Time the registration was successful.";
            }
    
            leaf last-renew-time {
              type yang:date-and-time;
              description
                "Time the last registration renewal occurred.
               If empty then no renewal has occurred.";
            }
    
            leaf next-renew-time {
              type yang:date-and-time;
              description
                "Time the registration will be automatically renewed.";
            }
    
            leaf expire-time {
              type yang:date-and-time;
              description
                "Time the registration will expire if it is not renewed.";
            }
    
            leaf last-renew-success {
              type boolean;
              description
                "Was the last renewal attempt successful.";
            }
    
            leaf fail-message {
              type fail-message-type;
              description
                "If the last renewal failed then this is a failure message that
               can be displayed for the user.
               This is not a parsable string.
               Only present if the last renewal failed";
            }
    
            leaf smart-account {
              type string {
                length "1..255";
              }
              description
                "The smart account name for this registration.";
            }
    
            leaf virtual-account {
              type string {
                length "1..255";
              }
              description
                "The virtual account name for this registration.";
            }
          }  // container registration-complete
    
          leaf export-control-allowed {
            type boolean;
            description
              "Is the device allowed to enable export controlled features.";
          }
        }  // grouping registration-state
    
        grouping udi {
          description
            "The Smart Licensing UDI definition.
           A UDI will contain one or more of the fields defined.
           While the pid and sn fields are most commonly used
           different product types will use different fields. This UDI
           will be unique for each product instance that is installed.";
          leaf pid {
            type string {
              length "1..255";
            }
            description
              "The Product Identifier. Always combined with sn.";
          }
    
          leaf sn {
            type string {
              length "1..255";
            }
            description
              "The system serial number. Always combined with pid.";
          }
    
          leaf vid {
            type string {
              length "1..255";
            }
            description
              "The version identifier. Usually combined with pid & sn.";
          }
    
          leaf uuid {
            type yang:uuid;
            description
              "A 32 byte hex value generated by the system.
             This will be in proper UUID format 8-4-4-4-12. Often used by VMs
             or other systems that do not have a hardware identifier.";
          }
    
          leaf suvi {
            type string {
              length "1..255";
            }
            description
              "Free form virtual identifier often used by software
             only devices like software routers or VMs.";
          }
    
          leaf host-identifier {
            type string {
              length "1..255";
            }
            description
              "Host identifier available on some systems.
             Typically 8 hex digits.";
          }
    
          leaf mac-address {
            type yang:mac-address;
            description
              "The MAC address of the system. This is usually only used if there
             is nothing else available to be used as an identifier.";
          }
        }  // grouping udi
    
        grouping authorization-info {
          description
            "Additional authorization state information used by some of
           the authorization states.";
          leaf last-comm-status-success {
            type boolean;
            description
              "Last communication was successful or failed.";
          }
    
          leaf fail-message {
            type fail-message-type;
            description
              "Failure message if the last communications attempt failed.
             This can be displayed for the user. It is not a parsable string.";
          }
    
          leaf last-comm-time {
            type yang:date-and-time;
            description
              "Time the last communication attempt happened.";
          }
    
          leaf next-comm-time {
            type yang:date-and-time;
            description
              "The next time communications will be attempted to the back end.
             This will be zero if the initial communication has not completed.";
          }
    
          leaf comm-deadline-time {
            type yang:date-and-time;
            description
              "If there are no communications between now and this time
             smart licensing will enter the authorization expired state.
             This may be zero indicating there is no deadline.";
          }
        }  // grouping authorization-info
    
        grouping evaluation-time-left {
          description
            "Number of seconds of license usage until the evaluation
           period expires.";
          leaf seconds-left {
            type uint64;
            description
              "Number of seconds of license usage until the evaluation
             period expires. Note that this not a hard date and time because
             if no licenses are in use the evaluation period stops
             counting down.";
          }
        }  // grouping evaluation-time-left
    
        grouping authorization-state {
          description
            "The license authorization state.";
          leaf authorization-state {
            type authorization-state-enum;
            description
              "The current authorization state.";
          }
    
          container authorization-none {
            when
              "../authorization-state = 'auth-state-none'";
            description
              "No licenses in use. This empty container is not needed but is
             a place holder to show there is no data for this state.";
          }  // container authorization-none
    
          container authorization-eval {
            when
              "../authorization-state = 'auth-state-eval'";
            description
              "Evaluation period is in use and counting down.
             The evaluation period only counts down when licenses are
             in use.";
            uses evaluation-time-left;
          }  // container authorization-eval
    
          container authorization-eval-expired {
            when
              "../authorization-state = 'auth-state-eval-expired'";
            description
              "Evaluation period is in use but has expired.";
            leaf expire-time {
              type yang:date-and-time;
              description
                "Time the evaluation period expired.";
            }
          }  // container authorization-eval-expired
    
          container authorization-authorized {
            when
              "../authorization-state = 'auth-state-authorized'";
            description
              "All license usage is authorized and within terms of the contract.";
            uses authorization-info;
          }  // container authorization-authorized
    
          container authorization-authorized-reservation {
            when
              "../authorization-state = 'auth-state-authorized-reservation'";
            description
              "All license usage is authorized because a
             reservation authorization code is installed.";
            leaf reservation-time {
              type yang:date-and-time;
              description
                "Time the reservation occurred.";
            }
          }  // container authorization-authorized-reservation
    
          container authorization-out-of-compliance {
            when
              "../authorization-state = 'auth-state-out-of-compliance'";
            description
              "License usage is out of compliance with the terms of the
             contract because more licenses are in use than were purchased.";
            uses authorization-info;
    
            leaf ooc-time {
              type yang:date-and-time;
              description
                "Time the product instance entered the out of compliance state.";
            }
          }  // container authorization-out-of-compliance
    
          container authorization-authorization-expired {
            when
              "../authorization-state = 'auth-state-authorization-expired'";
            description
              "The authorization period has expired because the product
             instance ahs not communicated with the SSM or satellite in
             over 90 days.";
            uses authorization-info;
          }  // container authorization-authorization-expired
        }  // grouping authorization-state
    
        grouping customer-info {
          description
            "Customer name and address information.";
          leaf id {
            type string {
              length "1..250";
            }
            description
              "The cisco issued customer id which will be included
             in the utility usage (RUM) report.";
          }
    
          leaf name {
            type string {
              length "1..250";
            }
            description
              "The customer company name which will be included
             in the utility usage (RUM) report.";
          }
    
          leaf street {
            type string {
              length "1..250";
            }
            description
              "The customer company street address which will be included
             in the utility usage (RUM) report.";
          }
    
          leaf city {
            type string {
              length "1..250";
            }
            description
              "The customer company city which will be included
             in the utility usage (RUM) report.";
          }
    
          leaf state {
            type string {
              length "1..250";
            }
            description
              "The customer company state which will be included
             in the utility usage (RUM) report.";
            reference
              "ISO3166 standard for state codes.";
    
          }
    
          leaf country {
            type string {
              length "1..250";
            }
            description
              "The customer company country which will be included
             in the utility usage (RUM) report.";
            reference
              "ISO3166 standard for country codes.";
    
          }
    
          leaf postal-code {
            type string {
              length "1..250";
            }
            description
              "The customer location specific postal code
             which will be included in the utility usage (RUM) report.";
          }
        }  // grouping customer-info
    
        grouping utility-state {
          description
            "State of utility reporting in smart licensing.";
          leaf enabled {
            type boolean;
            description
              "Utility reporting is enabled. The system still
             needs a utility certificate registration or a subscription
             to begin reporting actual utility data.";
          }
    
          leaf reporting {
            type utility-reporting-type-enum;
            description
              "Is the system reporting utility data. If so then what triggered
             it to start reporting. If this is utility-reporting-none then all
             of the times below will be zero.";
          }
    
          container reporting-times {
            when
              "../reporting != 'utility-reporting-none'";
            description
              "If the product instance is reporting utility data this will
             contain various timing information about that reporting.";
            leaf last-report-time {
              type yang:date-and-time;
              description
                "Time the last report was sent.";
            }
    
            leaf last-report-success {
              type boolean;
              description
                "Was the last report successfully sent?";
            }
    
            leaf fail-message {
              type fail-message-type;
              description
                "Failure message if the last report send failed.";
            }
    
            leaf next-report-time {
              type yang:date-and-time;
              description
                "Time the next report is scheduled to be sent.";
            }
          }  // container reporting-times
    
          container customer-info {
            when
              "../reporting != 'utility-reporting-none'";
            description
              "Customer address information that will be sent
             in the utility usage reports.";
            uses customer-info;
          }  // container customer-info
        }  // grouping utility-state
    
        grouping transport-state {
          description
            "Transport settings. Smart licensing uses the transport to
           send messages to the CSSM, satellite or
           Third Party Billing Platform.";
          leaf transport-type {
            type transport-type-enum;
            description
              "Type of communications transport smart licensing is using.";
          }
    
          container url-settings {
            when
              "../transport-type = 'transport-type-smart'";
            description
              "URLs in use if the transport type is smart.";
            leaf url-registration {
              type inet:uri;
              description
                "The URL used for registration, authorization and any
               other messages not related to utility.";
            }
    
            leaf url-utility {
              type inet:uri;
              description
                "The URL used for utility reporting. url-utility and
               url-registration may be the same or different. If a satellite
               is in use then they will probably be the same.";
            }
          }  // container url-settings
        }  // grouping transport-state
    
        grouping privacy-info {
          description
            "Will smart licensing send the host name in any outgoing messages.";
          leaf hostname {
            type boolean;
            description
              "If true then the hostname will not be sent in
             any messages.";
          }
    
          leaf version {
            type boolean;
            description
              "If true then the smart licensing version will not be sent in
             any messages.";
          }
        }  // grouping privacy-info
    
        grouping eval-period-state {
          description
            "State of the evaluation period. In use or not and time left.";
          leaf eval-in-use {
            type boolean;
            description
              "Is the evaluation period currently in use and counting down.";
          }
    
          leaf eval-expired {
            type boolean;
            description
              "Has the evaluation period expired.";
          }
    
          container eval-period-left {
            when "../eval-expired = 'false'";
            description
              "If the evaluation period is not expired this is the number
             of seconds left in the period.";
            leaf time-left {
              type uint32;
              description
                "Number of seconds of license usage until the evaluation
               period expires.";
            }
          }  // container eval-period-left
    
          container eval-expire-time {
            when "../eval-expired = 'true'";
            description
              "If the evaluation period has expired then this is the
             time of the expiration.";
            leaf expire-time {
              type yang:date-and-time;
              description
                "Date and time the evaluation period expired.";
            }
          }  // container eval-expire-time
        }  // grouping eval-period-state
    
        grouping license-usage {
          description
            "State of usage for a single entitlement tag (license).";
          leaf entitlement-tag {
            type string;
            description
              "The ISO 19770 entitlement tag used to define this license.";
          }
    
          leaf short-name {
            type string;
            description
              "The human readable license name from the entitlement tag.";
          }
    
          leaf license-name {
            type string;
            description
              "The license name that can be seen in the CSSM portal or on
             the satellite.
             This is only available after the product has registered.";
          }
    
          leaf description {
            type string;
            description
              "The long description of this license.
             This is only available after the product has registered.";
          }
    
          leaf count {
            type uint32;
            description
              "The in-use count of this license. Note that licensing only reports
             usage for licenses that are in use (count of 1 or greater).";
          }
    
          leaf enforcement-mode {
            type enforcement-mode-enum;
            description
              "The current enforcement mode of this license.";
          }
    
          leaf post-paid {
            type boolean;
            description
              "If true then this entitlement is being reported in a post paid mode
             with utility usage reports. Otherwise it will be reported in
             the regular prepaid mode.";
          }
    
          leaf subscription-id {
            type string;
            description
              "If this entitlement tag is being reported in the post paid
             utility usage mode and there is a subscription id in the customer's
             virtual account this will be that subscription id.";
          }
        }  // grouping license-usage
    
        grouping notif-failure-data-group {
          description
            "Describes why a register operation failed.";
          leaf reason {
            type notif-register-failure-enum;
            description
              "Why did the operation fail.";
          }
    
          leaf message {
            type fail-message-type;
            description
              "A message describing the details of the failure.";
          }
        }  // grouping notif-failure-data-group
    
        grouping customer-tags-grouping {
          description
            "Customer defined fields in usage reporting.";
          leaf tag1 {
            type string {
              length "1..127";
            }
            description
              "Customer defined tag field one";
          }
    
          leaf tag2 {
            type string {
              length "1..127";
            }
            description
              "Customer defined tag field two";
          }
    
          leaf tag3 {
            type string {
              length "1..127";
            }
            description
              "Customer defined tag field three";
          }
    
          leaf tag4 {
            type string {
              length "1..127";
            }
            description
              "Customer defined tag field four";
          }
        }  // grouping customer-tags-grouping
    
        grouping policy-attributes-grouping {
          description "Policy attributes";
          leaf reporting-first-time {
            type uint32;
            description
              "Number of days before the first usage report is required.";
          }
    
          leaf reporting-ongoing {
            type uint32;
            description
              "Number of days after the first usage report that subsequent
             usage reports are required.";
          }
    
          leaf reporting-macd {
            type uint32;
            description
              "Number of days after a Move Add Change Delete (MACD)
             operation that a new report is required.";
          }
        }  // grouping policy-attributes-grouping
    
        grouping policy-state-grouping {
          description
            "Information about which policy is in force and the
           attributes that are set.";
          leaf policy-type {
            type policy-types-enum;
            description
              "Which policy is in force.";
          }
    
          leaf policy-name {
            type string;
            description
              "The name of the policy if there is one. This comes from
             the 'name' field in the policy XML file.";
          }
    
          leaf install-time {
            type yang:date-and-time;
            description
              "The time a policy file was installed.";
          }
    
          leaf ack-required {
            type boolean;
            description
              "Indicates if an ACK is required on the product for each RUM
             report to pervent the syslog from being sent.";
          }
    
          container policy-enforced {
            description
              "Attributes for an enforced license.";
            uses policy-attributes-grouping;
          }  // container policy-enforced
    
          container policy-export {
            description
              "Attributes for an export license.";
            uses policy-attributes-grouping;
          }  // container policy-export
    
          container policy-subscription {
            description
              "Attributes for an subscription license.";
            uses policy-attributes-grouping;
          }  // container policy-subscription
    
          container policy-perpetual {
            description
              "Attributes for a perpetual license.";
            uses policy-attributes-grouping;
          }  // container policy-perpetual
        }  // grouping policy-state-grouping
    
        grouping trust-code-state-grouping {
          description
            "Trust code information for a single device (UDI).";
          leaf key_udi {
            type string;
            description
              "This single string key can be used to look up trust code
             information of product instance";
          }
    
          leaf is-installed {
            type boolean;
            description
              "If true then a trust code is installed.";
          }
    
          leaf time-installed {
            when "../is-installed = 'true'";
            type yang:date-and-time;
            description
              "The time the trust code was installed.";
          }
    
          container udi {
            description
              "UDI of the device this trust code state is for.";
            uses udi;
          }  // container udi
        }  // grouping trust-code-state-grouping
    
        grouping conversion-state-grouping {
          description
            "license conversion status of a single UDI";
          leaf key_udi {
            type string;
            description
              "This single string key can be used to look up conversion
             information of product instance";
          }
    
          leaf status {
            type conversion-status-enum;
            description "Conversion status";
          }
    
          leaf status-time {
            type yang:date-and-time;
            description
              "The date and time the status last changed.";
          }
    
          container udi {
            description "UDI of this status";
            uses udi;
          }  // container udi
        }  // grouping conversion-state-grouping
    
        grouping rum-report-basic-info-grouping {
          description
            "Basic RUM report info used in multiple groups";
          leaf report-id {
            type uint64;
            description
              "The RUM report id number. id numbers are unique to a UDI";
          }
    
          container udi {
            description
              "UDI of the Product Instance in a High Availability (HA)
             configuration that the notification applies to.";
            uses udi;
          }  // container udi
    
          leaf report-start-time {
            type yang:date-and-time;
            description
              "The start time of the first measurement in the RUM report";
          }
    
          leaf report-end-time {
            type yang:date-and-time;
            description
              "The end time of the last measurement in the RUM report";
          }
    
          leaf report-state {
            type rum-report-state-enum;
            description
              "The state of a RUM report in the data model. This state is
             used by the CSLU so it can easily determine which RUM
             reports it has requested in the past and which are new
             reports that it should request.";
          }
        }  // grouping rum-report-basic-info-grouping
    
        grouping rum-report-summary-grouping {
          description
            "Key information used to lookup rum reports in a different
           list.";
          uses rum-report-basic-info-grouping;
    
          leaf rum-report-key {
            type string;
            description
              "This single string key can be used to look up RUM reports
             in a different list. It will uniquely identify the
             combination of product Instance and report.";
          }
        }  // grouping rum-report-summary-grouping
    
        grouping rum-ack-state-grouping {
          description
            "Information about the ACKs of RUM reports";
          leaf last-received-time {
            type yang:date-and-time;
            description
              "Time an ACK was last received.";
          }
    
          leaf next-report-deadline {
            type yang:date-and-time;
            description
              "Time the next ACK is expected to be received.";
          }
        }  // grouping rum-ack-state-grouping
    
        grouping authorization-confirmation-code-grouping {
          description
            "If an authorization code import overwrote an existing
           authorization code
           then this confirmation code must be returned to the
           Cisco Smart Software Manger (CSSM).";
          container udi {
            description
              "UDI of this confirmation code";
            uses udi;
          }  // container udi
    
          leaf confirmation-code {
            type string {
              length "1..255";
            }
            description
              "The confirmation code that must be retunred to
             Cisco Smart Software Manger (CSSM)";
          }
        }  // grouping authorization-confirmation-code-grouping
    
        grouping subscription-info-grouping {
          description
            "If a license term type is license-term-type-subscription
           then this group will contain the subscription information.";
          leaf start-time {
            type yang:date-and-time;
            description
              "Start time for the subscription.";
          }
    
          leaf end-time {
            type yang:date-and-time;
            description
              "End time for the subscription.";
          }
    
          leaf subscription-id {
            type string;
            description
              "Subscription id (if available) for this subscription";
          }
        }  // grouping subscription-info-grouping
    
        grouping license-info-grouping {
          description
            "General entitlement tag (license) information.";
          leaf entitlement-tag {
            type string;
            description
              "The ISO 19770 entitlement tag used to define this license.";
          }
    
          leaf short-name {
            type string;
            description
              "The human readable license name from the entitlement tag.";
          }
    
          leaf license-name {
            type string;
            description
              "The license name that can be seen in the
             Cisco Smart Software Manger (CSSM) portal.";
          }
    
          leaf description {
            type string;
            description
              "The long description of this license.";
          }
    
          leaf count {
            type uint32;
            description
              "The count of this license.";
          }
    
          leaf license-enforcement-type {
            type license-enforcement-type-enum;
            description
              "Indicates what enforcement type of license this is.";
          }
    
          leaf license-term-type {
            type license-term-type-enum;
            description
              "Indicates the type of term used for this licnese.";
          }
        }  // grouping license-info-grouping
    
        grouping factory-purchase-state-grouping {
          description
            "Information about the licenses the customer purchased for this
           device which are installed at manufacturing time.";
          leaf key_udi {
            type string;
            description
              "This single string key can be used to look up factory purchase
             information of product instance";
          }
    
          container udi {
            description
              "UDI of this purchase information";
            uses udi;
          }  // container udi
    
          list basic-license-info {
            key "entitlement-tag";
            description
              "The license information";
            uses license-info-grouping;
    
            uses subscription-info-grouping;
          }  // list basic-license-info
        }  // grouping factory-purchase-state-grouping
    
        grouping license-auth-install-info {
          description
            "Authorization install status";
          leaf install-type {
            type license-auth-type-enum;
            description
              "The type of authorization that is installed.";
          }
    
          leaf install-time {
            type yang:date-and-time;
            description
              "Time the authorization was installed. If blank then
             the install time is not not known.";
          }
        }  // grouping license-auth-install-info
    
        grouping license-auth-overall-info {
          description
            "Status of any authorizations installed for a Product
           Instance";
          leaf key_udi {
            type string;
            description
              "This single string key can be used to look up trust code
             information of product instance";
          }
    
          container udi {
            description "UDI of this device";
            uses udi;
          }  // container udi
    
          list installed-list {
            key "install-type";
            description
              "List of all authorizations installed on this device";
            uses license-auth-install-info;
          }  // list installed-list
        }  // grouping license-auth-overall-info
    
        grouping license-auth-info {
          description
            "Information about how a single license is authorized.";
          leaf entitlement-tag {
            type string;
            description
              "The ISO 19770-2 entitlement tag used to define
             this license.";
          }
    
          leaf short-name {
            type string;
            description
              "The human readable license name from the entitlement tag.";
          }
    
          leaf license-name {
            type string;
            description
              "The license name that can be seen on the
             Cisco Smart Software Manger (CSSM).";
          }
    
          leaf description {
            type string;
            description
              "The long description of this license.";
          }
    
          leaf total-count {
            type uint32;
            description
              "The total aggregated count available for this license.";
          }
    
          leaf license-enforcement-type {
            type license-enforcement-type-enum;
            description
              "Indicates what type of license this is.";
          }
        }  // grouping license-auth-info
    
        grouping license-auth-status-info {
          description
            "Information about all licenses that are either enforced
           or export restricted and are authorized to be used.";
          list overall-status {
            key "key_udi";
            description
              "List of the authroization code install information for
             each device";
            uses license-auth-overall-info;
          }  // list overall-status
    
          list authorization-list {
            key "entitlement-tag";
            description
              "List of license and details of how each is authorized.
             If a license is not in this list then it is not authorized.";
            uses license-auth-info;
          }  // list authorization-list
        }  // grouping license-auth-status-info
    
        rpc register-id-token {
          description
            "Register with an ID token.
           This will begin the registration process. Since the registration
           process will take somewhere between seconds and hours you must get the
           registration-success or registration-fail notifications
           or check the registration status in smart-license:state
           to know the status of the registration.";
          input {
            leaf id-token {
              type string {
                length "1..255";
              }
              description
                "The ID token used to register.";
            }
    
            leaf force {
              type boolean;
              default "false";
              description
                "Force the registration if set.";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description
                "The return code.
               If smart licensing is not enabled (status:enabled)
               then the error will be error-enum:notenabled.
               On success the return code will be
               error-enum:registrationinprogress.";
            }
          }
        }  // rpc register-id-token
    
        rpc de-register {
          description
            "De-register. This will immediately de-register the device.";
          output {
            leaf return-code {
              type error-enum;
              description
                "The return code for the de-register process.";
            }
          }
        }  // rpc de-register
    
        rpc renew-id {
          description
            "Under normal operations smart licensing will automatically renew
           the ID certificates used for regsitration. This command can
           be used if he customer wants to initiate a manual
           registration renewal.";
          output {
            leaf return-code {
              type error-enum;
              description "The return code.";
            }
          }
        }  // rpc renew-id
    
        rpc renew-auth {
          description
            "Under normal operations smart licensing will automatically renew
           the license authorization every 30 days. This command can
           be used if he customer wants to iinitiate a manual
           renewal.";
          output {
            leaf return-code {
              type error-enum;
              description "The return code.";
            }
          }
        }  // rpc renew-auth
    
        rpc id-token-trust {
          description
            "Establish trust with the Cisco Smart Software Manager (CSSM)
           using an ID token.
           This will begin the trust establishment process. Since the
           process will take somewhere between seconds and hours you
           must get the trust-success or trust-fail notifications
           or check the trust status in smart-license:state.";
          input {
            leaf id-token {
              type string {
                length "1..255";
              }
              mandatory true;
              description
                "The ID token used to establish trust.";
            }
    
            leaf all-ha {
              type boolean;
              default "false";
              description
                "If true, perform the operation for all devices
               in an HA configuration. If false, then only establish
               trust for the active device.";
            }
    
            leaf force {
              type boolean;
              default "false";
              description
                "Force the trust establishment even if the product
               instance has already establish trust with the CSSM.";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description
                "The return code.
               On success the return code will be
               error-enum:registrationinprogress.";
            }
          }
        }  // rpc id-token-trust
    
        rpc rum-save-usage-all {
          description
            "Save all RUM reports in the file path specified.
           Can be a local path or a network path.
           This could create a file that is a few MB in size.";
          input {
            leaf file-path {
              type string {
                length "1..127";
              }
              mandatory true;
              description
                "The local or network file path to write the RUM
               reports to.";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description "The return code.";
            }
          }
        }  // rpc rum-save-usage-all
    
        rpc rum-save-usage-unreported {
          description
            "Save unreported RUM reports in the file path specified.
           Can be a local path or a network path";
          input {
            leaf file-path {
              type string {
                length "1..127";
              }
              mandatory true;
              description
                "The local or network file path to write the RUM reports to.";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description "The return code.";
            }
          }
        }  // rpc rum-save-usage-unreported
    
        rpc rum-save-usage-days {
          description
            "Save all RUM reports in the file path specified.
           Can be a local path or a network path";
          input {
            leaf file-path {
              type string {
                length "1..127";
              }
              mandatory true;
              description
                "The local or network file path to write the RUM reports to.";
            }
    
            leaf days {
              type uint32;
              description
                "Save RUM reports that include measurements in the
               specified number of days";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description "The return code.";
            }
          }
        }  // rpc rum-save-usage-days
    
        rpc trust-request-save {
          description
            "Save the trust request in the file path specified.
           Can be a local path or a network path";
          input {
            leaf file-path {
              type string {
                length "1..127";
              }
              mandatory true;
              description
                "The local or network file path to write the trust request to.";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description "The return code.";
            }
          }
        }  // rpc trust-request-save
    
        rpc authorization-request-online {
          description
            "Queues the request to fetch a node-locked authorization code
           from the CSSM or CSLU. If the Product is not connected to the
           CSLU or CSSM this command will fail. Command is non-blocking and
           will return an immediate failure or an OperationInProgress status.
           Later one of these notifications will be sent to indicate the
           status of the request:
           authorization-code-installed, authorization-code-request-failed ";
          input {
            leaf feature-name {
              type string {
                length "1..255";
              }
              mandatory true;
              description
                "The feature name to get the authorization code for.
               The smart agent will look this up in it's mapping table
               and get the proper entitlement tag for it.";
            }
    
            leaf local {
              type boolean;
              default "true";
              description
                "Applies to an HA configuration. If true, the authroization
               request will only be for the active device. If False, the
               authorization request will apply to all devices in the
               HA configuration.";
            }
    
            leaf add {
              type boolean;
              default "true";
              description
                "Applies to an HA configuration. If true, the authroization
               request will add the license to the existing authorization code
               If false, the authorization request will replace the existing
               authorization code with a new authorization code that
               contains only a license for the feature requested.";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description
                "The return code. Under normal operations this will return
               OperationInProgress.";
            }
          }
        }  // rpc authorization-request-online
    
        rpc authorization-code-return-online {
          description
            "Returns a currently installed authorization code.
           If an entitlement tag is in use and was authorized
           by the current authorization code then the return will fail.
           If the Product is not connected to the CSLU or CSSM this command will fail.
           The authorization code will first be removed from the product.
           Next it will make one attempt to send a message to the CSLU
           or CSSM to return the license to the virtural account.";
          input {
            leaf local {
              type boolean;
              default "true";
              description
                "Applies to an HA configuration. If true, the authroization
               return will only be for the active device.
               If false, the authorization return will apply to all devices in the
               HA configuration.";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description
                "The return code. Under normal operations this will return OperationInProgress";
            }
    
            leaf authorization-return-string {
              type string;
              description
                "The authorization return string that was sent to the CSSM in the message.";
            }
          }
        }  // rpc authorization-code-return-online
    
        rpc authorization-code-return-offline {
          description
            "Returns a currently installed authorization code.
           If an entitlement tag is in use and was authorized
           by the current authorization code then the return will fail.
           The authorization code will first be removed from the product.
           Next it write the return code to the file specified.";
          input {
            leaf local {
              type boolean;
              default "true";
              description
                "Applies to an HA configuration. If true, the authroization
               return will only be for the active device.
               If false, the authorization return will apply to all
               devices in the HA configuration.";
            }
    
            leaf file-path {
              type string {
                length "1..127";
              }
              mandatory true;
              description
                "The local or network file path to write the return code to.
               This is optional. If included the authorization return string
               will be written to the named file. In either case the
               authorization return string will be returned in the output";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description
                "The return code. Under normal operations this will
               return OperationInProgress";
            }
    
            leaf authorization-return-string {
              type string;
              description
                "The authorization return string.";
            }
          }
        }  // rpc authorization-code-return-offline
    
        rpc import-file {
          description
            "Import any of the various XML codes supported by smart
           Licensing from a file. This includes; authorization codes, policies,
           trust codes, RUM ACK response, SLR authorization codes, conversion ACK.";
          input {
            leaf file-path {
              type string {
                length "1..127";
              }
              mandatory true;
              description
                "The local or network file path to read from";
            }
          }
    
          output {
            leaf return-code {
              type error-enum;
              description "The return code.";
            }
    
            leaf confirmation-codes {
              type string;
              description
                "If the import command installed authorization codes and
               that install overwrote older authorization codes this list
               will contain the confirmation codes that must be returned
               to the Cisco Smart Software Manager (CSSM).";
            }
          }
        }  // rpc import-file
    
        notification ready {
          description
            "Smart Licensing on the product instance has initialized
           and is ready to accept the enable command.";
        }  // notification ready
    
        notification enabled {
          description
            "Smart Licensing on the product instance has been enabled.";
        }  // notification enabled
    
        notification registration-fail {
          description
            "Registration with Cisco failed.";
          uses notif-failure-data-group;
        }  // notification registration-fail
    
        notification enforcement-mode {
          description
            "This indicates how licenses are currently being enforced on the
           product instance.";
          leaf mode {
            type authorization-state-enum;
            description
              "The current enforcement mode for the licenses on the product instance.";
          }
        }  // notification enforcement-mode
    
        notification registration-success {
          description
            "Registration with Cisco was successful.";
        }  // notification registration-success
    
        notification registration-expired {
          description
            "The registration period has expired because the product instance
           has not communicated with the SSM in a very long time.";
          uses notif-failure-data-group;
        }  // notification registration-expired
    
        notification registration-renew-success {
          description
            "The registration renewal with Cisco was successful.";
        }  // notification registration-renew-success
    
        notification registration-renew-fail {
          description
            "The registration renewal with Cisco failed.";
          uses notif-failure-data-group;
        }  // notification registration-renew-fail
    
        notification authorization-renew-success {
          description
            "The autorization renewal was successful.
           Every 30 days the agent will automatically send the list of
           entitlements in use
           (even if they have not changed or the list is empty)
           to the SSM. The SSM will send back a status of Authorized or
           out of compliance.";
        }  // notification authorization-renew-success
    
        notification authorization-renew-fail {
          description
            "The autorization renewal failed.
           Every 30 days the agent will automatically send the list of
           entitlements in use
           (even if they have not changed or the list is empty)
           to the SSM. The SSM will send back a status of Authorized or
           out of compliance.";
          uses notif-failure-data-group;
        }  // notification authorization-renew-fail
    
        notification communications-fail {
          description
            "Communicatios with the SSM have failed.";
          uses notif-failure-data-group;
        }  // notification communications-fail
    
        notification communications-restored {
          description
            "Communications with the SSM have ben restored.";
        }  // notification communications-restored
    
        notification registration-out-of-range {
          description
            "The registration period time in the ID Certificate is
           out of the valid range after the system clock changed.
           This means the current time is either before the start date
           or after the expired date.
           Smart Licensing will allow a one hour grace period for the system clock
           to be changed back into the validity period of the certificate before it
           removes the certificate and de-registers the product.";
        }  // notification registration-out-of-range
    
        notification evaluation-expiration-warning {
          description
            "The evaluation period will expire soon.
           This notification will be sent prior to expiration at the following
           intervvals: 60 days,30 days, 21 days,14 days, 7 days,
           every day in the last week, every hour for the last day.";
          uses evaluation-time-left;
        }  // notification evaluation-expiration-warning
    
        notification evaluation-expired {
          description
            "The evaluation period has expired. This notification will be
           sent at the time of expiration and every hour after expiration
           unitl all licenses features are turned off or the device is
           registered.";
          leaf expire-time {
            type yang:date-and-time;
            description
              "The date and time the evaluation period expired.";
          }
        }  // notification evaluation-expired
    
        notification registration-expiration-warning {
          description
            "The registration period has expired. The normal registration
           period is one year and will be automatically renewed every
           six months. If the device fails to renew the registration
           because of continued communications failures for an additional
           six months the registration period will expire and the device
           will de-register.";
          leaf expire-time {
            type yang:date-and-time;
            description
              "The date and time the registration period expired.";
          }
        }  // notification registration-expiration-warning
    
        notification de-register-success {
          description
            "The smart licensing instance has been de-registered.
           This could be the result of a user action or an expired registration.";
        }  // notification de-register-success
    
        notification de-register-fail {
          description
            "de-registration has failed on the SSM or there was a communications
           failure so the SSM has not removed product instance from its database.
           Locally on the product instance all registration information has
           been removed.";
          uses notif-failure-data-group;
        }  // notification de-register-fail
    
        notification utility-expired {
          description
            "The certificate used for utility registration with a third party
           authenticator has expired. Probably because of continuous communications
           failures. The product instance will de-register.";
          uses notif-failure-data-group;
        }  // notification utility-expired
    
        notification utility-renewal-fail {
          description
            "The renewal of the certificate used for utility registration with a
           third party authenticator has failed. Possibly because of
           a communications failure. The product instance will try the renewal
           later.";
          uses notif-failure-data-group;
        }  // notification utility-renewal-fail
    
        notification utility-renewal-success {
          description
            "The renewal of the certificate used for utility registration with a
           third party authenticator was successful.";
        }  // notification utility-renewal-success
    
        notification utility-RUM-fail {
          description
            "Failed to sent a RUM (utility usage) report because of a
           communications error. the product instance will continue to
           attempting sending all reports until successful.";
          uses notif-failure-data-group;
        }  // notification utility-RUM-fail
    
        notification utility-reporting-started {
          description
            "The utility billing feature is enabled and is now sending
           utility usage reports.";
        }  // notification utility-reporting-started
    
        notification utility-reporting-stopped {
          description
            "The utility billing feature has been disabled and is no longer sending
           utility usage reports.";
        }  // notification utility-reporting-stopped
    
        container licensing {
          description
            "Container to hold config and state.";
          container config {
            description
              "Smart licensing configuration.";
            leaf enable {
              type boolean;
              description
                "Enable/disable smart licensing. If state:always-enabled is true then
               Smart Licensing is always enabled and config:enable will be
                silently ignored";
            }
    
            leaf custom-id {
              type string;
              description
                "A free form ID set by the customer which will be included
               in the utility usage (RUM) report and inthe message header.";
            }
    
            container privacy {
              description
                "Controls whether or not some information is sent in messages to the
                CSSM or satellite.";
              uses privacy-info;
            }  // container privacy
    
            container utility {
              description "Utility settings.";
              leaf utility-enable {
                type boolean;
                description
                  "Indicates the customer's intent to start reporting
                 utility usage information. This alone does not enable
                 utility reporting. Either subscription information will be
                 automatically downloaded from the SSM or a utility
                 certificate we be loaded if the system registers with a
                 Third Party Billing Platform.";
              }
    
              container customer-info {
                description
                  "Customer address information that will be included in
                 the utility usage reports.";
                uses customer-info;
              }  // container customer-info
            }  // container utility
    
            container usage {
              description
                "Setting for Usage reporting.";
              leaf interval {
                type uint32 {
                  range "1..365";
                }
                units "days";
                description
                  "Set the Usage Reporting interval in days.";
              }
    
              container customer-tags {
                description
                  "Set the customer defined fields.";
                uses customer-tags-grouping;
              }  // container customer-tags
            }  // container usage
    
            container transport {
              description
                "Transport layer settings.";
              leaf transport-type {
                type transport-type-enum;
                description
                  "The transport type. If transport-type
                 is set to transport-type-callhome then any additional
                 transport settings must be done from the callhome CLI.
                 If the transport-type is set to transport-type-smart
                 additional settings are available below.";
              }
    
              container transport-smart {
                when
                  "../transport-type = 'transport-type-smart'";
                description
                  "Settings for the smart transport.";
                choice url-setting {
                  description
                    "Set the URL(s) used for communications to the SSM,
                   satellite or Third Party Billing Platform.";
                  leaf url-default {
                    type boolean;
                    description
                      "Tell smart licensing to set the default URLs for both
                       url-registration and url-utility that point to
                       the Cisco SSM.";
                  }
                  container urls {
                    description
                      "The URLS used for registration and utility reporting.
                       These should be set if the product instance will
                       communicate with a satellite or Third Party
                       Billing Platform.";
                    leaf url-registration {
                      type inet:uri;
                      description
                        "Set the URL used for registration, authorization and
                         anything else not related to utility usage reporting.";
                    }
    
                    leaf url-utility {
                      type inet:uri;
                      description
                        "Set the URL to be used for sending utility usage
                         reports. This should be the same as url-registration
                         if you are using a satellite.";
                    }
                  }  // container urls
                }  // choice url-setting
              }  // container transport-smart
    
              container transport-cslu {
                description
                  "The URL used for usage reporting via cisco smart license utility.
                 These should be set if the product instance will
                 communicate with a Cisco Smart License Utility (cslu).";
                leaf url-cslu {
                  type inet:uri;
                  description
                    "Set the URL to be used for sending usage reports.";
                }
              }  // container transport-cslu
            }  // container transport
          }  // container config
    
          container state {
            config false;
            description "Smart licensing state.";
            leaf always-enabled {
              type boolean;
              description
                "Smart Licensing is always enabled. the smart-enabled leaf below
               will always be true. The config:enable setting above will be silently
               ignored by Smart licensing";
            }
    
            leaf smart-enabled {
              type boolean;
              description
                "Is smart licensing enabled. If always-enabled above is true then
                smart licensing is always enabled and can not be disabled.";
            }
    
            leaf version {
              type string {
                length "1..255";
              }
              description
                "The smart licensing version in use.";
            }
    
            container state-info {
              when "../smart-enabled = 'true'";
              description
                "Smart licensing state information.
                  This is only valid if smart-enabled = true.";
              container registration {
                description
                  "State of license registration.";
                uses registration-state;
              }  // container registration
    
              container authorization {
                description
                  "State of license authorization.";
                uses authorization-state;
              }  // container authorization
    
              container utility {
                description
                  "State of utility reporting.";
                uses utility-state;
              }  // container utility
    
              leaf custom-id {
                type string;
                description
                  "The custom ID set by the customer that will be included in the
                 utility usage (RUM) report and in th emessage header";
              }
    
              container transport {
                description
                  "State of the transport.";
                uses transport-state;
              }  // container transport
    
              container privacy {
                description
                  "State of the privacy settings.";
                uses privacy-info;
              }  // container privacy
    
              container evaluation {
                description
                  "State of the evaluation period.";
                uses eval-period-state;
              }  // container evaluation
    
              container udi {
                description "UDI of the system.";
                uses udi;
              }  // container udi
    
              list usage {
                key "entitlement-tag";
                description
                  "List of license (entitlement tag) usage information.
                 This only contains the information for licenses that are in use.";
                uses license-usage;
              }  // list usage
    
              container policy {
                description
                  "Policy information.";
                uses policy-state-grouping;
              }  // container policy
    
              list trust-code {
                key "key_udi";
                description
                  "State of trust code installs for every device in an HA
                 configuration. If no HA then this will be a list of one
                 item.";
                uses trust-code-state-grouping;
              }  // list trust-code
    
              list conversion {
                key "key_udi";
                description
                  "Conversion status for each product instance in an HA
                 configuration";
                uses conversion-state-grouping;
              }  // list conversion
    
              list rum-reports-closed-keys {
                key "rum-report-key";
                description
                  "The list of RUM report keys, for all closed and
                 unacked reports, that can be used to do a
                 lookup in the rum-reports-closed list.";
                uses rum-report-summary-grouping;
              }  // list rum-reports-closed-keys
    
              container rum-ack {
                description
                  "RUM ACK status information";
                uses rum-ack-state-grouping;
              }  // container rum-ack
    
              list factory-purchase {
                key "key_udi";
                description
                  "In an HA configuration this contains information about
                 licenses purchased and installed for each
                 device at manufacturing time.
                 If there is no HA then this will be a list of one item.";
                uses factory-purchase-state-grouping;
              }  // list factory-purchase
    
              container imported-authorizations {
                description
                  "Information about all licenses that are authorized
                 and how they were authorized";
                uses license-auth-status-info;
              }  // container imported-authorizations
            }  // container state-info
          }  // container state
        }  // container licensing
      }  // module cisco-smart-license
    

© 2023 YumaWorks, Inc. All rights reserved.