1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use crate::models::alloc_deployment_status::AllocDeploymentStatus;
use crate::models::allocated_resources::AllocatedResources;
use crate::models::allocation_metric::AllocationMetric;
use crate::models::desired_transition::DesiredTransition;
use crate::models::job::Job;
use crate::models::reschedule_tracker::RescheduleTracker;
use crate::models::resources::Resources;
use crate::models::task_state::TaskState;
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
#[serde(rename_all = "PascalCase")]
pub struct Allocation {
#[serde(alias = "ID")]
pub id: Option<String>,
pub namespace: Option<String>,
#[serde(alias = "EvalID")]
pub eval_id: Option<String>,
pub name: Option<String>,
#[serde(alias = "NodeID")]
pub node_id: Option<String>,
pub node_name: Option<String>,
#[serde(alias = "JobID")]
pub job_id: Option<String>,
pub job: Option<Job>,
pub task_group: Option<String>,
pub resources: Option<Resources>,
pub task_resources: Option<HashMap<String, Resources>>,
pub allocated_resources: Option<AllocatedResources>,
pub services: Option<HashMap<String, String>>,
pub metrics: Option<AllocationMetric>,
pub desired_status: Option<String>,
pub desired_description: Option<String>,
pub desired_transition: Option<DesiredTransition>,
pub client_status: Option<String>,
pub client_description: Option<String>,
pub task_states: Option<HashMap<String, TaskState>>,
#[serde(alias = "DeploymentID")]
pub deployment_id: Option<String>,
pub deployment_status: Option<AllocDeploymentStatus>,
#[serde(alias = "FollowupEvalID")]
pub followup_eval_id: Option<String>,
pub previous_allocation: Option<String>,
pub next_allocation: Option<String>,
pub reschedule_tracker: Option<RescheduleTracker>,
pub preempted_allocations: Option<Vec<String>>,
pub preempted_by_allocation: Option<String>,
pub create_index: Option<i32>,
pub modify_index: Option<i32>,
pub alloc_modify_index: Option<i32>,
pub create_time: Option<i64>,
pub modify_time: Option<i64>,
}
impl Allocation {
pub fn get_task_state(&self, name: &str) -> Option<&TaskState> {
match self.task_states {
Some(ref state) => match state.get(name) {
Some(task_state) => Some(task_state),
None => None,
},
None => None,
}
}
}