Skip to content

OU-1144: fix: request namespaced resources for filter options#337

Open
jgbernalp wants to merge 4 commits intoopenshift:mainfrom
jgbernalp:add-namespaced-filters
Open

OU-1144: fix: request namespaced resources for filter options#337
jgbernalp wants to merge 4 commits intoopenshift:mainfrom
jgbernalp:add-namespaced-filters

Conversation

@jgbernalp
Copy link
Copy Markdown
Contributor

@jgbernalp jgbernalp commented Dec 18, 2025

Summary by CodeRabbit

  • New Features

    • Added namespace-aware filtering for pods and containers attributes
    • Introduced customizable empty state messages for improved user guidance
  • Bug Fixes

    • Fixed authorization error handling for Kubernetes pod listing operations
    • Resolved namespace filtering conflicts in concurrent requests
  • Documentation

    • Updated error and empty state messages for better clarity and localization support

@jgbernalp jgbernalp requested review from anpingli and zhuje December 18, 2025 12:37
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Dec 18, 2025
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Dec 18, 2025

@jgbernalp: This pull request references OU-1144 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.22.0" version, but no target version was set.

Details

In response to this:

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 Dec 18, 2025
@PeterYurkovich
Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Dec 18, 2025
@jgbernalp
Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Dec 22, 2025
@etmurasaki
Copy link
Copy Markdown
Contributor

/label qe-approved
comments in jira.

@openshift-ci openshift-ci Bot added the qe-approved Signifies that QE has signed off on this PR label Dec 22, 2025
@openshift-ci-robot
Copy link
Copy Markdown

openshift-ci-robot commented Dec 22, 2025

@jgbernalp: This pull request references OU-1144 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.22.0" version, but no target version was set.

Details

In response to this:

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.

@anpingli
Copy link
Copy Markdown
Contributor

/hold

@openshift-ci openshift-ci Bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Dec 23, 2025
@anpingli
Copy link
Copy Markdown
Contributor

anpingli commented Dec 23, 2025

@jgbernalp I can’t see pods whose logs are not being sent out. Is that correct? Do we want to display all pods no matter logs are sent to loki or not ?

@jgbernalp
Copy link
Copy Markdown
Contributor Author

@anpingli yes. This will be an indicator that something is wrong with the collector or the application producing logs not reaching loki. We merge the k8s api results with loki labels results, to show resources without logs or deleted resources logs.

@anpingli
Copy link
Copy Markdown
Contributor

anpingli commented Jan 5, 2026

@jgbernalp the bold lines below are not as expected.

when log in as kubeadmin,

