Skip to content

Commit 6512d4d

Browse files
committed
use emrge instead of extends
1 parent a765f81 commit 6512d4d

1 file changed

Lines changed: 17 additions & 19 deletions

File tree

  • rust/operator-binary/src/crd

rust/operator-binary/src/crd/mod.rs

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ pub type AirflowExecutorCommonConfiguration =
104104
pub type AirflowWebserverRoleType =
105105
Role<AirflowConfigFragment, AirflowConfigOverrides, v1alpha2::WebserverRoleConfig>;
106106

107-
#[derive(Clone, Debug, Default, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
107+
#[derive(Clone, Debug, Default, Deserialize, Eq, JsonSchema, Merge, PartialEq, Serialize)]
108108
#[serde(rename_all = "camelCase")]
109109
pub struct AirflowConfigOverrides {
110110
#[serde(default, rename = "webserver_config.py")]
@@ -446,29 +446,27 @@ impl v1alpha2::AirflowCluster {
446446
rolegroup_name: &str,
447447
) -> Result<MergedOverrides, Error> {
448448
let role_config = role.role_config(self)?;
449+
let rolegroup = role_config.role_groups.get(rolegroup_name);
449450

451+
// env overrides: role first, role-group extended on top (role-group wins)
450452
let mut env_overrides = role_config.config.env_overrides.clone();
451-
// role-level webserver_config.py overrides; role-group overrides are extended on top below
452-
// (role-group wins). Reads the v2 KeyValueConfigOverrides map directly, like hdfs/trino.
453-
let mut file_overrides = role_config
454-
.config
455-
.config_overrides
456-
.webserver_config_py
457-
.overrides
458-
.clone();
459-
460-
if let Some(rg) = role_config.role_groups.get(rolegroup_name) {
453+
if let Some(rg) = rolegroup {
461454
env_overrides.extend(rg.config.env_overrides.clone());
462-
file_overrides.extend(
463-
rg.config
464-
.config_overrides
465-
.webserver_config_py
466-
.overrides
467-
.clone(),
468-
);
469455
}
470456

471-
let config_file_overrides = file_overrides
457+
// file overrides: role-group merged over role (role-group wins) via the `Merge`
458+
// impl on AirflowConfigOverrides. A role-group `null` inherits the role value
459+
// rather than unsetting it. Mirrors hdfs-operator.
460+
461+
let mut config_overrides = rolegroup
462+
.map(|rg| rg.config.config_overrides.clone())
463+
.unwrap_or_default();
464+
465+
config_overrides.merge(&role_config.config.config_overrides);
466+
467+
let config_file_overrides = config_overrides
468+
.webserver_config_py
469+
.overrides
472470
.into_iter()
473471
.filter_map(|(k, v)| v.map(|v| (k, v)))
474472
.collect();

0 commit comments

Comments
 (0)