Netbox Sync Device IP Task¤
task api name:
sync_device_ip
The Netbox Sync Device IP Task is a feature of the NorFab Netbox Service that allows you to synchronize and update the IP addresses data of your network devices in Netbox. This task ensures that the IP address records in Netbox are accurate and up-to-date, reflecting the current state of your network infrastructure.
How it works - Netbox worker on a call to update IP addresses task fetches live data from network devices using nominated datasource, by default it is Nornir service parse task using NAPALM get_interfaces_ip getter. Once data retrieved from network, Netbox worker updates records in Netbox database for device interfaces.

-
Client submits and on-demand request to NorFab Netbox worker to update device IP addresses
-
Netbox worker sends job request to nominated datasource service to fetch live data from network devices
-
Datasource service fetches data from the network
-
Datasource returns devices IP addresses data back to Netbox Service worker
-
Netbox worker processes device data and updates or creates IP address records in Netbox for requested devices
Branching Support¤
Update device IP task is branch aware and can push updates to the branch. Netbox Branching Plugin need to be installed on Netbox instance.
Limitations¤
Datasource nornir uses NAPALM get_interfaces_ip getter and as such only supports these device platforms:
- Arista EOS
- Cisco IOS
- Cisco IOSXR
- Cisco NXOS
- Juniper JUNOS
Update Device IP Sample Usage¤
NORFAB Netbox Update Device IP Command Shell Reference¤
NorFab shell supports these command options for Netbox sync_device_ip task:
nf# man tree netbox.update.device.ip-addresses
root
└── netbox: Netbox service
└── sync: Update Netbox data
└── device: Update device data
└── ip-addresses: Update device interface IP addresses
├── timeout: Job timeout
├── workers: Filter worker to target, default 'any'
├── verbose-result: Control output details, default 'False'
├── progress: Display progress events, default 'True'
├── instance: Netbox instance name to target
├── dry-run: Return information that would be pushed to Netbox but do not push it
├── devices: List of Netbox devices to update
├── datasource: Service to use to retrieve device data, default 'nornir'
│ └── nornir: Use Nornir service to retrieve data from devices
│ ├── FO: Filter hosts using Filter Object
│ ├── FB: Filter hosts by name using Glob Patterns
│ ├── FH: Filter hosts by hostname
│ ├── FC: Filter hosts containment of pattern in name
│ ├── FR: Filter hosts by name using Regular Expressions
│ ├── FG: Filter hosts by group
│ ├── FP: Filter hosts by hostname using IP Prefix
│ ├── FL: Filter hosts by names list
│ ├── FM: Filter hosts by platform
│ ├── FN: Negate the match
│ ├── add-details: Add task details to results, default 'False'
│ ├── num-workers: RetryRunner number of threads for tasks execution
│ ├── num-connectors: RetryRunner number of threads for device connections
│ ├── connect-retry: RetryRunner number of connection attempts
│ ├── task-retry: RetryRunner number of attempts to run task
│ ├── reconnect-on-fail: RetryRunner perform reconnect to host on task failure
│ ├── connect-check: RetryRunner test TCP connection before opening actual connection
│ ├── connect-timeout: RetryRunner timeout in seconds to wait for test TCP connection to establish
│ ├── creds-retry: RetryRunner list of connection credentials and parameters to retry
│ ├── tf: File group name to save task results to on worker file system
│ ├── tf-skip-failed: Save results to file for failed tasks
│ ├── diff: File group name to run the diff for
│ ├── diff-last: File version number to diff, default is 1 (last)
│ └── progress: Display progress events, default 'True'
├── batch-size: Number of devices to process at a time, default '10'
└── branch: Branching plugin branch name to use
nf#
Python API Reference¤
Update the IP addresses of devices in Netbox.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
job
|
Job
|
NorFab Job object containing relevant metadata |
required |
instance
|
str
|
The Netbox instance name to use. |
None
|
dry_run
|
bool
|
If True, no changes will be made. |
False
|
datasource
|
str
|
The data source to use. Supported datasources:
|
'nornir'
|
timeout
|
int
|
The timeout for the operation. |
60
|
devices
|
list
|
The list of devices to update. |
None
|
create
|
bool
|
If True, new IP addresses will be created if they do not exist. |
True
|
batch_size
|
int
|
The number of devices to process in each batch. |
10
|
branch
|
str
|
Branch name to use, need to have branching plugin installed, automatically creates branch if it does not exist in Netbox. |
None
|
**kwargs
|
Any
|
Additional keyword arguments. |
{}
|
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Result
|
A dictionary containing the results of the update operation. |
Raises:
| Type | Description |
|---|---|
Exception
|
If a device does not exist in Netbox. |
UnsupportedServiceError
|
If the specified datasource is not supported. |
Source code in norfab\workers\netbox_worker\ip_tasks.py
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 | |