Skip to content

Conversation

@IshwarKanse
Copy link
Member

@IshwarKanse IshwarKanse commented Dec 16, 2025

Add tracing-uiplugin Component for Distributed Tracing UI plugin

Summary

This PR adds a new component tracing-uiplugin to map distributed tracing UI plugin E2E tests to the Component Readiness dashboard. Integrates with the COO layered product dashboard (Sippy PR #3109).

Changes Made

1. New Component: tracing-uiplugin

Location: pkg/components/clusterobservabilityoperator/tracinguiplugin/

Component Configuration:

Name:                 "tracing-uiplugin"
Operators:            []string{"cluster-observability-operator"}
DefaultJiraProject:   "COO"
DefaultJiraComponent: "tracing-uiplugin"
Matchers:             Suite: "tracing-uiplugin"

2. Component Registration

File: pkg/registry/registry.go

  • Import: tracinguiplugin "github.com/openshift-eng/ci-test-mapping/pkg/components/clusterobservabilityoperator/tracinguiplugin"
  • Registered component: r.Register("tracing-uiplugin", &tracinguiplugin.ClusterObservabilityOperatorComponent)

Note: Component organized in subdirectory structure to allow other COO teams (e.g., logging-uiplugin) to easily add their components in parallel directories.

3. Suite Configuration

File: config/openshift-eng.yaml

  • Added tracing-uiplugin to includeSuites

Test Suite Integration

Test Repository

Repository: openshift/distributed-tracing-console-plugin
Test File: tests/e2e/dt-plugin-tests.cy.ts

Test Suite Name

describe('tracing-uiplugin', () => {
  // 6 E2E tests
});

Test Capabilities

All 6 tests include [Capability:XXX] tags that are automatically extracted:

Test 1: Empty State

it('[Capability:UIPlugin][Capability:EmptyState] Test Distributed Tracing UI plugin page without any Tempo instances', ...)

Capabilities: UIPlugin, EmptyState

Test 2: Trace Visualization & RBAC

it('[Capability:UIPlugin][Capability:TraceVisualization][Capability:SpanLinks][Capability:RBAC] Test Distributed Tracing UI plugin with Tempo instances and verify traces, span links using user having cluster-admin role', ...)

Capabilities: UIPlugin, TraceVisualization, SpanLinks, RBAC

Test 3: Trace Limits

it('[Capability:UIPlugin][Capability:TraceLimits] Test trace limit functionality', ...)

Capabilities: UIPlugin, TraceLimits

Test 4: Cutoff Box & Time Range

it('[Capability:UIPlugin][Capability:TraceVisualization][Capability:TimeRange] Test Distributed Traces Cutoffbox functionality', ...)

Capabilities: UIPlugin, TraceVisualization, TimeRange

Test 5: AI Integration

it('[Capability:UIPlugin][Capability:AIIntegration][Capability:Lightspeed] Test AI Traces summary with OpenShift Lightspeed', ...)

Capabilities: UIPlugin, AIIntegration, Lightspeed

Test 6: Operator Lifecycle

it('[Capability:OperatorLifecycle][Capability:Installation] Test "Install Tempo operator" if operator is not installed', ...)

Capabilities: OperatorLifecycle, Installation

Capability Summary

Total Tests: 6
Total Capabilities: 11

Capability Test Count
UIPlugin 5
TraceVisualization 2
EmptyState 1
SpanLinks 1
RBAC 1
TraceLimits 1
TimeRange 1
AIIntegration 1
Lightspeed 1
OperatorLifecycle 1
Installation 1

Testing & Verification

Build Verification

$ go build .
# ✅ Successful compilation

Mapping Verification

$ make mapping
# ✅ matched=39248 unmatched=7741
# ✅ verification complete

No Tests Moved to Unknown

$ ./ci-test-mapping map-verify
# ✅ verification complete in 3.188866625s

Files Changed

M  config/openshift-eng.yaml                                                    (+1 suite)
A  pkg/components/clusterobservabilityoperator/tracinguiplugin/component.go     (new component)
A  pkg/components/clusterobservabilityoperator/tracinguiplugin/capabilities.go  (new)
A  pkg/components/clusterobservabilityoperator/tracinguiplugin/OWNERS           (new)
M  pkg/registry/registry.go                                                     (import + registration)

Team Ownership

OWNERS file added with the following reviewer/approver:

References

@openshift-ci openshift-ci bot requested review from deepsm007 and xueqzhan December 16, 2025 15:49
@openshift-ci openshift-ci bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Dec 16, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Dec 16, 2025

Hi @IshwarKanse. Thanks for your PR.

I'm waiting for a github.com member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

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.

@openshift-ci openshift-ci bot added the do-not-merge/invalid-owners-file Indicates that a PR should not merge because it has an invalid OWNERS file in it. label Dec 16, 2025
@IshwarKanse
Copy link
Member Author

Requested to be added to the Github org.

@IshwarKanse
Copy link
Member Author

/verify-owners

@openshift-ci openshift-ci bot removed the do-not-merge/invalid-owners-file Indicates that a PR should not merge because it has an invalid OWNERS file in it. label Dec 16, 2025
@IshwarKanse
Copy link
Member Author

/ok-to-test

@openshift-ci openshift-ci bot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Dec 17, 2025
@IshwarKanse IshwarKanse force-pushed the coo branch 2 times, most recently from 88e68fd to a8c8d04 Compare December 17, 2025 11:03
@IshwarKanse
Copy link
Member Author

/lgtm

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Dec 19, 2025

@IshwarKanse: you cannot LGTM your own PR.

Details

In response to this:

/lgtm

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
Contributor

openshift-ci bot commented Dec 19, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: IshwarKanse
Once this PR has been reviewed and has the lgtm label, please assign neisw for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@IshwarKanse
Copy link
Member Author

IshwarKanse commented Dec 19, 2025

@neisw Can you help to review and approve this PR. I have updated our tests to add the matching testsuite name and capability tags but the jobs haven't run after the change so we don't have the data in BigQuery yet, with the updated test changes. But I have simulated locally and the mapping is working well. The jobs will now be run after the year end recharge.

Once this component data shows correctly on the dashboard, I will reach out to our Cluster Observability Operator component teams to add their components similarly.

cat data/openshift-gce-devel/ci_analysis_us/test-output-mapping.json
[
  {
    "APIVersion": "v1",
    "Kind": "TestOwnership",
    "ID": "tracing-uiplugin:c803cb25ab8bcbe7588bf1fc2f056340",
    "Name": "tracing-uiplugin [Capability:UIPlugin][Capability:EmptyState] Test Distributed Tracing UI plugin page without any Tempo instances",
    "Suite": "tracing-uiplugin",
    "Product": "OpenShift",
    "Priority": 0,
    "StaffApprovedObsolete": false,
    "Component": "tracing-uiplugin",
    "Capabilities": [
      "EmptyState",
      "UIPlugin"
    ],
    "JIRAComponent": "tracing-uiplugin",
    "JIRAComponentID": null
  },
  {
    "APIVersion": "v1",
    "Kind": "TestOwnership",
    "ID": "tracing-uiplugin:36356fd64c958476cf231fc785c92ba9",
    "Name": "tracing-uiplugin [Capability:UIPlugin][Capability:TraceVisualization][Capability:SpanLinks][Capability:RBAC] Test Distributed Tracing UI plugin with Tempo instances and verify traces, span links using user having cluster-admin role",
    "Suite": "tracing-uiplugin",
    "Product": "OpenShift",
    "Priority": 0,
    "StaffApprovedObsolete": false,
    "Component": "tracing-uiplugin",
    "Capabilities": [
      "RBAC",
      "SpanLinks",
      "TraceVisualization",
      "UIPlugin"
    ],
    "JIRAComponent": "tracing-uiplugin",
    "JIRAComponentID": null
  },
  {
    "APIVersion": "v1",
    "Kind": "TestOwnership",
    "ID": "tracing-uiplugin:540bfada9facc838186bed9d4fd09244",
    "Name": "tracing-uiplugin [Capability:UIPlugin][Capability:TraceLimits] Test trace limit functionality",
    "Suite": "tracing-uiplugin",
    "Product": "OpenShift",
    "Priority": 0,
    "StaffApprovedObsolete": false,
    "Component": "tracing-uiplugin",
    "Capabilities": [
      "TraceLimits",
      "UIPlugin"
    ],
    "JIRAComponent": "tracing-uiplugin",
    "JIRAComponentID": null
  },
  {
    "APIVersion": "v1",
    "Kind": "TestOwnership",
    "ID": "tracing-uiplugin:fae71fcb383b53248072cbe96bda2ac5",
    "Name": "tracing-uiplugin [Capability:UIPlugin][Capability:TraceVisualization][Capability:TimeRange] Test Distributed Traces Cutoffbox functionality",
    "Suite": "tracing-uiplugin",
    "Product": "OpenShift",
    "Priority": 0,
    "StaffApprovedObsolete": false,
    "Component": "tracing-uiplugin",
    "Capabilities": [
      "TimeRange",
      "TraceVisualization",
      "UIPlugin"
    ],
    "JIRAComponent": "tracing-uiplugin",
    "JIRAComponentID": null
  },
  {
    "APIVersion": "v1",
    "Kind": "TestOwnership",
    "ID": "tracing-uiplugin:8537fce662a5511ab2341568f8e236fe",
    "Name": "tracing-uiplugin [Capability:OperatorLifecycle][Capability:Installation] Test \"Install Tempo operator\" if operator is not installed",
    "Suite": "tracing-uiplugin",
    "Product": "OpenShift",
    "Priority": 0,
    "StaffApprovedObsolete": false,
    "Component": "tracing-uiplugin",
    "Capabilities": [
      "Installation",
      "OperatorLifecycle"
    ],
    "JIRAComponent": "tracing-uiplugin",
    "JIRAComponentID": null
  }
]

% cat data/openshift-gce-devel/ci_analysis_us/test-tracing-junit.json 
[
  {
    "name": "tracing-uiplugin [Capability:UIPlugin][Capability:EmptyState] Test Distributed Tracing UI plugin page without any Tempo instances",
    "suite": "tracing-uiplugin",
    "status": 12
  },
  {
    "name": "tracing-uiplugin [Capability:UIPlugin][Capability:TraceVisualization][Capability:SpanLinks][Capability:RBAC] Test Distributed Tracing UI plugin with Tempo instances and verify traces, span links using user having cluster-admin role",
    "suite": "tracing-uiplugin",
    "status": 12
  },
  {
    "name": "tracing-uiplugin [Capability:UIPlugin][Capability:TraceLimits] Test trace limit functionality",
    "suite": "tracing-uiplugin",
    "status": 12
  },
  {
    "name": "tracing-uiplugin [Capability:UIPlugin][Capability:TraceVisualization][Capability:TimeRange] Test Distributed Traces Cutoffbox functionality",
    "suite": "tracing-uiplugin",
    "status": 12
  },
  {
    "name": "tracing-uiplugin [Capability:OperatorLifecycle][Capability:Installation] Test \"Install Tempo operator\" if operator is not installed",
    "suite": "tracing-uiplugin",
    "status": 13
  }
]

Component: &config.Component{
Name: "tracing-uiplugin",
Operators: []string{"cluster-observability-operator"},
DefaultJiraProject: "COO",
Copy link
Contributor

Choose a reason for hiding this comment

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

We probably need to review what you need here. I don't think there is full support for Jira projects other than OCPBUGS currently for CR

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks for the feedback @neisw! I did some investigation using Claude Code of both the ci-test-mapping and Sippy codebases to understand the limitations.

What I Found

I found only one limitation for non-OCPBUGS Jira projects:

Triage Auto-Commenting (sippy/pkg/api/componentreadiness/triage.go:140-141)

if !strings.HasPrefix(jiraCard, "OCPBUGS") {
    logger.Warnf("URL (%s) is not an OCPBUGS card, cannot comment", triage.URL)
    return
}
  • When users triage test failures and link them to Jira issues, Sippy won't automatically add comments to COO Jira cards
  • This is a convenience feature.

What Works

I verified that all core Component Readiness features properly support non-OCPBUGS projects:

Test Data Storage - sippy/pkg/apis/sippy/v1/types.go:95-96

// JiraProject specifies the JIRA project that this variant belongs to.
JiraProject string `bigquery:"jira_project"`

Variant Mappings - sippy/pkg/componentreadiness/jiraautomator/jiraautomator.go:636

result[Variant{...}] = JiraComponent{Project: r.JiraProject, Component: r.JiraComponent}

Jira Automation - Not applicable to COO

  • COO dashboards have regression_tracking: enabled: false in config/views.yaml
  • While jiraautomator.go:546 defaults to OCPBUGS for row-based components, this code path isn't used for COO since automation is disabled

Dashboard Configuration - sippy/config/views.yaml

  • COO dashboards filter by LayeredProduct: lp-interop-coo, not by Jira project
  • No Jira project restrictions in dashboard definitions

Queries and Filtering - sippy/pkg/api/componentreadiness/query/querygenerators.go

  • No hardcoded OCPBUGS requirements in query generation
  • Only reference to OCPBUGS is a comment about a bug (line 40)

Frontend Bug Filing - sippy-ng/src/bugs/FileBug.js

  • Takes jiraComponentID and jiraComponentName as generic props
  • No hardcoded project restrictions

The system is properly architected to support multiple Jira projects - the data model, queries, and dashboards all handle it correctly.

My Plan

We can keep the COO project since:

  1. It aligns with our team's Jira workflow
  2. All core functionality works (statistics, dashboards, data storage)
  3. We only lose one convenience feature (triage auto-commenting)
  4. Jira automation doesn't apply to COO (regression tracking is disabled)
  5. The enhancement to support other projects should be straightforward (removing one hardcoded check). I can work on it in another PR.

Does this work, or are there other concerns we should address?

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

Labels

ok-to-test Indicates a non-member PR verified by an org member that is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants