supercode_interchange/orchestration/
fire.rs1use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6use crate::ontology::Residue;
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
12#[serde(rename_all = "snake_case")]
13pub enum FireStatus {
14 Claimed,
16 Running,
18 Succeeded,
20 Failed,
22 Timeout,
24 Unknown,
26}
27
28impl FireStatus {
29 pub fn hermes_word(self) -> &'static str {
31 match self {
32 Self::Claimed => "claimed",
33 Self::Running => "running",
34 Self::Succeeded => "completed",
35 Self::Failed | Self::Timeout => "failed",
36 Self::Unknown => "unknown",
37 }
38 }
39
40 pub fn from_hermes_word(word: &str) -> Option<Self> {
42 Some(match word {
43 "claimed" => Self::Claimed,
44 "running" => Self::Running,
45 "completed" => Self::Succeeded,
46 "failed" => Self::Failed,
47 "unknown" => Self::Unknown,
48 _ => return None,
49 })
50 }
51}
52
53#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
55pub struct Fire {
56 pub id: String,
58 pub job_id: String,
60 #[serde(default)]
62 pub session_id: Option<String>,
63 pub status: FireStatus,
65 pub claimed_at: String,
67 #[serde(default)]
69 pub started_at: Option<String>,
70 #[serde(default)]
72 pub finished_at: Option<String>,
73 #[serde(default)]
75 pub error: Option<String>,
76 #[serde(default)]
78 pub obligation_id: Option<String>,
79 #[serde(default)]
81 pub residue: Residue,
82}