Skip to content

MGMT-22047: solving errors with dual-stack#3263

Merged
ammont82 merged 2 commits intoopenshift-assisted:masterfrom
ammont82:MGMT-22047-dualstack-errors
Nov 17, 2025
Merged

MGMT-22047: solving errors with dual-stack#3263
ammont82 merged 2 commits intoopenshift-assisted:masterfrom
ammont82:MGMT-22047-dualstack-errors

Conversation

@ammont82
Copy link
Member

@ammont82 ammont82 commented Nov 13, 2025

  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
  1. 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
dual-stack-errors.mp4

Summary by CodeRabbit

  • Bug Fixes

    • Removed implicit automatic network reordering to prevent unexpected swaps and oscillation in mixed IPv4/IPv6 setups.
    • Prevented unnecessary field writes and immediate validation during subnet updates to preserve user input.
  • New Features

    • Added explicit post-selection hooks and controlled reordering so network ordering runs only after user actions (including stack changes).

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

openshift-ci-robot commented Nov 13, 2025

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

Details

In response to this:

  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
  1. 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

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 added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Nov 13, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 13, 2025

Walkthrough

Removes inline automatic network reordering from AdvancedNetworkFields, adds a standalone reorder module, threads post-selection and post-stack-change reordering into subnet selection and stack-type expansion, and changes subnet writes to avoid immediate validation and redundant writes.

Changes

Cohort / File(s) Summary
Remove inline reordering
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
Removed Address6 import and removed the useEffect that performed automatic reordering; setFieldValue no longer destructured from Formik. UI rendering and validation unchanged.
New reorder helper
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
Added helpers reorderNetworksForPrimary(nextPrimaryCidr, values, setFieldValue) and reorderNetworksByCurrentPrimary(values, setFieldValue) which, for dual-stack, infer primary family and swap the first two entries of clusterNetworks and serviceNetworks via guarded setFieldValue(..., false).
Invoke reorder after interactions
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx, libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
Import and call reorder helpers after subnet selection and after expanding to dual-stack. Subnet writes now use setFieldValue(..., false) and are guarded to avoid unnecessary writes (including checks around NO_SUBNET_SET and unchanged values).
Selection callback plumbing
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx
Added optional prop onAfterSelect?: (selectedValue: string) => void; onSelect now calls onAfterSelect(nextValue) after closing/updating so callers can trigger reordering or other post-selection actions.

Sequence Diagram(s)

sequenceDiagram
  participant User as User UI
  participant Sub as SubnetsDropdown
  participant ASC as AvailableSubnetsControl
  participant STC as StackTypeControl
  participant RN as reorderNetworks.*
  participant Formik as Formik (values / setFieldValue)

  Note over Sub,ASC: Post-selection hook triggers guarded updates & conditional reordering

  User->>Sub: select subnet (cidr)
  Sub->>ASC: onAfterSelect(selectedCidr)
  ASC->>Formik: setFieldValue(field, selectedCidr, false)
  ASC->>ASC: guard: only write if different / handle NO_SUBNET_SET
  ASC->>RN: reorderNetworksForPrimary(selectedCidr, values, setFieldValue)
  RN->>Formik: setFieldValue(cluster/serviceNetworks, reordered, false)
  Formik-->>ASC: values updated

  Note over STC,RN: Expanding dual-stack triggers reorder by current primary
  User->>STC: expand to dual-stack
  STC->>Formik: setFieldValue(stackType, DUAL_STACK, false)
  STC->>RN: reorderNetworksByCurrentPrimary(values, setFieldValue)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Attention points:
    • reorderNetworks.ts: verify IPv6 detection (Address6.isValid) and swap conditions to avoid accidental reorders.
    • AvailableSubnetsControl.tsx: ensure guarded writes correctly avoid redundant updates and that disabling immediate validation (false) doesn't regress UX.
    • SubnetsDropdown.tsx: confirm onAfterSelect is invoked only when appropriate and handles empty/undefined values safely.

Possibly related PRs

Suggested labels

lgtm

Suggested reviewers

  • rawagner
  • jgyselov
  • celdrake

Poem

🐰 I wait until you pick the net,
I only hop when changes are set,
I tuck the duplicate away,
And tidy order, post-click today,
A little rabbit sorts the stack—so fret not yet. 🥕

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: fixing dual-stack network configuration errors through refactored reordering logic and corrected validation calls.
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-robot
Copy link

openshift-ci-robot commented Nov 13, 2025

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

