Skip to main content

ACI communication helper class

Project description

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

import aciClient
import logging

logging.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()
except Exception as e:
    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

import aciClient
import logging

logging.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)
except Exception as e:
    logger.exception("Stack Trace")

Examples

get config

tenants = aciclient.getJson('class/fvTenant.json?order-by=fvTenant.dn|asc')

for mo in tenants:
    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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aciclient-1.8.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aciclient-1.8-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file aciclient-1.8.tar.gz.

File metadata

  • Download URL: aciclient-1.8.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aciclient-1.8.tar.gz
Algorithm Hash digest
SHA256 4e8994db1de6c7d8067d7c20fb8bc7b4001c9dc20e1795645f632d58810b262a
MD5 db496344b0110a656b4ee8d7e63019f6
BLAKE2b-256 1bd769923784a368e58ccf665b7fb35260c56cadd8e89c79a147fbdca7dd3a09

See more details on using hashes here.

Provenance

The following attestation bundles were made for aciclient-1.8.tar.gz:

Publisher: publish.yml on netcloud/aciClient

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aciclient-1.8-py3-none-any.whl.

File metadata

  • Download URL: aciclient-1.8-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aciclient-1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 70475fb6f47ba46f14c062f13c38b5e92ae1fc9dd42952951d416af9c09aa473
MD5 ecee9b53f989f5838186cd253efb4bef
BLAKE2b-256 2a830c410662040088c8eac56e6bbb24eaced8b63eae71f55f3d00857014cd86

See more details on using hashes here.

Provenance

The following attestation bundles were made for aciclient-1.8-py3-none-any.whl:

Publisher: publish.yml on netcloud/aciClient

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page