avina_wire/resources/
usage.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
4pub struct CloudUsageOverviewInner {
5    pub total: u64,
6    pub used: u64,
7}
8
9#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
10pub struct CloudUsageOverviewInnerFloat {
11    pub total: f64,
12    pub used: f64,
13}
14
15#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
16pub struct CloudUsageOverview {
17    pub vcpus: CloudUsageOverviewInner,
18    pub ram: CloudUsageOverviewInner,
19    pub gpus: CloudUsageOverviewInner,
20    pub storage: CloudUsageOverviewInnerFloat,
21    pub mwn_ips: CloudUsageOverviewInner,
22    pub www_ips: CloudUsageOverviewInner,
23}
24
25#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
26pub struct CloudUsageFlavorSlot {
27    pub name: String,
28    pub free: u32,
29    pub total: u32,
30}
31
32#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
33pub struct CloudUsageAggregate {
34    pub name: String,
35    pub title: String,
36    pub flavors: Vec<CloudUsageFlavorSlot>,
37}
38
39// TODO: how could we handle a table representation of this?
40#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
41pub struct CloudUsage {
42    pub overview: CloudUsageOverview,
43    pub lrz_flavor_slots: Vec<CloudUsageAggregate>,
44    pub ach_flavor_slots: Vec<CloudUsageAggregate>,
45    pub other_flavor_slots: Vec<CloudUsageAggregate>,
46    pub datetime: String,
47}