From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: Proxmox VE user list <pve-user@lists.proxmox.com>,
Erik Hollensbe <erik@hollensbe.org>
Subject: Re: [PVE-User] Extracting/leveraging the JSON schema
Date: Wed, 16 Dec 2020 11:30:05 +0100 (CET) [thread overview]
Message-ID: <832275819.1770.1608114606272@webmail.proxmox.com> (raw)
In-Reply-To: <CADHGEEKW+ckrBd9Z3iAaV-VOoL3N_anprA-hmH0fpc=FjKJoZA@mail.gmail.com>
> Erik Hollensbe <erik@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:
https://git.proxmox.com/?p=pve-docs.git;a=blob;f=extractapi.pl;h=06d6af4cb2cabe8bbdf514ed03046879bf53c15b;hb=HEAD
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 :))
next prev parent reply other threads:[~2020-12-16 10:30 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-16 9:48 Erik Hollensbe
2020-12-16 10:30 ` Fabian Grünbichler [this message]
2020-12-16 11:24 ` Erik Hollensbe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=832275819.1770.1608114606272@webmail.proxmox.com \
--to=f.gruenbichler@proxmox.com \
--cc=erik@hollensbe.org \
--cc=pve-user@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal