use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricAvailability {
#[serde(skip_serializing_if = "Option::is_none")]
pub time_grain: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retention: Option<String>,
}
impl MetricAvailability {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
time_grain: Some("test-time_grain".into()),
retention: Some("test-retention".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricDefinition {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub primary_aggregation_type: Option<String>,
}
impl MetricDefinition {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-metric_definition".into()),
namespace: Some("test-namespace".into()),
unit: Some("test-unit".into()),
primary_aggregation_type: Some("test-primary_aggregation_type".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricDefinitionCollection {
#[serde(default)]
pub value: Vec<MetricDefinition>,
}
impl MetricDefinitionCollection {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self { value: vec![] }
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricValue {
pub time_stamp: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub average: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub minimum: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maximum: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<f64>,
}
impl MetricValue {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
time_stamp: "test-time_stamp".into(),
..Default::default()
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TimeSeriesElement {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub data: Vec<MetricValue>,
}
impl TimeSeriesElement {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self { data: vec![] }
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Metric {
pub id: String,
#[serde(rename = "type")]
pub r#type: String,
pub name: String,
pub unit: String,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub timeseries: Vec<TimeSeriesElement>,
}
impl Metric {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: "test-id".into(),
r#type: "test-type".into(),
name: "test-metric".into(),
unit: "test-unit".into(),
timeseries: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricsResponse {
#[serde(default)]
pub value: Vec<Metric>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cost: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timespan: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
impl MetricsResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
cost: Some(100),
timespan: Some("test-timespan".into()),
interval: Some("test-interval".into()),
namespace: Some("test-namespace".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricAlertProperties {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub severity: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub evaluation_frequency: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub window_size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub provisioning_state: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_resource_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_resource_region: Option<String>,
}
impl MetricAlertProperties {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
description: Some("test-description".into()),
severity: Some(100),
enabled: Some(false),
evaluation_frequency: Some("test-evaluation_frequency".into()),
window_size: Some("test-window_size".into()),
provisioning_state: Some("test-provisioning_state".into()),
target_resource_type: Some("test-target_resource_type".into()),
target_resource_region: Some("test-target_resource_region".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricAlertResource {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
pub location: String,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<MetricAlertProperties>,
}
impl MetricAlertResource {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
name: Some("test-metric_alert_resource".into()),
r#type: Some("test-type".into()),
location: "test-location".into(),
tags: Default::default(),
properties: Some(MetricAlertProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricAlertResourceCollection {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub value: Vec<MetricAlertResource>,
}
impl MetricAlertResourceCollection {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self { value: vec![] }
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricAlertResourcePatch {
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<MetricAlertProperties>,
}
impl MetricAlertResourcePatch {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
tags: Default::default(),
properties: Some(MetricAlertProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetricAlertCreateRequest {
pub location: String,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<MetricAlertProperties>,
}
impl MetricAlertCreateRequest {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
location: "test-location".into(),
tags: Default::default(),
properties: Some(MetricAlertProperties::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EventData {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_timestamp: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub operation_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_group_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sub_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub level: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub caller: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
}
impl EventData {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
id: Some("test-id".into()),
event_timestamp: Some("test-event_timestamp".into()),
operation_name: Some("test-operation_name".into()),
resource_group_name: Some("test-resource_group_name".into()),
resource_type: Some("test-resource_type".into()),
resource_id: Some("test-resource_id".into()),
status: Some("test-status".into()),
sub_status: Some("test-sub_status".into()),
level: Some("test-level".into()),
caller: Some("test-caller".into()),
description: Some("test-description".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EventDataCollection {
#[serde(default)]
pub value: Vec<EventData>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_link: Option<String>,
}
impl EventDataCollection {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
value: vec![],
next_link: Some("test-next_link".into()),
}
}
}