Forward Field Integration — Forward Networks SSoT app for Nautobot
Project description
Forward Field Integration
Forward Field Integration is a Nautobot 3.1 app that syncs Forward Networks
inventory, IPAM, and cloud data into Nautobot through nautobot-ssot.
It uses an SSoT job for run history, dry-run semantics, and support-bundle capture, with support for Forward async query execution.
Release Compatibility
| Plugin | Nautobot | nautobot-ssot | Forward | Status |
|---|---|---|---|---|
0.1.1 |
3.1.x |
4.4 - <5.0 compatible |
26.6+ for async execution |
Current |
Overview
- Plugin metadata and app wiring under
forward_nautobot/__init__.py - SSoT data source entrypoint and job registration in
forward_nautobot/jobs.py - Forward API client with snapshot lookup, query resolution, and paging
- Query identity resolution (
query_path/query_id) to a concrete runtime query ID - Contracted query set shipped with the plugin in
forward_nautobot/integrations/forward/queries/*.nqe - Planner and adapters for raw source rows and planned Nautobot writes
- Optional dry-run mode, including support-bundle collection and replay
- Support-bundle diagnostics with safe redaction options
- Profile persistence for repeated demo/demo-friendly runs
- SSoT UI pages for overview, configuration, status, diagnostics, and slice detail
- CI gates for query contracts, wheel contents, sensitive-content checks, and release state
GitHub Actions CI runs these checks on every push and release.
Supported Model Slices
The following model slugs are currently in the shipped scope.
| Slug | Nautobot Scope | Required Input Fields | Default | Notes |
|---|---|---|---|---|
locations |
dcim.location |
name |
enabled | Core seed set |
platforms |
dcim.platform |
name |
enabled | Requires location scope |
device_types |
dcim.devicetype |
name |
enabled | Requires location scope |
devices |
dcim.device |
name |
enabled | Depends on locations, platforms, device_types |
interfaces |
dcim.interface |
device, name |
disabled | Depends on devices |
vlans |
ipam.vlan |
site, vid |
disabled | Depends on locations |
vrfs |
ipam.vrf |
name |
disabled | Depends on devices |
ipv4_prefixes |
ipam.prefix |
prefix, vrf |
disabled | Depends on vrfs |
ipv6_prefixes |
ipam.prefix |
prefix, vrf |
disabled | Depends on vrfs |
ip_addresses |
ipam.ipaddress |
device, interface, address, vrf |
disabled | Depends on devices,interfaces,vrfs |
inventory_items |
dcim.inventoryitem |
device, name |
disabled | Depends on devices |
modules |
dcim.module |
device, module_bay |
disabled | Depends on devices |
Installation
Install
From wheel or source distribution:
pip install /path/to/nautobot_app_ssot_forward-0.1.1-py3-none-any.whl
Install dependencies before loading in Nautobot:
pip install nautobot==3.1.* nautobot-ssot>=4.4
Enable plugin
In nautobot_config.py:
PLUGINS = [
"forward_nautobot",
]
Run migrations:
nautobot-server migrate
Collect static and run the server as usual for your Nautobot deployment.
First Run
-
Seed a deterministic demo profile and fixture:
nautobot-server forward_fixture_seed -
Open the plugin configuration page.
-
Confirm or create at least one saved profile with:
name,base_url,username,password,network_idsnapshot_id(defaultlatestProcessed)- one or more model slugs in
enabled_models query_contract_version(defaultv1)
-
Run the Forward SSoT job and choose that profile.
-
Review the diagnostic and coverage views before applying writes.
The plugin keeps profile values in the Nautobot DB and reuses them for preview and non-preview runs.
Configuration Fields
The profile form includes these fields:
base_url(URL)usernamepasswordverify_tls(true/false, defaulttrue)network_idsnapshot_id(latestProcessedor explicit snapshot ID)enabled_models(comma-separated slugs)query_contract_version(currentlyv1)default_location_type_namedefault_location_status_namedefault_device_role_namedefault_device_status_namedelete_policy(ignore,mark_inactive,delete)is_default
The plugin uses httpx with trust_env=True, so environment proxy settings are
respected automatically. Configure standard HTTP_PROXY / HTTPS_PROXY / NO_PROXY
variables on the Nautobot process to route Forward API traffic through enterprise
proxies when needed.
Async NQE and Query Identity
All full-snapshot query execution uses Forward 26.6+ async query-ID execution. Inline/raw NQE execution is not supported at runtime; publish bundled NQEs into the Forward repository and reference them by query path or direct query ID.
- Runtime query references are resolved on demand from repository query paths.
- Live and fixture paths stay versioned and validated in CI through query-contract checks.
- Snapshot resolution supports explicit snapshot IDs and
latestProcessed.
Commands
Management commands
nautobot-server forward_fixture_seed
nautobot-server forward_demo_seed
nautobot-server forward_dry_run <fixture.json> \
--sample-size 5 \
--sharing-profile external \
--output /tmp/replay.json \
--shared-output /tmp/replay-shared.json
Local Validation
Unit and integration testing commands:
./.venv_local_test/bin/pytest -q
./.venv_local_test/bin/pytest -q -m "not integration"
./.venv_local_test/bin/pytest -q -m integration
Run live integration tests only when these are set:
FORWARD_LIVE_BASE_URLFORWARD_LIVE_USERNAMEFORWARD_LIVE_PASSWORDFORWARD_LIVE_NETWORK_ID- optional
FORWARD_LIVE_VERIFY_TLS - optional
FORWARD_LIVE_SNAPSHOT_ID(defaults tolatestProcessed) - optional
FORWARD_LIVE_ASYNC_QUERY_PATH(defaults to/forward_nautobot_validation/forward_devices)
Release-style validation:
python -m build
python scripts/check_sensitive_content.py --all-history
python scripts/check_harness.py
python scripts/check_query_contracts.py
python scripts/check_wheel_contents.py
python scripts/check_release_state.py
Documentation
- Architecture
- Architecture flow — end-to-end diagrams
- Project Knowledge
- Validation Matrix
- Security Policy
- Release/goal plans
- Queries
- Plugin package config
Release Readiness
Run before tag/release:
python -m pytest -q -m "not integration"python -m buildpython scripts/check_sensitive_content.py --all-historypython scripts/check_harness.pypython scripts/check_query_contracts.pypython scripts/check_wheel_contents.pypython scripts/check_release_state.py
The live validation surface should include:
- preview/sync on
locations - preview/sync on
deviceswith explicitforward_location_names
For local live-dataset work, keep credentials/snapshots out of source code and document them only in your private environment.
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 nautobot_app_ssot_forward-0.5.0.tar.gz.
File metadata
- Download URL: nautobot_app_ssot_forward-0.5.0.tar.gz
- Upload date:
- Size: 95.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f683937cf3227eb44460e7e10fe19505157e194bfc4f3eeb990047d32878b0e
|
|
| MD5 |
895fd34465f108c59e36d488443146f0
|
|
| BLAKE2b-256 |
478f36c39aa7c7c0e7e7a084145a88ff72c627df104746a541ab656ebfa5809b
|
Provenance
The following attestation bundles were made for nautobot_app_ssot_forward-0.5.0.tar.gz:
Publisher:
release.yml on forwardnetworks/nautobot-app-ssot-forward
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nautobot_app_ssot_forward-0.5.0.tar.gz -
Subject digest:
6f683937cf3227eb44460e7e10fe19505157e194bfc4f3eeb990047d32878b0e - Sigstore transparency entry: 2138050961
- Sigstore integration time:
-
Permalink:
forwardnetworks/nautobot-app-ssot-forward@b0a967bcc1cbc3ed98575ef075b82f105a919fa8 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/forwardnetworks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b0a967bcc1cbc3ed98575ef075b82f105a919fa8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file nautobot_app_ssot_forward-0.5.0-py3-none-any.whl.
File metadata
- Download URL: nautobot_app_ssot_forward-0.5.0-py3-none-any.whl
- Upload date:
- Size: 123.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4281f93fd2494e2de9e43e32b9469109ed7ca0f8a9bad6e44653dba2b6f7acff
|
|
| MD5 |
4032c406c7e8554ec72105c737903667
|
|
| BLAKE2b-256 |
dae4675a93de292677339271ece6231eae43e09ea7465886604ce95b799c18bd
|
Provenance
The following attestation bundles were made for nautobot_app_ssot_forward-0.5.0-py3-none-any.whl:
Publisher:
release.yml on forwardnetworks/nautobot-app-ssot-forward
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nautobot_app_ssot_forward-0.5.0-py3-none-any.whl -
Subject digest:
4281f93fd2494e2de9e43e32b9469109ed7ca0f8a9bad6e44653dba2b6f7acff - Sigstore transparency entry: 2138051042
- Sigstore integration time:
-
Permalink:
forwardnetworks/nautobot-app-ssot-forward@b0a967bcc1cbc3ed98575ef075b82f105a919fa8 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/forwardnetworks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b0a967bcc1cbc3ed98575ef075b82f105a919fa8 -
Trigger Event:
push
-
Statement type: