Closed v0ctor closed 6 months ago
I've started testing this PR out and I'm running into troubles. There is some kind of reflection issue with filters on any list endpoint.
Misbehaving code samples:
vrflist, resp, err := client.IpamApi.
IpamVrfsList(ctx).
Name([]string{name}).
Execute()
platformlist, resp, err := client.
DcimApi.
DcimPlatformsList(ctx).
Slug([]string{slug}).
Execute()
clspaglist, resp, err := client.VirtualizationApi.
VirtualizationClustersList(ctx).
SiteId([]*int32{&site.Id}).
Status([]string{"active"}).
Tag([]string{
fmt.Sprintf("vnet_%s", vnet),
fmt.Sprintf("env_%s", env),
fmt.Sprintf("criticality_%s", criticality),
}).
Execute()
Resulting queries:
GET /api/ipam/vrfs/?name=reflect.Value+value HTTP/1.1
GET /api/dcim/platforms/?slug=reflect.Value+value HTTP/1.1
GET /api/virtualization/clusters/?site_id=reflect.Value+value&status=reflect.Value+value&tag=reflect.Value+value&tag=reflect.Value+value&tag=reflect.Value+value HTTP/1.1
No issue with retrieving objects by ID.
Finished testing with my main workflows and other than this listing problem I did not run into any other issue. Everything seems to work fine for object creation, update and deletion
For the listing problem see https://github.com/OpenAPITools/openapi-generator/issues/14798 It should be already fixed on the openapi-master
Thanks for the notice. Looking at the openapi-generator patch, it looks like the fix landed in 7.0.0, I can see the new .Interface()
calls if I regenerate the client using this version.
Thank you very much to all for the feedback!
I've updated the PR to openapi-generator 7.0.1 and Netbox 3.6.2, and I've built the library with these changes.
I've not been able to test it yet, but seeing that openapi-generator 7+ is giving good results, it might be a good idea to release an alpha version.
Just wanted to chime in to say I updated my working branch and now everything works fine.
Only issue I've found so far is this: https://github.com/netbox-community/go-netbox/discussions/156#discussioncomment-7958336 when enabling Enums. But other than that with the small workaround I found, it seems to work great!
It seems that this is finally the most viable option. I am doing some tests before releasing the first alpha version. See the comment in the discussion.
Finally, after five months, this PR is ready to be merged! 🥳
Since version 3.5, Netbox specifies its API with OpenAPI 3. Thus, it is no longer possible to keep this project up to date, as it is generated using go-swagger, a library that doesn't support OpenAPI 3 and has no intention to do so.
This PR replaces go-swagger by openapi-generator and rebuilds the library for the latest version of Netbox (3.5.8). This change is completely incompatible with previous versions of the library.
Note that this is a work in progress. I still didn't test the changes.
Any comments, suggestions or corrections are welcome! Furthermore, everyone is invited to participate in the OpenAPI 3 migration discussion.