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,
srv: service,
server_addr: addr.to_string(),
server_port: port.to_string(),
cache: self.cache.clone(),
});
}
@ -158,7 +159,16 @@ impl MinecraftAPI<Server> for McApi {
tracing::info!("starting watcher");
loop {
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 {
Ok(x) => x,
Err(e) => {
@ -214,6 +224,7 @@ pub struct Server {
dep: Deployment,
srv: Service,
server_addr: String,
server_port: String,
cache: KubeCache,
}
impl fmt::Debug for Server {
@ -301,7 +312,7 @@ impl MinecraftServerHandle for Server {
}
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> {
@ -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 port = a.iter().find(|x| x.name.clone().unwrap() == "mc-router")?;
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> {
let all_container_motds = self

View file

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