Releases: norfablabs/NORFAB
Releases · norfablabs/NORFAB
Release list
0.20.3
0.20.3
BUGS
- Fixing nornir tests nfcli shell to pass verbose_on_fail to results processing, to make sure return results as table even when have failed tests.
FEATURES
- Added FastMCP tool call guardrails to reject unsafe MCP tool calls before NorFab job dispatch. Guardrails can be defined by tasks or FastMCP inventory, support
regex,contains, andequalschecks, can disable built-in task guardrails withtools.disable_builtin_guardrails, and are visible throughshow fastmcp tools.
ENHANCEMENTS
- Extended Nornir worker statistics with SID, NetBox, Containerlab inventory load statuses and managed
nornir_hostscount. - Enhanced NetBox worker REST filtering to route task-side
pynetbox.filter()calls through adaptivebulk_filter, automatically chunking long list filters to avoid URI length errors while preserving query options such asfields,limit, andordering. - Improved result status coloring for nornir test task
- Nornir show hosts table added index column
- Enhanced Nornir
clitask MCP metadata with default guardrails that block reboot, reload, restart, configuration-mode, shell-mode, OS/image/package operations, outboundssh/telnet, commit, delete, clear, debug, reset, zeroize, and related state-changing commands when called through FastMCP. - Enhanced Nornir
cfgtask MCP metadata with default guardrails that block reboot, reload, restart,do ...andrun ...operational escapes, delete, erase, zeroize, and outboundssh/telnetcommands when called through FastMCP.
Full Changelog: 0.20.2...0.20.3
0.20.1
0.20.1
ENHANCEMENTS
- Improved NFCLI ERROR status highlighting to make it red color
- Added interactive review to Netbox sync tasks;
with_review=Trueruns a
dry-run preview before prompting and only applies changes after review. - Enhancing nfcli terminal event output, added header, footer job info, shortened timestamps, removed uuid from every event, its only in header, additional summary info displayed in footer now.
- Improving file tab completion choice handling by returning top folders only not all files in the tree
- Added device manufacturer, platform and type to Netbox inventory transform function
- Updated Nornir NFCLI table rendering to use PICLE table outputter and removed
nornir-saltfromnfcliinstallation extras. - Added
nameargument to NFAPImake_client()and deterministic default client names using the entry script and current folder hash to reduce client identity and local job database collisions. - Added support to pass on job object to RetryRunner for connection events logging
BUGS
- Fixed Netbox worker API calls to use retry-enabled sessions for status, REST, GraphQL, and
pynetboxrequests to reduce intermittent failures from transient Netbox gateway errors. - Inventory loading fixed to correctly calculate
base_dirwheninventory_data used - Fixed Netbox
get_devicesfiltering with large single-key list filters to avoid URI length errors. - Fixing Nornir parse TTP to not exit the job if have some hosts failed.
- Fixing Netbox inventory sync to not exit on devices that failed collecting live data, skip and continue processing the rest instead.
CHANGES
- Changed nornir parse ttp default mode to non-strict
- Changed netbox sync tasks default timeout to 600
Full Changelog: 0.20.0...0.20.1
0.20.0
0.20.0
FEATURES
- Added Netbox
sync_device_inventorytask to synchronize device chassis serial numbers and installed modules from live Nornir inventory. The task supports module type and module bay creation, pattern-based inventory mappings, custom Python transformers, filtering, deletion controls, and dry-run previews. - Added support for prompts to mcp service, added two prompts to Nornir cli task.
- Nornir worker adding SNMP tasks to support get, walk, set operation using SNMP v1/2/3
CHANGES
- Removed the Netbox
sync_device_factstask. Device serial number synchronization is now handled bysync_device_inventoryusing the live inventory record whose slot ischassis. - Extended Netbox
sync_allto run device inventory synchronization before interfaces, MAC addresses, IP addresses, and BGP peerings. Addedinventory_*mapping, transformer, filtering, and module creation arguments;process_deletionsandmessageare shared across the applicable synchronization stages. - Updating docker deployment files
BUGS
- Adding deepdiff package to
fullinstallation extras, Netbox worker would fail to start if not installed. - Changing
mcppackage python dependencies to remove python version specification of<3.14as it failed to get installed for Py3.14 - Fixing Netbox Inventory URL handling when it ends with forward slash
- Fixing
fullextras to enlist all dependencies
Full Changelog: 0.19.0...0.20.0
0.19.0
0.19.0
FEATURES
- Added device check-sync task to Netbox service to check if device interfaces, ips, bgp, mac are in sync with Netbox
- Added device sync-all task to sync all data from live device into Netbox
- Adding powershell installation script and updating install instructions - this script install Norfab going through interactive installation process.
- Adding
run_shell_cmdtask to workers to run arbitrary shell command on the host, adding picle shellworkers run-shell-command ..command too - Adding
ignore_peer_rangesargument to sync bgp peerings task - Adding bearer token authentication support for fastmcp service, together with related task and nfcli shell commands
- Adding
NFPClient.submit_job()API returning a blocking job future object withevents(),result()andsend_response()methods for event-aware and interactive client workflows
ENHANCEMENTS
- Improving netbox Sync BGP peerings task to make better use of lookup cache for asn, vrf, rir, ip objects resolutions
- MCP service policy now enforced for tool calls not only for discovery
- Netbox sync device interfaces improved VLAN handling - now it creates vlan if its missing, added
vlan_groupargument to specify group to associate with vlan, otherwise it is associated with device site. Vlan retrieval for existing vlan helper is either via group, device site or global. - Netbox service sync IP task updated to honor anycast role for existing Netbox IPs and re-use role anycast for discovered IPs
- Refactoring bgp peerings sync to support name template being a jinja2 template string as well as adding extra variables to renderer context
- Enhancing bgp syn task to use 5 tuple to represent bgp session identity instead of name, allowing to detect session name changes.
BUGS
- Fixing ip sync task bulk update list construction, making sure IDs are always present for items
- Fixing IP sync prefixes filtering using
bulk_filter - Fixing IP creation logic to check existing ip first, and if not found proceed with find a suitable prefix
- Fixing
resolve_iphelper function to pickup longest prefix length prefix to create IP in - Fixing
resolve_vrffunction to detect when multiple VRF with same name present in netbox and to emit warning message to the user
CHANGES
- Adding Pydantic task input and output models for all services, refactoring NFCLI shells to use these models.
- Moving pydantic models to dedicated per-worker files.
- Refactoring core client and worker job handling to use future-based job tracking, normalized job events and client input request/response flow;
run_job()remains available for synchronous job execution - Dependencies updates:
- tornado 6.5.5 -> 6.5.7
- pydantic 2.12.5 -> 2.13.4
- orjson 3.11.7 -> 3.11.9
- picle 0.12.0 -> 0.12.2
- rich 14.3.3 -> 15.0.0
- pyreadline3 3.5.4 -> 3.5.6
- netmiko 4.6.0 -> 4.7.0
- nornir-scrapli 2025.01.30 -> 2025.1.30
- ntc-templates 9.0.0 -> 9.1.0
- requests 2.32.5 -> 2.34.2
- scrapli-community 2025.01.30 -> 2025.1.30
- lxml 6.0.2 -> 6.1.1
- textual 8.1.1 -> 8.2.7
- mcp 1.27.1 -> 1.27.2
- langchain 1.2.12 -> 1.3.4
- langchain-community 0.4.1 -> 0.4.2
- langchain-ollama 1.0.1 -> 1.1.0
- ollama 0.6.1 -> 0.6.2
- datamodel-code-generator 0.55.0 -> 0.61.0
- langgraph-checkpoint-sqlite 3.0.3 -> 3.1.0
- pynetbox 7.6.1 -> 7.7.0
- deepdiff 9.0.0 -> 9.1.0
- fastapi 0.135.1 -> 0.136.3
- uvicorn 0.42.0 -> 0.49.0
- python-multipart 0.0.22 -> 0.0.32
Full Changelog: 0.18.1...0.19.0
0.18.1
0.18.1
CHANGES
- Added
CreateIpInputPydantic model for Netboxcreate_iptask input validation and used it asinputargument for@Taskdecorator - Added
CreateIpBulkInputPydantic model for Netboxcreate_ip_bulktask input validation and used it asinputargument for@Taskdecorator - Replaced
**kwargsin Netboxcreate_ip_bulktask with explicit typed arguments matchingcreate_ipsignature - Enhanced IP allocation logic for allocating next available prefix when child prefix already contains IPs in Netbox
- Enhanced create ip logic for detecting IP address assigned object
- Changing norfab to produce json schema for tasks by model fields names instead of aliases
by_alias=False. - Updating nornir parse napalm to use nornir
tasktask - Fix create prefix task to make sure to check if /31 subnet can be allocated even if available prefixes return /30
- Create ip task enhanced to handle case when multiple parent prefixes matched in Netbox by prefix filter
- Fix create ip when create peer ip is true, check if mask len 32 or 128 raise error in that case - can not create peer ip for /32 or /128 prefixes
- Adding
is_timed_outmethod to worker Job object to alow monitor job time out from inside tasks
FEATURES
- Adding brief mode to get interfaces to return only essential interfaces data
Full Changelog: 0.18.0...0.18.1
0.18.0
0.18.0
BUGS
- Fixing Netbox prefix allocation with parent filtering by dictionary
- Fixing netbox crud tasks to use Pydantic model for input validation
- Enhancing netbox worker filtering for large number of items to avoid 414 error
CHANGES
- Complete refactoring of Netbox
sync_device_interfacestask - Complete refactoring of Netbox
sync_device_iptask - Dependency updates:
- mcp 1.26.0 -> 1.27.1
FEATURES
- Created Netbox task
sync_mac_addresses - Enhancing streamlit web ui network map application to support 2d and 3d view of the topology - support Netbox data, LLD and BGP data overlay on single graph
- Adding Netbox
get_topologytask to fetch devices and links in topology format
Full Changelog: 0.17.3...0.18.0
0.17.3
0.17.3
ENHANCEMENTS
- Improving logic for local ip sourcing for BGP sessions
BUGS
- Fixing BGP sessions name forming for Netbox sync bgp tasks
- Fixing deepdiff dependency for Netbox service
Full Changelog: 0.17.2...0.17.3
0.17.2
0.17.2
FEATURES
- Adding new Netbox
sync_bgp_peeringstask to synchronize BGP sessions between live devices and NetBox - Adding new Netbox
create_bgp_peeringstask to create BGP peerings - Adding new Netbox
update_bgp_peeringstask to update BGP peerings - Nornir Test markdown results adding results summary table when extensive is True
Full Changelog: 0.17.1...0.17.2
0.17.1
0.17.1
CHANGES
- Refactored Netbox get_connections task, remove
include_virtualarguments,cablesargument, now these data always retrieved. - Refactoring Netbox graphql fetch function to use variables, pagination, persistent sessions and threading to enhance data retrieval performance
FEATURES
- Netbox get connections added remote interface label extraction for physical interfaces, console port, power ports, front/rear ports
- Netbox get connections added remote interface MAC addresses extraction
- Nornir tests markdown report added timestamps and duration summary
BUGS
- Fixing get connections handling for provider network
- Fixing client and worker job db timestamps handling for created_at
Full Changelog: 0.17.0...0.17.1
0.17.0
CHANGES
- Updating Netbox get_devices task to use pynetbox for fetching brief device info, fixing bug with pagination
- Enhancing Netbox get_devices to cache sites data to reduce amount of API calls
- Updating Netbox get_interfaces to use pynetbox for fetching brief interfaces info, fixing bug with pagination
- Refactoring Containerlab worker moving it to dedicated directory.
- Refactoring FastAPI worker moving it to dedicated directory.
- Refactoring Workflow worker moving it to dedicated directory.
- Refactoring FastMCP worker moving it to dedicated directory.
FEATURES
-
Adding agentic AI capabilities to the NorFab client via
NFPClient.get_agent()method:- New
norfab/core/agent.pymodule withNFPAgentclass — single-file, zero overhead when unused - LangGraph ReAct agent with auto-discovered NorFab service tools
- Multi-provider LLM support: openai, anthropic, ollama, groq, mistral, openrouter, google, bedrock
- Optional MCP server integration via
langchain-mcp-adapters(stdio, sse, streamable-http) - Optional RAG knowledge base via Chroma or FAISS
- Optional multi-turn conversation memory (in-process buffer or SQLite)
- Configuration via
client -> agent_profilessection ininventory.yaml - New
norfab[clientagent]optional dependency group
- New
-
Adding new Netbox CRUD tasks for generic REST API access to any NetBox object type:
crud_list_objects— lists all available NetBox object types from the OpenAPI schema, results cached for 24 hourscrud_search— free-text search across multiple object types simultaneously using theqparametercrud_read— retrieve objects by ID(s) or filter dict(s), supports pagination and field selectioncrud_create— create one or multiple objects in a single request, supportsdry_runpreviewcrud_update— partial (PATCH) or full (PUT) update of one or multiple objects by ID, supportsdry_rundiffcrud_delete— delete one or multiple objects by ID, supportsdry_runpreviewcrud_get_changelogs— retrieve object change history, supports NetBox 4.0+ with automatic fallback to older versions
-
FastMCP service - adding MCP tool exposure policy via inventory
tools.policy:
tools.policyis an ordered list of policy entries withservice,tasks, andactionkeysserviceaccepts glob patterns matched against NorFab service namestasksaccepts glob patterns matched against service task namesactionsupportsalloworreject- Policies are evaluated top-down, first matching entry wins
- If no policy entry matches, tool is allowed by default
Full Changelog: 0.16.6...0.17.0