Skip to content

MGMT-22204: add new fields to above sea level ABI#3274

Merged
openshift-merge-bot[bot] merged 1 commit intoopenshift-assisted:masterfrom
ElayAharoni:add-new-fields-to-above-sea-level-ABI
Nov 26, 2025
Merged

MGMT-22204: add new fields to above sea level ABI#3274
openshift-merge-bot[bot] merged 1 commit intoopenshift-assisted:masterfrom
ElayAharoni:add-new-fields-to-above-sea-level-ABI

Conversation

@ElayAharoni
Copy link
Contributor

@ElayAharoni ElayAharoni commented Nov 23, 2025

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

    • Disconnected cluster registration API/service added; wizard exposes disconnected infraEnv state and re-exports context hook.
    • New "Optional configurations" wizard step and UI for SSH key and pull secret; wizard flow supports disconnected cluster creation and step validations.
    • Routes accept an optional cluster ID on the new-cluster path.
  • UI/UX Improvements

    • Next button disables during submission; pull secret sync/edit integrated.
    • Cancel/review flows handle conditional deregistration, ISO download, and surface API errors via alerts.
  • Style

    • Minor non-functional formatting/comment tweaks.

✏️ Tip: You can customize this high-level summary in your review settings.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Nov 23, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 23, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

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 openshift-ci bot requested review from asmasarw and rawagner November 23, 2025 15:31
@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 23, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 23, 2025

Walkthrough

Adds disconnected-cluster support: new POST /disconnected API and service method, wizard context state for a disconnected InfraEnv, a new "Optional configurations" wizard step, Basic/Review steps updated to register/deregister clusters and handle ISO download, footer and route adjustments, plus a minor comment-only change.

Changes

Cohort / File(s) Summary
API & Service
libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts, libs/ui-lib/lib/ocm/services/ClustersService.ts
Added registerDisconnected(params: { name: string; openshiftVersion: string }) to ClustersAPI and forwarded it in ClustersService to POST to /disconnected, returning the created Cluster.
Cluster Wizard Context
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx, libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx, libs/ui-lib/lib/ocm/components/clusterWizard/index.ts
Added disconnectedInfraEnv state and setDisconnectedInfraEnv setter to context/provider; re-exported useClusterWizardContext.
Wizard Steps & Transition
libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts, .../wizardTransition.ts, .../NewClusterWizard.tsx, .../disconnected/BasicStep.tsx, .../disconnected/OptionalConfigurationsStep.tsx, .../disconnected/ReviewStep.tsx
Introduced disconnected-optional-configurations step; BasicStep registers disconnected cluster and advances; new OptionalConfigurationsStep manages SSH/pull-secret and creates/updates InfraEnv; ReviewStep downloads ISO when present, attempts cluster removal, clears context and navigates to /cluster-list, surfaces API errors.
Footer & Form UI
libs/ui-lib/lib/common/components/ui/WizardFooter.tsx, libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx, libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx
WizardFooter Next disabled when isSubmitting or existing disable flag; PullSecretField whitespace tweak only; ClusterWizardFooter accepts disconnectedClusterId, performs async removal on cancel when present, clears disconnectedInfraEnv, and shows API alerts on error.
Routes
libs/ui-lib/lib/ocm/components/Routes.tsx
Made ~new route a parent with nested :clusterId child so both /~new and /~new/:clusterId render NewClusterPage.
Minor UI change
apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx
Inserted a single-line comment before a cluster removal call; no runtime behavior change.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant BasicStep
    participant ClustersService
    participant Context as ClusterWizardContext
    participant OptionalStep
    participant InfraEnvsService
    participant ReviewStep
    participant Router

    User->>BasicStep: submit name + openshiftVersion
    BasicStep->>ClustersService: registerDisconnected(params)
    ClustersService-->>BasicStep: cluster (id)
    BasicStep->>Context: setDisconnectedInfraEnv / store cluster id
    BasicStep->>User: moveNext

    User->>OptionalStep: submit ssh + pullSecret
    OptionalStep->>InfraEnvsService: createOrUpdate(infraParams)
    InfraEnvsService-->>OptionalStep: infraEnv
    OptionalStep->>Context: setDisconnectedInfraEnv(infraEnv)
    OptionalStep->>User: moveNext

    User->>ReviewStep: finish
    alt disconnectedInfraEnv.downloadUrl exists
        ReviewStep->>ReviewStep: download ISO
    end
    alt disconnectedClusterId exists
        ReviewStep->>ClustersService: remove(clusterId)
        ClustersService-->>ReviewStep: success/fail
    end
    ReviewStep->>Context: clear disconnectedInfraEnv
    ReviewStep->>Router: navigate /cluster-list
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

  • Areas needing extra attention:
    • OptionalConfigurationsStep.tsx — Formik/Yup validation, PullSecret sync, InfraEnv create/update and alert logic.
    • BasicStep.tsx and ReviewStep.tsx — async API flows, error handling via handleApiError/getApiErrorMessage, navigation and context clearing.
    • ClusterWizardContextProvider.tsx — state initialization and memo dependency correctness.
    • Routes.tsx — route nesting effects on matching and params.
    • New API/service registerDisconnected and its integration.

Possibly related PRs

Suggested labels

lgtm, approved

Suggested reviewers

  • rawagner
  • jgyselov
  • ammont82

Poem

🐇 I hopped through steps both new and bright,
I registered clusters late at night.
Keys and pull-secrets snug and true,
I cleared the infra and waved adieu —
A rabbit cheers the wizard's flight! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Title check ⚠️ Warning The PR title does not match the actual changes in the pull request, which focus on adding disconnected cluster registration and optional configurations workflow, not adding fields to "above sea level ABI". Update the PR title to accurately reflect the main changes, such as 'Add disconnected cluster registration and optional configurations step' or similar.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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 Nov 23, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 23, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

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

openshift-ci-robot commented Nov 23, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

  • Added support for disconnected cluster registration workflow in the cluster wizard.

  • New optional configurations step to set SSH public key and pull secret for disconnected clusters.

  • UI/UX Improvements

  • Wizard's next button now properly disables during form submission.

  • Enhanced pull secret field with improved state management.

  • Improved cluster deregistration flow on wizard completion.

✏️ Tip: You can customize this high-level summary in your review settings.

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.

@ElayAharoni ElayAharoni force-pushed the add-new-fields-to-above-sea-level-ABI branch from 3c12e5f to b8c7ece Compare November 23, 2025 15:36
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 23, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 23, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

  • Disconnected cluster registration workflow added to the cluster wizard.

  • New "Optional configurations" step to set SSH public key and pull secret for disconnected clusters.

  • UI/UX Improvements

  • Next button disables during submission to prevent duplicate actions.

  • Pull secret field syncs with external state for more reliable editing.

  • Cluster deregistration and ISO/save flow improved on wizard completion.

✏️ Tip: You can customize this high-level summary in your review settings.

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

@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: 3

🧹 Nitpick comments (3)
libs/ui-lib/lib/ocm/services/ClustersService.ts (1)

174-179: Avoid unnecessary field re-mapping in registerDisconnected

The method correctly delegates to ClustersAPI.registerDisconnected, but you can simplify it by passing params through directly instead of re-mapping each field:

-  registerDisconnected(params: { name: string; openshiftVersion: string }) {
-    return ClustersAPI.registerDisconnected({
-      name: params.name,
-      openshiftVersion: params.openshiftVersion,
-    });
-  },
+  registerDisconnected(params: { name: string; openshiftVersion: string }) {
+    return ClustersAPI.registerDisconnected(params);
+  },
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (1)

20-106: Consider consolidating context usage and handling removal failures in handleCancel

The new cancel flow correctly cleans up a disconnected cluster and its InfraEnv state, but there are a couple of tidy-ups you might consider:

  • You call useClusterWizardContext() twice (once for currentStepId, once for disconnected state). Consolidating into a single destructuring call will reduce duplication and keep the hook usage a bit cleaner.
  • ClustersService.remove(disconnectedCluster.id) is awaited but any error is silently ignored; you still clear local state and navigate. If backend cleanup fails, the user won’t see it. Wrapping the removal in a try/catch (and at least logging or surfacing an alert) would improve debuggability and user feedback without changing the happy path.

These are non-blocking, but would make this footer logic more robust.

libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (1)

76-80: Consider handling pullSecret prop changes to undefined.

The effect only updates the Formik field when pullSecret !== undefined. If the prop changes from a defined value to undefined, the Formik field will retain the old value, which could lead to stale data in the form state.

Consider this alternative that handles all prop changes:

   useEffect(() => {
-    if (pullSecret !== undefined) {
-      setFieldValue('pullSecret', pullSecret);
-    }
+    setFieldValue('pullSecret', pullSecret ?? '');
   }, [pullSecret, setFieldValue]);

Alternatively, if retaining the value when the prop becomes undefined is the intended behavior, add a comment explaining this design choice.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 92cacad and b8c7ece.

