fix: server_watcher don't use unwrap and use the external port quering the server

This commit is contained in:
Tamipes 2026-01-13 13:32:26 +01:00
parent e67afc23df
commit a58024c192
2 changed files with 18 additions and 3 deletions

View file

@ -131,6 +131,7 @@ impl MinecraftAPI<Server> for McApi {
dep: deployment, dep: deployment,
srv: service, srv: service,
server_addr: addr.to_string(), server_addr: addr.to_string(),
server_port: port.to_string(),
cache: self.cache.clone(), cache: self.cache.clone(),
}); });
} }
@ -158,7 +159,16 @@ impl MinecraftAPI<Server> for McApi {
tracing::info!("starting watcher"); tracing::info!("starting watcher");
loop { loop {
tokio::time::sleep(frequency).await; tokio::time::sleep(frequency).await;
let server = api.query_server(&addr, &port).await.unwrap(); let server = match api.query_server(&addr, &port).await {
Ok(x) => x,
Err(e) => {
tracing::error!(
err = format!("{}", e.context),
"could not query server"
);
return;
}
};
let status_json = match server.query_description().await { let status_json = match server.query_description().await {
Ok(x) => x, Ok(x) => x,
Err(e) => { Err(e) => {
@ -214,6 +224,7 @@ pub struct Server {
dep: Deployment, dep: Deployment,
srv: Service, srv: Service,
server_addr: String, server_addr: String,
server_port: String,
cache: KubeCache, cache: KubeCache,
} }
impl fmt::Debug for Server { impl fmt::Debug for Server {
@ -301,7 +312,7 @@ impl MinecraftServerHandle for Server {
} }
fn get_internal_address(&self) -> Option<String> { fn get_internal_address(&self) -> Option<String> {
Some(format!("localhost:{}", self.get_port()?)) Some(format!("localhost:{}", self.get_internal_port()?))
} }
fn get_addr(&self) -> Option<String> { fn get_addr(&self) -> Option<String> {
@ -350,11 +361,14 @@ impl MinecraftServerHandle for Server {
} }
} }
fn get_port(&self) -> Option<String> { fn get_internal_port(&self) -> Option<String> {
let a = self.srv.clone().spec.unwrap().ports.unwrap(); let a = self.srv.clone().spec.unwrap().ports.unwrap();
let port = a.iter().find(|x| x.name.clone().unwrap() == "mc-router")?; let port = a.iter().find(|x| x.name.clone().unwrap() == "mc-router")?;
port.node_port.map(|x| x.to_string()) port.node_port.map(|x| x.to_string())
} }
fn get_port(&self) -> Option<String> {
Some(self.server_port.clone())
}
fn get_motd(&self) -> Option<String> { fn get_motd(&self) -> Option<String> {
let all_container_motds = self let all_container_motds = self

View file

@ -67,6 +67,7 @@ pub trait MinecraftServerHandle: Clone {
async fn stop(&self) -> Result<(), OpaqueError>; async fn stop(&self) -> Result<(), OpaqueError>;
async fn query_status(&self) -> Result<ServerDeploymentStatus, OpaqueError>; async fn query_status(&self) -> Result<ServerDeploymentStatus, OpaqueError>;
fn get_internal_address(&self) -> Option<String>; fn get_internal_address(&self) -> Option<String>;
fn get_internal_port(&self) -> Option<String>;
fn get_addr(&self) -> Option<String>; fn get_addr(&self) -> Option<String>;
fn get_port(&self) -> Option<String>; fn get_port(&self) -> Option<String>;
fn get_motd(&self) -> Option<String>; fn get_motd(&self) -> Option<String>;