inconsistency in json api vs xml/other apis

Hi, there's an inconsistent use of plural vs singular form regarding the "vm" collection in the apis. in json you got a collection named "vm" which contains a list of vms. in xml and via gui you got a collection "vms" which contains a list of vms. I just stumbled upon it, as I used json api already in 3.3.3. and didn't had time to test 3.4 until now. the upgrade itself went very well, but know I have to deal with this api change and the other entity renamings done in json api. what would make this less painful would be an consistent way of getting the ovirt-version via api, so I could easily split my codepath by first querying the api version. unfortunately also this one got changed in json so I'll need to call for every version that might be there. I understand that part of this problem comes from using json when it was not "official supported", but at least this inconsistence use in different apis makes not really much sense to me. should I file a BZ for this? -- Mit freundlichen Grüßen / Regards Sven Kieske Systemadministrator Mittwald CM Service GmbH & Co. KG Königsberger Straße 6 32339 Espelkamp T: +49-5772-293-100 F: +49-5772-293-333 https://www.mittwald.de Geschäftsführer: Robert Meyer St.Nr.: 331/5721/1033, USt-IdNr.: DE814773217, HRA 6640, AG Bad Oeynhausen Komplementärin: Robert Meyer Verwaltungs GmbH, HRB 13260, AG Bad Oeynhausen

On 05/02/2014 02:44 PM, Sven Kieske wrote:
Hi,
there's an inconsistent use of plural vs singular form regarding the "vm" collection in the apis.
in json you got a collection named "vm" which contains a list of vms. in xml and via gui you got a collection "vms" which contains a list of vms.
I just stumbled upon it, as I used json api already in 3.3.3. and didn't had time to test 3.4 until now.
I believe that this inconsistency doesn't exist in 3.4. The result of listing VMs is the following with JSON: { "vm" : [ { "name": "myvm", ... }, { "name": "yourvm", ... }, ... ] } The name of the array is "vm", in singular. With XML the result is the following: <vms> <vm> <name>myvm</name> ... </vm> <vm> <name>yourvm</name> ... </vm> ... </vms> There are two notable differences in these representations: 1. XML requires a "root" tag, in this case "vms", in plural. This isn't needed in JSON, and thus it isn't used. In general, all the root tags for collections will be in plural when using XML and won't be present in JSON. 2. In XML arrays are represented as a set of tags named in singular, "vm" in this case, because XML doesn't have the array concept. In JSON there is only one "vm" element because JSON does have the concept of array, so the name of the array has to be given only once. The name of these XML tags and the name of the JSON array will anyhow be the same, in singular. There may be exceptions where the name is in plural, but you can consider them bugs, and they will affect both XML and JSON, so in those cases we will be consistently buggy.
the upgrade itself went very well, but know I have to deal with this api change and the other entity renamings done in json api.
what would make this less painful would be an consistent way of getting the ovirt-version via api, so I could easily split my codepath by first querying the api version.
unfortunately also this one got changed in json so I'll need to call for every version that might be there.
The way to find the version will be stable now that JSON is supported, you can count on that. So in the future you should be able to get the version number in a consistent way. What I mean is that we guarantee that the version info will always appears as follows: GET /ovirt-engine/api { ... "product_info" : { "vendor" : "ovirt.org", "version" : { "major" : "3", "minor" : "4", "build" : "0", "revision" : "0" }, "full_version" : "3.4.1-0.0.master.20140430080728.fc20", "name" : "oVirt Engine" }, ... } If you ever see something changing in a backwards incompatible way there, it will be a bug.
I understand that part of this problem comes from using json when it was not "official supported", but at least this inconsistence use in different apis makes not really much sense to me.
should I file a BZ for this?
-- Dirección Comercial: C/Jose Bardasano Baos, 9, Edif. Gorbea 3, planta 3ºD, 28016 Madrid, Spain Inscrita en el Reg. Mercantil de Madrid – C.I.F. B82657941 - Red Hat S.L.
participants (2)
-
Juan Hernandez
-
Sven Kieske