summaryrefslogtreecommitdiff
path: root/src/bin/tool.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/tool.rs')
-rw-r--r--src/bin/tool.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/bin/tool.rs b/src/bin/tool.rs
new file mode 100644
index 0000000..18a5c19
--- /dev/null
+++ b/src/bin/tool.rs
@@ -0,0 +1,27 @@
+use std::path::PathBuf;
+
+use vmadm::cloudinit::CloudInitConfig;
+use vmadm::image::VirtualMachineImage;
+use vmadm::install::{virt_install, VirtInstallArgs};
+
+const BASE_PATH: &'static str = "/home/liw/tmp/debian-10-openstack-amd64.qcow2";
+const IMAGE_PATH: &'static str = "/home/liw/tmp/try-vm.qcow2";
+
+fn main() -> anyhow::Result<()> {
+ let mut init = CloudInitConfig::default();
+ init.set_hostname("toy-vm");
+ init.set_authorized_keys("xxx liw-openpgp xxx");
+ println!("init: {:#?}", init);
+
+ let base = PathBuf::from(BASE_PATH);
+ let image = PathBuf::from(IMAGE_PATH);
+ let image = VirtualMachineImage::new_from_base(&base, &image)?;
+ image.resize(1024 * 1024 * 1024 * 10)?;
+
+ let args = VirtInstallArgs::new("toy-vm", &image, &init);
+ println!("{:#?}", args);
+ virt_install(&args)?;
+ println!("OK");
+
+ Ok(())
+}