Smart Licensing Bulk Provisioning Sample App

Introduction

The Smart Licensing Bulk Provisioning Sample App is a sample Python application designed to illustrate how two sets of Cisco APIs can be combined to deliver end-to-end licensing workflow automation. It automates Smart Licensing registration for Cisco Enterprise product instances running IOS-XE. Workflows supported:

  • Product instances with internet connectivity:
    Workflow for registration of Cisco enterprise networking products with Cisco Smart Software Manager (CSSM), which runs in the Cisco cloud. Illustrates how Network Administrators can register a list of devices with CSSM as a batch operation, rather than individually.
  • Product instances without internet connectivity:
    Illustrates how Network Administrators can apply Specific License Reservations (SLRs) to a list of devices that do not have connectivity to CSSM.

Prerequisite

The following are required to run the Sample App:

  • CCO/Cisco.com account (If you don't have one, register)
  • Valid Smart Account (SA) and Virtual Account in CSSM (If you don't have these, contact your Cisco Account Manager)
  • IOS-XE devices running Smart Licensing-enabled image versions, and the relevant licenses for these devices in the SA/VA mentioned above
  • Access to the Cisco MuleSoft API Server (Refer to Installation Guide for more details)

Running the App

This application can be run on a mac OS, Linux or Windows.
The following is required to run the app:

  • Python3 environment
  • NodeJS environment
  • App Source Code

For installation details, go to Installation.

Using the App

Once the set up is complete and the app is running, user needs to use a browser to launch the app.

To perform License Registration using the app, refer to User Guide.

For Frequently Asked Questions - refer to FAQ

Note on Data

The Smart Licensing Bulk Provisioning Sample App leverages a local datastore to enable device communication retries throughout the batch processing.

We recommend that Customers apply their organization’s security best practices to this datastore.

As is the case with any sample source code, developers may opt for alternate batch processing methods as they incorporate the API calls into their own projects.

Local Datastore Specifics:

  • Datastore is SQLite, included in the Python distribution
  • Datastore is implemented as a flat file which may be deleted after batch processing
  • Data stored:
    • Per Device
      • Device IP Address
      • Device login username
      • Device login password
      • Smart Account Name
      • Smart Account Domain
      • Virtual Account Name
      • License Entitlement Tag (for SLR only)
      • License Count (for SLR only)
      • TFTP Server (for SLR only)
      • TFTP Server Path (for SLR only)

Use Case

The Smart Licensing Bulk Provisioning App is a Python application that is designed to use two sets of Cisco APIs to deliver end-to-end licensing workflow automation. It automates Smart Licensing registration for Cisco Enterprise product instances running IOS-XE (Polaris).

As of now customer has to manually fetch token from SSM and configure it on each individual device to register licenses with CSSM. This app automates these steps. Customer can provide a list of devices in CSV file format and the app will register all of the licenses for those devices..

Workflows supported:

  • Product instances with internet connectivity: This workflow is for registration of Cisco enterprise networking products with Cisco Smart Software Manager (CSSM), which runs in the Cisco cloud. Illustrates how network administrators can register a list of devices with CSSM as a batch operation, rather than individually.
  • Product instances without internet connectivity: This workflow illustrates how network administrators can apply Specific License Reservations (SLRs) to a list of devices that do not have connectivity to CSSM.
View code on GitHub

Code Exchange Community

Get help, share code, and collaborate with other developers in the Code Exchange community.View Community
Disclaimer:
Cisco provides Code Exchange for convenience and informational purposes only, with no support of any kind. This page contains information and links from third-party websites that are governed by their own separate terms. Reference to a project or contributor on this page does not imply any affiliation with or endorsement by Cisco.