From 95035de6aef81b768f0fc5e1900afcd284a924c1 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 03:16:12 +0000 Subject: [PATCH 1/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0node=20delete=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E7=9A=84=E6=9C=8D=E5=8A=A1=E7=AB=AF=E5=8F=8A=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocl/src/commands/generic.rs | 94 ++++++++++++++++++++++++++++-- bin/nanocld/src/services/node.rs | 28 ++++++++- 2 files changed, 115 insertions(+), 7 deletions(-) diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index 11d1b48e..1fd861ad 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -5,6 +5,7 @@ use std::io::Write; use dirs::home_dir; use serde_json::json; use nanocld_client::stubs::node::Node; +use std::fs; use nanocl_error::{ http_client::HttpClientError, @@ -19,7 +20,7 @@ use nanocld_client::{ }; use serde::{de::DeserializeOwned, Serialize}; use gethostname::gethostname; - +use ntex::http::client::ClientResponse; use crate::{ config::CliConfig, models::{ @@ -317,17 +318,36 @@ pub trait GenericCommandJoin: GenericCommand { opts: &GenericJoinOpts, ) -> IoResult<()> { + + let mut local_client = client.clone(); + if local_client.unix_socket != None { + local_client.url = "http://localhost".to_owned(); + local_client.unix_socket = Some(String::from("/run/nanocl/nanocl.sock")); + } + let hostname = gethostname().into_string().unwrap_or_else(|_| "Unknown".to_string()); - let mut res = client + let mut res = match local_client .send_get( &format!("/{}/get_by_name?node_name={}", Self::object_name(), hostname), None::<()> ) - .await?; + .await{ + Ok(res) => res, + Err(_) => { + println!("Node join Error! Be sure your node name is your hostname!"); + return Ok(()) + } + }; let mut node_info: Node = res .json() .await .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; + + if node_info.role == "site" { + println!("Already joined a cluster! master ip is: {}",node_info.master_endpoint); + return Ok(()) + } + node_info.role = "site".parse().unwrap(); node_info.master_endpoint = opts.master_ip.clone(); @@ -389,9 +409,71 @@ pub trait GenericCommandDelete: GenericCommand { opts: &GenericDeleteOpts, ) -> IoResult<()> { - println!("client url: {}", client.url); - println!("master ip: {}", opts.node_name); - println!("exec_delete!"); + let mut res = match client + .send_get( + &format!("/{}/get_by_name?node_name={}", Self::object_name(), opts.node_name), + None::<()> + ) + .await { + Ok(res) => res, + Err(e) => { + println!("Node Delete Error: {}",e); + return Ok(()) + } + }; + let mut node_info: Node = res + .json() + .await + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; + + if node_info.role == "master" { + println!("cannot delete the master node!"); + return Ok(()) + } + + let res = match client + .send_delete( + &format!("/{}/delete_by_name?node_name={}", Self::object_name(), opts.node_name), + None::<()> + ) + .await { + Ok(res) => { + println!("Node {} Delete Success", opts.node_name); + res + }, + Err(e) => { + println!("Node Delete Error: {}", e); + return Ok(()) + } + }; + + if res.status().is_success() { + let mut local_client = client.clone(); + local_client.url = "http://localhost".to_owned(); + local_client.unix_socket = Some(String::from("/run/nanocl/nanocl.sock")); + + node_info.role = "master".parse().unwrap(); + node_info.master_endpoint = node_info.endpoint.clone(); + + client.send_post( + &format!("/{}/update_by_name", Self::object_name()), + Some(node_info), + None::<()> + ).await?; + + // 获取用户的 HOME 目录 + let home_dir = home_dir().expect("Failed to get home directory"); + + // 文件路径 ~/.nanocl/conf.yml + let conf_file_path = home_dir.join(".nanocl").join("conf.yml"); + + // 尝试删除文件 + match fs::remove_file(conf_file_path) { + Ok(_) => println!("Conf File Deleted Successfully."), + Err(e) => eprintln!("Error Deleting Conf File: {}", e), + } + } + Ok(()) } } \ No newline at end of file diff --git a/bin/nanocld/src/services/node.rs b/bin/nanocld/src/services/node.rs index 5aba6876..37dd504f 100644 --- a/bin/nanocld/src/services/node.rs +++ b/bin/nanocld/src/services/node.rs @@ -70,6 +70,31 @@ pub async fn get_node_by_name( } } +/// Delete a node by name +#[cfg_attr(feature = "dev", utoipa::path( + get, + tag = "Nodes", + path = "/nodes/delete_by_name", + params( + ("name" = String,), + ), + responses( + (status = 200, description = "Success delete a node", body = [None]), + ), +))] +#[web::delete("/nodes/delete_by_name")] +pub async fn delete_node_by_name( + state: web::types::State, + query: web::types::Query> +) -> HttpResult { + if let Some(node_name) = query.get("node_name") { + NodeDb::del_by_pk(node_name, &state.inner.pool).await?; + Ok(web::HttpResponse::Ok().finish()) + } else { + Ok(web::HttpResponse::BadRequest().body("Missing node_name in request body")) + } +} + /// Update a node by name #[cfg_attr(feature = "dev", utoipa::path( post, @@ -236,10 +261,11 @@ pub async fn node_ws( } pub fn ntex_config(config: &mut web::ServiceConfig) { - config.service(list_node); config.service(get_node_by_name); + config.service(delete_node_by_name); config.service(update_node_by_name); config.service(join_node); + config.service(list_node); config.service(count_node); config.service(web::resource("/nodes/ws").route(web::get().to(node_ws))); } -- Gitee From ef353d724fa308e8e1a942f634f951035d74abd2 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 03:34:35 +0000 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dnode=E7=9F=AD=E7=BA=BF?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E5=90=8E=E6=97=A0=E6=B3=95=E5=90=91master?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocld/src/repositories/node.rs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/bin/nanocld/src/repositories/node.rs b/bin/nanocld/src/repositories/node.rs index 9c5107bb..0279c9b9 100644 --- a/bin/nanocld/src/repositories/node.rs +++ b/bin/nanocld/src/repositories/node.rs @@ -130,12 +130,7 @@ impl NodeDb { }; match NodeDb::create_if_not_exists(&node, &state.inner.pool).await { Ok(_) => Ok(()), - Err(e) => { - if e.inner.kind() == std::io::ErrorKind::AlreadyExists { - NodeDb::update_if_exist(&node, &state.inner.pool).await?; - } - Ok(()) - } + Err(_) => Ok(()), } } } -- Gitee From 6159fd2bedda12981fdc447fbaae4904b09f9a5c Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 03:59:57 +0000 Subject: [PATCH 3/9] =?UTF-8?q?=E9=9B=86=E7=BE=A4=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E8=8A=82=E7=82=B9=E4=B9=9F=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=87=AA=E5=B7=B1=E4=BB=A5=E5=A4=96=E7=9A=84?= =?UTF-8?q?site=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocl/src/commands/generic.rs | 11 +++++++++-- bin/nanocld/src/main.rs | 8 ++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index 1fd861ad..7803fdd7 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -21,6 +21,7 @@ use nanocld_client::{ use serde::{de::DeserializeOwned, Serialize}; use gethostname::gethostname; use ntex::http::client::ClientResponse; +use url::quirks::hostname; use crate::{ config::CliConfig, models::{ @@ -449,8 +450,14 @@ pub trait GenericCommandDelete: GenericCommand { if res.status().is_success() { let mut local_client = client.clone(); - local_client.url = "http://localhost".to_owned(); - local_client.unix_socket = Some(String::from("/run/nanocl/nanocl.sock")); + + let hostname = gethostname().into_string().unwrap_or_else(|_| "Unknown".to_string()); + + if node_info.name == hostname{ + local_client.url = String::from("unix:///run/nanocl/nanocl.sock"); + } else { + local_client.url = format!("http://{}:8585",node_info.endpoint); + } node_info.role = "master".parse().unwrap(); node_info.master_endpoint = node_info.endpoint.clone(); diff --git a/bin/nanocld/src/main.rs b/bin/nanocld/src/main.rs index bff2b2a2..d3e3c8ea 100644 --- a/bin/nanocld/src/main.rs +++ b/bin/nanocld/src/main.rs @@ -182,16 +182,16 @@ async fn start_monitoring_task(shutdown_rx: watch::Receiver, daemon_state: // 读取节点信息并发送心跳到 master match NodeDb::read_by_pk(&hostname, &db_pool).await { Ok(new_node) => { - let master_ip = new_node.master_endpoint.clone(); + let master_endpoint = new_node.master_endpoint.clone(); let node_endpoint = new_node.endpoint.clone(); // 如果 master_endpoint 和 endpoint 不同,则发送 HTTP 请求 - if master_ip != node_endpoint { - println!("master_ip:{}", master_ip); + if master_endpoint != node_endpoint { + println!("master_ip:{}", master_endpoint); // 使用 ntex::http::client 发送 HTTP 请求 let client = NanocldClient{ - url: format!("http://{}:8585",master_ip), + url: format!("http://{}:8585",master_endpoint), version: new_node.version.clone(), unix_socket: None, ssl: None, -- Gitee From ae733d03b4af155af0a5badd06a37e1333a455e9 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 04:15:49 +0000 Subject: [PATCH 4/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=80=E5=87=BA=E9=9B=86=E7=BE=A4=E5=90=8E=EF=BC=8C=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9C=AA=E6=81=A2=E5=A4=8D=E4=B8=BAmaster=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 1 + bin/nanocl/src/commands/generic.rs | 12 +----------- bin/nanocld/Cargo.toml | 3 ++- bin/nanocld/src/services/node.rs | 16 ++++++++++++++-- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 81190efe..64345136 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2374,6 +2374,7 @@ dependencies = [ "clap_mangen", "diesel", "diesel_migrations", + "dirs", "env_logger", "futures", "futures-util", diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index 7803fdd7..7ca6e80c 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -462,23 +462,13 @@ pub trait GenericCommandDelete: GenericCommand { node_info.role = "master".parse().unwrap(); node_info.master_endpoint = node_info.endpoint.clone(); - client.send_post( + local_client.send_post( &format!("/{}/update_by_name", Self::object_name()), Some(node_info), None::<()> ).await?; - // 获取用户的 HOME 目录 - let home_dir = home_dir().expect("Failed to get home directory"); - // 文件路径 ~/.nanocl/conf.yml - let conf_file_path = home_dir.join(".nanocl").join("conf.yml"); - - // 尝试删除文件 - match fs::remove_file(conf_file_path) { - Ok(_) => println!("Conf File Deleted Successfully."), - Err(e) => eprintln!("Error Deleting Conf File: {}", e), - } } Ok(()) diff --git a/bin/nanocld/Cargo.toml b/bin/nanocld/Cargo.toml index 54447bd2..68404498 100644 --- a/bin/nanocld/Cargo.toml +++ b/bin/nanocld/Cargo.toml @@ -98,4 +98,5 @@ tonic = "0.11.0" tower = "0.4.10" thiserror = "1.0.63" serde_urlencoded = "0.7.1" -http = "1.1.0" \ No newline at end of file +http = "1.1.0" +dirs = "5.0.1" \ No newline at end of file diff --git a/bin/nanocld/src/services/node.rs b/bin/nanocld/src/services/node.rs index 37dd504f..5c1c87f4 100644 --- a/bin/nanocld/src/services/node.rs +++ b/bin/nanocld/src/services/node.rs @@ -1,8 +1,9 @@ -use std::{cell::RefCell, rc::Rc, time::Instant}; +use std::{cell::RefCell, fs, rc::Rc, time::Instant}; use std::io::ErrorKind; use futures::future::ready; use crate::schema::nodes::dsl::*; use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl}; +use dirs::home_dir; use ntex::{ chain, channel::oneshot, @@ -72,7 +73,7 @@ pub async fn get_node_by_name( /// Delete a node by name #[cfg_attr(feature = "dev", utoipa::path( - get, + delete, tag = "Nodes", path = "/nodes/delete_by_name", params( @@ -89,6 +90,17 @@ pub async fn delete_node_by_name( ) -> HttpResult { if let Some(node_name) = query.get("node_name") { NodeDb::del_by_pk(node_name, &state.inner.pool).await?; + // 获取用户的 HOME 目录 + let home_dir = home_dir().expect("Failed to get home directory"); + + // 文件路径 ~/.nanocl/conf.yml + let conf_file_path = home_dir.join(".nanocl").join("conf.yml"); + + // 尝试删除文件 + match fs::remove_file(conf_file_path) { + Ok(_) => println!("Conf File Deleted Successfully."), + Err(e) => eprintln!("Error Deleting Conf File: {}", e), + } Ok(web::HttpResponse::Ok().finish()) } else { Ok(web::HttpResponse::BadRequest().body("Missing node_name in request body")) -- Gitee From 9dc7f8f109bfc83a3d1ff22411f907819a07a622 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 04:33:27 +0000 Subject: [PATCH 5/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=80=E5=87=BA=E9=9B=86=E7=BE=A4=E5=90=8E=EF=BC=8Cnanocl?= =?UTF-8?q?=E7=9A=84conf=E6=96=87=E4=BB=B6=E6=9C=AA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocl/src/commands/generic.rs | 8 +++++-- bin/nanocld/src/services/node.rs | 37 +++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index 7ca6e80c..d81f7267 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -456,7 +456,8 @@ pub trait GenericCommandDelete: GenericCommand { if node_info.name == hostname{ local_client.url = String::from("unix:///run/nanocl/nanocl.sock"); } else { - local_client.url = format!("http://{}:8585",node_info.endpoint); + local_client.url = "http://localhost".to_owned(); + local_client.unix_socket = Some(String::from("/run/nanocl/nanocl.sock")); } node_info.role = "master".parse().unwrap(); @@ -468,7 +469,10 @@ pub trait GenericCommandDelete: GenericCommand { None::<()> ).await?; - + local_client.send_delete( + &format!("/{}/delete_conf", Self::object_name()), + None::<()>, + ).await?; } Ok(()) diff --git a/bin/nanocld/src/services/node.rs b/bin/nanocld/src/services/node.rs index 5c1c87f4..2ab17b28 100644 --- a/bin/nanocld/src/services/node.rs +++ b/bin/nanocld/src/services/node.rs @@ -71,6 +71,31 @@ pub async fn get_node_by_name( } } +/// Delete node conf +#[cfg_attr(feature = "dev", utoipa::path( + delete, + tag = "Nodes", + path = "/nodes/delete_conf", + responses( + (status = 200, description = "Success delete a node", body = [None]), + ), +))] +#[web::delete("/nodes/delete_by_name")] +pub async fn delete_conf() -> HttpResult { + // 获取用户的 HOME 目录 + let home_dir = home_dir().expect("Failed to get home directory"); + + // 文件路径 ~/.nanocl/conf.yml + let conf_file_path = home_dir.join(".nanocl").join("conf.yml"); + + // 尝试删除文件 + match fs::remove_file(conf_file_path) { + Ok(_) => Ok(web::HttpResponse::Ok().finish()), + Err(_) => Ok(web::HttpResponse::BadRequest().body("Delete node conf error!")), + } +} + + /// Delete a node by name #[cfg_attr(feature = "dev", utoipa::path( delete, @@ -90,17 +115,6 @@ pub async fn delete_node_by_name( ) -> HttpResult { if let Some(node_name) = query.get("node_name") { NodeDb::del_by_pk(node_name, &state.inner.pool).await?; - // 获取用户的 HOME 目录 - let home_dir = home_dir().expect("Failed to get home directory"); - - // 文件路径 ~/.nanocl/conf.yml - let conf_file_path = home_dir.join(".nanocl").join("conf.yml"); - - // 尝试删除文件 - match fs::remove_file(conf_file_path) { - Ok(_) => println!("Conf File Deleted Successfully."), - Err(e) => eprintln!("Error Deleting Conf File: {}", e), - } Ok(web::HttpResponse::Ok().finish()) } else { Ok(web::HttpResponse::BadRequest().body("Missing node_name in request body")) @@ -275,6 +289,7 @@ pub async fn node_ws( pub fn ntex_config(config: &mut web::ServiceConfig) { config.service(get_node_by_name); config.service(delete_node_by_name); + config.service(delete_conf); config.service(update_node_by_name); config.service(join_node); config.service(list_node); -- Gitee From fc4e88077c01a089189c45850358a8908281d188 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 04:42:55 +0000 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=80=E5=87=BA=E9=9B=86=E7=BE=A4=E5=90=8E=EF=BC=8Cnanocl?= =?UTF-8?q?=E7=9A=84conf=E6=96=87=E4=BB=B6=E6=9C=AA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocl/src/commands/generic.rs | 4 ++-- bin/nanocld/src/services/node.rs | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index d81f7267..6af58698 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -454,10 +454,10 @@ pub trait GenericCommandDelete: GenericCommand { let hostname = gethostname().into_string().unwrap_or_else(|_| "Unknown".to_string()); if node_info.name == hostname{ - local_client.url = String::from("unix:///run/nanocl/nanocl.sock"); - } else { local_client.url = "http://localhost".to_owned(); local_client.unix_socket = Some(String::from("/run/nanocl/nanocl.sock")); + } else { + local_client.url = format!("http://{}:8585",node_info.endpoint); } node_info.role = "master".parse().unwrap(); diff --git a/bin/nanocld/src/services/node.rs b/bin/nanocld/src/services/node.rs index 2ab17b28..0fa1b971 100644 --- a/bin/nanocld/src/services/node.rs +++ b/bin/nanocld/src/services/node.rs @@ -81,7 +81,10 @@ pub async fn get_node_by_name( ), ))] #[web::delete("/nodes/delete_by_name")] -pub async fn delete_conf() -> HttpResult { +pub async fn delete_conf( + state: web::types::State, + query: web::types::Query> +) -> HttpResult { // 获取用户的 HOME 目录 let home_dir = home_dir().expect("Failed to get home directory"); -- Gitee From 9ce2f0ff283dbe26c5593780a5babb01a263c95c Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 04:59:28 +0000 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=80=E5=87=BA=E9=9B=86=E7=BE=A4=E5=90=8E=EF=BC=8Cnanocl?= =?UTF-8?q?=E7=9A=84conf=E6=96=87=E4=BB=B6=E6=9C=AA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocl/src/commands/generic.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index 6af58698..d76f0be8 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -449,15 +449,25 @@ pub trait GenericCommandDelete: GenericCommand { }; if res.status().is_success() { - let mut local_client = client.clone(); let hostname = gethostname().into_string().unwrap_or_else(|_| "Unknown".to_string()); + let local_client: NanocldClient; + if node_info.name == hostname{ - local_client.url = "http://localhost".to_owned(); - local_client.unix_socket = Some(String::from("/run/nanocl/nanocl.sock")); + local_client = NanocldClient{ + url: "http://localhost".to_owned(), + version: node_info.version.clone(), + unix_socket: Some(String::from("/run/nanocl/nanocl.sock")), + ssl: None, + }; } else { - local_client.url = format!("http://{}:8585",node_info.endpoint); + local_client = NanocldClient{ + url: format!("http://{}:8585",node_info.endpoint), + version: node_info.version.clone(), + unix_socket: None, + ssl: None, + }; } node_info.role = "master".parse().unwrap(); -- Gitee From e60a35e839d34909122475a8e601dc40b2392f50 Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 05:07:12 +0000 Subject: [PATCH 8/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=80=E5=87=BA=E9=9B=86=E7=BE=A4=E5=90=8E=EF=BC=8Cnanocl?= =?UTF-8?q?=E7=9A=84conf=E6=96=87=E4=BB=B6=E6=9C=AA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocl/src/commands/generic.rs | 5 ++--- bin/nanocld/src/services/node.rs | 7 ++----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index d76f0be8..11927cdf 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -453,7 +453,7 @@ pub trait GenericCommandDelete: GenericCommand { let hostname = gethostname().into_string().unwrap_or_else(|_| "Unknown".to_string()); let local_client: NanocldClient; - + if node_info.name == hostname{ local_client = NanocldClient{ url: "http://localhost".to_owned(), @@ -472,13 +472,12 @@ pub trait GenericCommandDelete: GenericCommand { node_info.role = "master".parse().unwrap(); node_info.master_endpoint = node_info.endpoint.clone(); - + local_client.send_post( &format!("/{}/update_by_name", Self::object_name()), Some(node_info), None::<()> ).await?; - local_client.send_delete( &format!("/{}/delete_conf", Self::object_name()), None::<()>, diff --git a/bin/nanocld/src/services/node.rs b/bin/nanocld/src/services/node.rs index 0fa1b971..64fef185 100644 --- a/bin/nanocld/src/services/node.rs +++ b/bin/nanocld/src/services/node.rs @@ -80,11 +80,8 @@ pub async fn get_node_by_name( (status = 200, description = "Success delete a node", body = [None]), ), ))] -#[web::delete("/nodes/delete_by_name")] -pub async fn delete_conf( - state: web::types::State, - query: web::types::Query> -) -> HttpResult { +#[web::delete("/nodes/delete_conf")] +pub async fn delete_conf() -> HttpResult { // 获取用户的 HOME 目录 let home_dir = home_dir().expect("Failed to get home directory"); -- Gitee From a48780bbb756cf43d1372ac127fee2c6ccf74fcd Mon Sep 17 00:00:00 2001 From: Yuichi <913637919@qq.com> Date: Fri, 25 Oct 2024 05:17:08 +0000 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E9=80=80=E5=87=BA=E9=9B=86=E7=BE=A4=E5=90=8E=EF=BC=8Cnanocl?= =?UTF-8?q?=E7=9A=84conf=E6=96=87=E4=BB=B6=E6=9C=AA=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/nanocl/src/commands/generic.rs | 2 +- bin/nanocld/src/repositories/generic/read.rs | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/bin/nanocl/src/commands/generic.rs b/bin/nanocl/src/commands/generic.rs index 11927cdf..ea8abbfd 100644 --- a/bin/nanocl/src/commands/generic.rs +++ b/bin/nanocl/src/commands/generic.rs @@ -472,7 +472,7 @@ pub trait GenericCommandDelete: GenericCommand { node_info.role = "master".parse().unwrap(); node_info.master_endpoint = node_info.endpoint.clone(); - + local_client.send_post( &format!("/{}/update_by_name", Self::object_name()), Some(node_info), diff --git a/bin/nanocld/src/repositories/generic/read.rs b/bin/nanocld/src/repositories/generic/read.rs index 035c11fa..ce5b853d 100644 --- a/bin/nanocld/src/repositories/generic/read.rs +++ b/bin/nanocld/src/repositories/generic/read.rs @@ -37,7 +37,6 @@ pub trait RepositoryReadBy: super::RepositoryBase { let item = query .get_result::(&mut conn) .map_err(|err| { - log::warn!("Failed to read item from database with function read_one_by: {:?}", err); Self::map_err(err) })?; Ok(item) @@ -74,7 +73,6 @@ pub trait RepositoryReadBy: super::RepositoryBase { let items = query .get_results::(&mut conn) .map_err(|err| { - log::warn!("Failed to read item from database with function read_by: {:?}", err); Self::map_err(err) })?; Ok(items) -- Gitee