Skip to content

MGMT-21836: Allow external platform with non-standard HA control plane#10088

Open
yoavsc0302 wants to merge 1 commit intoopenshift:masterfrom
yoavsc0302:MGMT-21836/Installation-with-4-5CP-should-be-allowed-with-external-platform-approach-2
Open

MGMT-21836: Allow external platform with non-standard HA control plane#10088
yoavsc0302 wants to merge 1 commit intoopenshift:masterfrom
yoavsc0302:MGMT-21836/Installation-with-4-5CP-should-be-allowed-with-external-platform-approach-2

Conversation

@yoavsc0302
Copy link
Copy Markdown
Contributor

@yoavsc0302 yoavsc0302 commented Mar 30, 2026

Allow external platform (including OCI) to be used with 4/5 control plane nodes by adding it to the allowed platforms for the NonStandardHAControlPlane feature and removing it from the incompatible features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that checks control plane hosts are bare metal when using external platform with 4 or 5 control plane nodes. Virtual machine hosts are blocked from reaching known state.

What was done

1. Removed feature-level incompatibility between external platform and non-standard HA:

  • internal/featuresupport/features_misc.go — added PlatformTypeExternal to allowed platforms
  • internal/featuresupport/features_platforms.go — removed NonStandardHAControlPlane from OCI and External incompatible lists
  • internal/featuresupport/feature_support_test.go

2. Added host-level bare metal validation for non-standard HA on external platform:

Added validation ID to swagger:

  • swagger.yaml — added non-standard-ha-requires-bare-metal enum value

Generated code (skipper make generate):

  • models/host_validation_id.go + vendor copies + restapi/embedded_spec.go

Wired up the validation:

  • internal/host/validation_id.go — constant + "hardware" category
  • internal/host/validator.go — validation function (scoped to external platform + 4/5CP + master role)
  • internal/host/refresh_status_preprocessor.go — registered the validation
  • internal/host/statemachine.go — added to hasMinRequiredHardware

Tests:

  • internal/host/transition_test.go
  • internal/host/validations_test.go

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • 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?

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 30, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 30, 2026

@yoavsc0302: This pull request references MGMT-21836 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Allow external platform (including OCI) to be used with 4/5 control plane nodes by adding it to the allowed platforms for the NonStandardHAControlPlane feature and removing it from the incompatible features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that checks control plane hosts are bare metal when using external platform with 4 or 5 control plane nodes. Virtual machine hosts are blocked from reaching known state.

What was done:

  1. Removed feature-level incompatibility between external platform and non-standard HA
  • internal/featuresupport/features_misc.go - added PlatformTypeExternal to allowed platforms
  • internal/featuresupport/features_platforms.go - removed NonStandardHAControlPlane from OCI and External incompatible lists
  • internal/featuresupport/feature_support_test.go - updated tests to expect success
  1. Added host-level bare metal validation for non-standard HA on external platform

Added validation ID to swagger:

  • swagger.yaml -added non-standard-ha-requires-bare-metal enum value

Generated code (skipper make generate):

  • models/host_validation_id.go + vendor copies + restapi/embedded_spec.go

Wired up the validation:

  • internal/host/validation_id.go - constant + "hardware" category
  • internal/host/validator.go - validation function (scoped to external platform + 4/5CP + master role)
  • internal/host/refresh_status_preprocessor.go - registered the validation
  • internal/host/statemachine.go - added to hasMinRequiredHardware

Tests:

  • internal/host/transition_test.go
  • internal/host/validations_test.go

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • 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?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 30, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 685911c0-0983-4871-b4ae-4acdd2b18b08

📥 Commits

Reviewing files that changed from the base of the PR and between 4b24a1d and 8110356.

