Open emil-nasso opened 2 years ago
Another way might be via a graphql query on custom_fields
. I note that you can ask for custom_fields
in a response:
# curl -sS -X GET -H "Content-Type: application/json" -H "Accept: application/json" http://localhost:8001/graphql/ \
--data '{"query": "query {device_list(id:\"5\") {id custom_fields}}"}' | python3 -m json.tool
{
"data": {
"device_list": [
{
"id": "5",
"custom_fields": {
"snmp_module": [
"mikrotik_secret"
]
}
}
]
}
}
(There's also custom_field_data
which returns a string holding JSON). But as far as I can tell, you can't currently filter on custom_fields
in a query:
# curl -sS -X GET -H "Content-Type: application/json" -H "Accept: application/json" http://localhost:8001/graphql/ \
--data '{"query": "query {device_list(custom_fields:{snmp_module:\"mikrotik_secret\"}) {id custom_fields}}"}' | python3 -m json.tool
{
"errors": [
{
"message": "Unknown argument \"custom_fields\" on field \"device_list\" of type \"Query\".",
"locations": [
{
"line": 1,
"column": 20
}
]
}
]
}
It would of course be good if such a query could be pushed down to a SQL condition in postgres, rather than making Netbox retrieve all objects from the database and discard the ones which don't match.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.
Blocked by #9856
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Do not attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our contributing guide.
Blocked on #11949
Adding blocked until #9856
@arthanson Since #9856 is done, can you unblock this issue? Any ideas if and when this is now going to happen?
I've marked this as "needs owner" for anyone who would like to take a stab at implementing this for v4.0 (with the new Strawberry GraphQL backend). @arthanson anything in particular you'd like to point out for this?
NetBox version
v3.0.3
Feature type
New functionality
Proposed functionality
There doesn't seem to be a way to filter based on custom fields in the GraphQL-api.
The documentation mentions "The GraphQL API employs the same filtering logic as the UI and REST API" so one approach would be to just follow the same pattern where
cf_foo_bar
etc are exposed as arguments for the list query of an entity wherefoo_bar
is a custom field.(Reference to discussion about this: https://github.com/netbox-community/netbox/discussions/7569 )
Use case
We have the use for this when listing tenants via the graphql API. We put the customers name in the name field but we have a custom field where we have an internal identifier that is used as a reference when linking the data in netbox up with other systems though integrations.
Database changes
No response
External dependencies
No response