Details

In response to this:

  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
  1. 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
dual-stack-errors.mp4

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 added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Nov 13, 2025
@ammont82
Copy link
Member Author

/cherry-pick releases/v2.47

@openshift-cherrypick-robot
Copy link
Contributor

@ammont82: once the present PR merges, I will cherry-pick it on top of releases/v2.47 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick releases/v2.47

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-ci-robot
Copy link

openshift-ci-robot commented Nov 13, 2025

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

Details

In response to this:

  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
  1. 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
dual-stack-errors.mp4

Summary by CodeRabbit

  • Bug Fixes
  • Stabilized network configuration reordering logic to prevent unnecessary swaps in mixed IPv6/IPv4 scenarios.
  • Refined validation behavior during network subnet auto-selection to reduce redundant checks and preserve existing values.

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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4d59273 and ffb61a4.

📒 Files selected for processing (2)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (2 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/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.
📚 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/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx
📚 Learning: 2025-10-21T04:53:07.362Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx:71-91
Timestamp: 2025-10-21T04:53:07.362Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx, dual-stack mode requires both IPv4 and IPv6 networks (machineNetworks must have at least 2 entries: one IPv4 and one IPv6). Dual-stack with only IPv6 is not supported—dual-stack must have both IP families present.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx
🧬 Code graph analysis (1)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (1)
libs/ui-lib/lib/common/config/constants.ts (1)
  • NO_SUBNET_SET (294-294)
🔇 Additional comments (3)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (3)

29-29: LGTM: Validation flag prevents unnecessary validation during initialization.

Setting the third parameter to false defers validation during auto-selection, avoiding redundant validation passes when the form is initializing. This aligns with the PR objective to prevent heavy, repeated validations.

Based on learnings


93-101: Essential guards prevent infinite loop.

The guards at lines 93 and 99 are critical: they ensure setFieldValue is only invoked when the replacement value actually differs from the current second CIDR. Without these checks, updating machineNetworks.1.cidr would re-trigger this effect (since values.machineNetworks is a dependency), potentially causing an infinite loop if the condition remains satisfied. This directly addresses the freeze issue described in the PR objectives.


103-105: LGTM: Guard completes coverage for all branches.

The guard at line 103 follows the same pattern as the IPv4/IPv6 cases, preventing redundant updates when the secondary CIDR is already NO_SUBNET_SET. This ensures all branches in the duplicate-fix logic are protected against unnecessary setFieldValue calls.

@rawagner
Copy link
Member

Seeing you mentioning heavy, repeated validations & loops - we should actually rethink using useEffect here - since it runs on any change to IPs. The useEffect should be changed to be a callback executed only on dualstack/cidr change.

@openshift-ci openshift-ci bot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Nov 14, 2025
@ammont82
Copy link
Member Author

@rawagner I scoped the reordering logic to run only when dual-stack mode or the primary machine CIDR changes. This removes the heavy looping on any IP field change.

  • I've added a memoized primaryMachineNetworkCidr and refs to hold the latest clusterNetworks and serviceNetworks values.
  • Updated the effect to depend only on isDualStack and primaryMachineNetworkCidr, reading current arrays from refs.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 14, 2025

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

Details

In response to this:

  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
  1. 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
dual-stack-errors.mp4

Summary by CodeRabbit

  • Bug Fixes
  • Stabilized network configuration reordering to prevent unnecessary swaps and oscillation in mixed IPv6/IPv4 scenarios.
  • Reduced needless re-runs of network-related updates by stabilizing tracked values used for change detection.
  • Refined subnet auto-selection to preserve existing inputs and avoid triggering immediate validation on initial auto-fill.

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.

@ammont82 ammont82 force-pushed the MGMT-22047-dualstack-errors branch from 94320eb to cd7501d Compare November 14, 2025 09:07
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 14, 2025

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

Details

In response to this:

  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
  1. 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
dual-stack-errors.mp4

Summary by CodeRabbit

  • Bug Fixes

  • Removed implicit automatic network reordering to prevent unexpected swaps and oscillation in mixed IPv6/IPv4 setups.

  • Prevented unnecessary writes and immediate validation during subnet updates to preserve user inputs.

  • New Features

  • Added an explicit post-selection hook for subnet choices so reordering (when needed) runs only after user selection.

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

♻️ Duplicate comments (2)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (2)

15-33: Reordering drops additional cluster networks beyond the first two

const reordered = [values.clusterNetworks[1], values.clusterNetworks[0]]; rebuilds the array with only two elements, discarding any additional clusterNetworks entries the user may have added via the FieldArray. This reintroduces the data-loss issue previously seen in AdvancedNetworkFields reordering.

Use a shallow copy and swap indices 0 and 1 instead so all other entries are preserved:

-        if (
-          (isPrimaryIPv6 && !isFirstClusterIPv6 && isSecondClusterIPv6) ||
-          (!isPrimaryIPv6 && isFirstClusterIPv6 && !isSecondClusterIPv6)
-        ) {
-          const reordered = [values.clusterNetworks[1], values.clusterNetworks[0]];
-          setFieldValue('clusterNetworks', reordered, false);
-        }
+        if (
+          (isPrimaryIPv6 && !isFirstClusterIPv6 && isSecondClusterIPv6) ||
+          (!isPrimaryIPv6 && isFirstClusterIPv6 && !isSecondClusterIPv6)
+        ) {
+          const reordered = [...values.clusterNetworks];
+          [reordered[0], reordered[1]] = [reordered[1], reordered[0]];
+          setFieldValue('clusterNetworks', reordered, false);
+        }

Same applies to the service networks block below.

Based on learnings


35-53: Apply the same non‑destructive swap to service networks

For serviceNetworks the same pattern ([values.serviceNetworks[1], values.serviceNetworks[0]]) drops any entries beyond index 1. Mirror the shallow‑copy swap pattern suggested for cluster networks so additional service networks are preserved.

-        if (
-          (isPrimaryIPv6 && !isFirstServiceIPv6 && isSecondServiceIPv6) ||
-          (!isPrimaryIPv6 && isFirstServiceIPv6 && !isSecondServiceIPv6)
-        ) {
-          const reordered = [values.serviceNetworks[1], values.serviceNetworks[0]];
-          setFieldValue('serviceNetworks', reordered, false);
-        }
+        if (
+          (isPrimaryIPv6 && !isFirstServiceIPv6 && isSecondServiceIPv6) ||
+          (!isPrimaryIPv6 && isFirstServiceIPv6 && !isSecondServiceIPv6)
+        ) {
+          const reordered = [...values.serviceNetworks];
+          [reordered[0], reordered[1]] = [reordered[1], reordered[0]];
+          setFieldValue('serviceNetworks', reordered, false);
+        }

Based on learnings

🧹 Nitpick comments (2)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx (1)

161-221: Guard against using stale values when calling reorderNetworksForPrimary

In setDualStack, several setFieldValue calls update machineNetworks, clusterNetworks, and serviceNetworks before you invoke:

reorderNetworksForPrimary(values, setFieldValue);

Because Formik updates values asynchronously, the values captured by this closure is likely the pre‑update state, so reorderNetworksForPrimary can compute the primary family from the old machineNetworks[0].cidr and reorder based on that instead of the newly established primary.

Consider passing a synthesized “nextValues” object that reflects the arrays you just wrote, for example:

const nextValues = {
  ...values,
  machineNetworks: nextMachineNetworks,
  clusterNetworks: nextClusterNetworks,
  serviceNetworks: nextServiceNetworks,
};

reorderNetworksForPrimary(nextValues, setFieldValue);

(or adjust the helper to accept the primary family explicitly) so reordering always uses the post‑change state.

libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (1)

130-137: Reordering after subnet selection may read stale primary CIDR

Each SubnetsDropdown passes:

onAfterSelect={() => reorderNetworksForPrimary(values, setFieldValue)}

However, inside SubnetsDropdown the sequence is:

setValue(nextValue);
setOpen(false);
if (onAfterSelect && nextValue) {
  onAfterSelect(nextValue);
}

setValue is Formik’s state update; values in this component is from useFormikContext and won’t update until the next render, so reorderNetworksForPrimary(values, …) is likely using the previous machineNetworks.0.cidr when deciding how to reorder cluster/service networks.

To ensure reordering reflects the newly selected primary, you could either:

  • Pass a synthetic “next” values object that patches machineNetworks[0].cidr with nextValue:
onAfterSelect={(selectedCidr) =>
  reorderNetworksForPrimary(
    {
      ...values,
      machineNetworks: [
        { ...values.machineNetworks?.[0], cidr: selectedCidr },
        ...(values.machineNetworks?.slice(1) ?? []),
      ],
    },
    setFieldValue,
  )
}

or

  • Extend reorderNetworksForPrimary to accept primaryMachineNetworkCidr explicitly and use that instead of reading from values.

This keeps the helper’s behavior aligned with the actual user selection.

Also applies to: 146-149, 190-197

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 94320eb and cd7501d.

📒 Files selected for processing (5)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (6 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx:71-91
Timestamp: 2025-10-21T04:53:07.362Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx, dual-stack mode requires both IPv4 and IPv6 networks (machineNetworks must have at least 2 entries: one IPv4 and one IPv6). Dual-stack with only IPv6 is not supported—dual-stack must have both IP families present.
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.
📚 Learning: 2025-10-21T04:53:07.362Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx:71-91
Timestamp: 2025-10-21T04:53:07.362Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx, dual-stack mode requires both IPv4 and IPv6 networks (machineNetworks must have at least 2 entries: one IPv4 and one IPv6). Dual-stack with only IPv6 is not supported—dual-stack must have both IP families present.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.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/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx
📚 Learning: 2025-10-20T08:57:04.935Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterDetail/ClusterProperties.tsx:43-45
Timestamp: 2025-10-20T08:57:04.935Z
Learning: In the file `libs/ui-lib/lib/ocm/components/clusterDetail/ClusterProperties.tsx`, the `getStackTypeLabel` function returns 'Dual-stack' or 'IPv4' because the system currently only supports IPv4 single-stack clusters. IPv6-only single-stack clusters are not supported.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
🧬 Code graph analysis (4)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx (1)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1)
  • reorderNetworksForPrimary (5-54)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1)
