Repository: openshift/assisted-service (language: python)

Issue:
OCPBUGS-41716: Fix MCO reboot error for s390x
Problem: For s390x architectures a multiarch payload is blocked and choosing a multi image via Assisted Installer or Agend-based Installer shows the error: "cannot use Skip MCO reboot because it's not compatible with the s390x architecture..."
This check is obsolete because s390x is supporting mutlitarch payloads.
Solution: With this fix the feature will be enabled for s390x architectures.
Test: The switch was removed for s390x architecture and the existing tests where adapted. Test was done using assisted-test-infra by using the branch. 
Doc: There is a misleading information in the Doc and should be removed but this is not related to this PR because e.g. for ppc64le architecture the statement is wrong, too (Bug). Nevertheless the doc for Assisted Installer need to be verified and adapted.

## List all the issues related to this PR

- [ ] New Feature <!-- new functionality -->
- [ ] Enhancement <!-- refactor, code changes, improvement, that won't add new features -->
- [x] Bug fix
- [ ] Tests
- [x] Documentation
- [ ] CI/CD <!-- Notice that changes for Dockerfiles/Jenkinsfiles aren't tested in CI due to a known bug. -->

## What environments does this code impact?

- [ ] Automation (CI, tools, etc)
- [ ] Cloud
- [ ] Operator Managed Deployments
- [x] None

## How was this code tested?

- [ ] assisted-test-infra environment
- [x] dev-scripts environment
- [x] Reviewer's test appreciated
- [ ] Waiting for CI to do a full test run
- [ ] Manual (Elaborate on how it was tested)
- [ ] No tests needed

## Checklist

- [x] Title and description added to both, commit and PR.
- [x] Relevant issues have been associated (see [CONTRIBUTING] guide)
- [ ] This change does not require a documentation update (docstring, `docs`, README, etc)
- [x] Does this change include unit-tests (note that code changes require unit-tests)

## Reviewers Checklist

- Are the title and description (in both PR and commit) meaningful and clear?
- Is there a bug required (and linked) for this change?
- Should this PR be backported?

[Kubernetes community documentation]: https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#commit-message-guidelines
[CONTRIBUTING]: https://github.com/openshift/assisted-service/blob/master/CONTRIBUTING.md



Discussion / hints:

