From 51d41f7d75d914eb790fcc4d9aeb274695bfbb06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Fr=C3=B6lich?= Date: Mon, 26 Jun 2023 15:23:26 +0200 Subject: [PATCH] feat: check for running docker engine --- src-tauri/src/main.rs | 13 ++++++++++++- src-tauri/src/util.rs | 9 +++++++++ src/beibootctl.ts | 4 ++++ src/components/ClusterTable.vue | 2 +- src/layouts/default/Default.vue | 2 +- src/main.ts | 11 +++++++++++ src/store/app.ts | 1 + 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c7be782..fb93a97 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -28,7 +28,7 @@ fn main() { context.config_mut().build.dist_dir = AppUrl::Url(window_url.clone()); builder = builder - .invoke_handler(tauri::generate_handler![connect_beiboot_ghostunnel, disconnect_beiboot_ghostunnel, write_kubeconfig, cleanup, start_server, check_running_connects, establish_heartbeat_connection]) + .invoke_handler(tauri::generate_handler![connect_beiboot_ghostunnel, disconnect_beiboot_ghostunnel, write_kubeconfig, cleanup, start_server, check_running_connects, establish_heartbeat_connection, check_docker_engine]) .plugin(tauri_plugin_localhost::Builder::new(port).build()) .plugin(tauri_plugin_store::Builder::default().build()) .setup(move |app| { @@ -149,3 +149,14 @@ async fn establish_heartbeat_connection(cluster_id: &str, token: &str) -> Result } } } + +#[tauri::command] +async fn check_docker_engine() -> Result { + match util::check_docker_engine().await { + Ok(res) => Ok(res), + Err(why) => { + println!("{}", why); + Err(format!("{}", why)) + } + } +} diff --git a/src-tauri/src/util.rs b/src-tauri/src/util.rs index 8138eca..1d98c7c 100644 --- a/src-tauri/src/util.rs +++ b/src-tauri/src/util.rs @@ -2,6 +2,7 @@ use std::fs::{File,create_dir_all}; use std::io::prelude::*; use std::env::temp_dir; use std::path::PathBuf; +use bollard::Docker; pub fn write_conf_file(beiboot_name: String, content: &str, file_type: &str) -> Result { @@ -47,6 +48,14 @@ pub fn cleanup(beiboot_name: String) -> Result<(), String> { } } +pub async fn check_docker_engine() -> Result { + let docker = Docker::connect_with_local_defaults().unwrap(); + match docker.info().await { + Ok(_) => Ok("Docker engine is running".to_string()), + Err(why) => Err(format!("{}", why)) + } +} + #[cfg(test)] mod tests { #[test] diff --git a/src/beibootctl.ts b/src/beibootctl.ts index 2ba894d..06040e6 100644 --- a/src/beibootctl.ts +++ b/src/beibootctl.ts @@ -64,3 +64,7 @@ export async function checkRunningConnects() { } return res } +export async function checkDockerEngine() { + let res: string = await invoke("check_docker_engine", {}) + return res +} diff --git a/src/components/ClusterTable.vue b/src/components/ClusterTable.vue index 2cce717..e1ca978 100644 --- a/src/components/ClusterTable.vue +++ b/src/components/ClusterTable.vue @@ -19,7 +19,7 @@ diff --git a/src/layouts/default/Default.vue b/src/layouts/default/Default.vue index d97bc1a..0c96333 100644 --- a/src/layouts/default/Default.vue +++ b/src/layouts/default/Default.vue @@ -58,7 +58,7 @@ Not logged in - Engine: Docker + {{ appStore.docker ? "Engine: Docker" : "Docker Engine not running" }}