diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-10-22 18:27:09 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-10-26 15:31:44 +0100 |
commit | 1dd65c869c8ca3511a430ec6981f1d83bb8d787e (patch) | |
tree | 04ed498b69394a53a74eb6e9de337dee5e6579a2 /src/job/runnable.rs | |
parent | adaad3a4c1665bbfe74875b3dd4bdf51ca05adca (diff) |
Add job related types
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/job/runnable.rs')
-rw-r--r-- | src/job/runnable.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/job/runnable.rs b/src/job/runnable.rs new file mode 100644 index 0000000..4377d27 --- /dev/null +++ b/src/job/runnable.rs @@ -0,0 +1,46 @@ +use getset::Getters; +use uuid::Uuid; +use anyhow::Result; + +use crate::job::Job; +use crate::job::JobResource; +use crate::package::Package; +use crate::package::Script; +use crate::package::ScriptBuilder; +use crate::phase::PhaseName; +use crate::util::docker::ImageName; + +/// A job configuration that can be run. All inputs are clear here. +#[derive(Debug, Getters)] +pub struct RunnableJob { + uuid: Uuid, + + #[getset(get = "pub")] + package: Package, + + #[getset(get = "pub")] + image: ImageName, + + #[getset(get = "pub")] + script: Script, + + #[getset(get = "pub")] + resources: Vec<JobResource>, +} + +impl RunnableJob { + pub fn build_from_job(job: Job) -> Result<Self> { + let script = ScriptBuilder::new(&job.script_shebang) + .build(&job.package, &job.script_phases)?; + + Ok(RunnableJob { + uuid: job.uuid, + package: job.package, + image: job.image, + resources: job.resources, + + script, + }) + + } +} |