comparison src/command.rs @ 28:1c3b6b6ee0b1

add show template
author AnaTofuZ <anatofuz@gmail.com>
date Sat, 21 Nov 2020 16:37:58 +0900
parents afec42bdd5ab
children f4b655fae2a3
comparison
equal deleted inserted replaced
27:c0f0181ee91a 28:1c3b6b6ee0b1
1 use super::user; 1 use super::user;
2 use super::virsh; 2 use super::virsh;
3 use super::xml; 3 use super::xml;
4
5 use std::{fs, io};
6
7 const TEMPLATE_DIR: &str = "/ie-ryukyu/kvm/images/templates/";
8 const TEMPLATE_SUFFIX: &str = "template-";
9 const TEMPLATE_FILE_EXTENSION: &str = ".qcow2";
4 10
5 pub fn list(user_name: &str) { 11 pub fn list(user_name: &str) {
6 let (ldump_msg, vm_list_strs) = virsh::get_vm_list(user_name); 12 let (ldump_msg, vm_list_strs) = virsh::get_vm_list(user_name);
7 println!("{}", ldump_msg.info_msg); 13 println!("{}", ldump_msg.info_msg);
8 println!("{}", ldump_msg.border_line); 14 println!("{}", ldump_msg.border_line);
9 for vm_info in vm_list_strs { 15 for vm_info in vm_list_strs {
10 println!("{}", vm_info); 16 println!("{}", vm_info);
11 } 17 }
18 }
19
20 pub fn templates() -> io::Result<()> {
21 let mut entries = fs::read_dir(TEMPLATE_DIR)?
22 .map(|res| res.map(|e| e.path()))
23 .collect::<Result<Vec<_>, io::Error>>()?;
24
25 entries.sort();
26
27 for entry in entries {
28 let template_vm = entry
29 .display()
30 .to_string()
31 .replace(TEMPLATE_DIR, "")
32 .replace(TEMPLATE_SUFFIX, "")
33 .replace(TEMPLATE_FILE_EXTENSION, "");
34 println!("{}", template_vm);
35 }
36
37 Ok(())
12 } 38 }
13 39
14 pub fn define(user: &user::User, vm_name: String) { 40 pub fn define(user: &user::User, vm_name: String) {
15 let vm_name = generate_vm_name(&user.name, &vm_name); 41 let vm_name = generate_vm_name(&user.name, &vm_name);
16 let vm_arg = xml::GenerateVMArg::new(&user.name, &vm_name, false); 42 let vm_arg = xml::GenerateVMArg::new(&user.name, &vm_name, false);