📒 Files selected for processing (15)
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1 hunks)
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1 hunks)
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (4 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (4 hunks)
  • libs/ui-lib/lib/ocm/services/ClustersService.ts (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts:69-69
Timestamp: 2025-10-19T17:22:52.502Z
Learning: CIM UI changes in the repository openshift-assisted/assisted-installer-ui (e.g., files under libs/ui-lib/lib/cim/) are handled separately by the CIM team and should be tracked via separate issues rather than being included in PRs for other UI components.
📚 Learning: 2025-10-21T04:40:36.292Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx:55-63
Timestamp: 2025-10-21T04:40:36.292Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx, the network reordering logic in the useEffect (swapping clusterNetworks and serviceNetworks based on the primary machine network's IP family) is for UI consistency only. Validation of empty or invalid CIDRs is handled separately by validation schemas, not by the reordering logic.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx
📚 Learning: 2025-08-11T06:07:38.056Z
Learnt from: ammont82
Repo: openshift-assisted/assisted-installer-ui PR: 3101
File: libs/ui-lib/lib/common/config/docs_links.ts:203-221
Timestamp: 2025-08-11T06:07:38.056Z
Learning: The MetalLB, OADP, Cluster Observability, and NUMA Resources operators in the virtualization bundle don't require version fallback logic in their documentation link functions (getMetalLbLink, getOadpLink, getClusterObservabilityLink, getNumaResourcesLink) in libs/ui-lib/lib/common/config/docs_links.ts, unlike some other operators like LSO and NVIDIA GPU.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
🧬 Code graph analysis (7)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
libs/types/assisted-installer-service.d.ts (2)
  • Cluster (110-407)
  • InfraEnv (1750-1827)
libs/ui-lib/lib/ocm/services/ClustersService.ts (1)
libs/ui-lib/lib/ocm/services/apis/index.ts (1)
  • ClustersAPI (5-5)
libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (2)
libs/ui-lib/lib/common/api/axiosClient.ts (1)
  • client (49-49)
libs/types/assisted-installer-service.d.ts (1)
  • Cluster (110-407)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (1)
libs/types/assisted-installer-service.d.ts (2)
  • Cluster (110-407)
  • InfraEnv (1750-1827)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: unit-tests
  • GitHub Check: tests
  • GitHub Check: translation-files
  • GitHub Check: circular-deps
  • GitHub Check: format
  • GitHub Check: lint
🔇 Additional comments (10)
apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1)

45-46: Comment addition is clear and harmless

The new comment accurately describes the existing ClustersService.remove(cluster.id) behavior and doesn’t affect runtime logic. No further changes needed.

libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1)

69-76: Disabling Next while submitting is a good safeguard

Using isNextDisabled || isSubmitting on the Next button cleanly prevents double-submission during async flows and aligns with the existing submitting state handling.

libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (1)

7-18: New disconnected optional-configurations step is wired correctly

The OptionalConfigurationsStep import and the 'disconnected-optional-configurations' case integrate cleanly into getCurrentStep and match the step key defined in wizardStepNames.

libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1)

15-18: Wizard label for the new disconnected step looks consistent

The 'disconnected-optional-configurations' entry matches the new step id and follows the existing naming pattern for wizard steps.

libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)

1-6: Re-exporting useClusterWizardContext is a useful API improvement

Exposing useClusterWizardContext from the index keeps imports consistent with other wizard exports and doesn’t introduce any behavioral change.

libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1)

248-253: registerDisconnected endpoint wiring looks correct

The new registerDisconnected method follows the established pattern for POST endpoints in this API (URI construction and typings) and cleanly supports the disconnected registration flow.

libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)

6-6: LGTM!

The context type extensions for disconnected cluster and InfraEnv state management are well-structured and properly typed.

Also applies to: 24-27

libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (1)

114-121: Verify prop synchronization behavior is intentional.

The effect only updates disconnectedCluster and disconnectedInfraEnv when they are undefined. This means subsequent changes to the cluster or infraEnv props after the state is initially set will be ignored.

If the cluster/infraEnv props can change during the wizard flow (e.g., from external updates), this could lead to stale state. However, if the disconnected flow is meant to capture the initial values and manage them independently, this is correct.

Please confirm whether this one-time initialization behavior is intentional for the disconnected cluster workflow, or if the state should track all prop changes.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (1)

60-93: LGTM!

The async deregistration flow is well-structured with proper error handling. The pattern of clearing context and navigating in all code paths (success, error, and no-cluster cases) ensures the wizard doesn't get stuck in an invalid state.

libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (1)

35-35: LGTM!

The wizard step type, flow, and validation map updates for disconnected-optional-configurations are correctly integrated into the existing wizard infrastructure.

Also applies to: 53-53, 265-265, 281-281

@ElayAharoni ElayAharoni force-pushed the add-new-fields-to-above-sea-level-ABI branch from b8c7ece to 8e60fb3 Compare November 23, 2025 15:47
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 23, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

  • Disconnected cluster registration workflow added to the cluster wizard.

  • New "Optional configurations" step to set SSH public key and pull secret for disconnected clusters.

  • Exported wizard context hook to support disconnected cluster flows.

  • UI/UX Improvements

  • Next button disables during submission to prevent duplicate actions.

  • Pull secret field now syncs with external state for consistent editing.

  • Improved deregistration and ISO/save flow on wizard completion with clearer error alerts.

✏️ Tip: You can customize this high-level summary in your review settings.

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

@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: 0

🧹 Nitpick comments (3)
apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1)

44-46: Non-functional comment looks fine; wording could be a bit more specific

The added comment correctly documents the intent of the ClustersService.remove(cluster.id) call and doesn’t affect behavior. If you want to future‑proof it against different cluster types, you could consider slightly clearer wording like “Remove the cluster resource” or “Remove this cluster” instead of “regular cluster,” but that’s purely optional.

libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (1)

76-80: Consider simplifying the dependency array.

The setFieldValue function from Formik is stable and doesn't change between renders, so it's not strictly necessary in the dependency array. However, including it is a safe practice and doesn't cause issues.

Optional refactor:

  useEffect(() => {
    if (pullSecret !== undefined) {
      setFieldValue('pullSecret', pullSecret);
    }
-  }, [pullSecret, setFieldValue]);
+  }, [pullSecret]);
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (1)

94-101: Consider adding error handling for cluster removal.

The handleCancel function removes the disconnected cluster without error handling. If the removal fails, the user is still navigated away and the context is cleared. While this may be acceptable for a cancel operation (to avoid getting stuck), consider logging errors or showing a non-blocking alert.

Apply this diff to add error handling:

  const handleCancel = React.useCallback(async () => {
    if (disconnectedCluster?.id) {
-      await ClustersService.remove(disconnectedCluster.id);
+      try {
+        await ClustersService.remove(disconnectedCluster.id);
+      } catch (error) {
+        // Log error but continue with navigation for cancel operation
+        console.error('Failed to remove disconnected cluster:', error);
+      }
    }
    setDisconnectedCluster(undefined);
    setDisconnectedInfraEnv(undefined);
    navigate('/cluster-list');
  }, [navigate, disconnectedCluster, setDisconnectedCluster, setDisconnectedInfraEnv]);
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b8c7ece and 8e60fb3.

📒 Files selected for processing (15)
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1 hunks)
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1 hunks)
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (4 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (4 hunks)
  • libs/ui-lib/lib/ocm/services/ClustersService.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx
  • libs/ui-lib/lib/ocm/services/ClustersService.ts
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts:69-69
Timestamp: 2025-10-19T17:22:52.502Z
Learning: CIM UI changes in the repository openshift-assisted/assisted-installer-ui (e.g., files under libs/ui-lib/lib/cim/) are handled separately by the CIM team and should be tracked via separate issues rather than being included in PRs for other UI components.
📚 Learning: 2025-10-21T04:40:36.292Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx:55-63
Timestamp: 2025-10-21T04:40:36.292Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx, the network reordering logic in the useEffect (swapping clusterNetworks and serviceNetworks based on the primary machine network's IP family) is for UI consistency only. Validation of empty or invalid CIDRs is handled separately by validation schemas, not by the reordering logic.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
📚 Learning: 2025-08-11T06:07:38.056Z
Learnt from: ammont82
Repo: openshift-assisted/assisted-installer-ui PR: 3101
File: libs/ui-lib/lib/common/config/docs_links.ts:203-221
Timestamp: 2025-08-11T06:07:38.056Z
Learning: The MetalLB, OADP, Cluster Observability, and NUMA Resources operators in the virtualization bundle don't require version fallback logic in their documentation link functions (getMetalLbLink, getOadpLink, getClusterObservabilityLink, getNumaResourcesLink) in libs/ui-lib/lib/common/config/docs_links.ts, unlike some other operators like LSO and NVIDIA GPU.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
🧬 Code graph analysis (4)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
libs/types/assisted-installer-service.d.ts (2)
  • Cluster (110-407)
  • InfraEnv (1750-1827)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: tests
  • GitHub Check: translation-files
  • GitHub Check: circular-deps
  • GitHub Check: unit-tests
  • GitHub Check: lint
  • GitHub Check: format
🔇 Additional comments (11)
libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1)

72-72: LGTM! Proper integration of submission state.

The Next button now correctly disables during submission by checking both isNextDisabled and isSubmitting, preventing double-submission issues.

libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (2)

6-6: LGTM! Proper type imports for disconnected cluster state.

The import of Cluster and InfraEnv types provides the necessary type safety for the new disconnected cluster workflow.


24-27: LGTM! Well-structured context extension for disconnected cluster workflow.

The new context properties provide proper state management for disconnected clusters and their infrastructure environments, with appropriate optional typing and setter functions.

libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)

5-5: LGTM! Proper public export of context hook.

Exporting useClusterWizardContext makes it available for components outside this module to access the wizard context.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2)

29-51: LGTM! Proper async flow control and error handling.

The implementation correctly:

  • Calls moveNext() only on successful cluster creation (inside try block)
  • Handles errors gracefully with alerts
  • Resets submission state in finally block regardless of outcome
  • Prevents wizard advancement when API calls fail

This addresses the previous review concern about advancing on failure.


62-69: Good integration with footer component.

The footer correctly receives the async onNext handler and isSubmitting state, providing proper UI feedback during cluster creation.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (4)

57-93: LGTM! Proper async flow control and error handling.

The onSubmit implementation correctly:

  • Validates cluster existence with a guard clause
  • Calls moveNext() only after successful InfraEnv creation (inside try block)
  • Handles API errors with appropriate alerts
  • Resets submission state in finally block

