devops_armory/toml_parser/
models.rs1use 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 #[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