mirror of
https://github.com/open-cluster-management-io/ocm.git
synced 2026-08-19 12:16:46 +00:00
* fix: preserve config reference ordering in cmainstallprogression controller Replace sets.Set[ConfigReferent] with []ConfigReferent in setInstallProgression and overrideConfigMapByAddOnConfigs. Iterating a set (Go map) produces nondeterministic ordering when a placement has multiple configs of the same GVK, causing spurious status patches on every reconcile and unstable config ordering downstream to MCA status. The fix preserves the insertion order from the CMA spec's placement configs, matching the pattern already used by overrideConfigMapByAddOnConfigs in pkg/addon/controllers/addonconfiguration/graph.go. Deduplication is maintained via a containsConfigReferent helper (linear scan), consistent with the addonconfiguration controller's containsConfig method. Fixes: https://github.com/open-cluster-management-io/ocm/issues/1609 Signed-off-by: Tesshu Flower <tflower@redhat.com> * test: add integration test for multi-same-GVK config reference ordering Adds an integration test that verifies the full pipeline when a CMA placement has two configs of the same GVK. Asserts that both CMA status InstallProgressions and MCA status ConfigReferences reflect the configs in the order specified in the CMA placement spec (config-first before config-second), not in a nondeterministic order. This exercises the full controller chain: - cmainstallprogression controller: CMA spec -> CMA status - addonconfiguration controller: CMA status -> MCA status Signed-off-by: Tesshu Flower <tflower@redhat.com> --------- Signed-off-by: Tesshu Flower <tflower@redhat.com>