Skip to content

Add min_injected_gomaxprocs via runtime handler precreate hook#9860

Merged
openshift-merge-bot[bot] merged 1 commit into
cri-o:mainfrom
harche:inject-gomaxprocs-hook
Apr 10, 2026
Merged

Add min_injected_gomaxprocs via runtime handler precreate hook#9860
openshift-merge-bot[bot] merged 1 commit into
cri-o:mainfrom
harche:inject-gomaxprocs-hook

Conversation

@harche

@harche harche commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements GOMAXPROCS injection as a composable PreCreate runtime handler hook.

  • GomaxprocsHooks.PreCreate() reads CPU shares from the OCI spec, calculates GOMAXPROCS with a configurable floor (min_injected_gomaxprocs), and injects the env var for burstable/best-effort pods
  • CompositeHooks chains multiple RuntimeHandlerHooks (e.g. GOMAXPROCS + high-performance hooks)
  • Works for all OCI runtimes
  • Skips guaranteed pods, workload-partitioned pods, pods with CPU limits, and pods that already set GOMAXPROCS
  • skip-gomaxprocs.crio.io pod annotation to opt out

This is an alternative to #9844 based on reviewer feedback to use the precreate hook mechanism.

add min_injected_gomaxprocs option, which allows a user to specify GOMAXPROCS in every container CRI-O creates. The config field itself is an integer that represents the floor of GOMAXPROCS. CRI-O will inject max(floor, cpu.request), if the pod is not a guaranteed pod or is part of a partitioned workload

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 31, 2026
@openshift-ci

openshift-ci Bot commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci openshift-ci Bot added dco-signoff: yes Indicates the PR's author has DCO signed all their commits. do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Mar 31, 2026
@coderabbitai

coderabbitai Bot commented Mar 31, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds configurable GOMAXPROCS injection via a new runtime hook that runs at container PreCreate; wires CLI/config/template/docs/completions, introduces a SkipGoMaxProcs annotation and workload-partition detection, composes hooks when multiple apply, and adds unit + e2e tests exercising injection and skip paths.

Changes

Cohort / File(s) Summary
Shell completions
completions/bash/crio, completions/fish/crio.fish, completions/zsh/_crio
Added --inject-gomaxprocs completion entries; fish completion includes value requirement and expanded description.
Documentation & manpages
docs/crio.8.md, docs/crio.conf.5.md
Documented --inject-gomaxprocs=[value] and crio.runtime.inject_gomaxprocs (default 0), describing burstable vs best-effort semantics and 0 to disable.
CLI / runtime wiring
internal/criocli/criocli.go, pkg/config/template.go
Added CLI flag/env var wiring for inject-gomaxprocs and template entry emission; CLI value merges into runtime config when explicitly set.
Config struct & validation
pkg/config/config.go
Added RuntimeConfig.InjectGOMAXPROCS int64 (TOML inject_gomaxprocs) and validation rejecting negative values.
Annotations & workloads
pkg/annotations/v2/annotations.go, pkg/config/workloads.go
Added SkipGoMaxProcs annotation constant and Workloads.IsWorkloadPartitioned helper for workload-partition detection.
Hook composition & retrieval
internal/runtimehandlerhooks/composite_hooks.go, internal/runtimehandlerhooks/runtime_handler_hooks_linux.go
Added CompositeHooks to chain multiple hooks; HooksRetriever.Get now accumulates applicable hooks and returns nil, a single hook, or a CompositeHooks wrapper (appends Gomaxprocs when configured).
GOMAXPROCS hook implementation
internal/runtimehandlerhooks/gomaxprocs_hooks_linux.go
New GomaxprocsHooks with PreCreate: checks skip annotation/workload partitioning, inspects cgroup parent and CPU quota/shares, skips when quota present, computes value from CPU shares with configurable floor, and injects GOMAXPROCS env if absent.
Unit & integration tests
internal/runtimehandlerhooks/gomaxprocs_hooks_linux_test.go, test/inject_gomaxprocs.bats
Added Go unit tests for calculation/injection and workload detection; Bats e2e suite covering injection, skip paths, quota handling, annotation skip, workload partitioning, and config-floor behavior.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant CRI_O
  participant HooksRetriever
  participant CompositeHooks
  participant GomaxprocsHooks
  participant SpecGen
  participant Sandbox

  Client->>CRI_O: CreateContainer(request)
  CRI_O->>HooksRetriever: Get(runtimeHandler)
  HooksRetriever->>CRI_O: returns nil / single hook / CompositeHooks
  alt Composite returned
    CRI_O->>CompositeHooks: PreCreate(specgen, sandbox)
    CompositeHooks->>GomaxprocsHooks: PreCreate(specgen, sandbox)
    GomaxprocsHooks->>Sandbox: read annotations & cgroup_parent
    GomaxprocsHooks->>SpecGen: read CPU quota/shares & Env
    alt eligible (no quota, burstable/besteffort, not skipped)
      GomaxprocsHooks->>SpecGen: AddProcessEnv("GOMAXPROCS", value)
    end
    GomaxprocsHooks-->>CompositeHooks: return nil/error
    CompositeHooks-->>CRI_O: PreCreate completed
  end
  CRI_O->>Client: Create response / error
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

