apache / cloudstack-cloudmonkey

Apache Cloudstack Cloudmonkey
Apache License 2.0
91 stars 60 forks source link

filter is ignored on e.g. deploy virtual machine #117

Open DaanHoogland opened 2 years ago

DaanHoogland commented 2 years ago

when issuing a list command one can filter fields being output by the filter parameter. when excuting deploy virtualmachine this is also a valid parameter, but the result is an empty output if it is used.

$ cmk deploy virtualmachine filter=name,id templateid=a7c5034d-13fe-11ed-9ef2-e884a5ebaa69 serviceofferingid=adf53e72-9ffa-4ee1-80d4-5f619a7c13ef zoneid=86f5e781-f6ee-4b40-ab06-70c97cf4d6c2 domainid=fddc5725-19f9-482a-b207-32c7e3b49ad0 account=user1
{}

or

$ cmk deploy virtualmachine filter=virtualmachine.id templateid=a7c5034d-13fe-11ed-9ef2-e884a5ebaa69 serviceofferingid=adf53e72-9ffa-4ee1-80d4-5f619a7c13ef zoneid=86f5e781-f6ee-4b40-ab06-70c97cf4d6c2 domainid=fddc5725-19f9-482a-b207-32c7e3b49ad0 account=user1
{}
rohityadavcloud commented 2 years ago

@DaanHoogland filters are used only for list/get API or any sync API - https://github.com/apache/cloudstack-cloudmonkey/wiki/Usage#output

DaanHoogland commented 2 years ago

I know, and that could be im[proved, couldn´t it, @rohityadavcloud ?

rohityadavcloud commented 2 years ago

@DaanHoogland can you suggest your use-case? we can of course keep it as feature/improvement request.

workaround - Maybe you can grab the VM's uuid and call the list API subsequently to filter stuff (I'm not sure if the deploy vm response sends the entire list VM response as expected, incl things like details etc).

DaanHoogland commented 2 years ago

I am doing a test in which I want to make sure that not all of the deploy VM commands succeed and want to get only the name and id of those VMs that do succeed. At the same time I want to see the error output of those that fail without feeding those into a grep command. I think the second command syntax I gave in the description would be the best intuitive way to deal with this, but the first one would be the most consistent with the list APIs.

nvazquez commented 2 years ago

Hi guys, +1 on the improvement request

borisstoyanov commented 1 year ago

@DaanHoogland I'm working on the milestone for 6.3.0 and I'm wondering should we add this improvement. Do you have any idea how much effort it is going to take, are you willing to work on it?

borisstoyanov commented 1 year ago

@DaanHoogland to look for exact estimate and come back

DaanHoogland commented 1 year ago

So I had a look, and this will require the filter() method from the output module to be converted into a small module and to add knowledge of the possible structures of the response to be filtered. This might have to be extendible if more possible response structures come up. but initially it just needs to distinct list-responses from the requested deployVirtualMachine response. a middle sized project probably.

rohityadavcloud commented 1 year ago

Guys, I will prefer that filter is supported and used only for list/get APIs as originally intended and documented - https://github.com/apache/cloudstack-cloudmonkey/wiki/Usage#output

CloudStack has 100s of async APIs, to support all of those APIs by a simple CLI would be too much of a task both in terms of implementation and testing. Perhaps filter autocompletion can be made such that it's not available for any async APIs to restrict that. cc @borisstoyanov @nvazquez