Working with the Catalyst Center APIs in native Python
catalystcentersdk is a community developed Python library for working with the Catalyst Center APIs. Our goal is to make working with Catalyst Center in Python a native and natural experience.
from catalystcentersdk import api
# Create a CatalystCenterAPI connection object;
# it uses CatalystCenter sandbox URL, username and password, with CatalystCenter API version 2.3.5.3.
# and requests to verify the server's TLS certificate with verify=True.
catalyst = api.CatalystCenterAPI(username="devnetuser",
password="Cisco123!",
base_url="https://sandboxdnac.cisco.com:443",
version='3.1.3.0',
verify=True)
# Find all devices that have 'Switches and Hubs' in their family
devices = catalyst.devices.get_device_list(family='Switches and Hubs')
# Print all of demo devices
for device in devices.response:
print('{:20s}{}'.format(device.hostname, device.upTime))
# Find all tags
all_tags = catalyst.tag.get_tag(sort_by='name', order='des')
demo_tags = [tag for tag in all_tags.response if 'Demo' in tag.name ]
# Delete all of the demo tags
for tag in demo_tags:
catalyst.tag.delete_tag(tag.id)
# Create a new demo tag
demo_tag = catalyst.tag.create_tag(name='catalyst Demo')
task_demo_tag = catalyst.task.get_task_by_id(task_id=demo_tag.response.taskId)
if not task_demo_tag.response.isError:
# Retrieve created tag
created_tag = catalyst.tag.get_tag(name='catalyst Demo')
# Update tag
update_tag = catalyst.tag.update_tag(id=created_tag.response[0].id,
name='Updated ' + created_tag.response[0].name,
description='Catalyst demo tag')
print(catalyst.task.get_task_by_id(task_id=update_tag.response.taskId).response.progress)
# Retrieved updated
updated_tag = catalyst.tag.get_tag(name='Updated catalyst Demo')
print(updated_tag)
else:
# Get task error details
print('Unfortunately ', task_demo_tag.response.progress)
print('Reason: ', task_demo_tag.response.failureReason)
# Advance usage example using Custom Caller functions
# Define the get_global_credentials and create_netconf_credentials functions
# under the custom_caller wrapper.
# Call them with:
# catalyst.custom_caller.get_global_credentials('NETCONF')
# catalyst.custom_caller.create_netconf_credentials('65533')
def setup_custom():
catalyst.custom_caller.add_api('get_global_credentials',
lambda credential_type:
catalyst.custom_caller.call_api(
'GET',
'/dna/intent/api/v1/global-credential',
params={
'credentialSubType': credential_type
}).response
)
catalyst.custom_caller.add_api('create_netconf_credentials',
lambda port:
catalyst.custom_caller.call_api(
'POST',
'/dna/intent/api/v1/global-credential/netconf',
json=[{
"netconfPort": port
}])
)
# Add the custom API calls to the connection object under the custom_caller wrapper
setup_custom()
# Call the newly added functions
catalyst.custom_caller.create_netconf_credentials('65533')
print(catalyst.custom_caller.get_global_credentials('NETCONF'))
Introduction
catalystcentersdk:
- Reads your Catalyst Center credentials from environment variables.
- Reads your Catalyst Center API version from environment variable CATALYST_CENTER_VERSION.
- Controls whether to verify the server's TLS certificate or not according to the verify parameter.
- Reads your Catalyst Center debug from environment variable CATALYST_CENTER_DEBUG. Boolean.
- Wraps and represents all Catalyst Center API calls as a simple hierarchical tree of native-Python methods.
- If your Python IDE supports auto-completion (like `PyCharm_`), you can navigate the available methods and object attributes right within your IDE.
- Represents all returned JSON objects as native Python objects - you can access all of the object's attributes using native *dot.syntax*.
- Automatic Rate-Limit Handling: Catalyst Center will respond with a rate-limit response, which will automatically be caught and handled for you.
- Refresh token: Each time the token becomes invalid, the SDK will generate a new valid token for you.
Installation
catalystcentersdk is available via PIP and the Python Package Index (PyPI). To install catalystcentersdk, simply run this command from your terminal of choice:
Install via PIP
$ pip install catalystcentersdk
Upgrading to the latest Version
$ pip install catalystcentersdk --upgrade
Compatibility matrix
Supported Versions
Catalyst Center version | Python "catalystcentersdk" version |
---|---|
2.3.7.6 | 2.3.7.6.x |
2.3.7.9 | 2.3.7.9.x |
3.1.3.0 | 3.1.3.0.x |
If you are using an older version of SDK, we recommend updating to the latest version.
Documentation
Documentation is available at: https://catalystcentersdk.readthedocs.io
Check out the Quickstart section to dive in and begin using catalystcentersdk.
Release Notes
See the releases_ page for release notes on the incremental functionality and bug fixes incorporated into the published releases.
Questions, Support & Discussion
catalystcentersdk is a community developed and community supported project. If you experience any issues using this package, please report them using the issues_ page.
Contribution
catalystcentersdk_ is a community development projects. You are welcome to provide feedback, thoughts, ideas, and share code contributions. Please see the Contributing
_ guide for more information.
Inspiration
This library is inspired by the webexteamssdk_ library
Changelog
All notable changes to this project will be documented in the CHANGELOG_ file.
The development team may make additional name changes as the library evolves with the Catalyst Center APIs.