kind/feature, release-note

Suggested reviewers

  • mrunalp
  • hasan4791
  • QiWang19

Poem

🐰 I count the cores and hop through hooks,
I tuck a GOMAXPROCS where logic looks.
Skip me with an annotation or quota’s rule,
I leave guaranteed pods calm and cool.
Hooray — I set the value, gentle as a carrot nibble.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 22.22% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'Add min_injected_gomaxprocs via runtime handler precreate hook' accurately describes the main objective—implementing GOMAXPROCS injection through a precreate hook mechanism—but uses 'min_injected' which doesn't clearly convey the full feature intent (the injectable floor/minimum value).

✏️ 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.

@harche harche force-pushed the inject-gomaxprocs-hook branch from 43163b3 to 711c702 Compare March 31, 2026 15:26
@codecov

codecov Bot commented Mar 31, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 73.98374% with 32 lines in your changes missing coverage. Please review.
✅ Project coverage is 67.77%. Comparing base (5753c52) to head (1b111f6).
⚠️ Report is 9 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9860      +/-   ##
==========================================
+ Coverage   64.73%   67.77%   +3.03%     
==========================================
  Files         212      214       +2     
  Lines       29366    29504     +138     
==========================================
+ Hits        19011    19996     +985     
+ Misses       8656     7813     -843     
+ Partials     1699     1695       -4     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment thread internal/runtimehandlerhooks/runtime_handler_hooks_linux.go Outdated
Comment thread internal/runtimehandlerhooks/runtime_handler_hooks_linux.go

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@internal/runtimehandlerhooks/gomaxprocs_hooks_linux_test.go`:
- Around line 76-99: The test currently only checks env slice length to detect
injection which misses in-place replacements; update the test around
injectGOMAXPROCS(&g, tc.defaultEnv, tc.maxProcs) to explicitly search
g.Config.Process.Env for any "GOMAXPROCS=" entries and assert their final value
equals tc.expectVal when tc.expectSet is true, and assert no "GOMAXPROCS=" entry
exists when tc.expectSet is false; keep the existing env length checks if
desired but add these explicit presence/value assertions to cover cases where
AddProcessEnv replaces existing keys in place.

In `@pkg/config/template.go`:
- Around line 999-1008: Update the documentation string in
templateStringCrioRuntimeInjectGOMAXPROCS to list the additional skip
conditions: explicitly state that injection is skipped for workload-partitioned
pods and for containers with a positive CPU quota (in addition to Guaranteed
pods and containers that already set GOMAXPROCS), and clarify that
inject_gomaxprocs (bound to .InjectGOMAXPROCS) only applies when none of these
skip conditions are met; modify the template text to add one or two concise
sentences after the existing explanation enumerating these skip paths so users
understand when injection will not occur.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e2258797-ddf2-4ada-9450-1633461ac970

📥 Commits

Reviewing files that changed from the base of the PR and between d486907 and 64a51f7.

📒 Files selected for processing (14)
  • completions/bash/crio
  • completions/fish/crio.fish
  • completions/zsh/_crio
  • docs/crio.8.md
  • docs/crio.conf.5.md
  • internal/criocli/criocli.go
  • internal/runtimehandlerhooks/composite_hooks.go
  • internal/runtimehandlerhooks/gomaxprocs_hooks_linux.go
  • internal/runtimehandlerhooks/gomaxprocs_hooks_linux_test.go
  • internal/runtimehandlerhooks/runtime_handler_hooks_linux.go
  • pkg/annotations/v2/annotations.go
  • pkg/config/config.go
  • pkg/config/template.go
  • pkg/config/workloads.go

Comment thread internal/runtimehandlerhooks/gomaxprocs_hooks_linux_test.go
Comment thread pkg/config/template.go Outdated
@harche harche force-pushed the inject-gomaxprocs-hook branch from 64a51f7 to 9f0b629 Compare April 1, 2026 18:12

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

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

⚠️ Outside diff range comments (1)
internal/runtimehandlerhooks/runtime_handler_hooks_linux.go (1)

39-89: ⚠️ Potential issue | 🟡 Minor

The concrete return type is now configuration-dependent.

When inject_gomaxprocs is enabled alongside another hook, Get() returns *CompositeHooks instead of the concrete hook type. internal/runtimehandlerhooks/high_performance_hooks_test.go, Line 1654 still asserts *HighPerformanceHooks, so those cases need to be updated to assert through the interface or unwrap the composite.

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

In `@internal/runtimehandlerhooks/runtime_handler_hooks_linux.go` around lines 39
- 89, Get() can return a CompositeHooks when InjectGOMAXPROCS is enabled along
with another hook, so tests that assert a concrete *HighPerformanceHooks (e.g.
in internal/runtimehandlerhooks/high_performance_hooks_test.go) must be updated;
modify the test to either assert via the RuntimeHandlerHooks interface or
detect/unpack a CompositeHooks and locate the *HighPerformanceHooks instance
inside its hooks slice (use a type switch or iterate CompositeHooks.hooks to
find *HighPerformanceHooks) so the test passes regardless of whether Get()
returns a single concrete hook or a CompositeHooks wrapper.
♻️ Duplicate comments (1)
pkg/config/template.go (1)

999-1008: ⚠️ Potential issue | 🟡 Minor

Document the remaining skip paths.

This text still reads as if every burstable/best-effort container is eligible. The hook also skips workload-partitioned pods and containers with a positive CPU quota, so users will otherwise read inject_gomaxprocs as broken when it intentionally no-ops.

Suggested wording
 const templateStringCrioRuntimeInjectGOMAXPROCS = `# Enables GOMAXPROCS injection for burstable and best-effort pod containers.
 # This value acts as a minimum floor. For burstable pods with a CPU request,
 # GOMAXPROCS is auto-calculated from the request; the calculated value is only
 # used if it exceeds this floor. For best-effort pods (no CPU request), this
