added fetching id for registration response
This commit is contained in:
@@ -11,7 +11,7 @@ serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
tokio = { version = "1.37", features = ["full"] }
|
||||
local-ip-address = "0.5"
|
||||
reqwest = { version = "0.11", default-features = false, features = ["json", "blocking", "cookies", "rustls-tls"] }
|
||||
reqwest = { version = "0.11", default-features = false, features = ["json", "blocking", "cookies", "rustls-tls", "statuscode"] }
|
||||
sysinfo = "0.29"
|
||||
metrics = "0.24.2"
|
||||
chrono = "0.4"
|
||||
|
@@ -147,15 +147,15 @@ impl HardwareInfo {
|
||||
}
|
||||
}
|
||||
|
||||
async fn register_with_server(base_url: &str) -> Result<(i32, String), Box<dyn Error>> {
|
||||
async fn get_server_id_by_ip(base_url: &str, ip: &str) -> Result<(i32, String), Box<dyn Error>> {
|
||||
let client = Client::builder()
|
||||
.danger_accept_invalid_certs(true)
|
||||
.build()?;
|
||||
|
||||
// First get server ID
|
||||
let url = format!("{}/server-id", base_url);
|
||||
let (id, ip_address) = loop {
|
||||
println!("Attempting to fetch server ID...");
|
||||
let url = format!("{}/monitoring/server-id-by-ip?ipAddress={}", base_url, ip);
|
||||
|
||||
loop {
|
||||
println!("Attempting to fetch server ID for IP {}...", ip);
|
||||
match client.get(&url).send().await {
|
||||
Ok(resp) if resp.status().is_success() => {
|
||||
let id_resp: IdResponse = resp.json().await?;
|
||||
@@ -163,19 +163,38 @@ async fn register_with_server(base_url: &str) -> Result<(i32, String), Box<dyn E
|
||||
"✅ Received ID {} for IP {}",
|
||||
id_resp.id, id_resp.ip_address
|
||||
);
|
||||
break (id_resp.id, id_resp.ip_address);
|
||||
return Ok((id_resp.id, id_resp.ip_address));
|
||||
}
|
||||
Ok(resp) if resp.status() == StatusCode::NOT_FOUND => {
|
||||
eprintln!("❌ Server with IP {} not found in database", ip);
|
||||
return Err("Server not registered in database".into());
|
||||
}
|
||||
Ok(resp) => {
|
||||
println!("⚠️ Server responded with status: {}", resp.status());
|
||||
sleep(Duration::from_secs(3)).await;
|
||||
}
|
||||
Err(err) => {
|
||||
println!("❌ Request failed: {}", err);
|
||||
sleep(Duration::from_secs(3)).await;
|
||||
}
|
||||
Ok(resp) => println!("⚠️ Server responded with status: {}", resp.status()),
|
||||
Err(err) => println!("❌ Request failed: {}", err),
|
||||
}
|
||||
sleep(Duration::from_secs(3)).await;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Then register hardware info
|
||||
async fn register_with_server(base_url: &str) -> Result<(i32, String), Box<dyn Error>> {
|
||||
// First get local IP
|
||||
let ip = local_ip_address::local_ip()?.to_string();
|
||||
|
||||
// Get server ID from backend
|
||||
let (server_id, registered_ip) = get_server_id_by_ip(base_url, &ip).await?;
|
||||
|
||||
// Collect hardware info
|
||||
let hardware = HardwareInfo::collect().await?;
|
||||
|
||||
// Send registration data
|
||||
let registration = RegistrationDto {
|
||||
id,
|
||||
ip_address: ip_address.clone(),
|
||||
id: server_id,
|
||||
ip_address: registered_ip,
|
||||
cpu_type: hardware.cpu_type,
|
||||
cpu_cores: hardware.cpu_cores,
|
||||
gpu_type: hardware.gpu_type,
|
||||
@@ -187,12 +206,12 @@ async fn register_with_server(base_url: &str) -> Result<(i32, String), Box<dyn E
|
||||
|
||||
if resp.status().is_success() {
|
||||
println!("Successfully registered with server.");
|
||||
Ok((server_id, registered_ip))
|
||||
} else {
|
||||
let text = resp.text().await?;
|
||||
println!("Registration failed: {}", text);
|
||||
eprintln!("Registration failed: {}", text);
|
||||
Err(text.into())
|
||||
}
|
||||
|
||||
Ok((id, ip_address))
|
||||
}
|
||||
|
||||
async fn heartbeat_loop(base_url: &str, ip: &str) -> Result<(), Box<dyn Error>> {
|
||||
|
Reference in New Issue
Block a user