ionos-cloud / ionosctl

The IONOS Cloud CLI (ionosctl) gives the ability to manage IONOS Cloud infrastructure directly from Command Line.
Apache License 2.0
28 stars 6 forks source link

--filters with --max-results inconsistent #193

Open wmendes-ionos opened 2 years ago

wmendes-ionos commented 2 years ago

Description

When I use --filters with --max-results I have inconsistent response.

Expected behavior

Using --max-results consistently return records.

Environment

Production, admin contract and dev contract.

Go Version:

1.19

Ionosctl version:

IONOS Cloud CLI version: DEV
SDK GO version: 6.1.0
SDK GO DBaaS Postgres version: v1.0.3
SDK GO Auth version: 1.0.4

OS:

macos Darwin

Shell:

zsh

Configuration Files

How to Reproduce

You can use the dev contract for a test. redacted the id for security reasons.

me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>

Removing the flag resolves for the first call, usually

me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 2 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1  --cols DatacenterId
<returned id>
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
<returned id>
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId
me@~$ ionosctl datacenter list --no-headers --filters name=webner --depth 1 --max-results 1 --cols DatacenterId

Error and Debug Output

No errors, just empty response.

Additional Notes

References

avirtopeanu-ionos commented 4 months ago

Hi, sorry for the late reply. Unfortunately this bug is due to how the API handles the max results query param. A pagination rework will happen on the CLI side, although I don't have a timeline for that.

In the meantime you should pipe the output to sed -n '[row]p' or head -n [rows] and tail -n [rows] to select the first/last n rows

i.e. ionosctl [command] -F FIRST_FILTER -F SECOND_FILTER --no-headers | sed -n '1p'