libs/ui-lib/lib/common/types/clusters.ts (1)
  • NetworkConfigurationValues (34-53)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (2)
libs/ui-lib/lib/common/types/clusters.ts (1)
  • NetworkConfigurationValues (34-53)
libs/ui-lib/lib/common/config/constants.ts (1)
  • DUAL_STACK (300-300)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (2)
libs/ui-lib/lib/common/config/constants.ts (1)
  • NO_SUBNET_SET (294-294)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1)
  • reorderNetworksForPrimary (5-54)
⏰ 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: circular-deps
  • GitHub Check: translation-files
  • GitHub Check: unit-tests
  • GitHub Check: lint
  • GitHub Check: format
🔇 Additional comments (3)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1)

35-35: Formik context usage looks good after side‑effect removal

Limiting useFormikContext to { values, errors } matches the new design where reordering is centralized elsewhere and keeps this component purely presentational.

libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx (1)

21-26: onAfterSelect wiring is clean and keeps dropdown generic

The new onAfterSelect prop is threaded correctly and invoked after setValue and close, giving parents a simple hook for post‑selection logic (like reordering) without coupling this component to networking concerns. The nextValue guard avoids firing on undefined events.

Looks good as a reusable extension point.

Also applies to: 51-57, 146-153

libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (1)

