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.
For full documentation please see IP Fabric Documentation Portal.
IP Fabric
IP Fabric is a vendor-neutral network assurance platform that automates the holistic discovery, verification, visualization, and documentation of large-scale enterprise networks, reducing the associated costs and required resources whilst improving security and efficiency.
It supports your engineering and operations teams, underpinning migration and transformation projects. IP Fabric will revolutionize how you approach network visibility and assurance, security assurance, automation, multi-cloud networking, and trouble resolution.
Integrations or scripts should not be installed directly on the IP Fabric VM unless directly communicated from the IP Fabric Support or Solution Architect teams. Any action on the Command-Line Interface (CLI) using the root, osadmin, or autoboss account may cause irreversible, detrimental changes to the product and can render the system unusable.
Bugs
A bug has been identified when ~2,000 requests are being made to the API. The underlining issue seems to be with the
implementation of http2. The workaround is to set http2=False in the IPFClient class. Example error:
httpx.RemoteProtocolError: <ConnectionTerminated error_code:ErrorCodes.NO_ERROR, last_stream_id:1999, additional_data:None>
Notices
Please note IP Fabric's new API Versioning Policy.
IP Fabric team is migrating from httpx to niquests in IP Fabric SDK v7.5.0.
This is outside of a major release however the IP Fabric version 7.5.0 will include our new database and will require
through testing to ensure compatibility.
This should not impact any existing automations unless you are using httpx Client in your code. This is a private
attribute of the IP Fabric IPFClient class. The HTTP method functions did not appear to require any changes so using
IPFClient().get(), IPFClient().post(), etc. will continue to work as expected we expect.
Reasons:
- Our team has opened an issue with
httpxto address the bug above and have not received any support after 10 months. - Last release of
httpxwas in December 2024 compared toniquestswhich has more frequent releases. - Lacks many features compared to
niquests. - Will enable our team to explore HTTP2 multiplexing API requests.
niquestsis a maintained fork ofrequestsso should be familiar to most Python users.
Upcoming Deprecation Notices
v8.0.0
Python 3.9 Removed
Python 3.9 (End of Life 2025-10) will be removed in v8.0.0. Please ensure you are using Python 3.10+.
Moved Models
The following Models have moved and old locations removed in v8.0.0:
ipfabric.settings.vendor_api_models.*->ipfabric.models.vendor_apiipfabric.settings.discovery.Networks->ipfabric.models.discovery.Networksipfabric.settings.seeds.SeedList->ipfabric.models.discovery.SeedListipfabric.settings.authentication.[Credential, CredentialList, Privilege, PrivilegeList]->ipfabric.models.authentication
Login IP Columns Removed
In ipfabric>=v7.3.0 column loginIp was replaced with loginIpv4 and loginIpv6 and in v8.0.0 it is changed to a text field return IPv4 or IPv6.
The current loginIp column are removed from these tables:
- Inventory > Devices:
tables/inventory/devices - Discovery Snapshot > Connectivity Report:
tables/reports/discovery-tasks - Management > Discovery History:
tables/inventory/discovery-history - Management > Changes:
tables/management/changes/devicestables/management/changes/managed-devs
- Management > Saved Config Consistency:
tables/management/configuration/saved - Technology > Management > Telnet access:
tables/security/enabled-telnet
Versioning
Please note IP Fabric's new API Versioning Policy.
Semantic Versioning: Major.Minor.Patch
Starting with IP Fabric version 5.0.x the ipfabric SDK is recommended to match your IP Fabric major and minor version.
We will try to keep some backwards compatability (SDK version 6.9.x should work with IP Fabric API 6.8) however new
features may break some functionality. By ensuring that your ipfabric SDK's match your IP Fabric major and minor
version will ensure compatibility and will continue to work.
The Patch version of the SDK is used for bug fixes and new features that are compatible with the major and minor version.
Defaulted to Streaming Data
See Notices for full information.
- 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.
- CSV Export
- 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, however is required when filtering based on Intents (colors).
from ipfabric import IPFClient
ipf = IPFClient(streaming=True)
dev = ipf.inventory.devices.all()
print(type(dev)) # list
dev_csv = ipf.fetch_all('tables/inventory/devices', export='csv')
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
To use export='df' on some methods please install pandas with ipfabric
pip install ipfabric[pd]
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ipfabric-7.9.1.tar.gz.
File metadata
- Download URL: ipfabric-7.9.1.tar.gz
- Upload date:
- Size: 252.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: poetry/2.3.2 CPython/3.12.12 Linux/6.12.63+deb13-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0367139c08261ea7fb7aa6c96edc363a64a1565ee91034b71db49034fff7776
|
|
| MD5 |
dace32a860270f080cb340a1567865a8
|
|
| BLAKE2b-256 |
8841d1d10f506fb1cbbfbcd5ff7c959e78387146b7b6acea6cde7d704e9573bc
|
File details
Details for the file ipfabric-7.9.1-py3-none-any.whl.
File metadata
- Download URL: ipfabric-7.9.1-py3-none-any.whl
- Upload date:
- Size: 300.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: poetry/2.3.2 CPython/3.12.12 Linux/6.12.63+deb13-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
157fa89a1e65d8488a07a280364faaf87034455ea42dff5c74308a7bf5c00cd2
|
|
| MD5 |
030769d018bcdf4d996f1540dca3b53d
|
|
| BLAKE2b-256 |
c199aabf0897be2a55b7b97255608d7d1a8edebc47bf900a309b2ee67cbc9175
|