-# value is used directly. Guaranteed pods are skipped. The value is only
+# value is used directly. Guaranteed and workload-partitioned pods are skipped.
+# Containers with a positive CPU quota are also skipped so Go can honor the
+# cgroup CPU limit directly. The value is only
 # injected if the container does not already have GOMAXPROCS set via the image
 # or pod spec. Set to 0 to disable (default).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/config/template.go` around lines 999 - 1008, Update the documentation
string in templateStringCrioRuntimeInjectGOMAXPROCS to list all the additional
skip conditions the injector respects: explicitly mention that
workload-partitioned pods are skipped and that containers with a positive CPU
quota are not modified, so users understand inject_gomaxprocs may intentionally
no-op; locate and edit the constant templateStringCrioRuntimeInjectGOMAXPROCS to
add those skip paths into the explanatory text near the top of the template.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@internal/runtimehandlerhooks/runtime_handler_hooks_linux.go`:
- Around line 39-89: Get() can return a CompositeHooks when InjectGOMAXPROCS is
enabled along with another hook, so tests that assert a concrete
*HighPerformanceHooks (e.g. in
internal/runtimehandlerhooks/high_performance_hooks_test.go) must be updated;
modify the test to either assert via the RuntimeHandlerHooks interface or
detect/unpack a CompositeHooks and locate the *HighPerformanceHooks instance
inside its hooks slice (use a type switch or iterate CompositeHooks.hooks to
find *HighPerformanceHooks) so the test passes regardless of whether Get()
returns a single concrete hook or a CompositeHooks wrapper.

---

Duplicate comments:
In `@pkg/config/template.go`:
- Around line 999-1008: Update the documentation string in
templateStringCrioRuntimeInjectGOMAXPROCS to list all the additional skip
conditions the injector respects: explicitly mention that workload-partitioned
pods are skipped and that containers with a positive CPU quota are not modified,
so users understand inject_gomaxprocs may intentionally no-op; locate and edit
the constant templateStringCrioRuntimeInjectGOMAXPROCS to add those skip paths
into the explanatory text near the top of the template.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 820148ae-003d-4ea4-904a-6a5093453baf

📥 Commits

Reviewing files that changed from the base of the PR and between 64a51f7 and 9f0b629.

📒 Files selected for processing (14)
  • completions/bash/crio
  • completions/fish/crio.fish
  • completions/zsh/_crio
  • docs/crio.8.md
  • docs/crio.conf.5.md
  • internal/criocli/criocli.go
  • internal/runtimehandlerhooks/composite_hooks.go
  • internal/runtimehandlerhooks/gomaxprocs_hooks_linux.go
  • internal/runtimehandlerhooks/gomaxprocs_hooks_linux_test.go
  • internal/runtimehandlerhooks/runtime_handler_hooks_linux.go
  • pkg/annotations/v2/annotations.go
  • pkg/config/config.go
  • pkg/config/template.go
  • pkg/config/workloads.go
✅ Files skipped from review due to trivial changes (2)
  • completions/bash/crio
  • completions/fish/crio.fish
🚧 Files skipped from review as they are similar to previous changes (7)
  • completions/zsh/_crio
  • pkg/annotations/v2/annotations.go
  • docs/crio.8.md
  • docs/crio.conf.5.md
  • internal/runtimehandlerhooks/composite_hooks.go
  • internal/runtimehandlerhooks/gomaxprocs_hooks_linux_test.go
  • internal/runtimehandlerhooks/gomaxprocs_hooks_linux.go

Comment thread pkg/annotations/v2/annotations.go Outdated
PodLinuxResources,
SeccompNotifierAction,
SeccompProfile,
SkipGoMaxProcs,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

this shouldn't be an allowed annotation, remove this line

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@haircommander If remove it then pods won't be able skip setting GOMAXPROCS by setting annotation? We want pods to be able to skip.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

that's not true, inclusion in this list means that the annotation will be scrubbed from the container if it's not in a runtime handler that has the allowed annotation. pods are allowed to have annotations that aren't in this list and cri-o can take any action on any annotation it wants. the reason to include here is if we feel there's a risk to the annotation and we want an admin to explicitly opt into its enablement

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Ok, thanks, looking into it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Just to be sure, I will test this again on AWS.

// We reverse that with ceil(shares / 1024) to get the CPU count.
// The floor is used when the calculated value is lower.
func calculateGOMAXPROCS(shares, fallbackMaxProcs int64) int64 {
if shares > 2 {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

why are we checking this? seems like we could just return

max( max((shares + 1023)/1024, 1), fallbackMaxProcs)

@openshift-cherrypick-robot

Copy link
Copy Markdown

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

Details

In response to this:

/lgtm
/approve
/cherry-pick release-1.35

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 lgtm Indicates that a PR is ready to be merged. label Apr 9, 2026
@openshift-ci

openshift-ci Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: haircommander, harche

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

@openshift-ci openshift-ci Bot added approved Indicates a PR has been approved by an approver from all required OWNERS files. release-note Denotes a PR that will be considered when it comes time to generate release notes. and removed do-not-merge/release-note-label-needed Indicates that a PR should not merge because it's missing one of the release note labels. labels Apr 9, 2026
@haircommander

Copy link
Copy Markdown
Member

/hold
sorry to be annoying ,actually can the config field be min_injected_gomaxprocs? better reflects it's an integer and not a bool

@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 Apr 9, 2026
@harche harche force-pushed the inject-gomaxprocs-hook branch from 2403451 to 82fb64f Compare April 9, 2026 17:36
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Apr 9, 2026
Implement GOMAXPROCS injection as a composable PreCreate runtime handler
hook instead of inline logic in container_create.go. This follows the
existing CRI-O hook architecture (like HighPerformanceHooks) and allows
the GOMAXPROCS hook to compose with other hooks via CompositeHooks.

Key changes:
- GomaxprocsHooks: PreCreate hook that reads CPU shares from the OCI
  spec, calculates GOMAXPROCS with a configurable floor, and injects
  the env var for burstable/best-effort pods
- CompositeHooks: chains multiple RuntimeHandlerHooks implementations,
  enabling GOMAXPROCS to work alongside high-performance hooks
- HooksRetriever.Get(): builds a hook chain when inject_gomaxprocs > 0
- Config field, CLI flag, annotation, docs, completions, and tests

The hook fires for all OCI runtimes and skips guaranteed pods,
workload-partitioned pods, pods with CPU limits (Go 1.25+ auto-detects),
and pods that already have GOMAXPROCS set.

Signed-off-by: Peter Hunt <pehunt@redhat.com>
Co-authored-by: Harshal Patil <12152047+harche@users.noreply.github.com>
@harche harche force-pushed the inject-gomaxprocs-hook branch from 82fb64f to 1b111f6 Compare April 9, 2026 17:49
@haircommander haircommander changed the title Add inject_gomaxprocs via runtime handler precreate hook Add min_inject_gomaxprocs via runtime handler precreate hook Apr 9, 2026
@haircommander haircommander changed the title Add min_inject_gomaxprocs via runtime handler precreate hook Add min_injected_gomaxprocs via runtime handler precreate hook Apr 9, 2026
@haircommander

Copy link
Copy Markdown
Member

/lgtm
/unhold

@openshift-ci openshift-ci Bot added lgtm Indicates that a PR is ready to be merged. and removed do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. labels Apr 9, 2026
@haircommander

Copy link
Copy Markdown
Member

/retest

@harche

harche commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test ci-cgroupv2-e2e

@harche

harche commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

/test e2e-aws-ovn

@haircommander

Copy link
Copy Markdown
Member

/retest

@haircommander

Copy link
Copy Markdown
Member

/override ci/prow/e2e-aws-ovn
/override ci/prow/ci-cgroupv2-e2e

@openshift-ci

openshift-ci Bot commented Apr 10, 2026

Copy link
Copy Markdown
Contributor

@haircommander: Overrode contexts on behalf of haircommander: ci/prow/ci-cgroupv2-e2e, ci/prow/e2e-aws-ovn

Details

In response to this:

/override ci/prow/e2e-aws-ovn
/override ci/prow/ci-cgroupv2-e2e

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-merge-bot openshift-merge-bot Bot merged commit 302cf9b into cri-o:main Apr 10, 2026
72 of 74 checks passed
@openshift-cherrypick-robot

Copy link
Copy Markdown

@haircommander: new pull request created: #9876

Details

In response to this:

/lgtm
/approve
/cherry-pick release-1.35

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.

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. dco-signoff: yes Indicates the PR's author has DCO signed all their commits. lgtm Indicates that a PR is ready to be merged. release-note Denotes a PR that will be considered when it comes time to generate release notes.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants