Skip to content

Commit

Permalink
MGMT-16330: disable SDN for 4.15 and above
Browse files Browse the repository at this point in the history
Signed-off-by: Riccardo Piccoli <rpiccoli@redhat.com>
  • Loading branch information
rccrdpccl committed Dec 20, 2023
1 parent 893fffb commit f60ebea
Show file tree
Hide file tree
Showing 9 changed files with 140 additions and 9 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions internal/featuresupport/feature_support_level.go
Expand Up @@ -25,6 +25,8 @@ var featuresList = map[models.FeatureSupportLevelID]SupportLevelFeature{
models.FeatureSupportLevelIDDUALSTACKVIPS: (&DualStackVipsFeature{}).New(),
models.FeatureSupportLevelIDDUALSTACK: (&DualStackFeature{}).New(),
models.FeatureSupportLevelIDPLATFORMMANAGEDNETWORKING: (&PlatformManagedNetworkingFeature{}).New(),
models.FeatureSupportLevelIDSDNNETWORKING: (&SDNNetworkingFeature{}).New(),
models.FeatureSupportLevelIDOVNNETWORKING: (&OVNNetworkingFeature{}).New(),

// Olm Operators features
models.FeatureSupportLevelIDLVM: (&LvmFeature{}).New(),
Expand Down
24 changes: 21 additions & 3 deletions internal/featuresupport/feature_support_test.go
Expand Up @@ -170,6 +170,24 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() {
})
})

Context("Test network type", func() {
It("Test SDN not supported over 4.15", func() {
feature := models.FeatureSupportLevelIDSDNNETWORKING
arch := "DoesNotMatter"
Expect(IsFeatureAvailable(feature, "4.14", swag.String(arch))).To(Equal(true))
Expect(IsFeatureAvailable(feature, "4.15", swag.String(arch))).To(Equal(false))
Expect(IsFeatureAvailable(feature, "4.16", swag.String(arch))).To(Equal(false))
})

It("Test OVN is supported over 4.15", func() {
feature := models.FeatureSupportLevelIDOVNNETWORKING
arch := "DoesNotMatter"
Expect(IsFeatureAvailable(feature, "4.14", swag.String(arch))).To(Equal(true))
Expect(IsFeatureAvailable(feature, "4.15", swag.String(arch))).To(Equal(true))
Expect(IsFeatureAvailable(feature, "4.16", swag.String(arch))).To(Equal(true))
})
})

Context("GetCpuArchitectureSupportList", func() {
It("GetCpuArchitectureSupportList for openshift version 4.6", func() {
openshiftVersion := "4.6"
Expand Down Expand Up @@ -206,19 +224,19 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() {
When("GetFeatureSupportList 4.12 with Platform", func() {
It(string(*filters.PlatformType)+" "+swag.StringValue(filters.ExternalPlatformName), func() {
list := GetFeatureSupportList("dummy", nil, filters.PlatformType, filters.ExternalPlatformName)
Expect(len(list)).To(Equal(17))
Expect(len(list)).To(Equal(19))
})
})
}

It("GetFeatureSupportList 4.12", func() {
list := GetFeatureSupportList("4.12", nil, nil, nil)
Expect(len(list)).To(Equal(22))
Expect(len(list)).To(Equal(24))
})

It("GetFeatureSupportList 4.13", func() {
list := GetFeatureSupportList("4.13", nil, nil, nil)
Expect(len(list)).To(Equal(22))
Expect(len(list)).To(Equal(24))
})

It("GetCpuArchitectureSupportList 4.12", func() {
Expand Down
81 changes: 81 additions & 0 deletions internal/featuresupport/features_networking.go
Expand Up @@ -348,3 +348,84 @@ func (feature *PlatformManagedNetworkingFeature) getFeatureActiveLevel(cluster *

return activeLevelNotActive
}

// SDNNetworkingFeature
type SDNNetworkingFeature struct {}

func (feature *SDNNetworkingFeature) New() SupportLevelFeature {
return &SDNNetworkingFeature{}
}

func (feature *SDNNetworkingFeature) getId() models.FeatureSupportLevelID {
return models.FeatureSupportLevelIDSDNNETWORKING
}

func (feature *SDNNetworkingFeature) GetName() string {
return "Openshift SDN"
}

func (feature *SDNNetworkingFeature) getSupportLevel(filters SupportLevelFilters) models.SupportLevel {
if isAvailable, err := common.BaseVersionLessThan("4.15", filters.OpenshiftVersion); err == nil && isAvailable {
return models.SupportLevelSupported
}
return models.SupportLevelUnavailable
}

func (feature *SDNNetworkingFeature) getFeatureActiveLevel(cluster *common.Cluster, _ *models.InfraEnv, clusterUpdateParams *models.V2ClusterUpdateParams, _ *models.InfraEnvUpdateParams) featureActiveLevel {
if cluster == nil || cluster.NetworkType == nil {
return activeLevelNotActive
}
if *cluster.NetworkType == models.ClusterNetworkTypeOpenShiftSDN {
return activeLevelActive
}
return activeLevelNotActive
}

func (feature *SDNNetworkingFeature) getIncompatibleArchitectures(openshiftVersion *string) *[]models.ArchitectureSupportLevelID {
return &[]models.ArchitectureSupportLevelID{}
}

func (feature *SDNNetworkingFeature) getIncompatibleFeatures(string) *[]models.FeatureSupportLevelID {
return &[]models.FeatureSupportLevelID{
models.FeatureSupportLevelIDOVNNETWORKING,
}
}

// OVNNetworkingFeature
type OVNNetworkingFeature struct {}

func (feature *OVNNetworkingFeature) New() SupportLevelFeature {
return &OVNNetworkingFeature{}
}

func (feature *OVNNetworkingFeature) getId() models.FeatureSupportLevelID {
return models.FeatureSupportLevelIDOVNNETWORKING
}

func (feature *OVNNetworkingFeature) GetName() string {
return "Openshift OVN"
}

func (feature *OVNNetworkingFeature) getSupportLevel(filters SupportLevelFilters) models.SupportLevel {
return models.SupportLevelSupported
}

func (feature *OVNNetworkingFeature) getFeatureActiveLevel(cluster *common.Cluster, _ *models.InfraEnv, clusterUpdateParams *models.V2ClusterUpdateParams, _ *models.InfraEnvUpdateParams) featureActiveLevel {
if cluster == nil || cluster.NetworkType == nil {
return activeLevelNotActive
}
if *cluster.NetworkType == models.ClusterNetworkTypeOVNKubernetes {
return activeLevelActive
}
return activeLevelNotActive
}

func (feature *OVNNetworkingFeature) getIncompatibleArchitectures(openshiftVersion *string) *[]models.ArchitectureSupportLevelID {
return &[]models.ArchitectureSupportLevelID{}
}

func (feature *OVNNetworkingFeature) getIncompatibleFeatures(string) *[]models.FeatureSupportLevelID {
return &[]models.FeatureSupportLevelID{
models.FeatureSupportLevelIDSDNNETWORKING,
}
}
8 changes: 7 additions & 1 deletion models/feature_support_level_id.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions restapi/embedded_spec.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions swagger.yaml
Expand Up @@ -4119,6 +4119,8 @@ definitions:
- 'PLATFORM_MANAGED_NETWORKING'
- 'SKIP_MCO_REBOOT'
- 'EXTERNAL_PLATFORM'
- 'OVN_NETWORKING'
- 'SDN_NETWORKING'

architecture-support-level-id:
type: string
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f60ebea

Please sign in to comment.