diff --git a/flake.nix b/flake.nix index 3d72410..5dd2d1b 100644 --- a/flake.nix +++ b/flake.nix @@ -41,12 +41,6 @@ # Additional darwin specific inputs can be set here pkgs.libiconv ]; - - # Additional environment variables can be set directly - # MY_CUSTOM_VAR = "some value"; - COMMIT_HASH = builtins.substring 0 7 ( - if self ? rev then self.rev else "NoDHash" - ); }; craneLibLLvmTools = craneLib.overrideToolchain @@ -64,6 +58,12 @@ # artifacts from above. my-crate = craneLib.buildPackage (commonArgs // { inherit cargoArtifacts; + + # Additional environment variables can be set directly + # MY_CUSTOM_VAR = "some value"; + COMMIT_HASH = builtins.substring 0 7 ( + if self ? rev then self.rev else "NoDHash" + ); }); in { diff --git a/src/kube_cache.rs b/src/kube_cache.rs index 7219a7e..ae54ce8 100644 --- a/src/kube_cache.rs +++ b/src/kube_cache.rs @@ -131,6 +131,7 @@ impl MinecraftAPI 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 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 { - Some(format!("localhost:{}", self.get_port()?)) + Some(format!("localhost:{}", self.get_internal_port()?)) } fn get_addr(&self) -> Option { @@ -350,11 +361,14 @@ impl MinecraftServerHandle for Server { } } - fn get_port(&self) -> Option { + fn get_internal_port(&self) -> Option { 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 { + Some(self.server_port.clone()) + } fn get_motd(&self) -> Option { let all_container_motds = self diff --git a/src/mc_server.rs b/src/mc_server.rs index 2756a7c..6951954 100644 --- a/src/mc_server.rs +++ b/src/mc_server.rs @@ -67,6 +67,7 @@ pub trait MinecraftServerHandle: Clone { async fn stop(&self) -> Result<(), OpaqueError>; async fn query_status(&self) -> Result; fn get_internal_address(&self) -> Option; + fn get_internal_port(&self) -> Option; fn get_addr(&self) -> Option; fn get_port(&self) -> Option; fn get_motd(&self) -> Option;