Skip to main content

Annet Netbox client

Project description

Annetbox - Netbox client used by annet and related projects

This project implements subset of Netbox API methods

Usage

  1. Install sync or async version
pip install 'annetbox[sync]'
  1. Create client instance according to your netbox version (only some are supported)
from annetbox.v37.client_sync import NetboxV37

netbox = NetboxV37(url="https://demo.netbox.dev", token="YOUR NETBOX TOKEN")
  1. Call methods
res = netbox.dcim_devices(limit=1)

Configuration

Verbose logging

For sync client

import http.client
import logging

logging.basicConfig()
http.client.HTTPConnection.debuglevel = 1
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

Custom SSL context

  1. Create context
import ssl

context = ssl.create_default_context(cafile="path/to/cacert.pem")
  1. Pass it to client
netbox = NetboxV37(url=url, token=token, ssl_context=context)

Development

Adding new methods

  1. Read openapi spec
  2. Edit models.py
  3. Edit client_async.py, do not forget adding limit/offset
  4. Convert async code to sync
python transform_to_sync.py src/annetbox/v37/client_async.py > src/annetbox/v37/client_sync.py
python transform_to_sync.py src/annetbox/v41/client_async.py > src/annetbox/v41/client_sync.py
python transform_to_sync.py src/annetbox/v42/client_async.py > src/annetbox/v42/client_sync.py

Integration tests

Integration tests are declarade in tests/integration/definitions.yaml. They are defined as call to specific client method:

  #
  # client.dcim_cables(limit=5)
  #
  - id: dcim_cables_01
    method: dcim_cables
    versions: ["v37", "v41", "v42"]
    args:
      limit: 5

Also supported chaining two calls:

  #
  # client.dcim_console_port(
  #   id=client.dcim_console_ports(limit=5)[0]
  # )
  #
  - id: dcim_console_port_01
    method: dcim_console_port
    versions: ["v37", "v41", "v42"]
    args:
      id: !from_call
        call: dcim_console_ports
        args: {limit: 5}
        extract: results[0].id

Frozen snapshot of data is stored in tests/integration/fixtures/v<client version>/<test case>/:

  • expected.yaml: holds name of a method, passed args and results.
  • cassette.yaml: holds raw netbox query and response generated by vcrpy lib.

Adding/modifying a test

  1. Spin up local netbox instances make docker (once)
  2. Edit tests/integration/definitions.yaml
  3. Run make fixtures and commit new generated files.

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

annetbox-1.0.0rc2.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

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

annetbox-1.0.0rc2-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file annetbox-1.0.0rc2.tar.gz.

File metadata

  • Download URL: annetbox-1.0.0rc2.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for annetbox-1.0.0rc2.tar.gz
Algorithm Hash digest
SHA256 c83c1ed827329c59c8c77a822baa7da22c0d62b6548f1dedaf20b7767647f936
MD5 95e4d8c728953fe146f7d42aace2f35a
BLAKE2b-256 2e5cc364d70bbaeafe66af8d6816e7bb260c415e14824a08272f3a90bddb4040

See more details on using hashes here.

Provenance

The following attestation bundles were made for annetbox-1.0.0rc2.tar.gz:

Publisher: publish-to-pypi.yml on annetutil/annetbox

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

File details

Details for the file annetbox-1.0.0rc2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for annetbox-1.0.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 60b313b686653484c076bc447ec96e34168dbef15ad4e65f1e14b7d311d9274f
MD5 43b5f889f4b166486e7c0c81188f0af4
BLAKE2b-256 0f1f5caef4270622f562f2cc24401b79f6b8fa04e6f9f56809bd73544e8749ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for annetbox-1.0.0rc2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on annetutil/annetbox

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