diff --git a/bin/src/main.rs b/bin/src/main.rs index 1fecab7..e389162 100644 --- a/bin/src/main.rs +++ b/bin/src/main.rs @@ -4,7 +4,7 @@ use camino::Utf8PathBuf; use chrono::Utc; use clap::{Parser, Subcommand}; use config::manager::ManagerConfig; -use log; + use manager::Manager; use std::env; use std::process::ExitCode; @@ -107,7 +107,7 @@ fn manage(args: ManageArgs) -> Result<()> { setup_logger(args.log_level.unwrap_or(log::LevelFilter::Info)).expect("Could not setup logger"); let config = - ManagerConfig::from_file(&args.config.clone().into()).expect("Could not load config"); + ManagerConfig::from_file(&args.config.clone()).expect("Could not load config"); let mut manager = Manager::new(config); match args.debug_role { diff --git a/builder/src/lib.rs b/builder/src/lib.rs index 7fb08de..d028234 100644 --- a/builder/src/lib.rs +++ b/builder/src/lib.rs @@ -48,7 +48,7 @@ impl Builder { let own_path: Utf8PathBuf = env::current_exe()?.try_into()?; Ok(Self { - own_path: own_path.into(), + own_path, source_path: [¤t_dir, source_path].iter().collect(), output_path: [¤t_dir, output_path].iter().collect(), size_gb: size_gb.unwrap_or(DEFAULT_IMAGE_SIZE_GB), @@ -100,7 +100,7 @@ impl Builder { &self.own_path, self.mount_path.join("sbin/actions-init") ); - fs::copy_sparse(&self.own_path, &self.mount_path.join("sbin/actions-init"))?; + fs::copy_sparse(&self.own_path, self.mount_path.join("sbin/actions-init"))?; debug!("Unmounting the image from: '{}'", &self.mount_path); // Unmount the image diff --git a/config/src/lib.rs b/config/src/lib.rs index af37b77..518d2b5 100644 --- a/config/src/lib.rs +++ b/config/src/lib.rs @@ -1,5 +1,5 @@ use thiserror::*; -use toml; + pub mod firecracker; pub mod manager; diff --git a/github/src/lib.rs b/github/src/lib.rs index d5c87d3..4fdf031 100644 --- a/github/src/lib.rs +++ b/github/src/lib.rs @@ -1,5 +1,5 @@ use anyhow::Result; -use reqwest; + use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize)] @@ -27,7 +27,7 @@ impl GitHub { pub fn registration_token(&self) -> Result { let registration_token_result = self .client - .post(&format!( + .post(format!( "https://api.github.com/orgs/{}/actions/runners/registration-token", self.org )) @@ -42,7 +42,7 @@ impl GitHub { pub fn remove_runner(&self, runner_name: &str) -> Result<()> { self.client - .post(&format!( + .post(format!( "https://api.github.com/orgs/{}/actions/runners/remove-token", self.org )) diff --git a/initialiser/src/cache.rs b/initialiser/src/cache.rs index 380a288..5ed0587 100644 --- a/initialiser/src/cache.rs +++ b/initialiser/src/cache.rs @@ -19,10 +19,10 @@ pub fn setup_cache(cache_str: &str) -> Result<(), CacheError> { mount::mount_ext4("/dev/vdb", CACHE_PATH)?; set_permissions(CACHE_PATH, Permissions::from_mode(0o777))?; - let cache_links = cache_str.split(","); + let cache_links = cache_str.split(','); for cache_link in cache_links { let cache_link = cache_link.trim(); - let cache_parts: Vec<&str> = cache_link.split(":").collect(); + let cache_parts: Vec<&str> = cache_link.split(':').collect(); if cache_parts.len() != 2 { return Err(CacheError::Io(std::io::Error::new( std::io::ErrorKind::InvalidInput, @@ -33,7 +33,7 @@ pub fn setup_cache(cache_str: &str) -> Result<(), CacheError> { let cache_path = cache_parts[1]; fs::mkdir_p(&cache_root)?; - symlink(&cache_root, &cache_path)?; + symlink(&cache_root, cache_path)?; } Ok(()) diff --git a/initialiser/src/lib.rs b/initialiser/src/lib.rs index 94220f0..a152eac 100644 --- a/initialiser/src/lib.rs +++ b/initialiser/src/lib.rs @@ -76,7 +76,7 @@ impl Initialiser { Ok(github_runner_labels), ) => { debug!("Copy self to actions-runner"); - copy(&self.own_path, &Utf8PathBuf::from("/sbin/actions-run"))?; + copy(&self.own_path, Utf8PathBuf::from("/sbin/actions-run"))?; debug!("Set runner init script"); service::setup_service( diff --git a/initialiser/src/network.rs b/initialiser/src/network.rs index e3e4b91..5a2b529 100644 --- a/initialiser/src/network.rs +++ b/initialiser/src/network.rs @@ -1,6 +1,6 @@ use config::{NETWORK_MAGIC_MAC_START, NETWORK_MASK_SHORT}; use serde::Deserialize; -use serde_json; + use std::{fs::write, net::Ipv4Addr, process::Command}; use thiserror::Error; use util::{exec, network::mac_to_ip}; @@ -53,7 +53,7 @@ pub fn get_magic_address() -> Result { return Ok(interface); } } - Err(NetworkError::NoInterfaceFound.into()) + Err(NetworkError::NoInterfaceFound) } pub fn setup_network() -> Result, NetworkError> { @@ -72,7 +72,7 @@ pub fn setup_network() -> Result, NetworkError> { exec(Command::new("ip").args([ "addr", "add", - &format!("{}/{}", own_ip.to_string(), NETWORK_MASK_SHORT), + &format!("{}/{}", own_ip, NETWORK_MASK_SHORT), "dev", &magic_address.ifname, ]))?; diff --git a/manager/src/disk.rs b/manager/src/disk.rs index 4aba121..beaf7b5 100644 --- a/manager/src/disk.rs +++ b/manager/src/disk.rs @@ -35,7 +35,7 @@ impl Disk { } pub fn path_with_filename(&self) -> Utf8PathBuf { - self.path.join(&self.filename()) + self.path.join(self.filename()) } pub fn setup(&self) -> Result<(), std::io::Error> { @@ -46,7 +46,7 @@ impl Disk { pub fn setup_ext4(&self) -> Result<(), std::io::Error> { fs::dd(self.path_with_filename(), self.size_in_megabytes())?; - fs::mkfs_ext4(&self.path_with_filename())?; + fs::mkfs_ext4(self.path_with_filename())?; Ok(()) } } diff --git a/manager/src/instance.rs b/manager/src/instance.rs index 371b05b..b05a279 100644 --- a/manager/src/instance.rs +++ b/manager/src/instance.rs @@ -49,7 +49,7 @@ impl Instance { role: &Role, idx: u8, ) -> Self { - let instance_dir: Utf8PathBuf = work_dir.join(&role.slug()).join(format!("{}", idx)); + let instance_dir: Utf8PathBuf = work_dir.join(role.slug()).join(format!("{}", idx)); let cache = Disk::new(&instance_dir, "cache", role.cache_size, DiskFormat::Ext4); Self { @@ -157,29 +157,28 @@ impl Instance { boot_args: self.boot_args()?, }; - let mut drives = Vec::new(); - drives.push(Drive { - drive_id: "rootfs".to_string(), - path_on_host: self.work_dir.join("rootfs.ext4"), - is_root_device: true, - is_read_only: false, - cache_type: None, - }); - - drives.push(Drive { - drive_id: "cache".to_string(), - path_on_host: self.cache.path_with_filename(), - is_root_device: false, - is_read_only: false, - cache_type: None, - }); - - let mut network_interfaces = Vec::new(); - network_interfaces.push(NetworkInterface { + let drives = vec![ + Drive { + drive_id: "rootfs".to_string(), + path_on_host: self.work_dir.join("rootfs.ext4"), + is_root_device: true, + is_read_only: false, + cache_type: None, + }, + Drive { + drive_id: "cache".to_string(), + path_on_host: self.cache.path_with_filename(), + is_root_device: false, + is_read_only: false, + cache_type: None, + }, + ]; + + let network_interfaces = vec![NetworkInterface { iface_id: "eth0".to_string(), guest_mac: self.network_allocation.guest_mac.clone(), host_dev_name: self.network_allocation.tap_name.clone(), - }); + }]; let machine_config = MachineConfig { vcpu_count: self.cpus, @@ -201,8 +200,8 @@ impl Instance { self.rootfs_image, self.work_dir.join("rootfs.ext4"), ); - let _ = rm_rf(&self.work_dir.join("rootfs.ext4")); - copy_sparse(&self.rootfs_image, &self.work_dir.join("rootfs.ext4"))?; + let _ = rm_rf(self.work_dir.join("rootfs.ext4")); + copy_sparse(&self.rootfs_image, self.work_dir.join("rootfs.ext4"))?; debug!( "{} Generate config: '{}'", diff --git a/manager/src/lib.rs b/manager/src/lib.rs index 13168a5..cb5a79b 100644 --- a/manager/src/lib.rs +++ b/manager/src/lib.rs @@ -24,7 +24,7 @@ pub struct Manager { impl Manager { pub fn new(config: ManagerConfig) -> Self { - let mut signals = Signals::new(&[SIGINT]).unwrap(); + let mut signals = Signals::new([SIGINT]).unwrap(); let shutdown = Arc::new(AtomicBool::new(false)); let cloned_shutdown = shutdown.clone(); @@ -59,7 +59,7 @@ impl Manager { network_allocation, github.clone(), &self.config.run_path, - &role, + role, idx, ); instance.setup()?; diff --git a/runner/src/lib.rs b/runner/src/lib.rs index 7de411d..6854684 100644 --- a/runner/src/lib.rs +++ b/runner/src/lib.rs @@ -4,6 +4,12 @@ use util::exec; pub struct Runner {} +impl Default for Runner { + fn default() -> Self { + Self::new() + } +} + impl Runner { pub fn new() -> Self { Runner {} diff --git a/util/src/lib.rs b/util/src/lib.rs index 50a3332..53e1720 100644 --- a/util/src/lib.rs +++ b/util/src/lib.rs @@ -1,7 +1,7 @@ use cfg_if::cfg_if; #[allow(unused)] use lazy_static::lazy_static; -use log; + #[allow(unused)] use std::sync::atomic::{AtomicBool, Ordering}; #[allow(unused)] diff --git a/util/src/network.rs b/util/src/network.rs index 7ec33d4..01866db 100644 --- a/util/src/network.rs +++ b/util/src/network.rs @@ -27,7 +27,7 @@ pub fn ip_to_mac(ip: &Ipv4Addr) -> String { pub fn mac_to_ip(mac: &str) -> Result { let octets = mac .replace("06:00:", "") - .split(":") + .split(':') .map(|octet| u8::from_str_radix(octet, 16)) .collect::, ParseIntError>>() .map_err(|_| MacToIpError::NoIpInMac(mac.to_string()))?;