use super::*;
pub const EXECUTION_OPERATIONS_PATH: &str =
"/internal/v1/workspace/execution-environment-operations";
pub const EXECUTION_OPERATION_CLEANUP_PATH: &str =
"/internal/v1/workspace/execution-environment-operations/{operationId}/cleanup";
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ts_rs::TS)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum ExecutionEnvironmentSource {
Default,
Snapshot { snapshot_id: String },
Build { build: SnapshotBuildSpec },
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ts_rs::TS)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct ProvisionExecutionEnvironmentRequest {
pub execution_id: String,
pub provider: String,
pub source: ExecutionEnvironmentSource,
pub persistence: SpacePersistence,
pub access_mode: SpaceAccessMode,
pub ttl_ms: u64,
#[serde(default = "default_poll_interval_ms")]
pub poll_interval_ms: u64,
#[serde(default = "default_poll_attempts")]
pub max_poll_attempts: usize,
}
fn default_poll_interval_ms() -> u64 {
1_000
}
fn default_poll_attempts() -> usize {
600
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ts_rs::TS)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct ExecutionEnvironmentOperation {
pub id: String,
pub execution_id: String,
pub provider: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub snapshot_id: Option<String>,
pub built_snapshot: bool,
pub computer_id: String,
pub space_id: String,
pub space_revision: u64,
pub session_id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub lease_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fencing_token: Option<u64>,
pub created_at_ms: u64,
}
#[derive(Clone, PartialEq, Eq, Serialize, Deserialize, ts_rs::TS)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct IssuedExecutionEnvironmentOperation {
pub operation: ExecutionEnvironmentOperation,
pub access_ticket_token: String,
}
impl std::fmt::Debug for IssuedExecutionEnvironmentOperation {
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
formatter
.debug_struct("IssuedExecutionEnvironmentOperation")
.field("operation", &self.operation)
.field("access_ticket_token", &"[REDACTED]")
.finish()
}
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ts_rs::TS)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct CleanupExecutionEnvironmentRequest {
pub operation: ExecutionEnvironmentOperation,
}
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, ts_rs::TS)]
#[serde(deny_unknown_fields, rename_all = "camelCase")]
pub struct ExecutionEnvironmentCleanup {
pub lease_released: bool,
pub session_closed: bool,
pub space_deleted: bool,
pub computer_deleted: bool,
pub snapshot_deleted: bool,
}