Skip to content

Commit

Permalink
fix(shulker-operator): resolve maven secret in correct namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremylvln committed Oct 30, 2023
1 parent c172fcc commit a7b8d14
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ impl GameServerBuilder {
"sh".to_string(),
format!("{}/init-fs.sh", MINECRAFT_SERVER_SHULKER_CONFIG_DIR),
]),
env: Some(Self::get_init_env(resourceref_resolver, &minecraft_server.spec).await?),
env: Some(Self::get_init_env(resourceref_resolver, &minecraft_server).await?),
security_context: Some(PROXY_SECURITY_CONTEXT.clone()),
volume_mounts: Some(vec![
VolumeMount {
Expand Down Expand Up @@ -280,8 +280,10 @@ impl GameServerBuilder {

async fn get_init_env(
resourceref_resolver: &ResourceRefResolver,
spec: &MinecraftServerSpec,
minecraft_server: &MinecraftServer,
) -> Result<Vec<EnvVar>, anyhow::Error> {
let spec = &minecraft_server.spec;

let mut env: Vec<EnvVar> = vec![
EnvVar {
name: "SHULKER_CONFIG_DIR".to_string(),
Expand Down Expand Up @@ -316,7 +318,10 @@ impl GameServerBuilder {
];

if let Some(world) = &spec.config.world {
let url = resourceref_resolver.resolve(world).await?.as_url()?;
let url = resourceref_resolver
.resolve(minecraft_server.namespace().as_ref().unwrap(), world)
.await?
.as_url()?;

env.push(EnvVar {
name: "SERVER_WORLD_URL".to_string(),
Expand All @@ -327,7 +332,7 @@ impl GameServerBuilder {

if let Some(plugins) = &spec.config.plugins {
let urls: Vec<String> = resourceref_resolver
.resolve_all(plugins)
.resolve_all(minecraft_server.namespace().as_ref().unwrap(), plugins)
.await?
.into_iter()
.map(|url| url.to_string())
Expand All @@ -342,7 +347,7 @@ impl GameServerBuilder {

if let Some(patches) = &spec.config.patches {
let urls: Vec<String> = resourceref_resolver
.resolve_all(patches)
.resolve_all(minecraft_server.namespace().as_ref().unwrap(), patches)
.await?
.into_iter()
.map(|url| url.to_string())
Expand Down Expand Up @@ -511,10 +516,9 @@ mod tests {
// G
let client = create_client_mock();
let resourceref_resolver = ResourceRefResolver::new(client);
let spec = TEST_SERVER.spec.clone();

// W
let env = super::GameServerBuilder::get_init_env(&resourceref_resolver, &spec)
let env = super::GameServerBuilder::get_init_env(&resourceref_resolver, &TEST_SERVER)
.await
.unwrap();

Expand All @@ -538,10 +542,9 @@ mod tests {
// G
let client = create_client_mock();
let resourceref_resolver = ResourceRefResolver::new(client);
let spec = TEST_SERVER.spec.clone();

// W
let env = super::GameServerBuilder::get_init_env(&resourceref_resolver, &spec)
let env = super::GameServerBuilder::get_init_env(&resourceref_resolver, &TEST_SERVER)
.await
.unwrap();

Expand All @@ -565,10 +568,9 @@ mod tests {
// G
let client = create_client_mock();
let resourceref_resolver = ResourceRefResolver::new(client);
let spec = TEST_SERVER.spec.clone();

// W
let env = super::GameServerBuilder::get_init_env(&resourceref_resolver, &spec)
let env = super::GameServerBuilder::get_init_env(&resourceref_resolver, &TEST_SERVER)
.await
.unwrap();

Expand Down
29 changes: 12 additions & 17 deletions packages/shulker-operator/src/reconcilers/proxy_fleet/fleet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ impl FleetBuilder {
"sh".to_string(),
format!("{}/init-fs.sh", PROXY_SHULKER_CONFIG_DIR),
]),
env: Some(self.get_init_env(&proxy_fleet.spec.template.spec).await?),
env: Some(self.get_init_env(proxy_fleet).await?),
security_context: Some(PROXY_SECURITY_CONTEXT.clone()),
volume_mounts: Some(vec![
VolumeMount {
Expand Down Expand Up @@ -324,12 +324,10 @@ impl FleetBuilder {

let mut pod_labels =
ProxyFleetReconciler::get_labels(proxy_fleet, "proxy".to_string(), "proxy".to_string());
let mut pod_annotations = BTreeMap::<String, String>::from([
(
"kubectl.kubernetes.io/default-exec-container".to_string(),
"proxy".to_string(),
)
]);
let mut pod_annotations = BTreeMap::<String, String>::from([(
"kubectl.kubernetes.io/default-exec-container".to_string(),
"proxy".to_string(),
)]);

if let Some(metadata) = &proxy_fleet.spec.template.metadata {
if let Some(additional_labels) = metadata.labels.clone() {
Expand All @@ -351,10 +349,9 @@ impl FleetBuilder {
})
}

async fn get_init_env(
&self,
spec: &ProxyFleetTemplateSpec,
) -> Result<Vec<EnvVar>, anyhow::Error> {
async fn get_init_env(&self, proxy_fleet: &ProxyFleet) -> Result<Vec<EnvVar>, anyhow::Error> {
let spec = &proxy_fleet.spec.template.spec;

let mut env: Vec<EnvVar> = vec![
EnvVar {
name: "SHULKER_CONFIG_DIR".to_string(),
Expand Down Expand Up @@ -386,7 +383,7 @@ impl FleetBuilder {
if let Some(plugins) = &spec.config.plugins {
let urls: Vec<String> = self
.resourceref_resolver
.resolve_all(plugins)
.resolve_all(proxy_fleet.namespace().as_ref().unwrap(), plugins)
.await?
.into_iter()
.map(|url| url.to_string())
Expand All @@ -402,7 +399,7 @@ impl FleetBuilder {
if let Some(patches) = &spec.config.patches {
let urls: Vec<String> = self
.resourceref_resolver
.resolve_all(patches)
.resolve_all(proxy_fleet.namespace().as_ref().unwrap(), patches)
.await?
.into_iter()
.map(|url| url.to_string())
Expand Down Expand Up @@ -668,10 +665,9 @@ mod tests {
// G
let client = create_client_mock();
let builder = super::FleetBuilder::new(client);
let spec = TEST_PROXY_FLEET.spec.clone();

// W
let env = builder.get_init_env(&spec.template.spec).await.unwrap();
let env = builder.get_init_env(&TEST_PROXY_FLEET).await.unwrap();

// T
let plugins_env = env
Expand All @@ -693,10 +689,9 @@ mod tests {
// G
let client = create_client_mock();
let builder = super::FleetBuilder::new(client);
let spec = TEST_PROXY_FLEET.spec.clone();

// W
let env = builder.get_init_env(&spec.template.spec).await.unwrap();
let env = builder.get_init_env(&TEST_PROXY_FLEET).await.unwrap();

// T
let patches_env = env
Expand Down
18 changes: 9 additions & 9 deletions packages/shulker-operator/src/resources/resourceref_resolver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ impl ResourceRefResolver {
ResourceRefResolver { client }
}

pub async fn resolve_all(&self, refs: &[ResourceRefSpec]) -> Result<Vec<Url>> {
let futs = refs.iter().map(|resourceref| self.resolve(resourceref));
pub async fn resolve_all(&self, ns: &str, refs: &[ResourceRefSpec]) -> Result<Vec<Url>> {
let futs = refs.iter().map(|resourceref| self.resolve(ns, resourceref));

futures::future::join_all(futs).await.into_iter().try_fold(
Vec::new(),
Expand All @@ -33,7 +33,7 @@ impl ResourceRefResolver {
)
}

pub async fn resolve(&self, spec: &ResourceRefSpec) -> Result<ResourceRef> {
pub async fn resolve(&self, ns: &str, spec: &ResourceRefSpec) -> Result<ResourceRef> {
if let Some(url) = &spec.url {
return Ok(ResourceRef::Url(url.clone()));
} else if let Some(url_from) = &spec.url_from {
Expand All @@ -42,7 +42,7 @@ impl ResourceRefResolver {
None => None,
Some(secret_name) => {
let secrets: kube::Api<k8s_openapi::api::core::v1::Secret> =
kube::Api::default_namespaced(self.client.clone());
kube::Api::namespaced(self.client.clone(), ns);

let secret = secrets
.get(secret_name)
Expand Down Expand Up @@ -150,7 +150,7 @@ mod tests {

// W
let resourceref = resourceref_resolver
.resolve_all(&[resourceref_spec])
.resolve_all("default", &[resourceref_spec])
.await
.unwrap();

Expand All @@ -171,7 +171,7 @@ mod tests {

// W
let resourceref = resourceref_resolver
.resolve(&resourceref_spec)
.resolve("default", &resourceref_spec)
.await
.unwrap();

Expand Down Expand Up @@ -207,7 +207,7 @@ mod tests {

// W
let resourceref = resourceref_resolver
.resolve(&resourceref_spec)
.resolve("default", &resourceref_spec)
.await
.unwrap();

Expand Down Expand Up @@ -272,7 +272,7 @@ mod tests {

// W
let resourceref = resourceref_resolver
.resolve(&resourceref_spec)
.resolve("default", &resourceref_spec)
.await
.unwrap();

Expand Down Expand Up @@ -324,7 +324,7 @@ mod tests {

// W
resourceref_resolver
.resolve(&resourceref_spec)
.resolve("default", &resourceref_spec)
.await
.unwrap();
}
Expand Down

0 comments on commit a7b8d14

Please sign in to comment.