This addresses the previous review concern about wizard advancement on failure.


39-46: LGTM! Proper validation schema setup.

The validation schema correctly composes the SSH key and pull secret validations, and is appropriately memoized.


129-135: LGTM! Good UX pattern for optional pull secret editing.

The checkbox-controlled editing of the pull secret provides a clean UX, showing the field only when users want to customize it while maintaining the default value when not editing.


71-78: Verify cpuArchitecture alignment—current implementation shows asymmetry between cluster and InfraEnv creation.

The openshiftVersion: '4.19' is correctly aligned (used in both BasicStep cluster creation and OptionalConfigurationsStep InfraEnv creation). However, cpuArchitecture: 'x86_64' is specified only in the InfraEnv creation, not in the cluster creation call to registerDisconnected().

Confirm whether this asymmetry is intentional based on the API contracts for cluster and InfraEnv creation, or if cpuArchitecture should also be added to the cluster creation parameters.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (1)

60-93: Critical: Duplicate navigation and state clearing in success path.

When cluster deregistration succeeds, the code clears context and navigates at lines 69-72, but then execution continues to lines 82-86 which duplicate the context clearing and navigation. This results in:

  1. Redundant state updates
  2. Duplicate navigation calls
  3. The error handling comment at line 81 is misleading for the success path

Apply this diff to fix the control flow:

            onNext={() => {
              void (async () => {
                if (disconnectedInfraEnv?.downloadUrl) {
                  saveAs(disconnectedInfraEnv.downloadUrl);
                }
                if (disconnectedCluster?.id) {
                  try {
                    await ClustersService.remove(disconnectedCluster.id);
                    // Remove cluster and infraEnv from wizard context after successful deregistration
                    setDisconnectedCluster(undefined);
                    setDisconnectedInfraEnv(undefined);
                    // Navigate to cluster-list only after successful deregistration
                    navigate('/cluster-list');
                  } catch (error) {
                    handleApiError(error, () => {
                      addAlert({
                        title: 'Failed to deregister cluster',
                        message: getApiErrorMessage(error),
                        variant: AlertVariant.danger,
                      });
                    });
                    // Error handling: continue with navigation even if deregistration fails
                    // Still clear the context to avoid stale data
                    setDisconnectedCluster(undefined);
                    setDisconnectedInfraEnv(undefined);
                    // Navigate even on error to avoid getting stuck
                    navigate('/cluster-list');
                  }
                } else {
                  // If there's no cluster to deregister, navigate immediately
+                  setDisconnectedCluster(undefined);
+                  setDisconnectedInfraEnv(undefined);
                  navigate('/cluster-list');
                }
              })();
            }}

Note: Also consider wrapping saveAs in a try-catch since file operations can fail.

Likely an incorrect or invalid review comment.

@ElayAharoni ElayAharoni force-pushed the add-new-fields-to-above-sea-level-ABI branch from 8e60fb3 to 03f8a65 Compare November 24, 2025 15:11
@ElayAharoni ElayAharoni requested a review from rawagner November 24, 2025 15:11
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 24, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

  • Disconnected cluster registration API and service support.

  • Disconnected cluster workflow added to the cluster wizard with a new "Optional configurations" step for SSH key and pull secret.

  • Wizard context hook extended to expose disconnected cluster and infraEnv state and setters.

  • UI/UX Improvements

  • Next button disabled during submission to prevent duplicates.

  • Pull secret field syncs with external state for consistent editing.

  • Cleaner deregistration/ISO flow with improved error alerts.

✏️ Tip: You can customize this high-level summary in your review settings.

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

@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: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (1)

31-96: Guard against double Next clicks and always clear disconnected wizard state

Two behavioral issues in the current onNext:

  • The async IIFE isn’t tied to any isSubmitting flag, so the Next button remains clickable; rapid clicks can trigger multiple ClustersService.remove calls and duplicate “Failed to deregister cluster” alerts.
  • In the else branch (!disconnectedCluster?.id), you navigate to /cluster-list but don’t clear disconnectedCluster / disconnectedInfraEnv, which can leave stale wizard state if the provider outlives this route.

You can address both by tracking a local submitting flag, wiring it into ClusterWizardFooter, and centralizing cleanup in finally:

 const ReviewStep = () => {
-  const {
-    moveBack,
-    disconnectedInfraEnv,
-    disconnectedCluster,
-    setDisconnectedCluster,
-    setDisconnectedInfraEnv,
-  } = useClusterWizardContext();
-  const { addAlert } = useAlerts();
+  const {
+    moveBack,
+    disconnectedInfraEnv,
+    disconnectedCluster,
+    setDisconnectedCluster,
+    setDisconnectedInfraEnv,
+  } = useClusterWizardContext();
+  const { addAlert } = useAlerts();
+  const [isSubmitting, setIsSubmitting] = React.useState(false);
@@
-          <ClusterWizardFooter
-            onNext={() => {
-              void (async () => {
-                if (disconnectedInfraEnv?.downloadUrl) {
-                  saveAs(disconnectedInfraEnv.downloadUrl);
-                }
-                if (disconnectedCluster?.id) {
-                  try {
-                    await ClustersService.remove(disconnectedCluster.id);
-                    // Remove cluster and infraEnv from wizard context after successful deregistration
-                    setDisconnectedCluster(undefined);
-                    setDisconnectedInfraEnv(undefined);
-                    // Navigate to cluster-list only after successful deregistration
-                    navigate('/cluster-list');
-                  } catch (error) {
-                    handleApiError(error, () => {
-                      addAlert({
-                        title: 'Failed to deregister cluster',
-                        message: getApiErrorMessage(error),
-                        variant: AlertVariant.danger,
-                      });
-                    });
-                    // Error handling: continue with navigation even if deregistration fails
-                    // Still clear the context to avoid stale data
-                    setDisconnectedCluster(undefined);
-                    setDisconnectedInfraEnv(undefined);
-                    // Navigate even on error to avoid getting stuck
-                    navigate('/cluster-list');
-                  }
-                } else {
-                  // If there's no cluster to deregister, navigate immediately
-                  navigate('/cluster-list');
-                }
-              })();
-            }}
+          <ClusterWizardFooter
+            isSubmitting={isSubmitting}
+            isNextButtonLoading={isSubmitting}
+            onNext={() => {
+              if (isSubmitting) {
+                return;
+              }
+              setIsSubmitting(true);
+              void (async () => {
+                if (disconnectedInfraEnv?.downloadUrl) {
+                  saveAs(disconnectedInfraEnv.downloadUrl);
+                }
+                try {
+                  if (disconnectedCluster?.id) {
+                    await ClustersService.remove(disconnectedCluster.id);
+                  }
+                } catch (error) {
+                  handleApiError(error, () => {
+                    addAlert({
+                      title: 'Failed to deregister cluster',
+                      message: getApiErrorMessage(error),
+                      variant: AlertVariant.danger,
+                    });
+                  });
+                } finally {
+                  // Always clear wizard state and navigate away
+                  setDisconnectedCluster(undefined);
+                  setDisconnectedInfraEnv(undefined);
+                  navigate('/cluster-list');
+                  setIsSubmitting(false);
+                }
+              })();
+            }}
             onBack={moveBack}
             nextButtonText="Download ISO"
           />

This:

  • Prevents double-submissions while the deregistration flow is running.
  • Ensures the disconnected wizard context is cleared and navigation happens on all paths (success, error, or “no cluster”).
  • Reuses the existing isSubmitting/isNextButtonLoading props on WizardFooter for proper button disabling and spinner behavior.

Optionally, consider localizing the new alert title ('Failed to deregister cluster') via the existing translation wrapper to keep user-facing strings consistent with the rest of the UI.

🧹 Nitpick comments (3)
libs/ui-lib/lib/ocm/services/ClustersService.ts (1)

174-179: registerDisconnected wrapper is fine; can be simplified

The new service method correctly forwards name and openshiftVersion to ClustersAPI.registerDisconnected.

You can simplify slightly by passing the params object through unchanged:

-  registerDisconnected(params: { name: string; openshiftVersion: string }) {
-    return ClustersAPI.registerDisconnected({
-      name: params.name,
-      openshiftVersion: params.openshiftVersion,
-    });
-  },
+  registerDisconnected(params: { name: string; openshiftVersion: string }) {
+    return ClustersAPI.registerDisconnected(params);
+  },
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (1)

33-36: Consider parameterizing the hardcoded OpenShift version.

The openshiftVersion is hardcoded to '4.19' here and also displayed statically at Line 88. While this may be intentional for the current disconnected flow, hardcoding limits flexibility and makes future version updates harder to maintain.

Consider one of these approaches:

  1. Extract to a constant at the file or module level:
+const DISCONNECTED_CLUSTER_VERSION = '4.19';
+
 const BasicStep = () => {
   ...
   const onNext = async () => {
     try {
       setIsSubmitting(true);
       const { data: cluster } = await ClustersService.registerDisconnected({
         name: 'disconnected-cluster',
-        openshiftVersion: '4.19',
+        openshiftVersion: DISCONNECTED_CLUSTER_VERSION,
       });
  1. Or derive from the form's displayed version (Line 88) via context/props if it becomes configurable in the future.
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1)

96-100: Consider parameterizing hardcoded InfraEnv configuration values.

The openshiftVersion ('4.19'), cpuArchitecture ('x86_64'), and name template are hardcoded. Similar to the BasicStep concern, this limits flexibility and makes version updates harder.

Consider deriving these from the disconnectedCluster object or shared constants:

+const DISCONNECTED_INFRA_ENV_NAME_TEMPLATE = (clusterName: string) => `${clusterName}_infra-env`;
+
 const createParams = {
-  name: `disconnected-cluster_infra-env`,
+  name: DISCONNECTED_INFRA_ENV_NAME_TEMPLATE(disconnectedCluster.name || 'disconnected-cluster'),
   pullSecret: values.pullSecret || pullSecret,
   clusterId: disconnectedCluster.id,
-  openshiftVersion: '4.19',
-  cpuArchitecture: 'x86_64' as const,
+  openshiftVersion: disconnectedCluster.openshiftVersion || '4.19',
+  cpuArchitecture: disconnectedCluster.cpuArchitecture || 'x86_64' as const,
   ...(values.sshPublicKey && { sshAuthorizedKey: values.sshPublicKey }),
 };
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8e60fb3 and 03f8a65.

📒 Files selected for processing (15)
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1 hunks)
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1 hunks)
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (4 hunks)
  • libs/ui-lib/lib/ocm/services/ClustersService.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts:69-69
Timestamp: 2025-10-19T17:22:52.502Z
Learning: CIM UI changes in the repository openshift-assisted/assisted-installer-ui (e.g., files under libs/ui-lib/lib/cim/) are handled separately by the CIM team and should be tracked via separate issues rather than being included in PRs for other UI components.
📚 Learning: 2025-08-11T06:07:38.056Z
Learnt from: ammont82
Repo: openshift-assisted/assisted-installer-ui PR: 3101
File: libs/ui-lib/lib/common/config/docs_links.ts:203-221
Timestamp: 2025-08-11T06:07:38.056Z
Learning: The MetalLB, OADP, Cluster Observability, and NUMA Resources operators in the virtualization bundle don't require version fallback logic in their documentation link functions (getMetalLbLink, getOadpLink, getClusterObservabilityLink, getNumaResourcesLink) in libs/ui-lib/lib/common/config/docs_links.ts, unlike some other operators like LSO and NVIDIA GPU.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
📚 Learning: 2025-10-21T04:40:36.292Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx:55-63
Timestamp: 2025-10-21T04:40:36.292Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx, the network reordering logic in the useEffect (swapping clusterNetworks and serviceNetworks based on the primary machine network's IP family) is for UI consistency only. Validation of empty or invalid CIDRs is handled separately by validation schemas, not by the reordering logic.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts
🧬 Code graph analysis (4)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/services/ClustersService.ts (1)
libs/ui-lib/lib/ocm/services/apis/index.ts (1)
  • ClustersAPI (5-5)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (7)
libs/ui-lib/lib/ocm/hooks/usePullSecret.ts (1)
  • usePullSecret (6-33)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/common/components/ui/formik/validationSchemas.ts (2)
  • sshPublicKeyValidationSchema (106-116)
  • pullSecretValidationSchema (144-163)
libs/ui-lib/lib/common/components/ui/formik/utils.ts (2)
  • getRichTextValidation (75-113)
  • getFormikErrorFields (34-37)
libs/ui-lib/lib/ocm/services/apis/index.ts (1)
  • InfraEnvsAPI (7-7)
libs/ui-lib/lib/common/api/assisted-service/EventsAPI.ts (1)
  • createParams (21-48)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: tests
  • GitHub Check: translation-files
  • GitHub Check: circular-deps
  • GitHub Check: unit-tests
  • GitHub Check: lint
  • GitHub Check: format
🔇 Additional comments (9)
libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (1)

68-80: No-op formatting change; component remains correct

The added whitespace after useTranslation() does not affect behavior. PullSecretField still wires label, helper, and icon as expected.

libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1)

64-76: Disabling Next while submitting is correct

Tying isDisabled to isNextDisabled || isSubmitting is appropriate and prevents duplicate submissions during async work without changing other footer semantics.

libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (1)

21-55: Disconnected optional-configurations step wiring looks consistent

The new 'disconnected-optional-configurations' step is correctly:

  • Added to ClusterWizardStepsType.
  • Inserted into disconnectedSteps between basic and review.
  • Backed by its own (currently empty) validations map and registered in wizardStepsValidationsMap.

This keeps validations utils and step navigation coherent with the existing disconnected flow.

Also applies to: 262-282

apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1)

