[PVE-User] Extracting/leveraging the JSON schema
f.gruenbichler at proxmox.com
Wed Dec 16 11:30:05 CET 2020
> Erik Hollensbe <erik at hollensbe.org> hat am 16.12.2020 10:48 geschrieben:
> I'd like to extract the JSON schema for use in generating a golang API.
> Judging from brief googling I've seen others have attempted this but I was
> hoping to make an effective dent in the problem. I think it'd be really
> useful in terraform and other orchestration tools that are typically
> written in that language (these days at least).
> I reviewed the pve-common packages, specifically, the PVE::JSONSchema perl
> module and it looks like a parser but not the actual API.
yes, pve-common contains the basic framework, the API itself is distributed over the other packages (mainly pve-storage, pve-container, qemu-server, and the main API daemons and entrypoint in pve-manager).
> Best I can tell from googling and looking at the files in /usr/share/pve is
> that there is a api.js (I forget the exact filename) that contains what I
> seek, unfortunately it is coupled with some additional framework code to
> generate it all, best I can tell?
apidata.js is generated by the following (veeeeery short ;)) perl script:
it pulls in the main API endpoint (PVE::API2) and the API handler (PVE::RESTHandler). the latter already has all the dumping functionality built-in. it should run on any host that has PVE installed.
> What I'd really like to do is get ya'll up to speed so that your API can be
> consumed by codegen tools that are out there. Let me know how I can help
> and facilitate this. Swagger would be a bold idea/ideal here, if you're up
> for considering something along those lines as well. The swagger/openapi
> codegen tools are dull but effective for a lot of languages.
there have been some efforts like that in the past (mostly from the nodejs camp AFAICT). maybe take a look at https://pve.proxmox.com/wiki/Proxmox_VE_API#Clients and see what other people have done so far ;)
> The PVE API is vast and I don't see the feasibility in porting it by hand
> 100%, especially when you consider future maintenance burdens, so something
> that could generate code or dynamically configure a client would be an
> ideal solution assuming it is needed and can be bootstrapped.
> Thanks and I hope this message from a brand new ML user is not too forward
good luck with your project! don't hesitate to ask if you have further questions (although if they get more technical, I'd suggest switching to pve-devel instead of pve-user :))
More information about the pve-user