22-33: Auto‑select and duplicate‑primary fixes look correct and avoid revalidation loops

  • Auto‑selecting a single available subnet now uses setFieldValue(..., false), which matches the intent of not validating immediately on initial auto‑fill.
  • The duplicate‑primary logic for machineNetworks.1.cidr now:
    • Only writes when replacement !== second (or second !== NO_SUBNET_SET), and
    • Uses false for the validation flag.

This keeps primary/secondary CIDRs de‑duplicated without causing a tight useEffect loop or unnecessary validations.

Also applies to: 90-107

@ammont82 ammont82 force-pushed the MGMT-22047-dualstack-errors branch from cd7501d to 2d46701 Compare November 14, 2025 09:19
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 14, 2025

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

Details

In response to this:

  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
  1. 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
dual-stack-errors.mp4

Summary by CodeRabbit

  • Bug Fixes

  • Removed implicit automatic network reordering to prevent unexpected swaps and oscillation in mixed IPv4/IPv6 setups.

  • Prevented unnecessary field writes and immediate validation during subnet updates to preserve user input.

  • New Features

  • Added an explicit post-selection hook for subnet and stack selections so reordering runs only after user actions.

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 (1)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1)

29-30: Data loss regression: preserve all network entries when reordering.

The current code rebuilds the array with only the first two elements, silently dropping any additional cluster network entries beyond index 1. Since these fields use FieldArray and users can add more than two entries, this creates a data-loss regression.

Apply this diff to swap in place while preserving all entries:

-          const reordered = [values.clusterNetworks[1], values.clusterNetworks[0]];
-          setFieldValue('clusterNetworks', reordered, false);
+          const reordered = [...values.clusterNetworks];
+          [reordered[0], reordered[1]] = [reordered[1], reordered[0]];
+          setFieldValue('clusterNetworks', reordered, false);

