API Change to lags for ansible use #3836

Closed
opened 2025-12-29 18:31:32 +01:00 by adam · 1 comment
Owner

Originally created by @garbled1 on GitHub (Jul 6, 2020).

Environment

  • Python version: 3.7
  • NetBox version: 2.8

Proposed Functionality

I've been playing with using netbox as a source of truth for ansible roles. The idea being I configure a switch in netbox, and then tell ansible "make the real switch look like that". I've managed to get this working for all the interfaces and the vlans, but the LAG interfaces are giving me fits.

The issue is the API stores the lag members in each interface as being members of lag X. But ansible needs a structure like:
lag:
members:

  • eth/1
  • eth/2

I spent about 6 hours trying to generate this dynamically inside ansible using the API, and just due to ansible's structure, unless I write a special plugin (which, I can do, if I have to.. but..) it cannot be done.

So my ask is, can the lag itself have an extra field that contains the members name's or id's?

Use Case

Ansible integration as source of truth to build LAG interfaces from netbox.

Database Changes

unknown

External Dependencies

n/a

Originally created by @garbled1 on GitHub (Jul 6, 2020). <!-- NOTE: IF YOUR ISSUE DOES NOT FOLLOW THIS TEMPLATE, IT WILL BE CLOSED. This form is only for proposing specific new features or enhancements. If you have a general idea or question, please post to our mailing list instead of opening an issue: https://groups.google.com/forum/#!forum/netbox-discuss NOTE: Due to an excessive backlog of feature requests, we are not currently accepting any proposals which significantly extend NetBox's feature scope. Please describe the environment in which you are running NetBox. Be sure that you are running an unmodified instance of the latest stable release before submitting a bug report. --> ### Environment * Python version: 3.7 * NetBox version: 2.8 <!-- Describe in detail the new functionality you are proposing. Include any specific changes to work flows, data models, or the user interface. --> ### Proposed Functionality I've been playing with using netbox as a source of truth for ansible roles. The idea being I configure a switch in netbox, and then tell ansible "make the real switch look like that". I've managed to get this working for all the interfaces and the vlans, but the LAG interfaces are giving me fits. The issue is the API stores the lag members in each interface as being members of lag X. But ansible needs a structure like: lag: members: - eth/1 - eth/2 I spent about 6 hours trying to generate this dynamically inside ansible using the API, and just due to ansible's structure, unless I write a special plugin (which, I can do, if I have to.. but..) it cannot be done. So my ask is, can the lag itself have an extra field that contains the members name's or id's? <!-- Convey an example use case for your proposed feature. Write from the perspective of a NetBox user who would benefit from the proposed functionality and describe how. ---> ### Use Case Ansible integration as source of truth to build LAG interfaces from netbox. <!-- Note any changes to the database schema necessary to support the new feature. For example, does the proposal require adding a new model or field? (Not all new features require database changes.) ---> ### Database Changes unknown <!-- List any new dependencies on external libraries or services that this new feature would introduce. For example, does the proposal require the installation of a new Python package? (Not all new features introduce new dependencies.) --> ### External Dependencies n/a
adam closed this issue 2025-12-29 18:31:32 +01:00
Author
Owner

@jeremystretch commented on GitHub (Jul 6, 2020):

The REST API representation of an interface intends to be as efficient as reasonably possible. Parent LAG interfaces are already listed under each interface, so including child interfaces under the parent interface would be redundant (and introduce additional overhead).

However, all the data you need is already available in the response; you just need a bit of extra logic within the Ansible module to compile the list of child interfaces for each LAG parent. Such an exercise is out of scope for NetBox, but I encourage you to raise the topic in the #ansible channel on http://slack.networktocode.com/.

@jeremystretch commented on GitHub (Jul 6, 2020): The REST API representation of an interface intends to be as efficient as reasonably possible. Parent LAG interfaces are already listed under each interface, so including child interfaces under the parent interface would be redundant (and introduce additional overhead). However, all the data you need is already available in the response; you just need a bit of extra logic within the Ansible module to compile the list of child interfaces for each LAG parent. Such an exercise is out of scope for NetBox, but I encourage you to raise the topic in the #ansible channel on http://slack.networktocode.com/.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#3836