diff --git a/internal/common/common.go b/internal/common/common.go index b77402ec24b4..99afb9861e38 100644 --- a/internal/common/common.go +++ b/internal/common/common.go @@ -120,7 +120,14 @@ func IsImportedCluster(cluster *Cluster) bool { } func AreMastersSchedulable(cluster *Cluster) bool { - return swag.BoolValue(cluster.SchedulableMastersForcedTrue) || swag.BoolValue(cluster.SchedulableMasters) + // If the topology forces schedulable masters (i.e. there are no workers), + // SchedulableMastersForcedTrue will be true, but also it will be enabled + // by default in the installer. Since overriding it currently causes a + // failure due to a conflict starting with 4.12, we prefer to avoid it. We + // only need to override the installer when the user has set + // SchedulableMasters explicitly and that is not already the default in the + // installer. + return !swag.BoolValue(cluster.SchedulableMastersForcedTrue) && swag.BoolValue(cluster.SchedulableMasters) } func GetEffectiveRole(host *models.Host) models.HostRole { diff --git a/internal/common/common_test.go b/internal/common/common_test.go index f9e90d5bfb0f..efc4d7c573bc 100644 --- a/internal/common/common_test.go +++ b/internal/common/common_test.go @@ -253,8 +253,8 @@ var _ = Describe("Test AreMastersSchedulable", func() { }{ {schedulableMastersForcedTrue: false, schedulableMasters: false, expectedSchedulableMasters: false}, {schedulableMastersForcedTrue: false, schedulableMasters: true, expectedSchedulableMasters: true}, - {schedulableMastersForcedTrue: true, schedulableMasters: false, expectedSchedulableMasters: true}, - {schedulableMastersForcedTrue: true, schedulableMasters: true, expectedSchedulableMasters: true}, + {schedulableMastersForcedTrue: true, schedulableMasters: false, expectedSchedulableMasters: false}, // Handled by installer + {schedulableMastersForcedTrue: true, schedulableMasters: true, expectedSchedulableMasters: false}, // Handled by installer } { test := test It(fmt.Sprintf("schedulableMastersForcedTrue=%v schedulableMasters=%v AreMastersSchedulable? %v", test.schedulableMastersForcedTrue, test.schedulableMasters, test.expectedSchedulableMasters), func() {