34-47: Comment matches existing reset behavior

The added comment correctly documents that the subsequent call removes the regular cluster. No behavioral change; reset flow remains intact.

libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)

1-6: Re-exporting useClusterWizardContext is appropriate

Surfacing useClusterWizardContext from the index keeps imports consistent with the rest of the cluster wizard API and avoids deep import paths for consumers.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (4)

31-41: LGTM!

The PullSecretSync component correctly synchronizes the external pull secret into Formik state, with proper guards to avoid setting undefined values.


70-77: LGTM!

Good defensive check to ensure the cluster exists before attempting to create or update the InfraEnv. The early return and clear error message prevent cascading failures.


51-63: LGTM!

Form validation setup is well-structured:

  • Correctly uses imported validation schemas for SSH key and pull secret
  • Properly memoized static schema
  • Initial values correctly populated from the pull secret hook
  • Error field tracking for UI feedback is properly implemented

Also applies to: 68-68, 121-122


87-103: ****

The code is consistent and correct. InfraEnvsService.create() internally destructures the API response const { data: infraEnv } = await InfraEnvsAPI.register(params) and returns the unwrapped infraEnv object. Both line 87 (const { data: updatedInfraEnv }) and line 103 (const createdInfraEnv) receive the same unwrapped InfraEnv type—there is no API response inconsistency to fix.

Likely an incorrect or invalid review comment.

@ElayAharoni ElayAharoni force-pushed the add-new-fields-to-above-sea-level-ABI branch from 03f8a65 to 7db2208 Compare November 24, 2025 16:11
@ElayAharoni ElayAharoni removed the request for review from asmasarw November 24, 2025 16:11
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 24, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

  • Disconnected cluster registration API and service methods added.

  • New "Optional configurations" wizard step for SSH key and pull secret; OptionalConfigurationsStep component added.

  • Cluster wizard exposes disconnected cluster and infraEnv state/setters and re-exports useClusterWizardContext.

  • UI/UX Improvements

  • Next button disabled during submission to prevent duplicates.

  • Pull secret syncing/editing integrated into the form.

  • Cancel/Review flows now handle conditional deregistration, ISO save, and surface API errors via alerts.

✏️ Tip: You can customize this high-level summary in your review settings.

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

@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: 2

♻️ Duplicate comments (2)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (2)

157-157: Capitalize the checkbox label for consistency.

The label should follow sentence case for better UI consistency.

Apply this diff:

                     <Checkbox
-                      label="edit pull secret"
+                      label="Edit pull secret"
                       isChecked={editPullSecret}

96-96: Hard-coded InfraEnv name may cause conflicts.

The name disconnected-cluster_infra-env is static and could cause conflicts if multiple disconnected clusters are created simultaneously or if the wizard is restarted without proper cleanup.

Consider using a unique name based on the cluster:

             const createParams = {
-              name: `disconnected-cluster_infra-env`,
+              name: `${disconnectedCluster.name || disconnectedCluster.id}_infra-env`,
               pullSecret: values.pullSecret || pullSecret,
               clusterId: disconnectedCluster.id,
🧹 Nitpick comments (4)
libs/ui-lib/lib/ocm/services/ClustersService.ts (1)

174-179: Thin registerDisconnected wrapper is fine; consider reusing a shared param type

The new registerDisconnected method is a straightforward pass-through to ClustersAPI.registerDisconnected and matches how it’s used in BasicStep; this looks correct.

If you want to tighten typing and avoid future drift, you could consider reusing a shared type (e.g., a Pick<ClusterCreateParamsWithStaticNetworking, 'name' | 'openshiftVersion'> or an exported API param type) instead of an inline { name; openshiftVersion } shape, but it’s optional.

libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (1)

20-22: Cancel flow now robust to deregistration failures

The updated handleCancel correctly attempts to deregister the disconnected cluster, surfaces API errors via handleApiError + addAlert, and still clears the disconnected state and navigates to /cluster-list even if the remove call fails. This addresses the earlier concern about users getting stuck with stale context.

Optionally, for consistency with other error alerts (e.g., in the disconnected steps), you might want to pass an explicit variant: AlertVariant.danger into addAlert, but the core behavior looks good.

Also applies to: 87-111

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (1)

32-36: Review step’s download + deregistration flow is consistent and failure-tolerant

The new onNext behavior correctly:

  • Triggers the ISO download when disconnectedInfraEnv.downloadUrl is present.
  • Attempts to deregister the disconnected cluster when an id exists.
  • Surfaces API failures via handleApiError and a danger alert, while still clearing disconnected state and navigating to /cluster-list so the user doesn’t get stuck.

The minor duplication of setDisconnectedCluster(undefined), setDisconnectedInfraEnv(undefined), and navigate('/cluster-list') between the success and error paths could be factored into a small helper or moved into a finally-style branch, but that’s purely a readability/refactor concern.

Also applies to: 38-45, 60-92

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (1)

18-22: Disconnected-cluster registration flow looks correct; consider tightening types to drop ESLint disables

The onNext implementation behaves well:

  • Sets isSubmitting, calls ClustersService.registerDisconnected, stores the resulting cluster in context, and only calls moveNext() on success.
  • Uses handleApiError + a danger alert to surface failures without advancing the wizard.
  • Always clears isSubmitting in finally, so the Next button won’t remain disabled.

The eslint-disable for no-unsafe-assignment/no-unsafe-call and the cluster as Cluster cast suggest the underlying API method is typed as any. If you firm up the return type of ClustersAPI.registerDisconnected (and thus ClustersService.registerDisconnected), you should be able to remove both the linter suppression and the cast, keeping this flow fully type-safe.

Also applies to: 26-53, 64-71

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 03f8a65 and 7db2208.

📒 Files selected for processing (15)
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1 hunks)
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1 hunks)
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (4 hunks)
  • libs/ui-lib/lib/ocm/services/ClustersService.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (8)
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts:69-69
Timestamp: 2025-10-19T17:22:52.502Z
Learning: CIM UI changes in the repository openshift-assisted/assisted-installer-ui (e.g., files under libs/ui-lib/lib/cim/) are handled separately by the CIM team and should be tracked via separate issues rather than being included in PRs for other UI components.
📚 Learning: 2025-10-21T04:40:36.292Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx:55-63
Timestamp: 2025-10-21T04:40:36.292Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx, the network reordering logic in the useEffect (swapping clusterNetworks and serviceNetworks based on the primary machine network's IP family) is for UI consistency only. Validation of empty or invalid CIDRs is handled separately by validation schemas, not by the reordering logic.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx
📚 Learning: 2025-08-11T06:07:38.056Z
Learnt from: ammont82
Repo: openshift-assisted/assisted-installer-ui PR: 3101
File: libs/ui-lib/lib/common/config/docs_links.ts:203-221
Timestamp: 2025-08-11T06:07:38.056Z
Learning: The MetalLB, OADP, Cluster Observability, and NUMA Resources operators in the virtualization bundle don't require version fallback logic in their documentation link functions (getMetalLbLink, getOadpLink, getClusterObservabilityLink, getNumaResourcesLink) in libs/ui-lib/lib/common/config/docs_links.ts, unlike some other operators like LSO and NVIDIA GPU.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
🧬 Code graph analysis (2)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/services/ClustersService.ts (1)
libs/ui-lib/lib/ocm/services/apis/index.ts (1)
  • ClustersAPI (5-5)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: unit-tests
  • GitHub Check: tests
  • GitHub Check: translation-files
  • GitHub Check: circular-deps
  • GitHub Check: lint
  • GitHub Check: format
🔇 Additional comments (3)
libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1)

