Skip to main content

Python package for interacting with IP Fabric

Project description

IP Fabric

IPFabric is a Python module for connecting to and communicating against an IP Fabric instance.

About

Founded in 2015, IP Fabric develops network infrastructure visibility and analytics solution to help enterprise network and security teams with network assurance and automation across multi-domain heterogeneous environments. From in-depth discovery, through graph visualization, to packet walks and complete network history, IP Fabric enables to confidently replace manual tasks necessary to handle growing network complexity driven by relentless digital transformation.

v6.3.1 Deprecation Notices

In ipfabric>=v6.3.1 Python 3.7 support will be removed. This was originally planned for v7.0.0 however to add new functionality of Pandas Dataframe we are required to move this forward.

Python 3.7 is now End of Life as of June 27th 2023

v7.0.0 Deprecation Notices

In ipfabric>=v7.0.0 the following will be deprecated:

  • ipfabric_diagrams package will move to ipfabric.diagrams
  • The use of token='<TOKEN>' or username='<USER>', password='<PASS>' in IPFClient() will be removed:
    • Token: IPFClient(auth='TOKEN')
    • User/Pass: IPFClient(auth=('USER', 'PASS'))
    • .env file will only accept IPF_TOKEN or (IPF_USERNAME and IPF_PASSWORD) and not auth

Versioning

Starting with IP Fabric version 5.0.x the python-ipfabric and python-ipfabric-diagrams will need to match your IP Fabric version. The API's are changing and instead of api/v1 they will now be api/v5.0.

Version 5.1 will have backwards compatability with version 5.0 however 6.0 will not support any 5.x versions. By ensuring that your ipfabric SDK's match your IP Fabric Major Version will ensure compatibility and will continue to work.

Streaming Data Support

In IP Fabric version 6.3.0 the option to return table data using a streaming GET request instead of a paginated POST request has been added. This will be defaulted to True in the next Minor bump of the SDK (v6.4.0 or v7.0.0).

FOR CUSTOMERS USING RBAC THIS IS NOT RECOMMENDED. A bug has been identified where custom RBAC Policies do not allow you to create a Policy to the GET endpoints and only admins can query data. This is to be fixed in IP Fabric 6.3.1. THIS AFFECTS CSV EXPORT AND STREAMING JSON EXPORT.

  • GET URL is limited to 4096 characters, complex queries and filters could go over this limit; however in testing it was very difficult to reach this.
  • Since request has been changed from httpx.post to httpx.stream no changes in timeout was required in testing.
  • Performance Testing on 1.7M rows:
    • POST requires 1,719 requests (1k rows per request) ~ 82 minutes
    • Streaming GET requires 1 request ~ 6.2 minutes
  • No degradation in navigating the GUI including viewing table data or creating diagrams.
  • Supports csv and json exports:
    • CSV
      • Only supported with a streaming GET request and return a bytes string of data in the Python SDK.
      • It will also convert times to human-readable format.
      • reports (returning Intent Check data) is not supported with CSV export
    • JSON provides same support as POST.
from ipfabric import IPFClient
ipf = IPFClient(streaming=True)

dev = ipf.inventory.devices.all()
dev_2 = ipf.fetch_all('tables/inventory/devices')
print(dev == dev_2)  # True
print(type(dev))  # list 

dev_csv = ipf.inventory.devices.all(export='csv')
dev_csv_2 = ipf.fetch_all('tables/inventory/devices', export='csv')
print(dev_csv == dev_csv_2 ) # True
print(type(dev_csv))  # bytes 

# Timezone can be changed for CSV export; see `ipfabric.tools.shared.TIMEZONES`
dev_csv_tz = ipf.inventory.devices.all(export='csv', csv_tz='UTC')

# If specifying to return reports and CSV request will drop reports input and use GET
dev_csv_reports = ipf.fetch_all('tables/inventory/devices', reports=True, export='csv')
"""CSV export does not return reports, parameter has been excluded."""
print(type(dev_csv_reports))  # bytes

# If URL exceeds 4096 characters the following exception will be raised:
# raise InvalidURL(f"URL exceeds max character limit of 4096: length={len(url)}.")

Installation

pip install ipfabric

Introduction

Please take a look at API Programmability - Part 1: The Basics for instructions on creating an API token.

Most of the methods and features can be located in Examples to show how to use this package. Another great introduction to this package can be found at API Programmability - Part 2: Python

Diagrams

Diagramming in IP Fabric version v4.3 and above has been moved to it's own package.

Diagramming will move back to this project in v7.0

pip install ipfabric-diagrams

Authentication

Username/Password

Supply in client:

from ipfabric import IPFClient
ipf = IPFClient('https://demo3.ipfabric.io/', auth=('user', 'pass'))

Token

from ipfabric import IPFClient
ipf = IPFClient('https://demo3.ipfabric.io/', auth='token')

Environment

The easiest way to use this package is with a .env file. You can copy the sample and edit it with your environment variables.

cp sample.env .env

This contains the following variables which can also be set as environment variables instead of a .env file.

IPF_URL="https://demo3.ipfabric.io"
IPF_TOKEN=TOKEN
IPF_VERIFY=true

Or if using Username/Password:

IPF_URL="https://demo3.ipfabric.io"
IPF_USERNAME=USER
IPF_PASSWORD=PASS

Development

Poetry Installation

IPFabric uses Poetry to make setting up a virtual environment with all dependencies installed quick and easy.

Install poetry globally:

pip install poetry

To install a virtual environment run the following command in the root of this directory.

poetry install

To run examples, install extras:

poetry install ipfabric -E examples

Test and Build

poetry run pytest
poetry build

Prior to pushing changes run:

poetry run black ipfabric
poetry update

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

ipfabric-6.3.0.tar.gz (133.6 kB view details)

Uploaded Source

Built Distribution

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

ipfabric-6.3.0-py3-none-any.whl (158.1 kB view details)

Uploaded Python 3

File details

Details for the file ipfabric-6.3.0.tar.gz.

File metadata

  • Download URL: ipfabric-6.3.0.tar.gz
  • Upload date:
  • Size: 133.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.9.9 Windows/10

File hashes

Hashes for ipfabric-6.3.0.tar.gz
Algorithm Hash digest
SHA256 3364bb5b5aba053e1de964cab9777a774aaa5d50628f4acaf15a2a04f087b340
MD5 854219e07e40512555461364d43576b0
BLAKE2b-256 8c5e3e3f0a13b0b06ac5d992096e28bbc61f7b5d5cf995cdd003e6f95665f62a

See more details on using hashes here.

File details

Details for the file ipfabric-6.3.0-py3-none-any.whl.

File metadata

  • Download URL: ipfabric-6.3.0-py3-none-any.whl
  • Upload date:
  • Size: 158.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.9.9 Windows/10

File hashes

Hashes for ipfabric-6.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5be5365ed896b8a20ab38f15ee7b707d47f3353102e8520df3b1a05a81a6daba
MD5 b6fd32af655c7dd434a252456e82782c
BLAKE2b-256 c74e8fb67c40c5a9bc04a45d0b78ee7763a9cf9b85b9a186af7ae34181359675

See more details on using hashes here.

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