Skip to content

fix(clusters): hide console link and action for hub cluster (ACM-38829) - #26

Closed
oksanabaza wants to merge 868 commits into
mainfrom
ACM-38829
Closed

oksanabaza wants to merge 868 commits into
mainfrom
ACM-38829

Conversation

@oksanabaza

Copy link
Copy Markdown
Owner

📝 Summary

Ticket Summary (Title):
Open cluster console action and link should not appear for hub cluster

Ticket Link:
https://redhat.atlassian.net/browse/ACM-38829

Type of Change:

  • 🐞 Bug Fix

Root Cause

The feature added in ACM-36253 (console links for managed clusters) did not exclude the hub cluster (local-cluster). Two places were affected:

  1. Name column icon (frontend/src/components/Clusters/ClustersTableHelper.tsx:101) — useClusterNameColumn only checked cluster.consoleURL, not whether the cluster was the hub.
  2. "Open cluster console" row action (frontend/src/routes/Infrastructure/Clusters/ManagedClusters/utils/cluster-actions.ts:131) — clusterSupportsAction for OpenConsole only checked !!cluster.consoleURL.

Since the hub cluster has a real consoleURL, both the link icon and the action always appeared for it.

Fix

  • Added optional localHubName?: string parameter to clusterSupportsAction. The OpenConsole case now returns false when cluster.name === localHubName.
  • ClusterActionDropdown passes its already-fetched localHubName to clusterSupportsAction.
  • useClusterNameColumn accepts an optional localHubName parameter and skips rendering the console link icon for the hub cluster. useTableColumns (which already had localHubName) passes it down.

How to test

  1. npm run setup (if not already done)
  2. npm run plugins — navigate to Infrastructure → Clusters
  3. With a hub cluster (local-cluster) visible in the list:
    • Expected: No external link icon next to the hub cluster name
    • Expected: No "Open cluster console" option in the hub cluster's actions kebab menu
  4. Verify the link icon and action still appear for non-hub managed clusters with a console URL

✅ Checklist

General

  • PR title follows the convention
  • Code builds and runs locally without errors
  • No console logs, commented-out code, or unnecessary files
  • All commits are meaningful and well-labeled
  • All new display strings are externalized for localization (English only)

If Bugfix

  • Root cause and fix summary are documented in the ticket (for future reference / errata)
  • Fix tested thoroughly and resolves the issue
  • Test(s) added to prevent regression

🗒️ Notes for Reviewers

Three minimal changes across two source files. The localHubName is already available in both call sites (ClusterActionDropdown fetches it via useLocalHubName(); useTableColumns already received it as a prop). No new state or hooks were introduced.

red-hat-konflux Bot and others added 30 commits May 7, 2026 23:01
* Update dependency @babel/preset-env to v7.29.3

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
* Avoid passing RBAC information through to button implementation

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

* isActionCol is only for the kebab menu

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

