Skip to content

Commit 8640ac2

Browse files
nb_lookup: Added flag to return raw api output (#136)
1 parent aed8868 commit 8640ac2

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

plugins/lookup/nb_lookup.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252
description:
5353
- The location of the private key tied to user account.
5454
required: False
55+
raw_data:
56+
description:
57+
- Whether to return raw API data with the lookup/query or whether to return a key/value dict
58+
required: False
5559
requirements:
5660
- pynetbox
5761
"""
@@ -187,6 +191,7 @@ def run(self, terms, variables=None, **kwargs):
187191
netbox_api_endpoint = kwargs.get("api_endpoint")
188192
netbox_private_key_file = kwargs.get("key_file")
189193
netbox_api_filter = kwargs.get("api_filter")
194+
netbox_raw_return = kwargs.get("raw_data")
190195

191196
if not isinstance(terms, list):
192197
terms = [terms]
@@ -225,19 +230,25 @@ def run(self, terms, variables=None, **kwargs):
225230

226231
Display().vvvvv(pformat(dict(res)))
227232

228-
key = dict(res)["id"]
229-
result = {key: dict(res)}
233+
if netbox_raw_return:
234+
results.append(dict(res))
230235

231-
results.extend(self._flatten_hash_to_list(result))
236+
else:
237+
key = dict(res)["id"]
238+
result = {key: dict(res)}
239+
results.extend(self._flatten_hash_to_list(result))
232240

233241
else:
234242
for res in endpoint.all():
235243

236244
Display().vvvvv(pformat(dict(res)))
237245

238-
key = dict(res)["id"]
239-
result = {key: dict(res)}
246+
if netbox_raw_return:
247+
results.append(dict(res))
240248

241-
results.extend(self._flatten_hash_to_list(result))
249+
else:
250+
key = dict(res)["id"]
251+
result = {key: dict(res)}
252+
results.extend(self._flatten_hash_to_list(result))
242253

243254
return results

tests/integration/integration-tests.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4451,3 +4451,9 @@
44514451
that: "{{ query_result|json_query('[?value.display_name==`L2`]')|count }} == 1"
44524452
vars:
44534453
query_result: "{{ query('netbox.netbox.nb_lookup', 'devices', api_filter='role=core-switch tag=lookup', api_endpoint='http://localhost:32768', token='0123456789abcdef0123456789abcdef01234567') }}"
4454+
4455+
- name: "NETBOX_LOOKUP 8: Device query specifying raw data returns payload without key/value dict"
4456+
assert:
4457+
that: "{{ query_result|json_query('[?display_name==`L2`]')|count }} == 1"
4458+
vars:
4459+
query_result: "{{ query('netbox.netbox.nb_lookup', 'devices', api_filter='role=core-switch tag=lookup', api_endpoint='http://localhost:32768', token='0123456789abcdef0123456789abcdef01234567', raw_data=True) }}"

0 commit comments

Comments
 (0)