Skip to content

[Bug]: nb_inventory is taking several minutes to run due to the "limit&offset" behaviour. Can we turn that off? #1370

Open
@alice-rc

Description

@alice-rc

Ansible NetBox Collection version

v3.20.0

Ansible version

ansible [core 2.17.7]
  config file = <REDACTED>/ansible.cfg
  configured module search path = ['<REDACTED>/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = <REDACTED>/lib64/python3.11/site-packages/ansible
  ansible collection location = /<REDACTED>/collections
  executable location = <REDACTED>/bin/ansible
  python version = 3.11.9 (main, Sep 11 2024, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-2.0.1)] (<REDACTED>/bin/python3.11)
  jinja version = 3.1.4
  libyaml = True

NetBox version

NetBox Community v4.1.11

Python version

3.11

Steps to Reproduce

$ date; ansible-inventory -i inventory/nb_test_vms.yml --list -vvv 2>&1 >testout; date

Content of inventory config file:

---
plugin: netbox.netbox.nb_inventory
api_endpoint: "https://netbox.\<REDACTED>"
validate_certs: false
flatten_custom_fields: false
plurals: false
group_by:
  - tenant
group_names_raw: true
query_filters:
  - tenant__n: \<REDACTED\>
device_query_filters:
  - id: -1
prefixes: false
services: false
fetch_all: true
racks: false
rename_variables:
  - pattern: custom_fields
    repl: nb_inventory_custom_fields
  - pattern: is_virtual
    repl: nb_inventory_is_virtual

Expected Behavior

The plugin should not be taking several minutes to run. Need an option to turn off the "limit" behavior.

Using just a single limit, takes 14 seconds

$ date; curl -s "https://netbox.<REDACTED>/api/virtualization/virtual-machines/?limit=0&tenant__n=<REDACTED>&exclude=config_context" -H "Authorization: Token $NETBOX_TOKEN" > /dev/null; date
Tue 14 Jan 16:33:58 UTC 2025
Tue 14 Jan 16:34:12 UTC 2025

Using no limit, takes 2 seconds

$ date; curl -s "https://netbox.<REDACTED>/api/virtualization/virtual-machines/?tenant__n=<REDACTED>&exclude=config_context" -H "Authorization: Token $NETBOX_TOKEN" > /dev/null; date
Tue 14 Jan 16:35:54 UTC 2025
Tue 14 Jan 16:35:56 UTC 2025

Observed Behavior

Output from the above inventory command:
Inventory plugin takes almost 7 minutes

Tue 14 Jan 01:14:36 UTC 2025
Tue 14 Jan 01:21:27 UTC 2025

Beginning of the output file:

...
Fetching: https://netbox.<REDACTED>/api/status
Fetching: https://netbox.<REDACTED>/api/dcim/devices/?limit=0&tenant__n=<REDACTED>&id=-1&exclude=config_context
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?limit=0&tenant__n=<REDACTED>&exclude=config_context
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=1000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=2000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=3000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=4000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=5000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=6000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=7000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=8000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=9000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=10000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=11000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=12000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=13000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=14000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=15000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=16000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=17000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=18000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=19000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=20000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=21000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=22000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=23000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=24000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=25000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=26000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=27000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=28000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=29000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=30000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/virtualization/virtual-machines/?exclude=config_context&limit=1000&offset=31000&tenant__n=<REDACTED>
Fetching: https://netbox.<REDACTED>/api/dcim/sites/?limit=0
Fetching: https://netbox.<REDACTED>/api/dcim/regions/?limit=0
Fetching: https://netbox.<REDACTED>/api/dcim/site-groups/?limit=0
Fetching: https://netbox.<REDACTED>/api/dcim/locations/?limit=0
Fetching: https://netbox.<REDACTED>/api/tenancy/tenants/?limit=0
Fetching: https://netbox.<REDACTED>/api/dcim/device-roles/?limit=0
Fetching: https://netbox.<REDACTED>/api/dcim/platforms/?limit=0
Fetching: https://netbox.<REDACTED>/api/dcim/device-types/?limit=0
Fetching: https://netbox.<REDACTED>/api/dcim/manufacturers/?limit=0
Fetching: https://netbox.<REDACTED>/api/virtualization/clusters/?limit=0
Parsed <REDACTED>/inventory/nb_test_vms.yml inventory source with auto plugin
...

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions