Skip to main content

devops_armory/toml_parser/
models.rs

1use std::collections::HashMap;
2use serde::Deserialize;
3
4#[derive(Default, Debug, Deserialize)]
5pub struct Root {
6    pub rustible: Vec<Rustible>,
7    pub cloud: Vec<Cloud>
8}
9
10#[derive(Default, Debug, Deserialize)]
11pub struct Rustible {
12    pub vm: Vec<Vm>,
13    pub bare_metal: Vec<BareMetal>,
14}
15
16#[derive(Default, Debug, Deserialize)]
17pub struct Vm {
18    pub ubuntu: VMSpecs,
19    pub slackware: VMSpecs,
20    pub debian: VMSpecs,
21    pub centos: VMSpecs,
22    pub fedora: VMSpecs,
23    pub opensuse: VMSpecs
24}
25
26#[derive(Default, Debug, Deserialize)]
27pub struct VMSpecs {
28    pub ip_address_list: Vec<String>,
29    pub commands: Vec<String>,
30}
31
32#[derive(Default, Debug, Deserialize)]
33pub struct BareMetal {
34    pub ubuntu: BareMetalSpecs,
35    pub debian: BareMetalSpecs,
36    pub slackware: BareMetalSpecs,
37    pub centos: BareMetalSpecs,
38    pub fedora: BareMetalSpecs,
39    pub opensuse: BareMetalSpecs
40}
41
42#[derive(Default, Debug, Deserialize)]
43pub struct BareMetalSpecs {
44    pub ip_address_list: Vec<String>,
45    pub commands: Vec<String>,
46}
47
48#[derive(Default, Debug, Deserialize)]
49pub struct Cloud {
50    // This allows dynamic keys directly in the struct
51    #[serde(flatten)] 
52    pub projects: HashMap<String, Vec<CloudProject>>, 
53}
54
55#[derive(Default, Debug, Deserialize)]
56pub struct CloudProject {
57    pub name: String,
58    pub address_k8s: Vec<String>,
59    pub credentials: String
60}
61
62