terraform_parser/
plan_representation.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4use crate::change_representation::*;
5use crate::configuration_representation::*;
6use crate::state_representation::*;
7use crate::values_representation::*;
8
9#[derive(Serialize, Deserialize)]
10pub struct PlanRepresentation {
11 pub format_version: String,
12 pub prior_state: StateRepresentation,
13 pub configuration: ConfigurationRepresentation,
14 pub planned_values: ValuesRepresentation,
15 pub proposed_unknown: Option<ValuesRepresentation>,
16 pub variables: HashMap<String, Variable>,
17 pub resource_changes: Vec<ResourceChange>,
18 pub output_changes: HashMap<String, OutputChange>,
19}
20
21#[derive(Serialize, Deserialize)]
22pub struct Variable {
23 pub value: serde_json::Value,
24}
25
26#[derive(Serialize, Deserialize)]
27pub struct ResourceChange {
28 pub address: String,
29 pub previous_address: Option<String>,
30 pub module_address: Option<String>,
31 pub mode: Mode,
32 #[serde(rename = "type")]
33 pub change_type: String,
34 pub name: String,
35 pub index: Option<serde_json::Value>,
36 pub deposed: Option<String>,
37 pub change: Option<ChangeRepresentation>,
38 pub action_reason: Option<ActionReason>,
39}
40
41#[derive(Serialize, Deserialize)]
42pub struct OutputChange {
43 pub change: Option<ChangeRepresentation>,
44}
45
46#[derive(Serialize, Deserialize)]
47#[serde(rename_all = "snake_case")]
48pub enum ActionReason {
49 ReplaceBecauseTainted,
50 ReplaceBecauseCannotUpdate,
51 ReplaceByRequest,
52 DeleteBecauseNoResourceConfig,
53 DeleteBecauseNoModule,
54 DeleteBecauseWrongRepetition,
55 DeleteBecauseCountIndex,
56 DeleteBecauseEachKey,
57}