72-72: LGTM! Prevents double-submission.

Disabling the Next button during submission is correct and improves UX by preventing users from triggering multiple submissions.

libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (1)

7-7: Optional-configurations step correctly wired into wizard switch

The new disconnected-optional-configurations case and import look consistent with the existing disconnected steps; no issues from a routing/rendering perspective.

Also applies to: 16-17

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1)

69-119: Well-structured submit handler with proper error handling.

The refactored submission logic correctly moves navigation into success paths (lines 92, 105), fixing the critical issue from the previous review where the wizard would advance even on failure. The dual code paths for creating vs. updating InfraEnv are clear and error handling is comprehensive.

@ElayAharoni ElayAharoni force-pushed the add-new-fields-to-above-sea-level-ABI branch from 7db2208 to 89d7d59 Compare November 25, 2025 07:52
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 25, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

  • Disconnected cluster registration API and service methods added; wizard exposes disconnected cluster/infraEnv state and re-exports useClusterWizardContext.

  • New "Optional configurations" wizard step and OptionalConfigurationsStep component for SSH key and pull secret.

  • UI/UX Improvements

  • Next button disabled during submission to prevent duplicates.

  • Pull secret sync/editing integrated into the form.

  • Cancel/Review flows handle conditional deregistration, ISO save, and surface API errors via alerts.

✏️ Tip: You can customize this high-level summary in your review settings.

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

@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: 2

♻️ Duplicate comments (4)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (3)

79-119: Update hard-coded OpenShift version to 4.20.

Line 99 hard-codes openshiftVersion: '4.19', which is outdated. OpenShift 4.20 (GA November 2025) is the current version. This should be updated to match the latest release and kept in sync with BasicStep.tsx line 36.

Apply this diff:

             const createParams = {
               name: `disconnected-cluster_infra-env`,
               pullSecret: values.pullSecret || pullSecret,
               clusterId: disconnectedCluster.id,
-              openshiftVersion: '4.19',
+              openshiftVersion: '4.20',
               cpuArchitecture: 'x86_64' as const,
               ...(values.sshPublicKey && { sshAuthorizedKey: values.sshPublicKey }),
             };

156-161: Capitalize checkbox label for UI consistency.

Line 157 uses lowercase "edit pull secret", which is inconsistent with UI conventions. Follow sentence case or title case for better UX.

Apply this diff:

                     <Checkbox
-                      label="edit pull secret"
+                      label="Edit pull secret"
                       isChecked={editPullSecret}
                       onChange={(_, checked) => setEditPullSecret(checked)}
                       id="edit-pull-secret-checkbox"
                     />

60-63: Restore initial values from existing InfraEnv to support edit flow.

When the user navigates back to this step after creating the InfraEnv, the form resets sshPublicKey to an empty string (line 61) rather than restoring it from disconnectedInfraEnv?.sshAuthorizedKey. This forces the user to re-enter the SSH key if they need to make changes, degrading the user experience.

Apply this diff:

   const initialValues: OptionalConfigurationsFormValues = {
-    sshPublicKey: '',
+    sshPublicKey: disconnectedInfraEnv?.sshAuthorizedKey || '',
     pullSecret: pullSecret,
   };

Similarly, initialize editPullSecret state to reflect whether a custom pull secret was previously set:

-  const [editPullSecret, setEditPullSecret] = React.useState(false);
+  const [editPullSecret, setEditPullSecret] = React.useState(
+    disconnectedInfraEnv ? disconnectedInfraEnv.pullSecret !== pullSecret : false
+  );
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (1)

95-100: Avoid duplicating props in state; initialize disconnected entities to undefined.

Based on learnings, the SaaS wizard already passes the cluster and infraEnv from the parent, and initializing disconnectedCluster and disconnectedInfraEnv with these prop values creates confusion about the source of truth. The disconnected flow creates new temporary cluster and infraEnv entities via API calls (see BasicStep.tsx line 34 and OptionalConfigurationsStep.tsx line 103), so these state variables should start as undefined and be populated only during the disconnected registration workflow.

Apply this diff:

-  const [disconnectedCluster, setDisconnectedCluster] = React.useState<Cluster | undefined>(
-    cluster,
-  );
-  const [disconnectedInfraEnv, setDisconnectedInfraEnv] = React.useState<InfraEnv | undefined>(
-    infraEnv,
-  );
+  const [disconnectedCluster, setDisconnectedCluster] = React.useState<Cluster | undefined>();
+  const [disconnectedInfraEnv, setDisconnectedInfraEnv] = React.useState<InfraEnv | undefined>();
🧹 Nitpick comments (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (1)

133-133: Verify async handler behavior with onCancel prop.

handleCancel is an async function, but it's passed to onCancel which likely expects a synchronous callback (or at least doesn't await it). The button click will return a Promise that isn't awaited, which is fine for fire-and-forget, but any unhandled rejection from the navigation or state setters could surface as an uncaught promise error.

Consider wrapping navigation/state updates in a try/catch to be defensive:

   const handleCancel = React.useCallback(async () => {
     if (disconnectedCluster?.id) {
       try {
         await ClustersService.remove(disconnectedCluster.id);
       } catch (e) {
         handleApiError(e, () =>
           addAlert({
             title: 'Failed to remove cluster',
             message: getApiErrorMessage(e),
           }),
         );
       }
     }
+    try {
       setDisconnectedCluster(undefined);
       setDisconnectedInfraEnv(undefined);
       navigate('/cluster-list');
+    } catch {
+      // State/navigation errors are non-recoverable
+    }
   }, [navigate, disconnectedCluster, setDisconnectedCluster, setDisconnectedInfraEnv, addAlert]);
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (1)

95-95: Button label doesn't reflect deregistration side effect.

The button reads "Download ISO" (line 95) but also deregisters the temporary cluster. Users may not expect the cluster to be removed when clicking "Download ISO". Consider renaming to "Download ISO and Finish" or adding a confirmation dialog explaining that the temporary disconnected cluster will be deregistered.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1)

100-100: Consider making CPU architecture user-configurable.

Line 100 hard-codes cpuArchitecture: 'x86_64', which prevents support for ARM-based clusters. Since the InfraEnv interface supports multiple architectures (per the type definition), consider making this user-selectable or deriving it from cluster configuration rather than hard-coding.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7db2208 and 89d7d59.

📒 Files selected for processing (15)
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1 hunks)
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1 hunks)
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (4 hunks)
  • libs/ui-lib/lib/ocm/services/ClustersService.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts
  • libs/ui-lib/lib/ocm/services/ClustersService.ts
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts:69-69
Timestamp: 2025-10-19T17:22:52.502Z
Learning: CIM UI changes in the repository openshift-assisted/assisted-installer-ui (e.g., files under libs/ui-lib/lib/cim/) are handled separately by the CIM team and should be tracked via separate issues rather than being included in PRs for other UI components.
📚 Learning: 2025-10-21T04:40:36.292Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx:55-63
Timestamp: 2025-10-21T04:40:36.292Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx, the network reordering logic in the useEffect (swapping clusterNetworks and serviceNetworks based on the primary machine network's IP family) is for UI consistency only. Validation of empty or invalid CIDRs is handled separately by validation schemas, not by the reordering logic.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx
📚 Learning: 2025-08-11T06:07:38.056Z
Learnt from: ammont82
Repo: openshift-assisted/assisted-installer-ui PR: 3101
File: libs/ui-lib/lib/common/config/docs_links.ts:203-221
Timestamp: 2025-08-11T06:07:38.056Z
Learning: The MetalLB, OADP, Cluster Observability, and NUMA Resources operators in the virtualization bundle don't require version fallback logic in their documentation link functions (getMetalLbLink, getOadpLink, getClusterObservabilityLink, getNumaResourcesLink) in libs/ui-lib/lib/common/config/docs_links.ts, unlike some other operators like LSO and NVIDIA GPU.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
🧬 Code graph analysis (4)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (3)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (5)
libs/ui-lib/lib/common/features/featureGate.tsx (1)
  • useFeature (56-59)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (32-38)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/ocm/components/hosts/ModalDialogsContext.tsx (1)
  • useModalDialogsContext (146-146)
libs/ui-lib/lib/common/api/utils.ts (2)
  • handleApiError (19-51)
  • getApiErrorMessage (53-58)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (1)
libs/types/assisted-installer-service.d.ts (2)
  • Cluster (110-407)
  • InfraEnv (1750-1827)
libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (3)
libs/ui-lib/lib/common/api/axiosClient.ts (1)
  • client (49-49)
libs/types/assisted-installer-service.d.ts (1)
  • Cluster (110-407)
libs/ui-lib/lib/ocm/services/apis/index.ts (1)
  • ClustersAPI (5-5)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: circular-deps
  • GitHub Check: translation-files
  • GitHub Check: tests
  • GitHub Check: unit-tests
  • GitHub Check: lint
  • GitHub Check: format
🔇 Additional comments (17)
apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1)

