Skip to content

Repository files navigation

aciClient

PyPi

A python wrapper to the Cisco ACI REST-API.

Python Version

We support Python 3.10 and up.

Installation

With pip:

pip install aciClient

With uv:

uv add aciClient

Installation for Developing

git clone https://github.com/netcloud/aciClient.git
uv sync --group dev

Usage

Initialisation

Username/password

importaciClientimportlogginglogging.basicConfig(level=logging.INFO)
logger=logging.getLogger(__name__)
proxies= {
'http': 'socks5://127.0.0.1:1080',
'https': 'socks5://127.0.0.1:1080'
}
aciclient=aciClient.ACI(apic_hostname, apic_username, apic_password, refresh=False, proxies=proxies)
try:
aciclient.login()
aciclient.getJson(uri)
aciclient.postJson(config)
aciclient.deleteMo(dn)
aciclient.logout()
exceptExceptionase:
logger.exception("Stack Trace")

For automatic authentication token refresh you can set variable refresh to True

aciclient=aciClient.ACI(apic_hostname, apic_username, apic_password, refresh=True) 

Certificate/signature

importaciClientimportlogginglogging.basicConfig(level=logging.INFO)
logger=logging.getLogger(__name__)
aciclient=aciClient.ACICert(apic_hostname, path_to_privatekey_file, certificate_dn)
try:
aciclient.getJson(uri)
aciclient.postJson(config)
aciclient.deleteMo(dn)
exceptExceptionase:
logger.exception("Stack Trace")

Examples

get config

tenants=aciclient.getJson('class/fvTenant.json?order-by=fvTenant.dn|asc')
formointenants:
print(f'tenant DN: {mo["fvTenant"]["attributes"]["dn"]}')

post config

config= {
"fvTenant": {
"attributes": {
"dn": "uni/tn-XYZ"
}
}
}
aciclient.postJson(config)

delete MOs

aciclient.deleteMo('uni/tn-XYZ')

create snapshot

You can specify a tenant in variable target_dn or not provide any to do a fabric-wide snapshot.

aci.snapshot(description='test', target_dn='/uni/tn-test')

Subscriptions

You can subscribe to an ACI object with websocket and get near-instant updates on-change.
To use the subscriptions you have to:

  • Login to ACI
  • Open websocket to ACI
  • Subscribe to an ACI object via aciClient.subscribe
  • Refresh subscription to an ACI object via aciClient.subscription_refresh
  • Handle messages sent from ACI through websocket

You can find example code here: examples/subscription.py

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to this project.

Authors

  • Marcel Zehnder - Initial work
  • Andreas Graber - Migration to open source
  • Richard Strnad - Paginagtion for large requests, various small stuff
  • Dario Kaelin - Added snapshot creation

License

This project is licensed under MIT - see the LICENSE.md file for details.

About

A python wrapper to the Cisco ACI REST-API.

Resources

Contributing

Stars

5 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages