use serde::{Deserialize, Serialize};
use crate::types::SessionId;
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
pub(crate) enum RuntimeLifecycleDisposition {
#[serde(rename = "succeeded")]
Succeeded,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(rename = "timed_out")]
TimedOut,
#[serde(rename = "superseded")]
Superseded,
#[serde(rename = "abandoned")]
Abandoned,
#[default]
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleBlockerTiming {
pub blocking_since: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleBlocker {
pub requirement: String,
pub system: String,
pub operation_id: String,
pub operation_revision: i64,
pub current_phase: String,
pub current_step: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub operation_disposition: Option<RuntimeLifecycleDisposition>,
pub timing: RuntimeLifecycleBlockerTiming,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleOperationTiming {
pub started_at: String,
pub phase_started_at: String,
pub transitioned_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleOperation {
pub operation_id: String,
pub operation_revision: i64,
pub trigger: String,
pub phase: String,
pub step: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub disposition: Option<RuntimeLifecycleDisposition>,
pub timing: RuntimeLifecycleOperationTiming,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleProgressOrigin {
pub kind: String,
pub progress_id: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleProgressTiming {
pub started_at: String,
pub phase_started_at: String,
pub transitioned_at: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleProgressStateData {
pub session_id: SessionId,
pub incarnation_id: String,
pub kind: String,
pub progress_id: String,
pub revision: i64,
pub phase: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub disposition: Option<RuntimeLifecycleDisposition>,
#[serde(skip_serializing_if = "Option::is_none")]
pub origin: Option<RuntimeLifecycleProgressOrigin>,
pub timing: RuntimeLifecycleProgressTiming,
pub blockers: Vec<RuntimeLifecycleBlocker>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleSystemStateData {
pub session_id: SessionId,
pub incarnation_id: String,
pub system: String,
pub system_revision: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub condition: Option<String>,
pub changed_operation: RuntimeLifecycleOperation,
pub active_operations: Vec<RuntimeLifecycleOperation>,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
enum RuntimeLifecycleSystemStateDiagnosticEventType {
#[serde(rename = "runtime.lifecycle.system_state")]
Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleSystemStateDiagnosticEvent {
#[serde(rename = "type")]
event_type: RuntimeLifecycleSystemStateDiagnosticEventType,
pub timestamp: String,
pub data: RuntimeLifecycleSystemStateData,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
enum RuntimeLifecycleProgressStateDiagnosticEventType {
#[serde(rename = "runtime.lifecycle.progress_state")]
Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct RuntimeLifecycleProgressStateDiagnosticEvent {
#[serde(rename = "type")]
event_type: RuntimeLifecycleProgressStateDiagnosticEventType,
pub timestamp: String,
pub data: RuntimeLifecycleProgressStateData,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub(crate) enum LifecycleDiagnosticEvent {
SystemState(RuntimeLifecycleSystemStateDiagnosticEvent),
ProgressState(RuntimeLifecycleProgressStateDiagnosticEvent),
}