terraform_parser/
plan_representation.rs

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