1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
use serde::{Deserialize, Serialize}; use serde_repr::{Deserialize_repr, Serialize_repr}; #[derive(Debug, Deserialize, Serialize)] pub struct TerraformEvent { #[serde(skip_serializing_if = "Vec::is_empty")] #[serde(default)] pub change: Vec<TerraformResourceChange>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] pub status: Option<TerraformResourceStatus>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] pub resource_path: Option<String>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] pub id_key: Option<String>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] pub id_value: Option<String>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] pub create_count: Option<u32>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] pub update_count: Option<u32>, #[serde(skip_serializing_if = "Option::is_none")] #[serde(default)] pub delete_count: Option<u32>, pub command: String, pub source: String, pub source_stream: TerraformSourceStream, } impl Default for TerraformEvent { fn default() -> Self { Self { change: Vec::new(), status: None, resource_path: None, id_key: None, id_value: None, create_count: None, update_count: None, delete_count: None, command: String::new(), source: String::new(), source_stream: TerraformSourceStream::Stdout, } } } #[derive(Debug, Deserialize, Serialize, PartialEq)] pub enum TerraformResourceChange { Create, Read, Update, Destroy, Replace, } #[derive(Debug, Deserialize, Serialize, PartialEq)] pub enum TerraformResourceStatus { Planned, Started, InProgress, Done, Completed, } #[derive(Debug, Deserialize_repr, Serialize_repr)] #[repr(u8)] pub enum TerraformSourceStream { Stdout = 1, Stderr = 2, }