json as string

This commit is contained in:
2025-10-29 14:26:52 +01:00
parent e02914516d
commit 6afd5d0fcd

View File

@@ -193,26 +193,37 @@ pub async fn broadcast_docker_containers(
server_id: u16, server_id: u16,
container_dto: &DockerRegistrationDto, container_dto: &DockerRegistrationDto,
) -> Result<(), Box<dyn Error + Send + Sync>> { ) -> Result<(), Box<dyn Error + Send + Sync>> {
// First get local IP
println!("Preparing to broadcast docker containers..."); println!("Preparing to broadcast docker containers...");
// Create HTTP client for registration
let client = Client::builder() let client = Client::builder()
.danger_accept_invalid_certs(true) .danger_accept_invalid_certs(true)
.build()?; .build()?;
// Prepare registration data // Create a new struct that matches the server's expected format
let mut broadcast_data = container_dto.clone(); #[derive(Serialize)]
broadcast_data.server_id = server_id; struct ServiceDiscoveryRequest {
#[serde(rename = "Server_id")]
server_id: u16,
#[serde(rename = "Containers")]
containers: String, // JSON string instead of Vec
}
// Serialize containers to JSON string
let containers_json = serde_json::to_string(&container_dto.containers)
.map_err(|e| format!("Failed to serialize containers: {}", e))?;
let broadcast_data = ServiceDiscoveryRequest {
server_id,
containers: containers_json,
};
// Try to register (will retry on failure)
loop { loop {
println!("Attempting to broadcast containers..."); println!("Attempting to broadcast containers...");
let url = format!("{}/monitoring/service-discovery", base_url); let url = format!("{}/monitoring/service-discovery", base_url);
match client.post(&url).json(&container_dto).send().await { match client.post(&url).json(&broadcast_data).send().await {
Ok(resp) if resp.status().is_success() => { Ok(resp) if resp.status().is_success() => {
println!( println!(
"✅ Successfully broadcasted following docker container: {:?}", "✅ Successfully broadcasted docker containers for server {}",
container_dto server_id
); );
return Ok(()); return Ok(());
} }