⛔ Files ignored due to path filters (3)
  • api/vendor/github.com/openshift/assisted-service/models/host_validation_id.go is excluded by !**/vendor/**
  • client/vendor/github.com/openshift/assisted-service/models/host_validation_id.go is excluded by !**/vendor/**
  • vendor/github.com/openshift/assisted-service/models/host_validation_id.go is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (12)
  • internal/featuresupport/feature_support_test.go
  • internal/featuresupport/features_misc.go
  • internal/featuresupport/features_platforms.go
  • internal/host/refresh_status_preprocessor.go
  • internal/host/statemachine.go
  • internal/host/transition_test.go
  • internal/host/validation_id.go
  • internal/host/validations_test.go
  • internal/host/validator.go
  • models/host_validation_id.go
  • restapi/embedded_spec.go
  • swagger.yaml
💤 Files with no reviewable changes (1)
  • internal/featuresupport/features_platforms.go
✅ Files skipped from review due to trivial changes (2)
  • internal/featuresupport/features_misc.go
  • internal/host/validator.go
🚧 Files skipped from review as they are similar to previous changes (6)
  • internal/host/refresh_status_preprocessor.go
  • internal/host/statemachine.go
  • internal/host/validation_id.go
  • swagger.yaml
  • restapi/embedded_spec.go
  • internal/host/transition_test.go

Walkthrough

Adds a new host validation NonStandardHARequiresBareMetal, integrates it into host state refresh and transitions, updates feature-support rules to allow External platforms for non-standard HA, and updates tests and API/schema enums to include the new validation identifier.

Changes

Cohort / File(s) Summary
Feature Support Compatibility
internal/featuresupport/feature_support_test.go, internal/featuresupport/features_misc.go, internal/featuresupport/features_platforms.go
Treat models.PlatformTypeExternal as compatible with non-standard HA control plane; removed NonStandardHAControlPlane from incompatible lists for ExternalPlatformFeature and OciIntegrationFeature; added test entry for OciIntegrationFeature compatibility.
Host Validation ID & Logic
internal/host/validation_id.go, internal/host/validator.go
Added NonStandardHARequiresBareMetal validation ID and implemented nonStandardHARequiresBareMetal validator that applies to non-standard HA masters on External platform, returning pending/failure/success based on host inventory SystemVendor.Virtual.
Host Validation Tests
internal/host/validations_test.go
Added table-driven tests for NonStandardHARequiresBareMetal covering platform types, control-plane counts, host roles, and virtual vs bare-metal cases; asserts presence/status and expected message substring on failure.
State Machine & Preprocessor Integration
internal/host/statemachine.go, internal/host/transition_test.go, internal/host/refresh_status_preprocessor.go
Registered new validation in refresh preprocessor; added it to test validation ID lists; gated hasMinRequiredHardware checks with If(NonStandardHARequiresBareMetal) so refresh transitions honor the new validation.
Models / API Schema
models/host_validation_id.go, restapi/embedded_spec.go, swagger.yaml
Added HostValidationIDNonStandardHaRequiresBareMetal enum value ("non-standard-ha-requires-bare-metal") and included the string in embedded Swagger JSON and swagger.yaml host-validation-id enum.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Mar 30, 2026
@openshift-ci openshift-ci bot requested review from gamli75 and giladravid16 March 30, 2026 08:26
@openshift-ci openshift-ci bot added the api-review Categorizes an issue or PR as actively needing an API review. label Mar 30, 2026
@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 30, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: yoavsc0302

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Mar 30, 2026
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 30, 2026

@yoavsc0302: This pull request references MGMT-21836 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Allow external platform (including OCI) to be used with 4/5 control plane nodes by adding it to the allowed platforms for the NonStandardHAControlPlane feature and removing it from the incompatible features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that checks control plane hosts are bare metal when using external platform with 4 or 5 control plane nodes. Virtual machine hosts are blocked from reaching known state.

What was done:

  1. Removed feature-level incompatibility between external platform and non-standard HA
  • internal/featuresupport/features_misc.go - added PlatformTypeExternal to allowed platforms
  • internal/featuresupport/features_platforms.go - removed NonStandardHAControlPlane from OCI and External incompatible lists
  • internal/featuresupport/feature_support_test.go - updated tests to expect success
  1. Added host-level bare metal validation for non-standard HA on external platform

Added validation ID to swagger:

  • swagger.yaml -added non-standard-ha-requires-bare-metal enum value

Generated code (skipper make generate):

  • models/host_validation_id.go + vendor copies + restapi/embedded_spec.go

Wired up the validation:

  • internal/host/validation_id.go - constant + "hardware" category
  • internal/host/validator.go - validation function (scoped to external platform + 4/5CP + master role)
  • internal/host/refresh_status_preprocessor.go - registered the validation
  • internal/host/statemachine.go - added to hasMinRequiredHardware

Tests:

  • internal/host/transition_test.go
  • internal/host/validations_test.go

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • 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?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 30, 2026

@yoavsc0302: This pull request references MGMT-21836 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Allow external platform (including OCI) to be used with 4/5 control plane nodes by adding it to the allowed platforms for the NonStandardHAControlPlane feature and removing it from the incompatible features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that checks control plane hosts are bare metal when using external platform with 4 or 5 control plane nodes. Virtual machine hosts are blocked from reaching known state.

What was done:

  1. Removed feature-level incompatibility between external platform and non-standard HA
  • internal/featuresupport/features_misc.go - added PlatformTypeExternal to allowed platforms
  • internal/featuresupport/features_platforms.go - removed NonStandardHAControlPlane from OCI and External incompatible lists
  • internal/featuresupport/feature_support_test.go - updated tests to expect success
  1. Added host-level bare metal validation for non-standard HA on external platform

Added validation ID to swagger:

  • swagger.yaml -added non-standard-ha-requires-bare-metal enum value

Generated code (skipper make generate):

  • models/host_validation_id.go + vendor copies + restapi/embedded_spec.go

Wired up the validation:

  • internal/host/validation_id.go - constant + "hardware" category
  • internal/host/validator.go - validation function (scoped to external platform + 4/5CP + master role)
  • internal/host/refresh_status_preprocessor.go - registered the validation
  • internal/host/statemachine.go - added to hasMinRequiredHardware

Tests:

  • internal/host/transition_test.go
  • internal/host/validations_test.go

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • 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?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 30, 2026

@yoavsc0302: This pull request references MGMT-21836 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Allow external platform (including OCI) to be used with 4/5 control plane nodes by adding it to the allowed platforms for the NonStandardHAControlPlane feature and removing it from the incompatible features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that checks control plane hosts are bare metal when using external platform with 4 or 5 control plane nodes. Virtual machine hosts are blocked from reaching known state.

What was done:

  1. Removed feature-level incompatibility between external platform and non-standard HA:
  • internal/featuresupport/features_misc.go - added PlatformTypeExternal to allowed platforms
  • internal/featuresupport/features_platforms.go - removed NonStandardHAControlPlane from OCI and External incompatible lists
  • internal/featuresupport/feature_support_test.go - updated tests to expect success
  1. Added host-level bare metal validation for non-standard HA on external platform:
    Added validation ID to swagger:
  • swagger.yaml -added non-standard-ha-requires-bare-metal enum value

Generated code (skipper make generate):

  • models/host_validation_id.go + vendor copies + restapi/embedded_spec.go

Wired up the validation:

  • internal/host/validation_id.go - constant + "hardware" category
  • internal/host/validator.go - validation function (scoped to external platform + 4/5CP + master role)
  • internal/host/refresh_status_preprocessor.go - registered the validation
  • internal/host/statemachine.go - added to hasMinRequiredHardware

Tests:

  • internal/host/transition_test.go
  • internal/host/validations_test.go

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • 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?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@internal/host/validations_test.go`:
- Around line 4204-4295: The tests only cover master behavior for
ControlPlaneCount == 4, missing the 5-CP master paths; add two tests mirroring
the 4-CP cases but with c.ControlPlaneCount = 5: one "bare metal master on
external platform with 5CP should pass" that sets h.Inventory =
generateInventoryWithVirtual(false), calls mockAndRefreshStatus(&h), then
asserts getValidationResult(h.ValidationsInfo, NonStandardHARequiresBareMetal)
returns found true and ValidationSuccess; and one "virtual master on external
platform with 5CP should fail" that sets h.Inventory =
generateInventoryWithVirtual(true), calls mockAndRefreshStatus(&h), then asserts
the validation is found, status is ValidationFailure and the message contains
"must be bare metal"; reuse existing helpers (hostutil.GenerateTestCluster,
hostutil.GenerateTestHostByKind, mockProviderRegistry.EXPECT(),
mockAndRefreshStatus, getValidationResult) to keep consistency.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3647510e-c98c-42e1-bed9-22820bd2c017

📥 Commits

Reviewing files that changed from the base of the PR and between d59c041 and 4b24a1d.

⛔ Files ignored due to path filters (3)
  • api/vendor/github.com/openshift/assisted-service/models/host_validation_id.go is excluded by !**/vendor/**
  • client/vendor/github.com/openshift/assisted-service/models/host_validation_id.go is excluded by !**/vendor/**
  • vendor/github.com/openshift/assisted-service/models/host_validation_id.go is excluded by !vendor/**, !**/vendor/**
📒 Files selected for processing (12)
  • internal/featuresupport/feature_support_test.go
  • internal/featuresupport/features_misc.go
  • internal/featuresupport/features_platforms.go
  • internal/host/refresh_status_preprocessor.go
  • internal/host/statemachine.go
  • internal/host/transition_test.go
  • internal/host/validation_id.go
  • internal/host/validations_test.go
  • internal/host/validator.go
  • models/host_validation_id.go
  • restapi/embedded_spec.go
  • swagger.yaml
💤 Files with no reviewable changes (1)
  • internal/featuresupport/features_platforms.go

@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 30, 2026

@yoavsc0302: This pull request references MGMT-21836 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Allow external platform (including OCI) to be used with 4/5 control plane nodes by adding it to the allowed platforms for the NonStandardHAControlPlane feature and removing it from the incompatible features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that checks control plane hosts are bare metal when using external platform with 4 or 5 control plane nodes. Virtual machine hosts are blocked from reaching known state.

What was done

1. Removed feature-level incompatibility between external platform and non-standard HA:

  • internal/featuresupport/features_misc.go — added PlatformTypeExternal to allowed platforms
  • internal/featuresupport/features_platforms.go — removed NonStandardHAControlPlane from OCI and External incompatible lists
  • internal/featuresupport/feature_support_test.go — updated tests to expect success

2. Added host-level bare metal validation for non-standard HA on external platform:

Added validation ID to swagger:

  • swagger.yaml — added non-standard-ha-requires-bare-metal enum value

Generated code (skipper make generate):

  • models/host_validation_id.go + vendor copies + restapi/embedded_spec.go

Wired up the validation:

  • internal/host/validation_id.go — constant + "hardware" category
  • internal/host/validator.go — validation function (scoped to external platform + 4/5CP + master role)
  • internal/host/refresh_status_preprocessor.go — registered the validation
  • internal/host/statemachine.go — added to hasMinRequiredHardware

Tests:

  • internal/host/transition_test.go
  • internal/host/validations_test.go

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • 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?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@codecov
Copy link
Copy Markdown

codecov bot commented Mar 30, 2026

Codecov Report

❌ Patch coverage is 70.83333% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 44.18%. Comparing base (36d8cb7) to head (8110356).
⚠️ Report is 16 commits behind head on master.

Files with missing lines Patch % Lines
internal/host/validator.go 75.00% 2 Missing and 2 partials ⚠️
restapi/embedded_spec.go 0.00% 2 Missing ⚠️
internal/featuresupport/features_misc.go 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##           master   #10088   +/-   ##
=======================================
  Coverage   44.17%   44.18%           
=======================================
  Files         416      416           
  Lines       72404    72422   +18     
=======================================
+ Hits        31987    31999   +12     
- Misses      37521    37525    +4     
- Partials     2896     2898    +2     
Files with missing lines Coverage Δ
internal/featuresupport/features_platforms.go 96.61% <ø> (-0.04%) ⬇️
internal/host/refresh_status_preprocessor.go 94.53% <100.00%> (+0.06%) ⬆️
internal/host/statemachine.go 100.00% <100.00%> (ø)
internal/host/validation_id.go 90.90% <100.00%> (ø)
internal/featuresupport/features_misc.go 93.21% <0.00%> (-0.07%) ⬇️
restapi/embedded_spec.go 0.00% <0.00%> (ø)
internal/host/validator.go 83.61% <75.00%> (+0.05%) ⬆️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Allow external platform (including OCI) to be used with 4/5 control
plane nodes by adding it to the allowed platforms for the
NonStandardHAControlPlane feature and removing it from the incompatible
features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that
checks control plane hosts are bare metal when using external platform
with 4 or 5 control plane nodes. Virtual machine hosts are blocked
from reaching known state.
@yoavsc0302 yoavsc0302 force-pushed the MGMT-21836/Installation-with-4-5CP-should-be-allowed-with-external-platform-approach-2 branch from 4b24a1d to 8110356 Compare March 30, 2026 09:39
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Mar 30, 2026

@yoavsc0302: This pull request references MGMT-21836 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Allow external platform (including OCI) to be used with 4/5 control plane nodes by adding it to the allowed platforms for the NonStandardHAControlPlane feature and removing it from the incompatible features list.

Add a new host validation (non-standard-ha-requires-bare-metal) that checks control plane hosts are bare metal when using external platform with 4 or 5 control plane nodes. Virtual machine hosts are blocked from reaching known state.

What was done

1. Removed feature-level incompatibility between external platform and non-standard HA:

  • internal/featuresupport/features_misc.go — added PlatformTypeExternal to allowed platforms
  • internal/featuresupport/features_platforms.go — removed NonStandardHAControlPlane from OCI and External incompatible lists
  • internal/featuresupport/feature_support_test.go

2. Added host-level bare metal validation for non-standard HA on external platform:

Added validation ID to swagger:

  • swagger.yaml — added non-standard-ha-requires-bare-metal enum value

Generated code (skipper make generate):

  • models/host_validation_id.go + vendor copies + restapi/embedded_spec.go

Wired up the validation:

  • internal/host/validation_id.go — constant + "hardware" category
  • internal/host/validator.go — validation function (scoped to external platform + 4/5CP + master role)
  • internal/host/refresh_status_preprocessor.go — registered the validation
  • internal/host/statemachine.go — added to hasMinRequiredHardware

Tests:

  • internal/host/transition_test.go
  • internal/host/validations_test.go

List all the issues related to this PR

  • New Feature
  • Enhancement
  • Bug fix
  • Tests
  • Documentation
  • CI/CD

What environments does this code impact?

  • Automation (CI, tools, etc)
  • Cloud
  • Operator Managed Deployments
  • None

How was this code tested?

  • assisted-test-infra environment
  • dev-scripts environment
  • Reviewer's test appreciated
  • Waiting for CI to do a full test run
  • Manual (Elaborate on how it was tested)
  • No tests needed

Checklist

  • Title and description added to both, commit and PR.
  • Relevant issues have been associated (see CONTRIBUTING guide)
  • This change does not require a documentation update (docstring, docs, README, etc)
  • 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?

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test ?

@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test edge-e2e-metal-assisted-5-control-planes-4-22
/test edge-e2e-metal-assisted-4-control-planes-4-22
/test edge-e2e-metal-assisted-4-masters-none-4-22
/test edge-e2e-oci-assisted-4-22

@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test edge-e2e-oci-assisted-bm-iscsi-4-22

@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test edge-e2e-oci-assisted-4-22

1 similar comment
@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test edge-e2e-oci-assisted-4-22

@openshift-ci
Copy link
Copy Markdown

openshift-ci bot commented Mar 30, 2026

@yoavsc0302: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-agent-compact-ipv4 8110356 link true /test e2e-agent-compact-ipv4
ci/prow/e2e-agent-compact-ipv4-iso-no-registry 8110356 link false /test e2e-agent-compact-ipv4-iso-no-registry
ci/prow/edge-subsystem-kubeapi-aws 8110356 link true /test edge-subsystem-kubeapi-aws

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test ?

1 similar comment
@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test ?

@yoavsc0302
Copy link
Copy Markdown
Contributor Author

/test edge-e2e-oci-assisted-bm-4cp-4-22

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api-review Categorizes an issue or PR as actively needing an API review. approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants