summaryrefslogtreecommitdiff
path: root/src/cmd/cloud_init.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/cloud_init.rs')
-rw-r--r--src/cmd/cloud_init.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cmd/cloud_init.rs b/src/cmd/cloud_init.rs
new file mode 100644
index 0000000..3ab4139
--- /dev/null
+++ b/src/cmd/cloud_init.rs
@@ -0,0 +1,28 @@
+use crate::cloudinit::CloudInitConfig;
+use crate::spec::Specification;
+use log::{debug, info};
+use std::path::Path;
+
+pub fn cloud_init(spec: &Specification, dirname: &Path) -> anyhow::Result<()> {
+ info!(
+ "generating cloud-init configuration into {}",
+ dirname.display()
+ );
+
+ let init = CloudInitConfig::from(&spec)?;
+
+ debug!("creating directory {}", dirname.display());
+ std::fs::create_dir_all(dirname)?;
+ init.create_dir(dirname)?;
+
+ Ok(())
+}
+
+pub fn cloud_init_iso(spec: &Specification, iso: &Path) -> anyhow::Result<()> {
+ info!("generating cloud-init ISO into {}", iso.display());
+
+ let init = CloudInitConfig::from(&spec)?;
+ init.create_iso(iso)?;
+
+ Ok(())
+}