diff --git a/internal/featuresupport/feature_support_test.go b/internal/featuresupport/feature_support_test.go index 0d008190feb3..7ee7fc739072 100644 --- a/internal/featuresupport/feature_support_test.go +++ b/internal/featuresupport/feature_support_test.go @@ -167,7 +167,13 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() { Entry( "external platform", []SupportLevelFeature{&ExternalPlatformFeature{}}, - false, + true, + ), + + Entry( + "external platform oci", + []SupportLevelFeature{&OciIntegrationFeature{}}, + true, ), Entry( @@ -224,6 +230,7 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() { false, ), ) + }) Context("Test TNA", func() { @@ -1030,6 +1037,36 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() { err := ValidateIncompatibleFeatures(log, models.ClusterCPUArchitectureS390x, &cluster, &infraEnv, nil) Expect(err).To(Not(BeNil())) }) + It("3 CP with external platform - pass", func() { + cluster := common.Cluster{Cluster: models.Cluster{ + OpenshiftVersion: common.MinimumVersionForNonStandardHAOCPControlPlane, + CPUArchitecture: models.ClusterCPUArchitectureX8664, + ControlPlaneCount: 3, + UserManagedNetworking: swag.Bool(true), + Platform: &models.Platform{Type: common.PlatformTypePtr(models.PlatformTypeExternal)}, + }} + Expect(ValidateIncompatibleFeatures(log, models.ClusterCPUArchitectureX8664, &cluster, nil, nil)).To(BeNil()) + }) + It("4 CP with external platform - pass", func() { + cluster := common.Cluster{Cluster: models.Cluster{ + OpenshiftVersion: common.MinimumVersionForNonStandardHAOCPControlPlane, + CPUArchitecture: models.ClusterCPUArchitectureX8664, + ControlPlaneCount: 4, + UserManagedNetworking: swag.Bool(true), + Platform: &models.Platform{Type: common.PlatformTypePtr(models.PlatformTypeExternal)}, + }} + Expect(ValidateIncompatibleFeatures(log, models.ClusterCPUArchitectureX8664, &cluster, nil, nil)).To(BeNil()) + }) + It("5 CP with external platform - pass", func() { + cluster := common.Cluster{Cluster: models.Cluster{ + OpenshiftVersion: common.MinimumVersionForNonStandardHAOCPControlPlane, + CPUArchitecture: models.ClusterCPUArchitectureX8664, + ControlPlaneCount: 5, + UserManagedNetworking: swag.Bool(true), + Platform: &models.Platform{Type: common.PlatformTypePtr(models.PlatformTypeExternal)}, + }} + Expect(ValidateIncompatibleFeatures(log, models.ClusterCPUArchitectureX8664, &cluster, nil, nil)).To(BeNil()) + }) It("Nutanix with incompatible features - fail", func() { operatorsCNV := []*models.MonitoredOperator{ { diff --git a/internal/featuresupport/features_misc.go b/internal/featuresupport/features_misc.go index c3c73f29885e..b2ba97abb292 100644 --- a/internal/featuresupport/features_misc.go +++ b/internal/featuresupport/features_misc.go @@ -407,7 +407,7 @@ func (f *NonStandardHAControlPlane) getSupportLevel(filters SupportLevelFilters) } if filters.PlatformType != nil && - (*filters.PlatformType != models.PlatformTypeBaremetal && *filters.PlatformType != models.PlatformTypeNone) { + (*filters.PlatformType != models.PlatformTypeBaremetal && *filters.PlatformType != models.PlatformTypeNone && *filters.PlatformType != models.PlatformTypeExternal) { return models.SupportLevelUnavailable, models.IncompatibilityReasonPlatform } @@ -416,10 +416,8 @@ func (f *NonStandardHAControlPlane) getSupportLevel(filters SupportLevelFilters) func (f *NonStandardHAControlPlane) getIncompatibleFeatures(openshiftVersion string) []models.FeatureSupportLevelID { return []models.FeatureSupportLevelID{ - models.FeatureSupportLevelIDEXTERNALPLATFORM, models.FeatureSupportLevelIDNUTANIXINTEGRATION, models.FeatureSupportLevelIDVSPHEREINTEGRATION, - models.FeatureSupportLevelIDEXTERNALPLATFORMOCI, } } diff --git a/internal/featuresupport/features_platforms.go b/internal/featuresupport/features_platforms.go index 4534b64f7b88..7ff01cab4463 100644 --- a/internal/featuresupport/features_platforms.go +++ b/internal/featuresupport/features_platforms.go @@ -310,7 +310,6 @@ func (feature *OciIntegrationFeature) getIncompatibleFeatures(string) []models.F models.FeatureSupportLevelIDVIPAUTOALLOC, models.FeatureSupportLevelIDDUALSTACKVIPS, models.FeatureSupportLevelIDFULLISO, - models.FeatureSupportLevelIDNONSTANDARDHACONTROLPLANE, models.FeatureSupportLevelIDUSERMANAGEDLOADBALANCER, models.FeatureSupportLevelIDNMSTATE, models.FeatureSupportLevelIDODF, @@ -367,7 +366,6 @@ func (feature *ExternalPlatformFeature) getIncompatibleFeatures(string) []models models.FeatureSupportLevelIDTNF, models.FeatureSupportLevelIDCLUSTERMANAGEDNETWORKING, models.FeatureSupportLevelIDVIPAUTOALLOC, - models.FeatureSupportLevelIDNONSTANDARDHACONTROLPLANE, models.FeatureSupportLevelIDUSERMANAGEDLOADBALANCER, models.FeatureSupportLevelIDNMSTATE, models.FeatureSupportLevelIDDUALSTACKPRIMARYIPV6,