44-46: LGTM!

The comment clarifies the distinction between "regular" cluster removal and the disconnected cluster flows introduced in this PR.

libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2)

7-7: LGTM!

Import follows the established pattern for disconnected step components.


16-17: LGTM!

The new case integrates cleanly with the existing step routing pattern.

libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1)

17-17: LGTM!

The new step name entry is consistent with the existing naming conventions for disconnected wizard steps.

libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (2)

95-111: Good error handling implementation.

The error handling addresses the previous review feedback. The cleanup and navigation will execute regardless of whether the removal succeeds or fails, since the catch block doesn't re-throw.


113-116: LGTM!

Reformatting to multiline improves readability while preserving the existing behavior.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (3)

32-35: LGTM!

The imports correctly support the deregistration workflow and error handling.


38-45: LGTM!

Context usage aligns with the updated ClusterWizardContext API.


60-93: Confirm error handling masks deregistration failures; verify backend TTL cleanup policy with backend team.

The error handling in lines 73–87 catches ClustersService.remove() failures, displays an alert, but proceeds to clear context and navigate to /cluster-list regardless. This means a failed deregistration (e.g., API error) leaves the cluster registered on the backend while the UI discards local state.

Verification shows ClustersService.remove() is a sequential API orchestration without retry or special failure logic—if ClustersAPI.deregister() fails, the error propagates. No TTL or automatic cleanup logic was found in the UI codebase for disconnected clusters.

Action: Confirm with the backend team whether disconnected clusters have a TTL/expiration policy that will clean them up automatically if deregistration fails. If not, consider whether failed deregistration should block navigation or require user action.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (3)

18-21: LGTM!

Imports are consistent with the API-driven cluster registration workflow.


25-27: LGTM!

Local isSubmitting state is appropriate here since the Formik form's onSubmit is a no-op and the actual submission logic is in the custom onNext handler.


63-70: LGTM!

The footer correctly wires the async onNext handler with void to suppress unhandled promise warnings, and isSubmitting appropriately disables the button during API calls.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (5)

1-24: LGTM!

Imports are comprehensive and appropriate for this Formik-based configuration step.


26-29: LGTM!

Type definition is clear and matches the form fields.


31-41: LGTM!

The PullSecretSync component correctly synchronizes external pull secret state with the Formik form field.


51-58: LGTM!

Validation schema is correctly memoized and uses the appropriate validation utilities.


121-138: LGTM!

The render section correctly wires Formik's isSubmitting to the footer (no duplicate state needed) and properly disables the Next button based on validation state.

@ElayAharoni ElayAharoni force-pushed the add-new-fields-to-above-sea-level-ABI branch from 89d7d59 to d96b2b2 Compare November 26, 2025 09:26
Signed-off-by: Elay Aharoni <elayaha@gmail.com>
@ElayAharoni ElayAharoni force-pushed the add-new-fields-to-above-sea-level-ABI branch from d96b2b2 to 354f851 Compare November 26, 2025 09:56
@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 26, 2025
@openshift-ci
Copy link

openshift-ci bot commented Nov 26, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ElayAharoni, rawagner

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 Nov 26, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 26, 2025

@ElayAharoni: This pull request references MGMT-22204 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 story to target the "4.21.0" version, but no target version was set.

Details

In response to this:

https://issues.redhat.com/browse/MGMT-22204

added a new step to above sea level ABI flow, with optional configurations where the user can add a public ssh key and edit the pull secret if he wants.
it interacts with @omer-vishlitzky recent pr: openshift/assisted-service#8144

Summary by CodeRabbit

  • New Features

  • Disconnected cluster registration API/service added; wizard exposes disconnected infraEnv state and re-exports context hook.

  • New "Optional configurations" wizard step and UI for SSH key and pull secret; wizard flow supports disconnected cluster creation and step validations.

  • Routes accept an optional cluster ID on the new-cluster path.

  • UI/UX Improvements

  • Next button disables during submission; pull secret sync/edit integrated.

  • Cancel/review flows handle conditional deregistration, ISO download, and surface API errors via alerts.

  • Style

  • Minor non-functional formatting/comment tweaks.

✏️ Tip: You can customize this high-level summary in your review settings.

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

@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

♻️ Duplicate comments (5)
libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1)

248-253: Convert parameter naming from camelCase to snake_case to match API convention.

The backend consistently uses snake_case (e.g., openshift_cluster_id at line 199). The request body should send openshift_version instead of openshiftVersion.

Apply this diff:

  registerDisconnected(params: { name: string; openshiftVersion: string }) {
-    return client.post<Cluster, AxiosResponse<Cluster>, { name: string; openshiftVersion: string }>(
+    return client.post<Cluster, AxiosResponse<Cluster>, { name: string; openshift_version: string }>(
      `${ClustersAPI.makeBaseURI()}disconnected`,
-      params,
+      { name: params.name, openshift_version: params.openshiftVersion },
    );
  },
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2)

35-35: Critical: Convert disconnectedClusterId to React state to trigger re-renders.

The variable is declared as a plain let and assigned inside the async onNext at line 48, but React doesn't track plain variables for reactivity. The footer at line 81 will always receive undefined during render.

Apply this diff:

   const { addAlert } = useAlerts();
   const [isSubmitting, setIsSubmitting] = React.useState(false);
+  const [disconnectedClusterId, setDisconnectedClusterId] = React.useState<string | undefined>();
   const navigate = useNavigate();
   const location = useLocation();
   const currentPath = location.pathname;
-  let disconnectedClusterId: string | undefined;

Then update line 48:

-      disconnectedClusterId = disconnectedCluster.id;
+      setDisconnectedClusterId(disconnectedCluster.id);

46-46: Update hard-coded OpenShift version from 4.19 to 4.20.

OpenShift 4.20 reached GA in November 2025. Consider centralizing the version in a constant to avoid duplication across BasicStep, OptionalConfigurationsStep, and ReviewStep.

OpenShift 4.20 release date and latest version
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (2)

124-124: Update hard-coded OpenShift version from 4.19 to 4.20.

OpenShift 4.20 is the latest version (GA November 2025). This version is duplicated in BasicStep.tsx line 46 and ReviewStep.tsx line 133. Consider centralizing it in a constant.


85-87: Restore initial values from existing disconnectedInfraEnv when editing.

When users navigate back to this step, the form resets to empty values instead of restoring from disconnectedInfraEnv. This forces users to re-enter their SSH key.

Apply this diff:

   const initialValues: OptionalConfigurationsFormValues = {
-    sshPublicKey: '',
+    sshPublicKey: disconnectedInfraEnv?.sshAuthorizedKey || '',
     pullSecret: pullSecret,
   };
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d96b2b2 and 354f851.

