Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions plugins/lookup/nb_lookup.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,20 @@ def run(self, terms, variables=None, **kwargs):
if netbox_api_filter:
filter = build_filters(netbox_api_filter)

if "id" in filter:
Display().vvvv(
u"Filter is: %s and includes id, will use .get instead of .filter"
% (filter)
)
try:
id = int(filter["id"][0])
nb_data = endpoint.get(id)
data = dict(nb_data)
Display().vvvvv(pformat(data))
return [data]
except pynetbox.RequestError as e:
raise AnsibleError(e.error)

Display().vvvv("filter is %s" % filter)

# Make call to NetBox API and capture any failures
Expand All @@ -338,13 +352,14 @@ def run(self, terms, variables=None, **kwargs):
)

for data in nb_data:
Display().vvvvv(pformat(dict(data)))
data = dict(data)
Display().vvvvv(pformat(data))

if netbox_raw_return:
results.append(dict(data))
results.append(data)
else:
key = dict(data)["id"]
result = {key: dict(data)}
key = data["id"]
result = {key: data}
results.extend(self._flatten_hash_to_list(result))

return results
5 changes: 5 additions & 0 deletions tests/integration/targets/latest/tasks/netbox_lookup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,8 @@
- "'L2' in {{ query_result |json_query('[*].display_name') }}"
vars:
query_result: "{{ query('netbox.netbox.nb_lookup', 'devices', api_filter='role=core-switch site=test-site site=test-site2', api_endpoint='http://localhost:32768', token='0123456789abcdef0123456789abcdef01234567', raw_data=True) }}"

- name: "NETBOX_LOOKUP 10: Device query by ID"
assert:
that:
- "{{ query('netbox.netbox.nb_lookup', 'devices', api_filter='id=1', api_endpoint='http://localhost:32768', token='0123456789abcdef0123456789abcdef01234567') }}"
5 changes: 5 additions & 0 deletions tests/integration/targets/v2.8/tasks/netbox_lookup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,8 @@
- "'L2' in {{ query_result |json_query('[*].display_name') }}"
vars:
query_result: "{{ query('netbox.netbox.nb_lookup', 'devices', api_filter='role=core-switch site=test-site site=test-site2', api_endpoint='http://localhost:32768', token='0123456789abcdef0123456789abcdef01234567', raw_data=True) }}"

- name: "NETBOX_LOOKUP 10: Device query by ID"
assert:
that:
- "{{ query('netbox.netbox.nb_lookup', 'devices', api_filter='id=1', api_endpoint='http://localhost:32768', token='0123456789abcdef0123456789abcdef01234567') }}"