Hi Michael,
Sure there is nothing secret or fancy in this script, I attach it! It is typically run with something like
python get_accounting_data.py --first-y 2022 --first-m 12 --last-m 11 --output openstack-accounting_data.csv [--debug]
Adding --debug produces a very verbose (so better redirected to a
file) but allow to get the raw data received from the API for each
request, before all the data manipulations with Pandas.
Not sure how you can assess if it works properly for you. Probably the easiest is to count the lines in the CSV file produced and compare with the lines returned by Overview menu in Dashboard admin section. In my case, I could easily identify some big projects present in the dashboard output and missing in the CSV file. After checking with --debug, I saw that these projects are present in the project list but have no entries in any month (where they are among our bigger consumers!).
I really have no clue what I'm doing wrong. The API has not so many parameters so it's pretty easy to use if you respect the date format. One obvious difference between my script/openstack client and the dashboard is the Python version. Dashboard is run under Python 3.6 where my interactive environment is Python 3.11. But I cannot imagine any real influence on the API responses because of this...
Thanks in advance for your help. Cheers,
Michel
Are you able to provide a code snippet? Might help, but also understand if you can not.
My team has dozens of python scripts for operational use, reporting etc, on a number of clouds. We haven't observed any limits. Our scripts are using the "admin-rc" so assuming the user account you run the script as is scoped, it shouldn't have any issues.
CheersMichael
On Tue, Nov 28, 2023 at 5:08 PM Michel Jouvin <michel.jouvin@ijclab.in2p3.fr> wrote:
Hi,
Thanks for the answer. But in fact I am using the /os-simple-tenant-usage API as an admin so I'd really expected it to list all projects/tenants like Horizon does... I'm surely missing something but not clear what...
Best regards,
MichelSent from my mobile
Le 28 novembre 2023 19:27:33 smooney@redhat.com a écrit :
so the openstack client is calling the nova simple tenant usage api
maps to
the openstack client does not have a --all-tenants flag or simplar to call
so the difference is the openstack client uses/os-simple-tenant-usage/{tenant_id} which is aviabel to anyone with the member or reader role in a given project
the all tenats version is /os-simple-tenant-usageand that endpoint is admin only.
osc has only ever support the tenant specific version so if you wantted to supprot the admin versionyou would need to modify osc to add a --all-tenant option to the cli.
horizon presumably support the multi tenant view as an admin usign the /os-simple-tenant-usage endpoint.
On Tue, 2023-11-28 at 18:47 +0100, Michel Jouvin wrote:Hi,
I've been struggling today to understand the problem. I wrote a (Python)script that uses directly the API instead of going through the"openstack usage list". I had some hope of something related to thelimit parameter but unfortunately it is not the case and the resultusing the API is the same as using the openstack client. Only horizonreturns all the information.
Does somebody has any clue about what is done differently by Horizoncompared to the openstack client (I assume it is using the API ratherthan the client)?
Any input would be very much appreciated as going month by month (weneed a month-level detail) through the dashboard is not very sustainableand potentially very error prone...
Best regards,
Michel
Le 27/11/2023 à 18:39, Michel Jouvin a écrit :Hi,
We are using "openstack usage list" to follow resource usage byprojects at our cloud. We recently discovered that ~1/3 of theresource consumed (mostly "big projects") are missing from theJSON/CSV produced where the Admin Overview menu in the Horizondashboard displays everything. Is there a trivial reason for this?
We tried both with a pretty old openstackclient (5.8) and the last oneafter applying the patch into fix the problem with date conversion. The result is the same.
Thank you in advance for any help. Cheers,
Michel