the namespaces can be displayed base on tenant. that is correct
the pods/containers can not be displayed base on tenant. that is wrong.
there are new pods (Logs weren't sent into lokistack) in AdminConsole ->Observe->logs. That is correct.
there is not new pod(Logs weren't sent into lokistack) in DevConsole->Observe->logs. That is wrong.
there is not new pod(Logs weren't sent into lokistack) in AdminConsole ->pod->Agg Logs. That should be correct.
there is not new pod(Logs weren't sent into lokistack) in DevConsole-> pod->Agg Logs. That should be correct.

when log in as non-cluster-admin users with role below

oc adm policy add-cluster-role-to-user view ${user_name}
oc adm policy add-cluster-role-to-user cluster-logging-application-view ${user_name}
oc adm policy add-cluster-role-to-user cluster-logging-audit-view ${user_name}
oc adm policy add-cluster-role-to-user cluster-logging-infrastructure-view ${user_name}
oc adm policy add-cluster-role-to-user monitoring-rules-edit ${user_name}
oc adm policy add-cluster-role-to-user cluster-monitoring-view ${user_name}

the namespaces can be displayed base on tenant. that is correct.
the pods/containers can be displayed base on tenant. that is correct.
there are new pods (Logs weren't sent into lokistack) in AdminConsole ->Observe->logs. That is correct.
there is not new pod(Logs weren't sent into lokistack) in DevConsole->Observe->logs. That is wrong.
there is not new pod(Logs weren't sent into lokistack) in AdminConsole ->pod->Agg Logs. That should be correct.
there is not new pod(Logs weren't sent into lokistack) in DevConsole-> pod->Agg Logs. That should be correct.

Step to test:

  1. Send pods logs in namespace1 to lokistack
  2. Delete the pod in namespace1
  3. remove CLF
  4. create new pods in namespace1
  5. create new namespace2 and pods in this namespace

Expected Result:
The namespaces, pods, containers can be displayed base on tenant.
All pods ( deleted, running and pods whose logs are not in lokistack) can be displayed in Attribute-options in observe-> Log

Actual Result:
we can not see new pods in AttributeOptions in some cases.

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Feb 25, 2026
@openshift-merge-robot
Copy link
Copy Markdown
Contributor

PR needs rebase.

Details

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

Signed-off-by: Gabriel Bernal <gbernal@redhat.com>
Signed-off-by: Gabriel Bernal <gbernal@redhat.com>
Signed-off-by: Gabriel Bernal <gbernal@redhat.com>
Signed-off-by: Gabriel Bernal <gbernal@redhat.com>
@jgbernalp jgbernalp force-pushed the add-namespaced-filters branch from 2468253 to 36ad8f8 Compare April 21, 2026 18:07
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Apr 21, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 21, 2026

Walkthrough

This pull request refactors the attribute filtering system to support namespace-scoped Kubernetes resource queries and empty state handling. It updates type signatures to pass filters instead of search queries, adds namespace-aware abort handling for concurrent requests, and introduces configurable empty state messages for namespaces, pods, and containers.

Changes

Cohort / File(s) Summary
Configuration & Localization
hack/docker-compose/loki/promtail-config.yml, web/locales/en/plugin__logging-view-plugin.json
Updated Promtail label configuration for the system2 scrape job; added translation keys for empty state messages and corrected existing permission-related text and capitalization.
Type Definitions
web/src/components/filters/filter.types.ts
Updated Attribute.options callback signature to accept filters instead of searchQuery; added emptyStateMessage field supporting both static strings and filter-dependent functions.
Core Filtering Logic
web/src/attribute-filters.tsx
Introduced namespace-scoped abort handling, added getTenantNamespaceQuery and mergeSettledResults helpers, updated availableAttributes and availableDevConsoleAttributes to support namespace-based filtering and dynamic empty state messages, and enhanced pod/container attribute fetching with namespace constraints.
Filter Components
web/src/components/filters/attribute-filter.tsx, web/src/components/filters/attribute-value-data.tsx, web/src/components/filters/search-select.tsx
Implemented namespace-scoped component remounting via namespacesKey, changed hook callbacks to receive filters instead of searchQuery, and added rendering of configurable empty state messages with inline alerts when no options are available.
Hooks & Pages
web/src/hooks/useURLState.ts, web/src/pages/logs-dev-page.tsx
Extended getAttributes callback to receive translation function t and pass namespace parameter to attribute resolution.
Tests
web/cypress/e2e/integration/logs-dev-page.cy.ts
Added cy.intercept mock for unauthorized Kubernetes pods list endpoint to extend test coverage for namespace permission scenarios.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

🚥 Pre-merge checks | ✅ 12
✅ Passed checks (12 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly identifies the main change: implementing namespaced resource requests for filter options, which is supported throughout the changeset modifications to attribute filtering logic.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed Custom check for Ginkgo test names is not applicable; PR only modifies TypeScript/JavaScript files, configuration, and translations—no Go test files.
Test Structure And Quality ✅ Passed This pull request does not contain any Ginkgo test code. The repository uses standard Go testing package with testify/require for unit tests, Cypress for end-to-end tests, and Jest for component tests.
Microshift Test Compatibility ✅ Passed This PR is for openshift/logging-view-plugin, a TypeScript/React OpenShift Console plugin. All changes are confined to frontend code, tests, YAML configs, and translations. No new Ginkgo e2e tests are added, so the MicroShift compatibility check does not apply.
Single Node Openshift (Sno) Test Compatibility ✅ Passed PR modifies Cypress test files (.cy.ts), which are web UI integration tests using Cypress framework, not Ginkgo e2e tests. SNO compatibility check applies only to new Ginkgo Go-based tests for Kubernetes/OpenShift infrastructure.
Topology-Aware Scheduling Compatibility ✅ Passed No deployment manifests or Kubernetes controllers were modified. All changes are confined to web application source code, tests, and configuration files. No topology-aware scheduling constraints are being added.
Ote Binary Stdout Contract ✅ Passed This PR modifies only frontend code and YAML configuration, not Go backend process-level infrastructure, so OTE Binary Stdout Contract violations are not applicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed This pull request does not add any new Ginkgo e2e tests. The only test file modified is a Cypress test, not a Ginkgo test, so the check is not applicable.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

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

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

openshift-ci-robot commented Apr 21, 2026

@jgbernalp: This pull request references OU-1144 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 "5.0.0" version, but no target version was set.

Details

In response to this:

Summary by CodeRabbit

  • New Features

  • Added namespace-aware filtering for pods and containers attributes

  • Introduced customizable empty state messages for improved user guidance

  • Bug Fixes

  • Fixed authorization error handling for Kubernetes pod listing operations

  • Resolved namespace filtering conflicts in concurrent requests

  • Documentation

  • Updated error and empty state messages for better clarity and localization support

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

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

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

⚠️ Outside diff range comments (2)
web/src/components/filters/search-select.tsx (1)

38-48: ⚠️ Potential issue | 🟠 Major

Rules of Hooks violation: useTranslation inside a plain helper.

getOptionComponents is a regular function (not a component or custom hook), but it calls the useTranslation hook. This violates React's Rules of Hooks — react-hooks/rules-of-hooks will flag it, and the behavior only appears stable because the parent always calls this helper the same number of times per render.

Either promote the helper to a component (<OptionComponents ... />), or lift the useTranslation call into the parent SearchSelect (which already calls useTranslation on line 121) and pass the translated fallback in:

🛡️ Proposed fix
 const getOptionComponents = (
   attributeOptions: SelectOptionProps[],
   attributeError: Error | undefined,
   attributeLoading: boolean,
   selections: Array<string>,
   focusedItemIndex: number | null,
   onInputKeyDown: (event: React.KeyboardEvent) => void,
-  emptyStateMessage?: string | null,
+  emptyStateMessage?: string | null,
+  noResultsFallback: string = 'No results found',
 ) => {
-  const { t } = useTranslation('plugin__logging-view-plugin');
-
   if (attributeLoading) {
     ...
   }
   ...
-          title={emptyStateMessage || t('No results found')}
+          title={emptyStateMessage || noResultsFallback}

And in the caller (line 400-408), pass t('No results found').

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/components/filters/search-select.tsx` around lines 38 - 48,
getOptionComponents is a plain helper that incorrectly calls the React hook
useTranslation (violating Rules of Hooks); move the translation out of this
helper by removing useTranslation from getOptionComponents and instead accept a
translated empty state string (e.g., emptyStateMessage or noResultsText) as a
parameter, then update the caller (SearchSelect) which already calls
useTranslation to pass t('No results found') (or the appropriate translation)
into getOptionComponents; alternatively, convert getOptionComponents into a
proper React component (e.g., OptionComponents) that can call useTranslation
itself.
web/src/pages/logs-dev-page.tsx (1)

199-205: ⚠️ Potential issue | 🟡 Minor

Avoid mutating the filters state object in place.

filtersWithNamespace = filters ?? {} keeps the same reference as the React state filters when it's defined, so filtersWithNamespace['namespace'] = new Set(...) mutates the state object directly. This bypasses React's change-detection and can cause downstream consumers that compare by reference (e.g., memoized selectors, effect dependencies, or the SearchSelect effect reading filters) to miss the update. Clone before assigning:

🛡️ Proposed fix
-    const filtersWithNamespace = filters ?? {};
-
-    filtersWithNamespace['namespace'] = new Set(namespace ? [namespace] : []);
+    const filtersWithNamespace: Filters = {
+      ...(filters ?? {}),
+      namespace: new Set(namespace ? [namespace] : []),
+    };
     const queryToUse = updateQuery(filtersWithNamespace, tenant);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/pages/logs-dev-page.tsx` around lines 199 - 205, The code mutates the
React state object by assigning namespace onto filtersWithNamespace which reuses
the filters reference; to fix, create a shallow clone first (e.g., copy the
object returned by filters ?? {}) before setting
filtersWithNamespace['namespace'] = new Set(...), then pass that cloned object
into updateQuery/runQuery; update the block around filtersWithNamespace,
updateQuery, and runQuery (where namespace and configLoaded are used) so
downstream consumers (e.g., SearchSelect) see a new reference instead of an
in-place mutation.
🧹 Nitpick comments (2)
web/cypress/e2e/integration/logs-dev-page.cy.ts (1)

321-321: Remove empty within block.

cy.byTestID(TestIds.AttributeFilters).within(() => {}); is a no-op and looks like leftover scaffolding — either add the intended assertions (e.g., asserting the new empty-state alert renders) or drop the line.

🧹 Proposed cleanup
-    cy.byTestID(TestIds.AttributeFilters).within(() => {});
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/cypress/e2e/integration/logs-dev-page.cy.ts` at line 321, The test
contains a no-op within call: cy.byTestID(TestIds.AttributeFilters).within(() =>
{}); — either remove this empty within block or replace it with the intended
assertions (for example, check for the empty-state alert or other elements under
TestIds.AttributeFilters). Locate the usage of TestIds.AttributeFilters and the
within(...) call in logs-dev-page.cy.ts and delete the empty within closure or
populate it with the specific assertions you expect to run against the
AttributeFilters container.
web/src/hooks/useURLState.ts (1)

107-110: Memo deps don't include t.

t is now part of the getAttributes inputs but isn't in the useMemo dependency array. If the i18n language changes at runtime, t's reference changes but memoized attributes (including any translated emptyStateMessage/labels produced via t) won't be recomputed, leaving stale strings. Consider adding t (or i18n.language) to the dependency list.

-    [tenant, config, schema, ...(attributesDependencies || [])],
+    [tenant, config, schema, t, ...(attributesDependencies || [])],
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/hooks/useURLState.ts` around lines 107 - 110, In useURLState update
the React.useMemo for attributes so it re-runs when the translation function
changes: include t (or i18n.language) in the dependency array for the memoized
computation that calls getAttributes({ tenant, config, schema, t });
specifically update the dependencies for attributes (used in useURLState) to
[tenant, config, schema, t, ...(attributesDependencies || [])] or use
i18n.language instead of t to ensure translated labels like emptyStateMessage
are recomputed when language changes.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@web/src/attribute-filters.tsx`:
- Around line 874-904: The current podResource fallback calls
resourceDataSource({ resource: 'pods', ... }) with no namespace, causing a
cluster-wide /api/v1/pods request (403 for namespace-scoped roles); instead,
derive the set of allowed tenant namespaces first and build podResource as an
array of per-namespace requests by calling resourceDataSource({ resource:
'pods', namespace: <eachNamespace>, filter: ... }) for each allowed namespace
(respecting tenant via the existing filter switch), then use that array in the
Promise.allSettled call alongside lokiLabelValuesDataSource (keep symbols
podResource, resourceDataSource, namespacesQuery, tenant, podLabel,
mergeSettledResults) so no cluster-wide endpoint is requested when no namespace
filter is selected.

In `@web/src/components/filters/search-select.tsx`:
- Around line 261-263: The useEffect in SearchSelect currently calls
getAttributeOptions(filters) but only lists [tenant] as a dependency; update the
effect to include the relevant filter slice (or at minimum include filters) and
getAttributeOptions in its dependency array so options are refetched whenever
filters change (e.g., add filters and getAttributeOptions to the deps), or if
you intentionally rely on remounting via attribute-filter.tsx's namespacesKey,
add a clear comment above the effect documenting that contract to avoid
regressions; reference the useEffect in SearchSelect and the getAttributeOptions
call when making the change.

---

Outside diff comments:
In `@web/src/components/filters/search-select.tsx`:
- Around line 38-48: getOptionComponents is a plain helper that incorrectly
calls the React hook useTranslation (violating Rules of Hooks); move the
translation out of this helper by removing useTranslation from
getOptionComponents and instead accept a translated empty state string (e.g.,
emptyStateMessage or noResultsText) as a parameter, then update the caller
(SearchSelect) which already calls useTranslation to pass t('No results found')
(or the appropriate translation) into getOptionComponents; alternatively,
convert getOptionComponents into a proper React component (e.g.,
OptionComponents) that can call useTranslation itself.

In `@web/src/pages/logs-dev-page.tsx`:
- Around line 199-205: The code mutates the React state object by assigning
namespace onto filtersWithNamespace which reuses the filters reference; to fix,
create a shallow clone first (e.g., copy the object returned by filters ?? {})
before setting filtersWithNamespace['namespace'] = new Set(...), then pass that
cloned object into updateQuery/runQuery; update the block around
filtersWithNamespace, updateQuery, and runQuery (where namespace and
configLoaded are used) so downstream consumers (e.g., SearchSelect) see a new
reference instead of an in-place mutation.

---

Nitpick comments:
In `@web/cypress/e2e/integration/logs-dev-page.cy.ts`:
- Line 321: The test contains a no-op within call:
cy.byTestID(TestIds.AttributeFilters).within(() => {}); — either remove this
empty within block or replace it with the intended assertions (for example,
check for the empty-state alert or other elements under
TestIds.AttributeFilters). Locate the usage of TestIds.AttributeFilters and the
within(...) call in logs-dev-page.cy.ts and delete the empty within closure or
populate it with the specific assertions you expect to run against the
AttributeFilters container.

In `@web/src/hooks/useURLState.ts`:
- Around line 107-110: In useURLState update the React.useMemo for attributes so
it re-runs when the translation function changes: include t (or i18n.language)
in the dependency array for the memoized computation that calls getAttributes({
tenant, config, schema, t }); specifically update the dependencies for
attributes (used in useURLState) to [tenant, config, schema, t,
...(attributesDependencies || [])] or use i18n.language instead of t to ensure
translated labels like emptyStateMessage are recomputed when language changes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

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

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: dbd06a59-1a88-4272-b923-2d4810855d6c

📥 Commits

Reviewing files that changed from the base of the PR and between 754e091 and 36ad8f8.

📒 Files selected for processing (10)
  • hack/docker-compose/loki/promtail-config.yml
  • web/cypress/e2e/integration/logs-dev-page.cy.ts
  • web/locales/en/plugin__logging-view-plugin.json
  • web/src/attribute-filters.tsx
  • web/src/components/filters/attribute-filter.tsx
  • web/src/components/filters/attribute-value-data.tsx
  • web/src/components/filters/filter.types.ts
  • web/src/components/filters/search-select.tsx
  • web/src/hooks/useURLState.ts
  • web/src/pages/logs-dev-page.tsx

Comment thread web/src/attribute-filters.tsx
Comment thread web/src/components/filters/search-select.tsx
@jgbernalp
Copy link
Copy Markdown
Contributor Author

/cherry-pick release-6.2

@openshift-cherrypick-robot
Copy link
Copy Markdown

@jgbernalp: once the present PR merges, I will cherry-pick it on top of release-6.2 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-6.2

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.

@jgbernalp
Copy link
Copy Markdown
Contributor Author

/cherry-pick release-6.1

@openshift-cherrypick-robot
Copy link
Copy Markdown

@jgbernalp: once the present PR merges, I will cherry-pick it on top of release-6.1 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-6.1

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
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 21, 2026

@jgbernalp: all tests passed!

Full PR test history. Your PR dashboard.

Details

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

@jgbernalp
Copy link
Copy Markdown
Contributor Author

/cherry-pick release-coo-ocp-4.22

@openshift-cherrypick-robot
Copy link
Copy Markdown

@jgbernalp: once the present PR merges, I will cherry-pick it on top of release-coo-ocp-4.22 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-coo-ocp-4.22

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.

@jgbernalp
Copy link
Copy Markdown
Contributor Author

/cherry-pick release-coo-ocp-4.15

@openshift-cherrypick-robot
Copy link
Copy Markdown

@jgbernalp: once the present PR merges, I will cherry-pick it on top of release-coo-ocp-4.15 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-coo-ocp-4.15

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.

@jgbernalp
Copy link
Copy Markdown
Contributor Author

/cherry-pick release-coo-ocp-4.12

@openshift-cherrypick-robot
Copy link
Copy Markdown

@jgbernalp: once the present PR merges, I will cherry-pick it on top of release-coo-ocp-4.12 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-coo-ocp-4.12

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.

Comment thread web/src/attribute-filters.tsx
@zhuje
Copy link
Copy Markdown
Contributor

zhuje commented Apr 28, 2026

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Apr 28, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 28, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jgbernalp, PeterYurkovich, zhuje

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:
  • OWNERS [PeterYurkovich,jgbernalp,zhuje]

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

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. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. 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. qe-approved Signifies that QE has signed off on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants