rusty_cdk_core/cloudwatch/
dto.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use crate::{dto_methods, ref_struct};
4use crate::shared::Id;
5
6#[derive(Debug, Serialize, Deserialize)]
7pub(crate) enum LogGroupType {
8 #[serde(rename = "AWS::Logs::LogGroup")]
9 LogGroupType
10}
11
12ref_struct!(LogGroupRef);
13
14#[derive(Debug, Serialize, Deserialize)]
15pub struct LogGroup {
16 #[serde(skip)]
17 pub(super) id: Id,
18 #[serde(skip)]
19 pub(super) resource_id: String,
20 #[serde(rename = "Type")]
21 pub(super) r#type: LogGroupType,
22 #[serde(rename = "Properties")]
23 pub(super) properties: LogGroupProperties,
24}
25dto_methods!(LogGroup);
26
27#[derive(Debug, Serialize, Deserialize)]
28pub struct LogGroupProperties {
29 #[serde(rename = "LogGroupClass", skip_serializing_if = "Option::is_none")]
30 pub(super) log_group_class: Option<String>,
31 #[serde(rename = "LogGroupName", skip_serializing_if = "Option::is_none")]
32 pub(super) log_group_name: Option<Value>,
33 #[serde(rename = "RetentionInDays", skip_serializing_if = "Option::is_none")]
34 pub(super) log_group_retention: Option<u16>,
35}
36
37#[derive(Debug, Serialize, Deserialize)]
38pub(crate) enum AlarmType {
39 #[serde(rename = "AWS::CloudWatch::Alarm")]
40 AlarmType
41}
42
43ref_struct!(AlarmRef);
44
45#[derive(Debug, Serialize, Deserialize)]
46pub struct Alarm {
47 #[serde(skip)]
48 pub(super) id: Id,
49 #[serde(skip)]
50 pub(super) resource_id: String,
51 #[serde(rename = "Type")]
52 pub(super) r#type: AlarmType,
53 #[serde(rename = "Properties")]
54 pub(super) properties: AlarmProperties,
55}
56dto_methods!(Alarm);
57
58#[derive(Debug, Serialize, Deserialize)]
59pub struct AlarmProperties {
60 #[serde(rename = "ActionsEnabled", skip_serializing_if = "Option::is_none")]
61 pub(super) actions_enabled: Option<bool>,
62 #[serde(rename = "AlarmActions", skip_serializing_if = "Option::is_none")]
63 pub(super) alarm_actions: Option<Vec<Value>>,
64 #[serde(rename = "AlarmDescription", skip_serializing_if = "Option::is_none")]
65 pub(super) alarm_description: Option<String>,
66 #[serde(rename = "AlarmName", skip_serializing_if = "Option::is_none")]
67 pub(super) alarm_name: Option<Value>,
68 #[serde(rename = "ComparisonOperator")]
69 pub(super) comparison_operator: String,
70 #[serde(rename = "DatapointsToAlarm", skip_serializing_if = "Option::is_none")]
71 pub(super) datapoints_to_alarm: Option<u32>,
72 #[serde(rename = "Dimensions", skip_serializing_if = "Option::is_none")]
73 pub(super) dimensions: Option<Vec<Dimension>>,
74 #[serde(rename = "EvaluateLowSampleCountPercentile", skip_serializing_if = "Option::is_none")]
75 pub(super) evaluate_low_sample_count_percentile: Option<String>,
76 #[serde(rename = "EvaluationPeriods")]
77 pub(super) evaluation_periods: u32,
78 #[serde(rename = "ExtendedStatistic", skip_serializing_if = "Option::is_none")]
79 pub(super) extended_statistic: Option<String>,
80 #[serde(rename = "InsufficientDataActions", skip_serializing_if = "Option::is_none")]
81 pub(super) insufficient_data_actions: Option<Vec<Value>>,
82 #[serde(rename = "MetricName", skip_serializing_if = "Option::is_none")]
83 pub(super) metric_name: Option<String>,
84 #[serde(rename = "Metrics", skip_serializing_if = "Option::is_none")]
85 pub(super) metrics: Option<Vec<MetricDataQuery>>,
86 #[serde(rename = "Namespace", skip_serializing_if = "Option::is_none")]
87 pub(super) namespace: Option<String>,
88 #[serde(rename = "OKActions", skip_serializing_if = "Option::is_none")]
89 pub(super) ok_actions: Option<Vec<Value>>,
90 #[serde(rename = "Period", skip_serializing_if = "Option::is_none")]
91 pub(super) period: Option<u32>,
92 #[serde(rename = "Statistic", skip_serializing_if = "Option::is_none")]
93 pub(super) statistic: Option<String>,
94 #[serde(rename = "Threshold", skip_serializing_if = "Option::is_none")]
95 pub(super) threshold: Option<f64>,
96 #[serde(rename = "ThresholdMetricId", skip_serializing_if = "Option::is_none")]
97 pub(super) threshold_metric_id: Option<String>,
98 #[serde(rename = "TreatMissingData", skip_serializing_if = "Option::is_none")]
99 pub(super) treat_missing_data: Option<String>,
100 #[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
101 pub(super) unit: Option<String>,
102}
103
104#[derive(Debug, Serialize, Deserialize)]
105pub struct Dimension {
106 #[serde(rename = "Name")]
107 pub(super) name: String,
108 #[serde(rename = "Value")]
109 pub(super) value: Value,
110}
111
112#[derive(Debug, Serialize, Deserialize)]
113pub struct MetricDataQuery {
114 #[serde(rename = "AccountId", skip_serializing_if = "Option::is_none")]
115 pub(super) account_id: Option<String>,
116 #[serde(rename = "Expression", skip_serializing_if = "Option::is_none")]
117 pub(super) expression: Option<Value>,
118 #[serde(rename = "Id")]
119 pub(super) id: String,
120 #[serde(rename = "Label", skip_serializing_if = "Option::is_none")]
121 pub(super) label: Option<String>,
122 #[serde(rename = "MetricStat", skip_serializing_if = "Option::is_none")]
123 pub(super) metric_stat: Option<MetricStat>,
124 #[serde(rename = "Period", skip_serializing_if = "Option::is_none")]
125 pub(super) period: Option<u32>,
126 #[serde(rename = "ReturnData", skip_serializing_if = "Option::is_none")]
127 pub(super) return_data: Option<bool>,
128}
129
130#[derive(Debug, Serialize, Deserialize)]
131pub struct MetricStat {
132 #[serde(rename = "Metric")]
133 pub(super) metric: Metric,
134 #[serde(rename = "Period")]
135 pub(super) period: u32,
136 #[serde(rename = "Stat")]
137 pub(super) stat: String,
138 #[serde(rename = "Unit", skip_serializing_if = "Option::is_none")]
139 pub(super) unit: Option<String>,
140}
141
142#[derive(Debug, Serialize, Deserialize)]
143pub struct Metric {
144 #[serde(rename = "Dimensions", skip_serializing_if = "Option::is_none")]
145 pub(super) dimensions: Option<Vec<Dimension>>,
146 #[serde(rename = "MetricName")]
147 pub(super) metric_name: String,
148 #[serde(rename = "Namespace")]
149 pub(super) namespace: String,
150}
151