From e6455df900d71826b04d33fba358f0c91e54eec3 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 24 Jan 2021 13:47:31 +0200 Subject: feat: add initial CloudInitConfig --- .gitignore | 2 ++ Cargo.toml | 9 +++++++++ src/cloudinit.rs | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 4 files changed, 63 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 src/cloudinit.rs create mode 100644 src/lib.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96ef6c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..fac79e6 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "vmadm" +version = "0.1.0" +authors = ["Lars Wirzenius "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/src/cloudinit.rs b/src/cloudinit.rs new file mode 100644 index 0000000..de256d8 --- /dev/null +++ b/src/cloudinit.rs @@ -0,0 +1,51 @@ +use std::default::Default; + +#[derive(Default, Debug)] +pub struct CloudInitConfig { + hostname: String, + authorized_keys: String, +} + +impl CloudInitConfig { + pub fn hostname(&self) -> &str { + &self.hostname + } + + pub fn set_hostname(&mut self, hostname: &str) { + self.hostname = hostname.to_string(); + } + + pub fn authorized_keys(&self) -> &str { + &self.authorized_keys + } + + pub fn set_authorized_keys(&mut self, keys: &str) { + self.authorized_keys = keys.to_string(); + } +} + +#[cfg(test)] +mod test { + use super::CloudInitConfig; + + #[test] + fn is_empty_by_default() { + let init = CloudInitConfig::default(); + assert_eq!(init.hostname(), ""); + assert_eq!(init.authorized_keys(), ""); + } + + #[test] + fn sets_hostname() { + let mut init = CloudInitConfig::default(); + init.set_hostname("foo"); + assert_eq!(init.hostname(), "foo"); + } + + #[test] + fn sets_authorized_keys() { + let mut init = CloudInitConfig::default(); + init.set_authorized_keys("auth"); + assert_eq!(init.authorized_keys(), "auth"); + } +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..3766a04 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1 @@ +pub mod cloudinit; -- cgit v1.2.1