Skip to content

NETOBSERV-2657: Allow external/contributed recording rules in Network Health#2500

Open
leandroberetta wants to merge 2 commits intonetobserv:mainfrom
leandroberetta:contrib-recording-rules
Open

NETOBSERV-2657: Allow external/contributed recording rules in Network Health#2500
leandroberetta wants to merge 2 commits intonetobserv:mainfrom
leandroberetta:contrib-recording-rules

Conversation

@leandroberetta
Copy link
Contributor

@leandroberetta leandroberetta commented Feb 26, 2026

Description

PrometheusRule CRD won't allow to have annotations in rules of type "record", for this reason, today is not possible to for third party users to bring new recording rules, just alerts. This PR changes that, allowing users to bring their own recording rules using the following convention:

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: my-recording-rules
  namespace: netobserv
  annotations:
    netobserv.io/recording-annotations: |
      {
        "my_metric_per_namespace": {
          "summary": "Custom metric is {{ $value }} in the namespace {{ $labels.namespace }}",
          "description": "Custom metric is {{ $value }} in the namespace {{ $labels.namespace }}",
          "netobserv_io_network_health": "{\"unit\":\"%\",\"upperBound\":\"100\",\"namespaceLabels\":[\"namespace\"],\"recordingThresholds\":{\"info\":\"10\",\"warning\":\"25\",\"critical\":\"50\"}}"
        }
      }
spec:
  groups:
    - name: MyRecordingRules
      interval: 30s
      rules:
        - record: my_metric_per_namespace
          expr: (count by (namespace) (kube_pod_info) * 0 + 20)
          labels:
            netobserv: "true"

Dependencies

netobserv/netobserv-web-console#1311

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • Does this PR require product documentation?
    • If so, make sure the JIRA epic is labeled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • Does this PR require a product release notes entry?
    • If so, fill in "Release Note Text" in the JIRA.
  • Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
    • If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
    • Standard QE validation, with pre-merge tests unless stated otherwise.
    • Regression tests only (e.g. refactoring with no user-facing change).
    • No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

@leandroberetta leandroberetta requested a review from jotak February 26, 2026 21:31
@leandroberetta leandroberetta self-assigned this Feb 26, 2026
@leandroberetta leandroberetta changed the title Allow non-builtin (external/contributed) recording rules in Network Health Allow external/contributed recording rules in Network Health Feb 26, 2026
@codecov
Copy link

codecov bot commented Feb 27, 2026

Codecov Report

❌ Patch coverage is 59.37500% with 13 lines in your changes missing coverage. Please review.
✅ Project coverage is 72.60%. Comparing base (e3056de) to head (2afaeae).

Files with missing lines Patch % Lines
.../controller/consoleplugin/consoleplugin_objects.go 48.00% 11 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2500      +/-   ##
==========================================
- Coverage   72.71%   72.60%   -0.12%     
==========================================
  Files         104      104              
  Lines       10615    10645      +30     
==========================================
+ Hits         7719     7729      +10     
- Misses       2425     2440      +15     
- Partials      471      476       +5     
Flag Coverage Δ
unittests 72.60% <59.37%> (-0.12%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ntroller/consoleplugin/consoleplugin_reconciler.go 71.89% <100.00%> (-1.14%) ⬇️
internal/controller/flowcollector_controller.go 67.44% <100.00%> (+2.92%) ⬆️
.../controller/consoleplugin/consoleplugin_objects.go 84.52% <48.00%> (-2.21%) ⬇️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@openshift-ci
Copy link

openshift-ci bot commented Mar 6, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign jotak 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

@leandroberetta leandroberetta requested a review from jotak March 6, 2026 20:08
@openshift-ci
Copy link

openshift-ci bot commented Mar 6, 2026

@leandroberetta: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-operator f9dbbce link false /test e2e-operator

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.

Copy link
Member

@jotak jotak left a comment

Choose a reason for hiding this comment

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

thanks!
/lgtm

@openshift-ci openshift-ci bot added the lgtm label Mar 9, 2026
@leandroberetta leandroberetta changed the title Allow external/contributed recording rules in Network Health NETOBSERV-2657: Allow external/contributed recording rules in Network Health Mar 9, 2026
@openshift-ci-robot
Copy link
Collaborator

openshift-ci-robot commented Mar 9, 2026

@leandroberetta: This pull request references NETOBSERV-2657 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Description

PrometheusRule CRD won't allow to have annotations in rules of type "record", for this reason, today is not possible to for third party users to bring new recording rules, just alerts. This PR changes that, allowing users to bring their own recording rules using the following convention:

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
 name: my-recording-rules
 namespace: netobserv
 annotations:
   netobserv.io/recording-annotations: |
     {
       "my_metric_per_namespace": {
         "summary": "Custom metric is {{ $value }} in the namespace {{ $labels.namespace }}",
         "description": "Custom metric is {{ $value }} in the namespace {{ $labels.namespace }}",
         "netobserv_io_network_health": "{\"unit\":\"%\",\"upperBound\":\"100\",\"namespaceLabels\":[\"namespace\"],\"recordingThresholds\":{\"info\":\"10\",\"warning\":\"25\",\"critical\":\"50\"}}"
       }
     }
spec:
 groups:
   - name: MyRecordingRules
     interval: 30s
     rules:
       - record: my_metric_per_namespace
         expr: (count by (namespace) (kube_pod_info) * 0 + 20)
         labels:
           netobserv: "true"

Dependencies

netobserv/netobserv-web-console#1311

Checklist

If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

  • Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
  • Does this PR require product documentation?
  • If so, make sure the JIRA epic is labeled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.
  • Does this PR require a product release notes entry?
  • If so, fill in "Release Note Text" in the JIRA.
  • Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.
  • If so, make sure it is described in the JIRA ticket.
  • QE requirements (check 1 from the list):
  • Standard QE validation, with pre-merge tests unless stated otherwise.
  • Regression tests only (e.g. refactoring with no user-facing change).
  • No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

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.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants