cloudstack-cloudmonkey icon indicating copy to clipboard operation
cloudstack-cloudmonkey copied to clipboard

filter is ignored on e.g. deploy virtual machine

Open DaanHoogland opened this issue 1 year ago • 9 comments

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
{}

DaanHoogland avatar Aug 08 '22 12:08 DaanHoogland

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

rohityadavcloud avatar Aug 08 '22 12:08 rohityadavcloud

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

DaanHoogland avatar Aug 08 '22 13:08 DaanHoogland

@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).

rohityadavcloud avatar Aug 08 '22 14:08 rohityadavcloud

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.

DaanHoogland avatar Aug 08 '22 14:08 DaanHoogland

Hi guys, +1 on the improvement request

nvazquez avatar Sep 01 '22 00:09 nvazquez

@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 avatar Feb 09 '23 07:02 borisstoyanov

@DaanHoogland to look for exact estimate and come back

borisstoyanov avatar Mar 02 '23 08:03 borisstoyanov

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.

DaanHoogland avatar Mar 06 '23 12:03 DaanHoogland

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

rohityadavcloud avatar Apr 03 '23 06:04 rohityadavcloud