Skip to content

Commit

Permalink
fix(shulker-operator): use existing config maps if given (#452)
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremylvln authored Mar 11, 2024
1 parent ca0bad3 commit b511151
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,14 @@ impl<'a> GameServerBuilder {
Volume {
name: "shulker-config".to_string(),
config_map: Some(ConfigMapVolumeSource {
name: Some(ConfigMapBuilder::name(minecraft_server)),
name: Some(
minecraft_server
.spec
.config
.existing_config_map_name
.clone()
.unwrap_or_else(|| ConfigMapBuilder::name(minecraft_server)),
),
..ConfigMapVolumeSource::default()
}),
..Volume::default()
Expand Down Expand Up @@ -634,6 +641,54 @@ mod tests {
insta::assert_yaml_snapshot!(game_server);
}

#[tokio::test]
async fn get_pod_template_spec_use_config_override() {
// G
let client = create_client_mock();
let resourceref_resolver = ResourceRefResolver::new(client);
let mut server = TEST_SERVER.clone();
server.spec.config.existing_config_map_name = Some("my_way_better_config".to_string());
let context = super::GameServerBuilderContext {
cluster: &TEST_CLUSTER,
agent_config: &AgentConfig {
maven_repository: constants::SHULKER_PLUGIN_REPOSITORY.to_string(),
version: constants::SHULKER_PLUGIN_VERSION.to_string(),
},
};

// W
let pod_template = super::GameServerBuilder::get_pod_template_spec(
&resourceref_resolver,
&context,
&server,
)
.await
.unwrap();

// T
let shulker_config_volume = pod_template
.spec
.as_ref()
.unwrap()
.volumes
.as_ref()
.unwrap()
.iter()
.find(|volume: &&Volume| volume.name == "shulker-config");
assert!(shulker_config_volume.is_some());
assert!(
shulker_config_volume
.unwrap()
.config_map
.as_ref()
.unwrap()
.name
.as_ref()
.unwrap()
== "my_way_better_config"
)
}

#[tokio::test]
async fn get_pod_template_spec_contains_volume_mounts() {
// G
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,16 @@ impl<'a> ResourceBuilder<'a> for ConfigMapBuilder {
)
}

fn is_needed(&self, proxy_fleet: &Self::OwnerType) -> bool {
proxy_fleet
.spec
.template
.spec
.config
.existing_config_map_name
.is_none()
}

async fn build(
&self,
proxy_fleet: &Self::OwnerType,
Expand Down
62 changes: 61 additions & 1 deletion packages/shulker-operator/src/reconcilers/proxy_fleet/fleet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,16 @@ impl<'a> FleetBuilder {
Volume {
name: "shulker-config".to_string(),
config_map: Some(ConfigMapVolumeSource {
name: Some(ConfigMapBuilder::name(proxy_fleet)),
name: Some(
proxy_fleet
.spec
.template
.spec
.config
.existing_config_map_name
.clone()
.unwrap_or_else(|| ConfigMapBuilder::name(proxy_fleet)),
),
..ConfigMapVolumeSource::default()
}),
..Volume::default()
Expand Down Expand Up @@ -587,6 +596,7 @@ impl<'a> FleetBuilder {

#[cfg(test)]
mod tests {
use k8s_openapi::api::core::v1::Volume;
use shulker_kube_utils::reconcilers::builder::ResourceBuilder;

use crate::{
Expand Down Expand Up @@ -727,6 +737,56 @@ mod tests {
});
}

#[tokio::test]
async fn get_pod_template_spec_use_config_override() {
// G
let client = create_client_mock();
let builder = super::FleetBuilder::new(client);
let mut proxy_fleet = TEST_PROXY_FLEET.clone();
proxy_fleet
.spec
.template
.spec
.config
.existing_config_map_name = Some("my_way_better_config".to_string());
let context = super::FleetBuilderContext {
cluster: &TEST_CLUSTER,
agent_config: &AgentConfig {
maven_repository: constants::SHULKER_PLUGIN_REPOSITORY.to_string(),
version: constants::SHULKER_PLUGIN_VERSION.to_string(),
},
};

// W
let pod_template = builder
.get_pod_template_spec(&context, &proxy_fleet)
.await
.unwrap();

// T
let shulker_config_volume = pod_template
.spec
.as_ref()
.unwrap()
.volumes
.as_ref()
.unwrap()
.iter()
.find(|volume| volume.name == "shulker-config");
assert!(shulker_config_volume.is_some());
assert!(
shulker_config_volume
.unwrap()
.config_map
.as_ref()
.unwrap()
.name
.as_ref()
.unwrap()
== "my_way_better_config"
)
}

#[tokio::test]
async fn get_init_env_contains_plugins() {
// G
Expand Down

0 comments on commit b511151

Please sign in to comment.