Also applies to lines 49-50 for service networks.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cd7501d and 2d46701.

📒 Files selected for processing (5)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (6 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx:71-91
Timestamp: 2025-10-21T04:53:07.362Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx, dual-stack mode requires both IPv4 and IPv6 networks (machineNetworks must have at least 2 entries: one IPv4 and one IPv6). Dual-stack with only IPv6 is not supported—dual-stack must have both IP families present.
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.
📚 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/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx
📚 Learning: 2025-10-21T04:53:07.362Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx:71-91
Timestamp: 2025-10-21T04:53:07.362Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx, dual-stack mode requires both IPv4 and IPv6 networks (machineNetworks must have at least 2 entries: one IPv4 and one IPv6). Dual-stack with only IPv6 is not supported—dual-stack must have both IP families present.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx
📚 Learning: 2025-10-20T08:57:04.935Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterDetail/ClusterProperties.tsx:43-45
Timestamp: 2025-10-20T08:57:04.935Z
Learning: In the file `libs/ui-lib/lib/ocm/components/clusterDetail/ClusterProperties.tsx`, the `getStackTypeLabel` function returns 'Dual-stack' or 'IPv4' because the system currently only supports IPv4 single-stack clusters. IPv6-only single-stack clusters are not supported.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
🧬 Code graph analysis (4)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx (1)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1)
  • reorderNetworksForPrimary (5-55)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (3)
libs/ui-lib/lib/common/types/clusters.ts (1)
  • NetworkConfigurationValues (34-53)
libs/ui-lib/lib/common/components/clusterConfiguration/utils.ts (1)
  • isDualStack (204-212)
libs/ui-lib/lib/common/config/constants.ts (1)
  • DUAL_STACK (300-300)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1)
libs/ui-lib/lib/common/types/clusters.ts (1)
  • NetworkConfigurationValues (34-53)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (2)
libs/ui-lib/lib/common/config/constants.ts (1)
  • NO_SUBNET_SET (294-294)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1)
  • reorderNetworksForPrimary (5-55)
🔇 Additional comments (5)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1)

35-35: LGTM! Removal of automatic reordering prevents infinite loops.

Removing the automatic network reordering side-effects from this component successfully addresses the infinite loop issue described in the PR objectives. The reordering logic is now centralized in reorderNetworksForPrimary and triggered explicitly from user interactions rather than reactive effects.

libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx (1)

219-220: LGTM! Post-expansion reordering ensures correct network order.

Invoking reorderNetworksForPrimary after dual-stack expansion ensures that cluster and service networks are ordered consistently with the primary machine network's IP family. This explicit, event-driven approach prevents the reactive loop issues.

libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (3)

30-30: LGTM! Disabling immediate validation prevents performance issues.

Passing false as the third argument to setFieldValue during auto-selection initialization avoids triggering heavy validation runs, which addresses the freeze issues mentioned in the PR objectives.


94-106: LGTM! Guards prevent unnecessary writes and validations.

The conditional guards ensure setFieldValue is only called when the replacement value actually differs from the current value, preventing unnecessary writes and validation triggers. This optimization helps avoid the freezes described in the PR objectives.


134-136: LGTM! Explicit post-selection reordering replaces reactive approach.

The onAfterSelect handlers trigger reorderNetworksForPrimary explicitly after user selections, implementing the event-driven approach that replaces the problematic reactive useEffect pattern.

@ammont82 ammont82 force-pushed the MGMT-22047-dualstack-errors branch from 2d46701 to 493776e Compare November 14, 2025 09:56
@openshift-ci-robot
Copy link

openshift-ci-robot commented Nov 14, 2025

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

Details

In response to this:

  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
  1. 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
dual-stack-errors.mp4

Summary by CodeRabbit

  • Bug Fixes

  • Removed implicit automatic network reordering to prevent unexpected swaps and oscillation in mixed IPv4/IPv6 setups.

  • Prevented unnecessary field writes and immediate validation during subnet updates to preserve user input.

  • New Features

  • Added explicit post-selection hooks and controlled reordering so network ordering runs only after user actions (including stack changes).

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

♻️ Duplicate comments (1)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1)

16-53: Extract duplicate swapping logic into a generic helper.

The swapping logic for cluster networks and service networks is identical, as previously noted. Please refactor this into a generic function to reduce duplication and improve maintainability.