* Accept coderabbitai feedback

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: Kevin Cormier <kcormier@redhat.com>
* Update typescript-eslint monorepo to v8.59.1

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
Signed-off-by: fxiang1 <fxiang@redhat.com>
…ab (stolostron#6135)

The inequality (!=) label filter returned no results because
matchesSelectedLabels expected a !key=value format while the AcmTable
toolbar sends key!=value. Align the parser with the toolbar format.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…stolostron#6136)

When a user adds or partially edits a label expression or toleration in
the Placement wizard, the cluster count no longer resets to "0 of 0".
The hook now gates on entry completeness: if any expression is missing a
key, operator, or values (for In/NotIn), or any toleration is missing a
key or operator, the previous matched-cluster state is frozen until all
entries are fully defined.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…olostron#5956)

* ACM-30906: Add AAP automation script for rhacmstackem integration

Add install-aap.sh for automated Ansible Automation Platform
provisioning on weekly clusters. Supports idempotent installation,
operator deployment, and automated subscription management via
Red Hat offline token.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ACM-30906: Address CodeRabbit review findings

- Add prerequisite checks for curl, jq, base64
- Centralize curl TLS options with opt-in CURL_INSECURE flag
- Unify gateway pod label selectors for consistent health checks
- Filter allocation lookup by name instead of selecting first result
- Remove admin password from log output
- Use mktemp + trap for manifest file cleanup
- Use awk for pod status matching to avoid false positives
- Add AAP_MODE support for platform vs controller (legacy) deployment

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ACM-30906: Address second round of CodeRabbit findings

- Validate AAP_MODE rejects unknown values instead of silent fallback
- Guard subscription management against empty ROUTE_URL

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ACM-30906: Validate subscription attach HTTP response

Check HTTP status code when attaching subscription to allocation
instead of discarding the response.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ACM-30906: Validate manifest download HTTP response

Check HTTP status on manifest download and clean up partial file
on failure instead of proceeding with an invalid manifest.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ACM-30906: Fix install-aap.sh bugs found during live cluster testing

- Fix CSV_CHECK integer comparison failure (tr + grep -c pipeline)
- Replace CR Running=True readiness check with secret+route existence wait
- Handle async RHSM export API (follow body.href redirect)
- Switch manifest upload from multipart to JSON with base64 encoding
- Add API readiness ping loop before subscription and token operations
- Use /api/controller/v2/config/ for platform mode ping (gateway /ping/ returns 503 while Hub is unhealthy)
- Add OAuth2 token generation and storage as k8s secret
- Quote all variable expansions in oc commands (SC2086)

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>
* Update typescript-eslint monorepo to v8.59.2

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
* Update dependency @babel/preset-env to v7.29.5

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
…ain) (stolostron#6145)

* Update dependency @redhat-cloud-services/rule-components to v4.4.2

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
* Update dependency @types/node to v24.12.3

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Synchronize @types/node version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
* Update dependency babel-jest to v30.4.1

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
…#6122)

* [ACM-33391] search query kind values should be PascalCase

Signed-off-by: zlayne <zlayne@redhat.com>

* coderabbit review edits

Signed-off-by: zlayne <zlayne@redhat.com>

---------

Signed-off-by: zlayne <zlayne@redhat.com>
* Update dependency find-my-way to v9.6.0

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
* Update dependency semver to v7.8.0

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Set minimum version

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: Kevin Cormier <kcormier@redhat.com>
* Update EndBug/add-and-commit action to v10

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Update dependency node to v24

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Update actions/setup-node action to v6

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

* Update actions/checkout action to v6

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>

---------

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
…a22b (stolostron#6143)

Signed-off-by: red-hat-konflux <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Co-authored-by: red-hat-konflux[bot] <126015336+red-hat-konflux[bot]@users.noreply.github.com>
Signed-off-by: fxiang1 <fxiang@redhat.com>
…stron#6189)

* Improve responsiveness of diagram and reorganize CSS

Generated-by: Cursor (Claude Opus 4.6 High)
Signed-off-by: Kevin Cormier <kcormier@redhat.com>

* Cleanup, coderabbitai feedback, and dark theme contrast fixes

Generated-by: Cursor (Claude Opus 4.6 High)
Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: Kevin Cormier <kcormier@redhat.com>
Signed-off-by: fxiang1 <fxiang@redhat.com>
Signed-off-by: John Swanke <jswanke@redhat.com>
* translation backporting

Signed-off-by: John Swanke <jswanke@redhat.com>

* backup

Signed-off-by: John Swanke <jswanke@redhat.com>

* backup

Signed-off-by: John Swanke <jswanke@redhat.com>

* finish

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix check

Signed-off-by: John Swanke <jswanke@redhat.com>

* rabbit stew

Signed-off-by: John Swanke <jswanke@redhat.com>

* add comments

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix

Signed-off-by: John Swanke <jswanke@redhat.com>

* respond

Signed-off-by: John Swanke <jswanke@redhat.com>

---------

Signed-off-by: John Swanke <jswanke@redhat.com>
* chore(i18n): update translations

Adding latest translations from Memsource project https://cloud.memsource.com/web/project2/show/4x84AQITKKHn8db1pKRuR1

Signed-off-by: John Swanke <jswanke@redhat.com>

* fixes

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix

Signed-off-by: John Swanke <jswanke@redhat.com>

---------

Signed-off-by: John Swanke <jswanke@redhat.com>
Remove gap from scrollable container so flat-list cluster rows
render without spacing. Apply marginTop only between Matched and
Not matched sections when a limit is set.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…#6205)

Replace generic tooltip text with detailed placement scoring
explanations. Tooltips now trigger on click instead of hover and
include a link to placement matching documentation. Icon buttons
are keyboard-accessible with aria-labels.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…tolostron#6208)

When numberOfClusters is not set on the placement spec, display
"n cluster(s)" instead of "n of n clusters" in the footer link,
WizCustomWrapper, and review step alert.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
fxiang1 and others added 29 commits July 28, 2026 19:54
… UI (stolostron#6384)

* ACM-30521: Add Azure HCP cluster creation and control plane selection UI

Add Azure Hosted Control Plane (HCP) cluster creation UI, similar to
the existing AWS HCP implementation:

- Add Azure control plane type selection page (Hosted vs Standalone)
  at /multicloud/infrastructure/clusters/create/azure/control-plane
- Add Azure HCP CLI instructions page with 7-step guide at
  /multicloud/infrastructure/clusters/create/azure/cli
- Update cluster catalog to route Azure to control plane selection
- Add navigation paths, routes, placeholder doc links, and unit tests

Signed-off-by: fxiang1 <fxiang@redhat.com>

* CodeRabbit and minor fixes

Signed-off-by: fxiang1 <fxiang@redhat.com>

* Add external DNS, update existing hcp commands

Signed-off-by: fxiang1 <fxiang@redhat.com>

---------

Signed-off-by: fxiang1 <fxiang@redhat.com>
…stolostron#6532)

* [ACM-38103] Insights request should trust service CA for on prem reqs

Signed-off-by: zlayne <zlayne@redhat.com>

* fix test

Signed-off-by: zlayne <zlayne@redhat.com>

* fix test

Signed-off-by: zlayne <zlayne@redhat.com>

---------

Signed-off-by: zlayne <zlayne@redhat.com>
…te response body drain (stolostron#6537)

getAuthenticatedToken() called isAuthenticated() on every authenticated
request, which issued GET /apis to the kube API. The response body (up to
several MB on CRD-heavy clusters) was never consumed on the success path,
preventing the socket from returning to the keepAlive pool. Under sustained
load, native (external) memory accumulated proportionally to request volume.

Replace GET /apis with HEAD /api:
- HEAD responses have no message body by HTTP spec — nothing to drain
- /api (core group) is ~200 bytes of headers; it does not grow with CRDs
- Returns HTTP status so callers preserve 401/403/5xx distinctions
- No client-side caching required: OpenShift oauth-apiserver caches valid
  tokens ~30 seconds server-side; failures are not cached

isAuthenticated() now returns Promise<number> (HTTP status) instead of
Promise<Response> so callers preserve upstream status codes. authenticated.ts
updated accordingly. All route tests updated to mock HEAD /api instead of
GET /apis.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* FCN-250: backend part

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-250: frontend part

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-250: prettier fix

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-250: removed redundant guard

Signed-off-by: David Aznaurov <daznauro@redhat.com>

---------

Signed-off-by: David Aznaurov <daznauro@redhat.com>
* feat(search): add useFleetSearchSubscription and useFleetSearch hooks to multicluster-sdk

ACM-32322 — Add GraphQL subscription support to the multicluster-sdk.

- useFleetSearchSubscription: wraps the generated useSearchSubscription
  Apollo hook; returns [latestEvent, loading, error]; skips the WebSocket
  connection when input is undefined.
- useFleetSearch: one-shot query hook with optional real-time patching via
  useFleetSearchSubscription; handles INSERT/UPDATE/DELETE events; supports
  pagination through SearchInput.limit and SearchInput.offset.
- Re-export SearchInput from src/types/search.ts so callers can type their
  input without reaching into internal packages.
- Update src/api/index.ts and src/index.test.ts public-API guard.
- Regenerate README.md API docs.

Signed-off-by: zlayne <zlayne@redhat.com>

* test(search): add Playwright E2E test for ACM-32322 search API transport

Verifies:
- Search page loads and returns results via Apollo HTTP link
- Search WebSocket proxy endpoint is reachable (WS transport for subscriptions)

Signed-off-by: zlayne <zlayne@redhat.com>

* Update search-sdk

Signed-off-by: zlayne <zlayne@redhat.com>

* Update event operation handling

Signed-off-by: zlayne <zlayne@redhat.com>

* remove playwright & update readme

Signed-off-by: zlayne <zlayne@redhat.com>

* update readme

Signed-off-by: zlayne <zlayne@redhat.com>

* coderabbit updates

Signed-off-by: zlayne <zlayne@redhat.com>

* Update readme & doc generator

Signed-off-by: zlayne <zlayne@redhat.com>

* change useFleetSearchSubscription to private API

Signed-off-by: zlayne <zlayne@redhat.com>

* Update types & readme

Signed-off-by: zlayne <zlayne@redhat.com>

* Update types & readme

Signed-off-by: zlayne <zlayne@redhat.com>

* update types

Signed-off-by: zlayne <zlayne@redhat.com>

* Honor oderBy & limit requirements on new events

Signed-off-by: zlayne <zlayne@redhat.com>

* fix readme

Signed-off-by: zlayne <zlayne@redhat.com>

* provide type parameter

Signed-off-by: zlayne <zlayne@redhat.com>

* Hanlde events in context of pagination

Signed-off-by: zlayne <zlayne@redhat.com>

* update readme

Signed-off-by: zlayne <zlayne@redhat.com>

---------

Signed-off-by: zlayne <zlayne@redhat.com>
* Adding Machine types api

Signed-off-by: Nitin Dhevar <nitin.dhanabalan@gmail.com>

* Removing unused interfaces

Signed-off-by: Nitin Dhevar <nitin.dhanabalan@gmail.com>

* Updating useFetchMachineTypes to add filter logic and fix types

Signed-off-by: Nitin Dhevar <nitin.dhanabalan@gmail.com>

* Updating useFetchMachineTypes to add filter logic and fix types

Signed-off-by: Nitin Dhevar <nitin.dhanabalan@gmail.com>

---------

Signed-off-by: Nitin Dhevar <nitin.dhanabalan@gmail.com>
…tolostron#6600)

* ACM-38826 fix(backend): use GET /api with body drain instead of HEAD

HEAD /api returns 405 on clusters where the API server or proxy chain
(haproxy, oauth-proxy) rejects HEAD requests, causing every auth check
to fail. Switch to GET /api with explicit body drain — the response is
~200 bytes (core API group only), drained immediately so the socket
returns to the keepAlive pool. This preserves the memory optimization
from stolostron#6537 while restoring compatibility.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ACM-38826 fix(backend): remove unnecessary void operator per SonarCloud

response.body.resume() returns a Node.js Readable stream, not a Promise.
The void operator is not needed and is flagged by SonarCloud no-void rule.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…6585)

* Add Clear button to cluster description editor toolbar

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* Add tooltip to Clear button in description editor

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* coderabbitai suggestions

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* Fix sonar issue

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

---------

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>
…t tag (stolostron#6610)

Replace pinned SHA digest with :latest so ART/Konflux handles base image
refresh automatically, eliminating renovate SHA-update PRs.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
* Fix example Jira link

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

* Update other Jira links

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: Kevin Cormier <kcormier@redhat.com>
* Recognize either "observability-controller" or "multicluster-observability-addon" as providers of multicluster observability

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

* Add test coverage

Assisted-by: Cursor (Claude Opus 4.6 Max)
Signed-off-by: Kevin Cormier <kcormier@redhat.com>

* Update tests

Generated-by: Cursor (Claude Opus 4.6 Max)
Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: Kevin Cormier <kcormier@redhat.com>
…stron#6590)

* feat(operators): detect installed operators via OLMv1 ClusterExtension (ACM-37793)

Watch ClusterExtension resources alongside OLM Subscriptions so console
operator checks work on clusters that install operators with OLMv1.

Signed-off-by: Enrique Mingorance Cano <emingora@redhat.com>

* fix(operators): address CodeRabbit review on ClusterExtension detection

Select healthy/installed matches in operatorCheck, cover ordering and
missing-CRD 404 Status, and use import type for type-only symbols.

Signed-off-by: Enrique Mingorance Cano <emingora@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(operators): resolve Sonar nesting and empty-spread smells

Extract async operator install resolution to flatten callbacks, and
drop the useless empty-object fallback when spreading labels.

Signed-off-by: Enrique Mingorance Cano <emingora@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* style(backend): prettier-format operatorCheck test

Signed-off-by: Enrique Mingorance Cano <emingora@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* coderabbit suggestions applied

Signed-off-by: Enrique Mingorance Cano <emingora@redhat.com>

---------

Signed-off-by: Enrique Mingorance Cano <emingora@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Enrique Mingorance Cano <emingora@emingora-thinkpadp1gen3.rmtes.csb>
* restart

Signed-off-by: John Swanke <jswanke@redhat.com>

* polish

Signed-off-by: John Swanke <jswanke@redhat.com>

* polish

Signed-off-by: John Swanke <jswanke@redhat.com>

* fixes

Signed-off-by: John Swanke <jswanke@redhat.com>

* polish/fixes

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix matrix topology

Signed-off-by: John Swanke <jswanke@redhat.com>

* add deplyments analysus

Signed-off-by: John Swanke <jswanke@redhat.com>

* misc bugs

Signed-off-by: John Swanke <jswanke@redhat.com>

* poilish

Signed-off-by: John Swanke <jswanke@redhat.com>

* rabbit stew

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix tests

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix coverage

Signed-off-by: John Swanke <jswanke@redhat.com>

* add gitops check

Signed-off-by: John Swanke <jswanke@redhat.com>

* check and quality

Signed-off-by: John Swanke <jswanke@redhat.com>

* quality

Signed-off-by: John Swanke <jswanke@redhat.com>

* pretty

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix scrollbar

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix gitops check

Signed-off-by: John Swanke <jswanke@redhat.com>

* sonar issues

Signed-off-by: John Swanke <jswanke@redhat.com>

* Kevin comments

Signed-off-by: John Swanke <jswanke@redhat.com>

* Kevin comments

Signed-off-by: John Swanke <jswanke@redhat.com>

* i18n

Signed-off-by: John Swanke <jswanke@redhat.com>

* fix test

Signed-off-by: John Swanke <jswanke@redhat.com>

---------

Signed-off-by: John Swanke <jswanke@redhat.com>
* docs: add commit standards to AGENTS.md

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

* docs: wrap long lines in commit standards section

Signed-off-by: Kevin Cormier <kcormier@redhat.com>

---------

Signed-off-by: Kevin Cormier <kcormier@redhat.com>
…eletion from ACM (stolostron#6482)

* Add preserve cluster infrastructure option to destroy modal

When destroying a Hive-managed cluster, users can now check a
"Preserve cluster infrastructure" checkbox to set preserveOnDelete
on the ClusterDeployment before deletion. This tells Hive to skip
cloud resource deprovisioning, useful for backup/restore and DR
workflows. Includes warning alert about ongoing charges, dynamic
button relabel, updated modal copy for destroy and detach flows,
and unit tests for the new preserve logic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mihir Lele <mlele@redhat.com>

* Gate enablePreserveOnDelete on the Hive-only predicate

Match the guard in deleteCluster: cluster.isHive && !cluster.isHypershift
&& !cluster.isHostedCluster. Single destroy no longer exposes the option
for non-Hive destroyable clusters, and bulk destroy only shows it when at
least one selected cluster satisfies the predicate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mihir Lele <mlele@redhat.com>

* Add aria-label to preserve infrastructure help button for accessibility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Mihir Lele <mlele@redhat.com>

* Remove OpenShift-specific wording from detach confirmation messages

Signed-off-by: Mihir Lele <mihirlele@redhat.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Signed-off-by: Mihir Lele <mlele@redhat.com>
Signed-off-by: Mihir Lele <mihirlele@redhat.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…lish v1.0.0 (stolostron#6606)

* feat(sdk): update multicluster-sdk for dynamic plugin SDK 4.22 and publish v1.0.0

- Bump @openshift-console/dynamic-plugin-sdk peer dep to >=4.22.0-0 to
  properly cover 4.22 prerelease versions (e.g. 4.22.0-prerelease.3)
- Update react-i18next dependency to ~16.5.8
- Add react-router dependency at ~7.13.1
- Bump REQUIRED_PROVIDER_FLAG to MULTICLUSTER_SDK_PROVIDER_2 to signal
  useFleetSearch subscription support (ACM-32322)
- ACM continues to set MULTICLUSTER_SDK_PROVIDER_1 for backward compat
  with older SDK consumers
- Bump package version to 1.0.0 (new major)

Fixes: https://redhat.atlassian.net/browse/ACM-33547
Signed-off-by: zlayne <zlayne@redhat.com>

* update package-lock

Signed-off-by: zlayne <zlayne@redhat.com>

* update readme

Signed-off-by: zlayne <zlayne@redhat.com>

* revert package version

Signed-off-by: zlayne <zlayne@redhat.com>

* update version compatibility in readme

Signed-off-by: zlayne <zlayne@redhat.com>

---------

Signed-off-by: zlayne <zlayne@redhat.com>
* FCN-633: install wizard package and yaml

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: some fixes for queries

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: route for wizard and feature flag

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: wizard wrapper

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: some minor fixes

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: added deps to large usememo

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: fix redirect when no secret selected

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: test fixes and llm code review

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: unit tests for wrapper

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: fix to react queries and race conditions

Signed-off-by: David Aznaurov <daznauro@redhat.com>

* FCN-633: undo root package lock

Signed-off-by: David Aznaurov <daznauro@redhat.com>

---------

Signed-off-by: David Aznaurov <daznauro@redhat.com>
…n#6587)

* Add description editor Preview mode

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* Add translation

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* Add tests

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* coderabbitai review

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* fix lint issue

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* fix sonar issue

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* coderabbitai suggestions

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* Fix lint issue

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

---------

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>
stolostron#6594)

Implements RBAC-aware UX across GRC pages for namespace-scoped users who
own policies but lack access to cluster namespaces.

PolicyDetailsResults.tsx (Results tab):
- Use usePropagatedPolicies (shared hook) instead of an inline filter,
  eliminating the duplicate matchingPolicyResponses useMemo.
- Compare policy.status.status (root policy, always visible) against
  visible propagated policy copies to detect access restrictions.
  visibleClusterCount derived from policy labels intersected with
  allPropagatedClusters, not status.details rows, so a propagated policy
  with no detail entries is still counted as accessible.
- Zero results visible: 'Access permissions needed' empty state with
  LockIcon and PatternFly-aligned body copy directing users to the
  Details tab or their cluster administrator.
- Some results visible but fewer than total: inline info Alert above
  table showing accurate cluster counts.
- Cluster column: link-disabled span with specific permission Tooltip
  when cluster not in managedClustersState.

PolicyDetailsOverview.tsx (Details tab cluster violation links):
- Gate cluster name links on visiblePropagatedClusters derived from
  usePropagatedPolicies. The hook already filters to matching propagated
  copies so no secondary filter is needed before extracting cluster names.
- Uses policy-level visibility so partial-access users can still click
  clusters they do have access to.
- Inaccessible clusters render as link-disabled span with specific
  permission Tooltip.

PolicySetDetailSidebar.tsx (PolicySet cluster table):
- Replace hardcoded <a href> with React Router Link + generatePath.
- Gate cluster overview links via ClusterNameCell, a module-level
  component (avoids component-in-component SonarCloud finding).
- Replace managedClusters-based link guard with propagated policy
  visibility: visibleClusterNames is derived from propagated policy
  copies visible in Recoil state, matching the same detection pattern
  used by Results and Overview tabs. Fixes cluster links incorrectly
  disabled for namespace-scoped users who have access to the cluster
  namespace but cannot list ManagedCluster resources (cluster-scoped).
- Inaccessible clusters render as link-disabled span with specific
  permission Tooltip.

Tests: 35 passing. Updated empty state assertions to match new copy.
Updated cluster link gating tests to reflect propagated-policy-based
detection.

i18n: Updated translation.json with 3 new keys; removed 3 old keys.

Signed-off-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Randy Bruno Piverger <21374229+Randy424@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…ast on update (stolostron#6588)

* Add Edit description action to cluster table menu with success toast

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* Add translation

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

* Add tests

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>

---------

Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>
Corrects the version on main from 2.0.0 back to the intended 1.0.0 —
the prior CI-triggered major bump to 2.0.0 was committed but its npm
publish step failed, so 2.0.0 was never actually released.

Signed-off-by: zlayne <zlayne@redhat.com>
Align MulticlusterRoleAssignment Placement labels with MTV/GitOps by
using cluster.open-cluster-management.io/placement-managed-by-system=true.
Keep open-cluster-management.io/managed-by=console on MRAs only.

Signed-off-by: Enrique Mingorance Cano <emingora@emingora-thinkpadp1gen3.rmtes.csb>
Co-authored-by: Enrique Mingorance Cano <emingora@emingora-thinkpadp1gen3.rmtes.csb>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: jgyselov <jgyselov@redhat.com>
* Add more steps to Azure HCP destroy modal

Signed-off-by: fxiang1 <fxiang@redhat.com>

* Fix axe test compliance

Signed-off-by: fxiang1 <fxiang@redhat.com>

---------

Signed-off-by: fxiang1 <fxiang@redhat.com>
Signed-off-by: Oksana Bazylieva <obazylie@redhat.com>
@oksanabaza oksanabaza closed this Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.