Fix patch:
diff --git a/internal/featuresupport/features_misc.go b/internal/featuresupport/features_misc.go
index 016c3cf2602..9f0e285c146 100644
--- a/internal/featuresupport/features_misc.go
+++ b/internal/featuresupport/features_misc.go
@@ -287,16 +287,14 @@ func (f *skipMcoReboot) getIncompatibleFeatures(openshiftVersion string) *[]mode
 }
 
 func (f *skipMcoReboot) getIncompatibleArchitectures(openshiftVersion *string) *[]models.ArchitectureSupportLevelID {
-	return &[]models.ArchitectureSupportLevelID{
-		models.ArchitectureSupportLevelIDS390XARCHITECTURE,
-	}
+	return nil
 }
 
 func (f *skipMcoReboot) getFeatureActiveLevel(cluster *common.Cluster, infraEnv *models.InfraEnv,
 	clusterUpdateParams *models.V2ClusterUpdateParams, infraenvUpdateParams *models.InfraEnvUpdateParams) featureActiveLevel {
 	if cluster != nil {
 		activeForVersion, err := common.BaseVersionGreaterOrEqual("4.15.0", cluster.OpenshiftVersion)
-		if err != nil || !activeForVersion || cluster.CPUArchitecture == models.ClusterCPUArchitectureS390x {
+		if err != nil || !activeForVersion {
 			return activeLevelNotActive
 		}
 	}


Test patch:
diff --git a/internal/featuresupport/feature_support_test.go b/internal/featuresupport/feature_support_test.go
index 64a12ee4c9a..9b6dedfdf06 100644
--- a/internal/featuresupport/feature_support_test.go
+++ b/internal/featuresupport/feature_support_test.go
@@ -129,7 +129,7 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() {
 		It("IsFeatureAvailable", func() {
 			Expect(IsFeatureAvailable(feature, "4.15", swag.String(models.ClusterCPUArchitecturePpc64le))).To(Equal(true))
 			Expect(IsFeatureAvailable(feature, "4.15", swag.String(models.ClusterCPUArchitectureX8664))).To(Equal(true))
-			Expect(IsFeatureAvailable(feature, "4.15", swag.String(models.ClusterCPUArchitectureS390x))).To(Equal(false))
+			Expect(IsFeatureAvailable(feature, "4.15", swag.String(models.ClusterCPUArchitectureS390x))).To(Equal(true))
 			Expect(IsFeatureAvailable(feature, "4.15", swag.String(models.ClusterCPUArchitectureArm64))).To(Equal(true))
 		})
 		It("GetSupportLevel on architecture", func() {
@@ -137,7 +137,7 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() {
 			Expect(GetSupportLevel(feature, featureSupportParams)).To(Equal(models.SupportLevelSupported))
 
 			featureSupportParams.CPUArchitecture = swag.String(models.ClusterCPUArchitectureS390x)
-			Expect(GetSupportLevel(feature, featureSupportParams)).To(Equal(models.SupportLevelUnavailable))
+			Expect(GetSupportLevel(feature, featureSupportParams)).To(Equal(models.SupportLevelSupported))
 
 			featureSupportParams.CPUArchitecture = swag.String(models.ClusterCPUArchitecturePpc64le)
 			Expect(GetSupportLevel(feature, featureSupportParams)).To(Equal(models.SupportLevelSupported))
@@ -154,7 +154,7 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() {
 			Entry(models.ClusterCPUArchitectureX8664, models.ClusterCPUArchitectureX8664, true),
 			Entry(models.ClusterCPUArchitectureArm64, models.ClusterCPUArchitectureArm64, true),
 			Entry(models.ClusterCPUArchitectureAarch64, models.ClusterCPUArchitectureAarch64, true),
-			Entry(models.ClusterCPUArchitectureS390x, models.ClusterCPUArchitectureS390x, false),
+			Entry(models.ClusterCPUArchitectureS390x, models.ClusterCPUArchitectureS390x, true),
 			Entry(models.ClusterCPUArchitecturePpc64le, models.ClusterCPUArchitecturePpc64le, true),
 		)
 		DescribeTable("feature active level",
@@ -173,7 +173,7 @@ var _ = Describe("V2ListFeatureSupportLevels API", func() {
 			Entry("4.15/ppc64le", "4.15", models.ClusterCPUArchitecturePpc64le, activeLevelActive),
 			Entry("4.15/aarch64", "4.15", models.ClusterCPUArchitectureAarch64, activeLevelActive),
 			Entry("4.15/arm64", "4.15", models.ClusterCPUArchitectureArm64, activeLevelActive),
-			Entry("4.15/s390x", "4.15", models.ClusterCPUArchitectureS390x, activeLevelNotActive),
+			Entry("4.15/s390x", "4.15", models.ClusterCPUArchitectureS390x, activeLevelActive),
 		)
 	})
 
diff --git a/internal/host/hostcommands/install_cmd_test.go b/internal/host/hostcommands/install_cmd_test.go
index 104e9772c33..ff087e705d8 100644
--- a/internal/host/hostcommands/install_cmd_test.go
+++ b/internal/host/hostcommands/install_cmd_test.go
@@ -128,7 +128,7 @@ var _ = Describe("installcmd", func() {
 		Entry("Enbale MCO reboot is true. Higher version - aarch64", true, "4.16.0", models.ClusterCPUArchitectureAarch64, true),
 		Entry("Enbale MCO reboot is true. Higher version - arm64", true, "4.16.0", models.ClusterCPUArchitectureArm64, true),
 		Entry("Enbale MCO reboot is true. Higher version - ppc64le", true, "4.16.0", models.ClusterCPUArchitecturePpc64le, true),
-		Entry("Enbale MCO reboot is true. Higher version - s390x", true, "4.16.0", models.ClusterCPUArchitectureS390x, false),
+		Entry("Enbale MCO reboot is true. Higher version - s390x", true, "4.16.0", models.ClusterCPUArchitectureS390x, true),
 	)
 
 	DescribeTable("notify num reboots",