listUsageRecords to return the physical size of VM snapshots on primary storage
- Dominant language
- Java
- Stars
- 3.1k
- Forks
- 1.4k
- Avg merge
- 6d 19h
- Merged PRs (30d)
- 32
Description
##### ISSUE TYPE
* Improvement Request
##### COMPONENT NAME
~~~
API, Usage
~~~
##### CLOUDSTACK VERSION
~~~
4.18.1
~~~
##### CONFIGURATION
VM snapshots , VMware
##### OS / ENVIRONMENT
##### SUMMARY
Currently cloudstack usage only returns the virtual size of the VM snapshot on primary storage i.e usage type 27. It would be useful to get the physical size as well in the API response.
```
cmk list usagerecords startdate=2023-12-06 09:00:00 type=27 enddate=2023-12-06 09:59:59
--
{
"account": "admin",
"accountid": "570917c5-8ddb-11ee-a6eb-1e002e000c9f",
"description": "VMSnapshot on primary storage usage Id: 0333f93b-fd60-42ad-a961-49b75df4313f for VM Rocky-2 (9058215a-d674-468d-ac61-449bd0593448) with size (50.00 GB) 53687091200",
"domain": "ROOT",
"domainid": "376e4be1-8ddb-11ee-a6eb-1e002e000c9f",
"enddate": "2023-12-06'T'09:59:59+00:00",
"name": "rocky-snapshot3",
"rawusage": "1",
"size": 53687091200,
"startdate": "2023-12-06'T'09:00:00+00:00",
"tags": [],
"usage": "1 Hrs",
"usageid": "0333f93b-fd60-42ad-a961-49b75df4313f",
"usagetype": 27,
"virtualmachineid": "9058215a-d674-468d-ac61-449bd0593448",
"zoneid": "771aecba-b1ef-4bfc-94e6-b325aa2a4c01"
},
--
{
"account": "admin",
"accountid": "570917c5-8ddb-11ee-a6eb-1e002e000c9f",
"description": "VMSnapshot on primary storage usage Id: 591a15ab-b0d0-465c-a30f-fe9c0785da88 for VM Rocky-2 (9058215a-d674-468d-ac61-449bd0593448) with size (50.00 GB) 53687091200",
"domain": "ROOT",
"domainid": "376e4be1-8ddb-11ee-a6eb-1e002e000c9f",
"enddate": "2023-12-06'T'09:59:59+00:00",
"name": "rocky-snapshot1",
"rawusage": "1",
"size": 53687091200,
"startdate": "2023-12-06'T'09:00:00+00:00",
"tags": [],
"usage": "1 Hrs",
"usageid": "591a15ab-b0d0-465c-a30f-fe9c0785da88",
"usagetype": 27,
"virtualmachineid": "9058215a-d674-468d-ac61-449bd0593448",
"zoneid": "771aecba-b1ef-4bfc-94e6-b325aa2a4c01"
},
{
"account": "admin",
"accountid": "570917c5-8ddb-11ee-a6eb-1e002e000c9f",
"description": "VMSnapshot on primary storage usage Id: e82b68a2-5e63-4509-9be0-48aedd822529 for VM Rocky-2 (9058215a-d674-468d-ac61-449bd0593448) with size (50.00 GB) 53687091200",
"domain": "ROOT",
"domainid": "376e4be1-8ddb-11ee-a6eb-1e002e000c9f",
"enddate": "2023-12-06'T'09:59:59+00:00",
"name": "rocky-snapshot2",
"rawusage": "1",
"size": 53687091200,
"startdate": "2023-12-06'T'09:00:00+00:00",
"tags": [],
"usage": "1 Hrs",
"usageid": "e82b68a2-5e63-4509-9be0-48aedd822529",
"usagetype": 27,
"virtualmachineid": "9058215a-d674-468d-ac61-449bd0593448",
"zoneid": "771aecba-b1ef-4bfc-94e6-b325aa2a4c01"
},
mysql> select id,usage_display,usage_type,format_bytes(size) as size,format_bytes(virtual_size) as virtual_size,start_date,end_date from cloud_usage.cloud_usage where usage_type=27 and vm_instance_id=2782 and start_date='2023-12-06 09:00:00';
+------+---------------+------------+-----------+--------------+---------------------+---------------------+
| id | usage_display | usage_type | size | virtual_size | start_date | end_date |
+------+---------------+------------+-----------+--------------+---------------------+---------------------+
| 9709 | 1 Hrs | 27 | 24.61 GiB | 50.00 GiB | 2023-12-06 09:00:00 | 2023-12-06 09:59:59 |
| 9713 | 1 Hrs | 27 | 50.00 GiB | 50.00 GiB | 2023-12-06 09:00:00 | 2023-12-06 09:59:59 |
| 9714 | 1 Hrs | 27 | 24.61 GiB | 50.00 GiB | 2023-12-06 09:00:00 | 2023-12-06 09:59:59 |
+------+---------------+------------+-----------+--------------+---------------------+---------------------+
```
Contributor guide
Research direction
Start with the listUsageRecords API handling for usage type 27 and compare its response with the cloud_usage size and virtual_size columns shown in the report. Trace how VM snapshot usage is populated for VMware primary storage. Done means the API exposes physical size as well as virtual size for these usage records.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, mysql
- Domain
- api, cloud, databases
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100