fakecloud_cloudtrail/
state.rs1use std::collections::BTreeMap;
11use std::sync::Arc;
12
13use parking_lot::RwLock;
14use serde::{Deserialize, Serialize};
15use serde_json::Value;
16
17use fakecloud_core::multi_account::{AccountState, MultiAccountState};
18
19pub const CLOUDTRAIL_SNAPSHOT_SCHEMA_VERSION: u32 = 1;
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct CloudTrailData {
24 #[serde(default)]
26 pub trails: BTreeMap<String, Value>,
27 #[serde(default)]
30 pub trail_logging: BTreeMap<String, bool>,
31 #[serde(default)]
34 pub trail_status: BTreeMap<String, Value>,
35 #[serde(default)]
38 pub event_selectors: BTreeMap<String, Value>,
39 #[serde(default)]
41 pub insight_selectors: BTreeMap<String, Value>,
42 #[serde(default)]
44 pub event_data_stores: BTreeMap<String, Value>,
45 #[serde(default)]
47 pub channels: BTreeMap<String, Value>,
48 #[serde(default)]
50 pub imports: BTreeMap<String, Value>,
51 #[serde(default)]
53 pub queries: BTreeMap<String, Value>,
54 #[serde(default)]
56 pub dashboards: BTreeMap<String, Value>,
57 #[serde(default)]
59 pub resource_policies: BTreeMap<String, String>,
60 #[serde(default)]
62 pub delegated_admins: BTreeMap<String, Value>,
63 #[serde(default)]
65 pub event_configurations: BTreeMap<String, Value>,
66 #[serde(default)]
68 pub tags: BTreeMap<String, BTreeMap<String, String>>,
69}
70
71impl AccountState for CloudTrailData {
72 fn new_for_account(_account_id: &str, _region: &str, _endpoint: &str) -> Self {
73 Self::default()
74 }
75}
76
77pub type SharedCloudTrailState = Arc<RwLock<MultiAccountState<CloudTrailData>>>;
78
79#[derive(Debug, Serialize, Deserialize)]
80pub struct CloudTrailSnapshot {
81 pub schema_version: u32,
82 pub accounts: MultiAccountState<CloudTrailData>,
83}