terraform_parser/
configuration_representation.rs

1use 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}