📒 Files selected for processing (16)
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx (1 hunks)
  • libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts (1 hunks)
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/Routes.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts (4 hunks)
  • libs/ui-lib/lib/ocm/services/ClustersService.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (9)
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx
  • apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/index.ts
  • libs/ui-lib/lib/ocm/services/ClustersService.ts
  • libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts
  • libs/ui-lib/lib/ocm/components/Routes.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts
  • libs/ui-lib/lib/common/components/ui/WizardFooter.tsx
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/networkConfigurationValidation.ts:69-69
Timestamp: 2025-10-19T17:22:52.502Z
Learning: CIM UI changes in the repository openshift-assisted/assisted-installer-ui (e.g., files under libs/ui-lib/lib/cim/) are handled separately by the CIM team and should be tracked via separate issues rather than being included in PRs for other UI components.
📚 Learning: 2025-10-21T04:40:36.292Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx:55-63
Timestamp: 2025-10-21T04:40:36.292Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx, the network reordering logic in the useEffect (swapping clusterNetworks and serviceNetworks based on the primary machine network's IP family) is for UI consistency only. Validation of empty or invalid CIDRs is handled separately by validation schemas, not by the reordering logic.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
  • libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx
🧬 Code graph analysis (2)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (1)
libs/types/assisted-installer-service.d.ts (1)
  • InfraEnv (1750-1827)
libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/OptionalConfigurationsStep.tsx (9)
libs/ui-lib-tests/cypress/fixtures/data/dummy-pull-secret.ts (1)
  • pullSecret (10-10)
libs/ui-lib/lib/ocm/hooks/usePullSecret.ts (1)
  • usePullSecret (6-33)
libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx (1)
  • useClusterWizardContext (30-36)
libs/ui-lib/lib/ocm/components/clusterWizard/index.ts (1)
  • useClusterWizardContext (5-5)
libs/ui-lib/lib/common/components/ui/formik/validationSchemas.ts (2)
  • sshPublicKeyValidationSchema (106-116)
  • pullSecretValidationSchema (144-163)
libs/ui-lib/lib/common/components/ui/formik/utils.ts (1)
  • getRichTextValidation (75-113)
libs/ui-lib/lib/ocm/services/apis/index.ts (1)
  • InfraEnvsAPI (7-7)
libs/ui-lib/lib/common/api/assisted-service/EventsAPI.ts (1)
  • createParams (21-48)
libs/ui-lib/lib/common/api/axiosClient.ts (1)
  • isInOcm (49-49)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: translation-files
  • GitHub Check: unit-tests
  • GitHub Check: circular-deps
  • GitHub Check: tests
  • GitHub Check: format
  • GitHub Check: lint
🔇 Additional comments (5)
libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx (2)

7-7: LGTM!

Import is correctly placed and matches the usage in the switch case below.


16-17: LGTM!

The new disconnected step is properly integrated into the wizard flow.

libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx (1)

265-266: LGTM!

Context value correctly exposes the disconnectedInfraEnv state and setter.

libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx (1)

56-86: LGTM!

The async onNext flow correctly handles ISO download, cluster deregistration with error handling, and ensures cleanup/navigation occurs regardless of outcome to prevent stuck states.

libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx (1)

96-111: LGTM!

The async cancel flow correctly handles cluster removal with error handling, and ensures cleanup (clearing disconnectedInfraEnv) and navigation always occur to prevent stuck states.

@openshift-merge-bot openshift-merge-bot bot merged commit 41a3210 into openshift-assisted:master Nov 26, 2025
11 checks passed
@ElayAharoni
Copy link
Contributor Author

/cherry-pick releases/v2.48

@openshift-cherrypick-robot
Copy link
Contributor

@ElayAharoni: #3274 failed to apply on top of branch "releases/v2.48":

Applying: add new fields to above sea level ABI
Using index info to reconstruct a base tree...
M	apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx
M	libs/ui-lib/lib/common/api/assisted-service/ClustersAPI.ts
M	libs/ui-lib/lib/common/components/ui/WizardFooter.tsx
M	libs/ui-lib/lib/common/components/ui/formik/PullSecretField.tsx
M	libs/ui-lib/lib/ocm/components/Routes.tsx
M	libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContext.tsx
M	libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardContextProvider.tsx
M	libs/ui-lib/lib/ocm/components/clusterWizard/ClusterWizardFooter.tsx
M	libs/ui-lib/lib/ocm/components/clusterWizard/NewClusterWizard.tsx
M	libs/ui-lib/lib/ocm/components/clusterWizard/constants.ts
M	libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/BasicStep.tsx
M	libs/ui-lib/lib/ocm/components/clusterWizard/disconnected/ReviewStep.tsx
M	libs/ui-lib/lib/ocm/components/clusterWizard/index.ts
M	libs/ui-lib/lib/ocm/components/clusterWizard/wizardTransition.ts
M	libs/ui-lib/lib/ocm/services/ClustersService.ts
Falling back to patching base and 3-way merge...
Auto-merging apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx
CONFLICT (content): Merge conflict in apps/assisted-disconnected-ui/src/components/ResetSingleClusterModal.tsx
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config advice.mergeConflict false"
Patch failed at 0001 add new fields to above sea level ABI

Details

In response to this:

/cherry-pick releases/v2.48

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.

openshift-merge-bot bot pushed a commit that referenced this pull request Dec 18, 2025
* Remove preview badge from bundles card (#3169)

* Migration to PF6 (#3168)

* pf6 deps and codemods updates

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

get emptystate pf6 issues building

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix chip/label changes

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix icon type

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix a prop type that codemods missed

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

update pf5 classnames

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix tokens, some cleanup

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix tests and remaining v5->v6

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

yarn lock

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

work on some cy tests

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix tests for pf6 changes

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix some tests

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

fix build error

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

* Change version of package.json to 2.0.0 for testing

* MGMT-20974: Rremove unnecessary hyphens in helper text operators

* MGMT-20968: align 'learn more about openshift releases' link in the first page of the cluster creation wizard

* MGMT-20965: Put the same min-width in the dropdowns of the first page of the cluster creation wizard

* MGMT-20966: improving the readibility of text on Troubleshooter Modal

* MGMT-20972: Cluster summary section is not collapsable

* MGMT-20964: Detached Warning Message for TMPv2 selection

* Changes in PrismCode to use the correct color

* MGMT-20969: hostname column header is truncated and unredeable

* MGMT-20967: errors beneath text boxes dissapears but icon remains in place

* fix (20975): make bundle selected operators show in count

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

* MGMT-21103: change size of Provisioning type droodown in Add hosts modal

* MGMT-21105: Networking page-machine network dropdown truncate values

* add layout with gutter around cluster progress/buttons

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

* MGMT-21147: R&C page - missing vertical spacing between kubeconfig warning and buttons

* MGMT-21151: inconsistend icon and text alignment in preflight checks in R&C page

* Add data-test-id to MenuToggle components

* Add data-testid to HelperTextItem components

* Add data-testid to BreadCrumb component

* Add data-testid to Spinner component

* Add data-testid to Wizard components

* Add data-testid to Host's network configuration group

* Add data-testid to Use bond option

* Add data-testid to Add hosts modal

* Add more data-testids for tests

* Solving problem with operators count

* Remove duplicated scrollbars

* Solving errors in Networking page

* Add data-testid to close button in Events modal

* Migration of TextContent component

* Solving problems with some old components

* Solving lint issues

* Solving problems with unit tests

* Solving format issues

* Remove unnecessary test

* Solving problems with tests

---------

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>
Co-authored-by: gitdallas <5322142+gitdallas@users.noreply.github.com>

* Use masthead (#3173)

* Button text (#3174)

* OCPBUGS-61953: Update dependency sourcing to remote (#3155)

* Bump axios from 1.6.8 to 1.12.2 (#3180)

Bumps [axios](https://github.com/axios/axios) from 1.6.8 to 1.12.2.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.6.8...v1.12.2)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Updating assisted-installer-ui-container image to be consistent with ART for 4.21 (#3179)

Reconciling with https://github.com/openshift/ocp-build-data/tree/4fbe3fab45239dc4be6f5d9d98a0bf36e0274ec9/images/agent-installer-ui.yml

Co-authored-by: AOS Automation Release Team <noreply@redhat.com>

* OCPBUGS-61787: Change NMstate operator docs link (#3182)

* MGMT-21862: Add message about vSphere limitations (#3181)

* OCPBUGS-62680: Include assisted disconnected UI image in release payload (#3188)

* Fixing errors when creating cluster from Assisted Migration (#3191)

* MGMT-21025: installing Two Node OpenShift with Arbiter (TNA) (#3170)

* Clean up ClusterDetailsFormFields

* Allow TNA arbiter in CIM

* Remove unused component (#3193)

* Add unique data-testid to dualstack subnet dropdowns (#3199)

* Tweak spacing between advanced network fields (#3198)

* Tweak host status spacing (#3200)

* Improve alert spacing (#3201)

* MGMT-21825: Textarea field should show both error and helper text (#3202)

* Improve alert spacing

* Show both error and helper text under textarea fields

* Add border to table headers (#3197)

* Remove border from rich input field (#3208)

* Bump happy-dom from 15.10.2 to 20.0.0 (#3211)

Bumps [happy-dom](https://github.com/capricorn86/happy-dom) from 15.10.2 to 20.0.0.
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v15.10.2...v20.0.0)

---
updated-dependencies:
- dependency-name: happy-dom
  dependency-version: 20.0.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Remove nested 'Content' components (#3196)

* Upgrade the PF modal component in /common and /ocm (#3213)

* Bump happy-dom from 20.0.0 to 20.0.2 (#3218)

Bumps [happy-dom](https://github.com/capricorn86/happy-dom) from 20.0.0 to 20.0.2.
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v20.0.0...v20.0.2)

---
updated-dependencies:
- dependency-name: happy-dom
  dependency-version: 20.0.2
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Consistent ISO Download behavior (#3221)

* Add 'noopener noreferrer' to ISO download button (#3222)

* Fix preflight check collapsed styling (#3215)

* Remove unnecessary custom manifest field (#3217)

* Bump vite from 5.4.20 to 5.4.21 (#3223)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.20 to 5.4.21.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v5.4.21/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 5.4.21
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* MGMT-21625: Add Dual-Stack with Primary IPv6 Support (#3190)

This PR adds support for IPv6-primary dual-stack clusters, enabling users to create dual-stack clusters where IPv6 is the primary IP stack (version-aware for OpenShift 4.12+)

* sort OCP versions in create infra (#3171)

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>

* Update types/parsing for latest lightspeed API (#3226)

* Update release job to use trusted-publishers flow (#3228)

* Update setup-node config (#3232)

* - MGMT-22057:Primary IPv6 should be Tech Preview (#3231)

- MGMT-22045: Change style of Dualstack - IPv4 / IPv6 section headers in subnet dropdown
- When we change the primary machine network IP to ipv6 we have to select the seconday machine network IP to ipv4

* MGMT-22080: Allow users to install Openshift AI as standalone operator in SNO clusters (#3234)

* Release job: Configure Yarn for npm registry (#3235)

* configure yarn before publish (#3239)

* Pass OIDC token to yarn config (#3241)

* MGMT-22047: Add apiVIP and ingressVIP for dual-stack ipv4 and ipv6 (#3246)

* Add apiVIP and ingressVIP for dual-stack ipv4 and ipv6

* Add validations to ensure that users add primary and secondary apiVips and ingressVips when using dual-stack

* Updating tests to dual-stack changes

* Prevent InfraEnv creation on ABI to support OVE Late-Binding workflow (#3244)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* MGMT-22116: Add info about apiVIPs and ingressVIPs for dual-stack in Review and Create page (#3250)

* Add info about apiVIPs and ingressVIPs for dual-stack in Review and Create page

* Fixing review comments

* MGMT-22119: Solving errors with SNO dual-stack (#3249)

* Solving errors with SNO dual-stack

* Solving errors when change between dual-stack and single-stack

* MGMT-22165: Remove what's new link until the info appear in the chatbot (#3253)

* Update logic to extract the tool response (#3255)

* MGMT-17220: dual-stack with second machine network not populates (#3256)

* MGMT-17220: dual-stack with second machine network not populates

* Improving the code

* Make the parsing compatible with new & old API (#3260)

* MGMT-22047: solving errors with dual-stack (#3263)

* MGMT-22047: solving errors with dual-stack
1. Changes in AvailableSubnetsControl.tsx so our corrective setFieldValue calls don’t validate immediately. This avoids heavy, repeated validations the moment you pick the first IPv6 option and should stop the freeze when secondary VIPs are IPv6 and empty.
Specifically, set the third arg to false for:
- Auto-select initialization of machineNetworks
- Duplicate-primary fix that updates machineNetworks.1.cidr
2. Changes in AdvancesNetworkFields.tsx:
-I found the infinite loop in AdvancedNetworkFields.tsx: when the primary machine network flips to IPv6, the effect was swapping clusterNetworks/serviceNetworks even when both entries had the same IP family, causing continuous reorders and a freeze.
-I added guards so we only swap when both entries exist and have opposite families, and the first one mismatches the primary machine family. Lint is clean.

* Solving issues in code

* MGMT-21837: in YAML view in Static Network Configuration we add the radio buttons to change the form to another view (#3268)

* late binding hosts to cluster in ABI (#3259)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* AGENT-1373: Rename feature gate to NoRegistryClusterInstall (#3267)

Update the feature gate name from NoRegistryClusterOperations to
NoRegistryClusterInstall.

* AGENT-1352: Handle cluster reset with late binding (#3270)

* late binding hosts to cluster in ABI

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* Handle cluster reset on ABI

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

---------

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* MGMT-22281: Dual stack seconday vips fields not mandatory (#3275)

* Show TechPreview badge only in Primary Machine network when user chooses ipV6 IP (#3276)

* add new fields to above sea level ABI (#3274)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* Revert "Handle cluster reset on ABI" (#3281)

This reverts commit d35b70a.

* add loki and logging operators (#3285)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* OCPBUGS-65657: Display OpenShift AI GPU validation message from API (#3279)

Fix UI to show the friendly label and detailed message from the API
instead of displaying the technical validation ID when OpenShift AI
operator is selected without GPU support.

* Bug fix: OVE Agent Installer UI: Red Hat OCP logo not displaying correctly (#3289)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* Adding TechPreview Budge for Assisted installer and agent (#3293)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* MGMT-20138 : Show 'Add hosts' tab for all cases (#3297)

* Edit OWNERS file (#3172)

* Bump js-yaml from 4.1.0 to 4.1.1 (#3264)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump zx from 7.2.3 to 8.8.5 (#3273)

Bumps [zx](https://github.com/google/zx) from 7.2.3 to 8.8.5.
- [Release notes](https://github.com/google/zx/releases)
- [Commits](google/zx@7.2.3...8.8.5)

---
updated-dependencies:
- dependency-name: zx
  dependency-version: 8.8.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump mdast-util-to-hast from 13.2.0 to 13.2.1 (#3287)

Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](syntax-tree/mdast-util-to-hast@13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* provides parameters for the GET /v2/operators/bundles route (#3306)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* Bump js-yaml from 4.1.0 to 4.1.1 (#3310)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](nodeca/js-yaml@4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix Cluster summary styling (#3216)

* remove external platforms field from below sea level UI (#3316)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* Openshift AI Bundle on SNO enables ODF and LVM which are uncompatible (#3320)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* change ABI above sea level iso size (#3322)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* MGMT-22465: Merge the contents of releases/v2.17-cim into master (#3319)

* Fix patches when there were 0 nodes in hypershift nodepool (#3177)

* Make OVN the default network type if the version is invalid (#3183)

* MGMT-20076: Support external platform in Assisted-installer Kube API (#3151)

* Add External platforms field

* Restructure files related to CIM cluster deployment wizard

* Create SelectFieldWithSearch component

* Update '@openshift-console/dynamic-plugin-sdk'

* CIM custom manifest step

* CIM custom manifests review

* Make 'Baremetal' the default external platform

* Translations for 2.16-cim (#3225)

* MGMT-21025: installing Two Node OpenShift with Arbiter (TNA)  (#3224)

* Clean up ClusterDetailsFormFields

* Allow TNA arbiter in CIM

* Set 'userManagedNetworking' as true with 'external' platform (#3245)

* Tweak TNA-related strings in CIM (#3248)

* Restrict platform options for SNO clusters (#3262)

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>

* Fix: Undefined OpenShift version producing an incorrect documentation link (#3271)

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>

* Fix bug - the option to remove host from the cluster disabled while the host is installing (#3219)

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* Implement user interface for the multiple SSH keys (#3292)

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>

* Edit OWNERS file (#3303)

Co-authored-by: jgyselov <jgyselov@redhat.com>

* Fix arbiter translation (#3304)

Co-authored-by: jgyselov <jgyselov@redhat.com>

* [releases/v2.17-cim] MGMT-22264: Add 'Labels' and 'GPU' columns to infra env host table (#3307)

* Add GPUs column to infra agent table

* Add labels column and filtering to infra agent table

---------

Co-authored-by: jgyselov <jgyselov@redhat.com>

* Prevent mass approve crash when hosts are still discovering (#3305)

Co-authored-by: jgyselov <jgyselov@redhat.com>

* Fix 'Required' translations (#3308)

Co-authored-by: jgyselov <jgyselov@redhat.com>

* Do not exclude hosts with SpecSyncError status from host selection during binding (#3309)

Co-authored-by: jgyselov <jgyselov@redhat.com>

* MGMT-22438: Handle empty labels in infra env host table (#3314)

* Handle empty labels in infra env host table

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>

* format fix

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>

---------

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>

* MGMT-19743: Icon from agent status available is confusing (#3220)

* Fix bug - the option to remove host from the cluster disabled while the host is installing

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

* icon from agent status Available is confusing

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

---------

Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Co-authored-by: Julie Gyselova <jgyselov@redhat.com>

---------

Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>
Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Co-authored-by: Lior Soffer <liorsoffer1@gmail.com>
Co-authored-by: Elay Aharoni <elayaha@gmail.com>
Co-authored-by: OpenShift Cherrypick Robot <openshift-cherrypick-robot@redhat.com>

---------

Signed-off-by: gitdallas <5322142+gitdallas@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Lior Soffer <liorsoffer1@gmail.com>
Signed-off-by: Elay Aharoni <elayaha@gmail.com>
Co-authored-by: Montse Ortega Gallart <ammont82@users.noreply.github.com>
Co-authored-by: gitdallas <5322142+gitdallas@users.noreply.github.com>
Co-authored-by: Pawan Pinjarkar <ppinjark@redhat.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: OpenShift Bot <openshift-bot@redhat.com>
Co-authored-by: AOS Automation Release Team <noreply@redhat.com>
Co-authored-by: Linoy Hadad <Linoyaslan@gmail.com>
Co-authored-by: Lior Soffer <liorsoffer1@gmail.com>
Co-authored-by: Rastislav Wagner <rawagner@redhat.com>
Co-authored-by: Elay Aharoni <elayaha@gmail.com>
Co-authored-by: Richard Su <rwsu@redhat.com>
Co-authored-by: Yoav Schwammenthal <33420608+yoavsc0302@users.noreply.github.com>
Co-authored-by: OpenShift Cherrypick Robot <openshift-cherrypick-robot@redhat.com>
rawagner added a commit to rawagner/facet-lib that referenced this pull request Dec 18, 2025
openshift-merge-bot bot pushed a commit that referenced this pull request Dec 18, 2025
* Revert "Adding TechPreview Budge for Assisted installer and agent (#3328)"

This reverts commit e61e69b.

* Revert "change ABI above sea level iso size (#3326)"

This reverts commit d189582.

* Reapply "Handle cluster reset on ABI" (#3281)

This reverts commit 84b8ef8.

* Revert "add new fields to above sea level ABI (#3274)"

This reverts commit 41a3210.
ElayAharoni added a commit to ElayAharoni/assisted-installer-ui that referenced this pull request Jan 7, 2026
openshift-merge-bot bot pushed a commit that referenced this pull request Jan 7, 2026
* Revert "add new fields to above sea level ABI (#3274)"

This reverts commit 41a3210.

* Revert "API/Ingress IP fields lack character limit (#3342)"

This reverts commit cd01017.

* Revert "Assisted Installer OVE UI shows transient blank page with Technology Preview spinner (#3341)"

This reverts commit d47ab5f.

* remove operators and change image url

Signed-off-by: Elay Aharoni <elayaha@gmail.com>

---------

Signed-off-by: Elay Aharoni <elayaha@gmail.com>
ElayAharoni added a commit to ElayAharoni/assisted-installer-ui that referenced this pull request Feb 23, 2026
openshift-merge-bot bot pushed a commit that referenced this pull request Feb 24, 2026
* Revert "UI freezes when clicking Select button without version (#3401)"

This reverts commit 52c39a9.

* Revert "OCPBUGS-75072 | OVE UI: Above-the-sea UI QE test (#3383)"

This reverts commit f61e1b1.

* Revert "OCPBUGS-74421 | OVE UI: Fix rendezvousIP field name in error message (#3376)"

This reverts commit 142fdc5.

* Revert "Add additional new fields to the above the sea UI (#3337)"

This reverts commit 2283bcd.

* Revert "add new fields to above sea level ABI (#3274)"

This reverts commit 41a3210.

* Revert "Assisted Installer OVE UI shows transient blank page with Technology Preview spinner (#3341)"

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

Labels

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. lgtm Indicates that a PR is ready to be merged. 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.

5 participants