terraform_parser/
configuration_representation.rs1use crate::block_expressions_representation::*;
2use crate::expression_representation::*;
3use crate::values_representation::*;
4use serde::{Deserialize, Serialize};
5use std::collections::HashMap;
6
7#[derive(Serialize, Deserialize)]
8pub struct ConfigurationRepresentation {
9 pub provider_configs: Option<HashMap<String, ProviderConfig>>,
10 pub root_module: ModuleConfiguration,
11}
12
13#[derive(Serialize, Deserialize)]
14pub struct ProviderConfig {
15 pub name: String,
16 pub alias: String,
17 pub module_address: String,
18 pub expressions: BlockExpressionRepresentation,
19}
20
21#[derive(Serialize, Deserialize)]
22pub struct ModuleConfiguration {
23 pub outputs: HashMap<String, Output>,
24 pub resources: Vec<Resource>,
25}
26
27#[derive(Serialize, Deserialize)]
28pub struct Output {
29 pub expression: serde_json::Value,
30 pub sensetive: Option<bool>,
31}
32
33#[derive(Serialize, Deserialize)]
34pub struct Resource {
35 pub address: String,
36 pub mode: Mode,
37 #[serde(rename = "type")]
38 pub resource_type: String,
39 pub name: String,
40 pub provider_config_key: String,
41 pub provisioners: Option<Vec<Provisioner>>,
42 pub expressions: BlockExpressionRepresentation,
43 pub schema_version: i8,
44 pub count_expression: Option<ExpressionRepresentation>,
45 pub for_each_expression: Option<ExpressionRepresentation>,
46 pub module_calls: Option<HashMap<String, ModuleCall>>,
47}
48
49#[derive(Serialize, Deserialize)]
50pub struct Provisioner {
51 #[serde(rename = "type")]
52 pub provisioner_type: String,
53 pub expression: BlockExpressionRepresentation,
54}
55
56#[derive(Serialize, Deserialize)]
57pub struct ModuleCall {
58 pub resolved_source: String,
59 pub expressions: BlockExpressionRepresentation,
60 pub count_expression: Option<ExpressionRepresentation>,
61 pub for_each_expression: Option<ExpressionRepresentation>,
62 pub module: ModuleConfiguration,
63}