Based on learnings

🧹 Nitpick comments (1)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1)

56-63: Remove redundant check.

Line 61 checks if nextPrimaryCidr exists, but reorderByPrimaryCidr already performs this check on line 11. The redundant check can be safely removed.

Apply this diff:

 export const reorderNetworksForPrimary = (
   nextPrimaryCidr: string,
   values: NetworkConfigurationValues,
   setFieldValue: FormikHelpers<NetworkConfigurationValues>['setFieldValue'],
 ) => {
-  if (!nextPrimaryCidr) return;
   reorderByPrimaryCidr(nextPrimaryCidr, values, setFieldValue);
 };
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2d46701 and 493776e.

📒 Files selected for processing (5)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx (1 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx (5 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx (2 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx (3 hunks)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AvailableSubnetsControl.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/SubnetsDropdown.tsx
  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/AdvancedNetworkFields.tsx
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx:71-91
Timestamp: 2025-10-21T04:53:07.362Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx, dual-stack mode requires both IPv4 and IPv6 networks (machineNetworks must have at least 2 entries: one IPv4 and one IPv6). Dual-stack with only IPv6 is not supported—dual-stack must have both IP families present.
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.
📚 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/clusterConfiguration/networkConfiguration/reorderNetworks.ts
📚 Learning: 2025-10-21T04:53:07.362Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx:71-91
Timestamp: 2025-10-21T04:53:07.362Z
Learning: In libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/StackTypeControl.tsx, dual-stack mode requires both IPv4 and IPv6 networks (machineNetworks must have at least 2 entries: one IPv4 and one IPv6). Dual-stack with only IPv6 is not supported—dual-stack must have both IP families present.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
📚 Learning: 2025-10-20T08:57:04.935Z
Learnt from: linoyaslan
Repo: openshift-assisted/assisted-installer-ui PR: 3190
File: libs/ui-lib/lib/ocm/components/clusterDetail/ClusterProperties.tsx:43-45
Timestamp: 2025-10-20T08:57:04.935Z
Learning: In the file `libs/ui-lib/lib/ocm/components/clusterDetail/ClusterProperties.tsx`, the `getStackTypeLabel` function returns 'Dual-stack' or 'IPv4' because the system currently only supports IPv4 single-stack clusters. IPv6-only single-stack clusters are not supported.

Applied to files:

  • libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts
🧬 Code graph analysis (1)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (3)
libs/ui-lib/lib/common/types/clusters.ts (1)
  • NetworkConfigurationValues (34-53)
libs/ui-lib/lib/common/components/clusterConfiguration/utils.ts (1)
  • isDualStack (204-212)
libs/ui-lib/lib/common/config/constants.ts (1)
  • DUAL_STACK (300-300)
🔇 Additional comments (3)
libs/ui-lib/lib/ocm/components/clusterConfiguration/networkConfiguration/reorderNetworks.ts (3)

1-3: Imports look good.

All imports are appropriate and necessary for the network reordering logic.


65-72: LGTM!

The function correctly derives the primary CIDR from the first machine network and safely handles missing values with optional chaining and an early return.


28-28: The review comment is incorrect and does not apply to the codebase design.

The arrays are constrained by the validation schema to a maximum of 2 entries in dual-stack mode. The dualStackValidationSchema explicitly enforces .max(2, 'Maximum number of ${field} subnets in dual stack is 2.') for all network arrays. The reorderByPrimaryCidr function only executes when stackType === DUAL_STACK, and the guards verify length >= 2 before swapping. No code path can add more than 2 entries to these arrays, so there is no risk of silent data loss. The current implementation is correct.

Likely an incorrect or invalid review comment.

@ammont82 ammont82 requested a review from rawagner November 17, 2025 07:31
@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 17, 2025
@openshift-ci
Copy link

openshift-ci bot commented Nov 17, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ammont82, celdrake

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

@ammont82 ammont82 dismissed rawagner’s stale review November 17, 2025 09:21

I need to approve the PR

@ammont82 ammont82 merged commit a58b5be into openshift-assisted:master Nov 17, 2025
11 checks passed
@openshift-cherrypick-robot
Copy link
Contributor

@ammont82: new pull request created: #3265

Details

In response to this:

/cherry-pick releases/v2.47

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.

import type { FormikHelpers } from 'formik';

const reorderByPrimaryCidr = (
primaryCidr: string,
Copy link
Member

Choose a reason for hiding this comment

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

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>
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