summaryrefslogtreecommitdiff
path: root/src/spec.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-03-07 09:01:23 +0200
committerLars Wirzenius <liw@liw.fi>2021-03-07 12:25:19 +0200
commit4621b07522564f6a3c1c2ad0484fb88cf0e2ce49 (patch)
tree8f8c33437771322c2c5c2c40d79151320beb2beb /src/spec.rs
parenta6f802fda57fc7e951c0374a268de2274718cd9d (diff)
downloadvmadm-4621b07522564f6a3c1c2ad0484fb88cf0e2ce49.tar.gz
feat: generate SSH key pairs, create host certificates
Diffstat (limited to 'src/spec.rs')
-rw-r--r--src/spec.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/spec.rs b/src/spec.rs
index d01abcf..928628e 100644
--- a/src/spec.rs
+++ b/src/spec.rs
@@ -26,6 +26,8 @@ struct OneVmInputSpecification {
pub image_size_gib: Option<u64>,
pub memory_mib: Option<u64>,
pub cpus: Option<u64>,
+ pub generate_host_certificate: Option<bool>,
+ pub ca_key: Option<PathBuf>,
}
impl OneVmInputSpecification {
@@ -131,6 +133,8 @@ pub struct Specification {
pub image_size_gib: u64,
pub memory_mib: u64,
pub cpus: u64,
+ pub generate_host_certificate: bool,
+ pub ca_key: Option<PathBuf>,
}
#[derive(Debug, thiserror::Error)]
@@ -193,6 +197,11 @@ impl Specification {
) -> Result<Specification, SpecificationError> {
let key_filenames = input.ssh_key_files(config, name)?;
let ssh_keys = ssh_keys(&key_filenames)?;
+ let ca_key = if let Some(filename) = &input.ca_key {
+ Some(filename.clone())
+ } else {
+ config.ca_key.clone()
+ };
let spec = Specification {
name: name.to_string(),
@@ -210,6 +219,8 @@ impl Specification {
image_size_gib: input.image_size_gib(config, name)?,
memory_mib: input.memory_mib(config, name)?,
cpus: input.cpus(config, name)?,
+ generate_host_certificate: input.generate_host_certificate.or(Some(false)).unwrap(),
+ ca_key: ca_key,
};
debug!("specification as with defaults applied: {:#?}", spec);