Skip to main content

devops_armory/cloud/gcp/compute/
models.rs

1use serde_derive::{Serialize, Deserialize};
2
3#[derive(Serialize, Deserialize, Default, Debug)]
4pub struct CreateVM {
5    pub disk: Vec<VMDisk>,
6    pub machineType: String,
7    pub name: String,
8    pub networkInterfaces: Vec<VMNetworkInterface>,
9    pub tags: VMTags,
10    //pub auth: Option<String>,
11}
12
13#[derive(Serialize, Deserialize, Default, Debug)]
14pub struct VMDisk {
15    pub boot: String,
16    pub r#initializeParams: VMDiskInitParams,
17}
18
19#[derive(Serialize, Deserialize, Default, Debug)]
20pub struct VMDiskInitParams {
21    pub sourceImage: String,
22}
23
24#[derive(Serialize, Deserialize, Default, Debug)]
25pub struct VMNetworkInterface {
26    pub accessConfigs: Option<Vec<VMAccessConfig>>,
27    pub network: String,
28    pub subnetwork: String
29}
30
31#[derive(Serialize, Deserialize, Default, Debug)]
32pub struct VMAccessConfig {
33    pub name: String,
34    pub r#type: String,
35}
36
37#[derive(Serialize, Deserialize, Default, Debug)]
38pub struct IPName {
39    pub name: String,
40}
41
42#[derive(Serialize, Deserialize, Default, Debug)]
43pub struct CreateSSL {
44    pub name: String,
45    pub managed: DomainsManaged,
46    pub r#type: String,
47}
48
49#[derive(Serialize, Deserialize, Default, Debug)]
50pub struct DomainsManaged {
51    pub domains: Vec<String>,
52}
53
54#[derive(Serialize, Deserialize, Default, Debug)]
55pub struct VMTags {
56    pub items: Vec<String>,
57}
58
59#[derive(Serialize, Deserialize, Default, Debug)]
60pub struct ComputeMetadata {
61    pub items: Vec<ComputeData>,
62}
63
64#[derive(Serialize, Deserialize, Default, Debug)]
65pub struct ComputeData {
66    pub key: String,
67    pub value: String
68}
69
70
71// Get instance info models
72
73#[derive(Serialize, Deserialize, Default, Debug)]
74pub struct GetVMInstanceInfo {
75    pub kind: String,
76    pub id: String,
77    pub creationTimestamp: String,
78    pub name: String,
79    pub tags: VMTagsGetVM,
80    pub machineType: String,
81    pub status: String,
82    pub zone: String,
83    //pub canIpForward: bool,
84    pub networkInterfaces: Vec<VMNetInterfacesGet>,
85    pub disks: Vec<VMDiskGet>,
86    pub metadata: VMMetadataGet,
87    //pub selfLink: String,
88    //pub scheduling: VMSchedulingGet,
89    //pub cpuPlatform: String,
90    //pub labelFingerprint: String,
91    //pub startRestricted: bool,
92    //pub deletionProtection: bool,
93    //pub shieldedInstanceConfig: VMSchieldedInstanceConfigGet,
94    //pub shieldedInstanceIntegrityPolicy: VMSchieldedInstancePolicyGet,
95    //pub fingerprint: String,
96    //pub lastStartTimestamp: String,
97    //pub resourceStatus: VMResourceStatusGet
98}
99
100#[derive(Serialize, Deserialize, Default, Debug)]
101pub struct VMTagsGetVM {
102    pub items: Vec<String>,
103    pub fingerprint: String
104}
105
106#[derive(Serialize, Deserialize, Default, Debug)]
107pub struct VMNetInterfacesGet {
108    pub kind: String,
109    pub network: String,
110    pub subnetwork: String,
111    pub networkIP: String,
112    pub name: String,
113    pub fingerprint: String,
114    pub stackType: String
115}
116
117#[derive(Serialize, Deserialize, Default, Debug)]
118pub struct VMDiskGet {
119    pub kind: String,
120    pub r#type: String,
121    pub mode: String,
122    pub source: String,
123    pub deviceName: String,
124    pub index: i32,
125    pub boot: bool,
126    pub autoDelete: bool,
127    pub licenses: Vec<String>,
128    pub interface: String,
129    pub diskSizeGb: String,
130    //pub shieldedInstanceInitialState: Vec<VMShieldedInitialState>,
131    pub architecture: String
132}
133
134#[derive(Serialize, Deserialize, Default, Debug)]
135pub struct VMShieldedInitialState {
136    pub dbxs: Vec<VMDBXS>
137}
138
139#[derive(Serialize, Deserialize, Default, Debug)]
140pub struct VMDBXS {
141    pub content: String,
142    pub fileType: String
143}
144
145#[derive(Serialize, Deserialize, Default, Debug)]
146pub struct VMMetadataGet {
147    pub kind: String,
148    pub fingerprint: String
149}
150
151#[derive(Serialize, Deserialize, Default, Debug)]
152pub struct VMSchedulingGet {
153    pub onHostMaintenance: String,
154    pub automaticRestart: bool,
155    pub preemptible: bool,
156    pub provisioningModel: String
157}
158
159#[derive(Serialize, Deserialize, Default, Debug)]
160pub struct VMSchieldedInstanceConfigGet {
161    pub enableSecureBoot: bool,
162    pub enableVtpm: bool,
163    pub enableIntegrityMonitoring: bool
164}
165
166#[derive(Serialize, Deserialize, Default, Debug)]
167pub struct VMSchieldedInstancePolicyGet {
168    pub updateAutoLearnPolicy: bool
169}
170
171#[derive(Serialize, Deserialize, Default, Debug)]
172pub struct VMResourceStatusGet {
173    pub effectiveInstanceMetadata: EffectiveInstanceMetadata
174}
175
176#[derive(Serialize, Deserialize, Default, Debug)]
177pub struct EffectiveInstanceMetadata {
178    pub vmDnsSettingMetadataValue: String
179}