Skip to content

Add NMO maintenance lifecycle tests - #62

Merged
openshift-merge-bot[bot] merged 1 commit into
medik8s:mainfrom
ugreener:feat/nmo-lifecycle-tests
Aug 9, 2026
Merged

Add NMO maintenance lifecycle tests#62
openshift-merge-bot[bot] merged 1 commit into
medik8s:mainfrom
ugreener:feat/nmo-lifecycle-tests

Conversation

@ugreener

@ugreener ugreener commented Aug 2, 2026

Copy link
Copy Markdown

Problem

The NMO (Node Maintenance Operator) migration to Prow (RHWA-1140) currently has only 4 basic post-deployment tests (operator pod running, CSV check). The core NMO functionality, the maintenance lifecycle (cordon, drain, uncordon, persistence after reboot), has no coverage in system-tests. This means the weekly Prow periodic job validates that NMO is installed but not that it actually works.

Summary

Port 4 NMO maintenance lifecycle tests from ocp-edge-auto to system-tests as Go/Ginkgo tests in a new nmo_lifecycle.go file.

Changes

  • Add tests/nmo-operator/tests/nmo_lifecycle.go with 4 Ordered lifecycle tests:
    • OCP-29592: Start node maintenance (create NodeMaintenance CR, verify node cordoned and drained)
    • OCP-29603: Schedule pod to node under maintenance (verify pod stays Pending)
    • OCP-46761: Maintenance persists after node reboot (reboot via oc debug, verify CR and cordon survive)
    • OCP-29594: Stop node maintenance (delete CR, verify node uncordoned)
  • Add github.com/medik8s/node-maintenance-operator v0.21.0 as a direct dependency for NMO API types
  • Update vendor directory

Jira: RHWA-1250

Summary by CodeRabbit

  • Tests

    • Added end-to-end coverage for the node maintenance lifecycle, including cordoning, scheduling prevention, reboot persistence, deletion, and uncordoning.
    • Added cleanup and recovery checks to improve test reliability.
  • Documentation

    • Updated test commands and added guides for starting maintenance, pod scheduling, reboot persistence, and completion.
  • Chores

    • Updated Kubernetes and testing tooling.
    • Added timeout settings for maintenance, reboot recovery, and node uncordoning.

@openshift-ci
openshift-ci Bot requested review from beekhof and clobrano August 2, 2026 09:39
@openshift-ci openshift-ci Bot added the approved label Aug 2, 2026
@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown

Review Change Stack

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

The change updates Go dependencies and adds an ordered integration suite for the Node Maintenance Operator lifecycle. The suite validates maintenance completion, node cordoning, scheduling prevention, reboot persistence, resource deletion, and node uncordoning.

Changes

Node Maintenance Operator lifecycle

Layer / File(s) Summary
Test dependency updates
go.mod
Go requirements add or update Kubernetes, Ginkgo, Gomega, Node Maintenance Operator, API extensions, and related indirect modules.
Lifecycle suite setup and resource control
tests/nmo-operator/tests/nmo_lifecycle.go, tests/nmo-operator/internal/nmoparams/const.go
The suite registers the NMO scheme, selects a ready schedulable worker, configures timeouts, removes stale resources, and verifies cleanup.
Maintenance lifecycle validation
tests/nmo-operator/tests/nmo_lifecycle.go
Tests create and complete maintenance, verify cordoning and scheduling prevention, reboot the node, confirm persistence, delete maintenance, and verify uncordoning.
Lifecycle test documentation
tests/nmo-operator/README.md
The README updates test label filters and documents the NMO lifecycle checks.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested labels: ok-to-test

Suggested reviewers: beekhof, clobrano

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the added NMO maintenance lifecycle tests.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@qodo-2-for-medik8s

Copy link
Copy Markdown

PR Summary by Qodo

Add NMO maintenance lifecycle tests to system-tests

🧪 Tests ✨ Enhancement ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Add ordered Ginkgo suite validating NMO cordon/drain, scheduling block, reboot persistence, and
 uncordon.
• Reboot the target worker via oc debug to keep tests Prow-compatible (no SSH).
• Add NMO API types dependency and regenerate Go modules/vendor for compilation.
Diagram

graph TD
A["NMO lifecycle suite"] --> B["APIClient"] --> C["NodeMaintenance CR"] --> D["NMO operator"] --> E["Worker node"]
A --> F["oc debug reboot"] --> E
A --> G["Pending pod check"] --> B
subgraph Legend
  direction LR
  _t["Test code"] ~~~ _api["K8s API"] ~~~ _ext{{"CLI/Operator"}}
end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Use unstructured/dynamic client for NodeMaintenance CR
  • ➕ Avoids direct dependency on NMO API Go types
  • ➕ Reduces vendor churn/noise when only a few CR fields are needed
  • ➖ Less type safety and more runtime failures from field typos
  • ➖ More verbose field access and harder-to-maintain tests
2. Drive CR lifecycle via `oc apply/delete` YAML
  • ➕ Matches common operational workflows
  • ➕ Avoids scheme registration for the CR types
  • ➖ Brittle (CLI parsing/exit codes), harder to assert intermediate state
  • ➖ More reliance on external binaries and shell execution patterns

Recommendation: Keeping typed NMO API types is a good tradeoff for clarity and type safety in a long-lived system-test suite. If vendor churn becomes a recurring review pain, consider switching only the NodeMaintenance interactions to an unstructured client while keeping typed core objects. Also consider checking/propagating errors from the oc debug reboot command to avoid silent false positives.

Files changed (6) +852 / -60

Tests (1) +296 / -0
nmo_lifecycle.goAdd ordered NMO maintenance lifecycle tests +296/-0

Add ordered NMO maintenance lifecycle tests

• Adds an Ordered/ContinueOnFailure Ginkgo suite that selects an eligible worker node, creates a NodeMaintenance CR, verifies maintenance reaches Succeeded and the node is cordoned, ensures a targeted pod remains Pending, reboots the node via 'oc debug' and validates persistence, then deletes the CR and verifies the node becomes schedulable again. Includes safety cleanup and helpers for reboot and NodeReady checks.

tests/nmo-operator/tests/nmo_lifecycle.go

Other (5) +556 / -60
go.modAdd NMO API dependency and update module versions +36/-14

Add NMO API dependency and update module versions

• Adds 'github.com/medik8s/node-maintenance-operator v0.21.0' as a direct dependency to use NodeMaintenance API types, and refreshes related test/runtime dependencies (notably Ginkgo/Gomega and some k8s module versions) to satisfy the updated module graph.

go.mod

go.sumUpdate checksums for new dependency graph +77/-26

Update checksums for new dependency graph

• Updates go.sum entries for the newly added NMO dependency and the set of updated/introduced indirect modules pulled in by the module refresh.

go.sum

modules.txtRegenerate vendor manifest for added modules +197/-20

Regenerate vendor manifest for added modules

• Updates the vendor manifest to include the NMO module and additional indirect dependencies introduced by the module updates, reflecting a regenerated vendored tree.

vendor/modules.txt

nodemaintenance_types.goVendor NodeMaintenance API types (v1beta1) +126/-0

Vendor NodeMaintenance API types (v1beta1)

• Vendors the NodeMaintenance v1beta1 API type definitions used by the new lifecycle tests for typed CRUD operations on the CR.

vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/nodemaintenance_types.go

zz_generated.deepcopy.goVendor generated deep-copy methods for NMO types +120/-0

Vendor generated deep-copy methods for NMO types

• Includes generated deepcopy implementations required by Kubernetes runtime machinery when using the vendored NMO API types.

vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/zz_generated.deepcopy.go

@qodo-2-for-medik8s

qodo-2-for-medik8s Bot commented Aug 2, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
⚠️ Tickets: not configured — ticket URL found in PR but could not be fetched — check ticket provider credentials
✅ Compliance rules (platform): 13 rules

Grey Divider


Action required

1. NotReady wait masks failures ✓ Resolved 🐞 Bug ≡ Correctness
Description
When waiting for the node to become NotReady after reboot, the test returns success (true) on any
nodes.Pull() error, allowing the assertion to pass without observing NotReady. This can produce
false-positive results on transient API errors or other retrieval failures.
Code

tests/nmo-operator/tests/nmo_lifecycle.go[R219-222]

+			Eventually(func() bool {
+				node, err := nodes.Pull(APIClient, targetNodeName)
+				if err != nil {
+					return true
Relevance

●●● Strong

They’ve accepted fixes preventing vacuous success when API calls error inside Eventually-style
checks.

PR-#39

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new predicate explicitly treats any pull error as success. In contrast, the shared helper
waitForNodeCondition logs transient API errors and returns (false, nil) to retry, rather than
considering errors a successful condition match.

tests/nmo-operator/tests/nmo_lifecycle.go[214-226]
tests/internal/helpers/node_ops.go[177-206]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The reboot test’s `Eventually()` predicate returns `true` when `nodes.Pull()` errors, which makes the NotReady verification unsound (API failure is treated as success).

### Issue Context
This repo already has node readiness helpers that treat transient API errors as retry and only succeed when the condition is observed.

### Fix Focus Areas
- tests/nmo-operator/tests/nmo_lifecycle.go[218-226]
- tests/internal/helpers/node_ops.go[177-206]

### Suggested fix
Change the NotReady wait to either:
- return `false` on pull errors (and optionally log/retry), or
- reuse `helpers.WaitForNodeNotReady()`/`helpers.WaitForNodeReady()` with appropriate timeout/polling so errors are handled consistently.

Do not treat pull/get errors as satisfying the NotReady condition.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Reboot errors ignored ✓ Resolved 🐞 Bug ☼ Reliability
Description
rebootNodeViaDebug() discards the result of running oc debug ... systemctl reboot, so the test can
proceed even when oc debug fails or reboot was never triggered. The command also lacks any
context/timeout and doesn’t use existing repo helpers, increasing the risk of stalled or
hard-to-diagnose failures.
Code

tests/nmo-operator/tests/nmo_lifecycle.go[R282-285]

+func rebootNodeViaDebug(nodeName string) {
+	cmd := exec.Command("oc", "debug", fmt.Sprintf("node/%s", nodeName),
+		"--", "chroot", "/host", "systemctl", "reboot")
+	_ = cmd.Run()
Relevance

●●● Strong

Repo trends toward propagating/validating oc debug errors via shared helpers instead of ignoring
cmd.Run failures.

PR-#23

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new reboot helper explicitly ignores cmd.Run() errors. The repo’s existing
helpers.RunOnNode() shows the established pattern for safe oc debug usage (namespace, timeout,
stderr capture, and error propagation) that the new code bypasses.

tests/nmo-operator/tests/nmo_lifecycle.go[282-286]
tests/internal/helpers/node_ops.go[18-66]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`rebootNodeViaDebug()` runs an external `oc debug` command without a timeout and ignores its error output. This can lead to silent failures (false positives) and can also stall the suite if the command blocks.

### Issue Context
The repository already has a hardened `helpers.RunOnNode()` implementation that:
- uses `exec.CommandContext` with a timeout
- captures stdout/stderr
- returns actionable errors
- pins the debug pod namespace (`-n default`)

### Fix Focus Areas
- tests/nmo-operator/tests/nmo_lifecycle.go[282-286]
- tests/internal/helpers/node_ops.go[18-66]

### Suggested fix
Replace `rebootNodeViaDebug()` with a wrapper around `helpers.RunOnNode()` (or add a small NMO-local helper that calls it) and:
- pass a context + bounded timeout
- do not discard the error; at minimum log stderr and fail on unexpected errors
- consider validating reboot via boot ID (see `helpers.WaitForNodeReboot`) to make the reboot assertion robust.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Control-plane selection bug ✗ Dismissed 🐞 Bug ≡ Correctness
Description
The node filter attempts to exclude master/control-plane nodes by checking role label values, but
these labels are commonly present with an empty string value so the condition does not exclude them.
The test can end up cordoning/draining and rebooting a control-plane node, risking cluster
disruption and invalid results.
Code

tests/nmo-operator/tests/nmo_lifecycle.go[R58-61]

+				labels := node.Object.Labels
+				if labels["node-role.kubernetes.io/master"] != "" ||
+					labels["node-role.kubernetes.io/control-plane"] != "" {
+					continue
Relevance

●●● Strong

High-risk correctness bug in node selection; team usually accepts fixes preventing disruptive
control-plane actions.

PR-#52

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The test’s exclusion logic uses labels[key] != "", which cannot distinguish a missing label from
an empty-valued label. Elsewhere in this repo, master/control-plane nodes are explicitly matched
using empty string values, demonstrating that empty values are expected and the new logic will not
exclude those nodes.

tests/nmo-operator/tests/nmo_lifecycle.go[56-62]
tests/snr-operator/tests/helpers.go[270-286]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The lifecycle test excludes master/control-plane nodes by comparing role label *values* to `""`, which fails when the label exists with an empty value (common for node role labels). This can cause the test to select a control-plane node and then cordon/drain/reboot it.

### Issue Context
This suite performs destructive actions (cordon/drain/reboot) on the selected node, so selecting a control-plane node is unsafe.

### Fix Focus Areas
- tests/nmo-operator/tests/nmo_lifecycle.go[56-62]

### Suggested fix
Update the filter to check for label-key presence, not non-empty value, e.g.:
- `if _, ok := labels["node-role.kubernetes.io/master"]; ok { continue }`
- `if _, ok := labels["node-role.kubernetes.io/control-plane"]; ok { continue }`

Alternatively, change the initial list operation to include negative selectors (if supported by the listing helper) so control-plane nodes are never returned.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

4. Hardcoded Eventually/Consistently timeouts ✓ Resolved 📘 Rule violation ⚙ Maintainability
Description
The new specs use literal durations (e.g., 30*time.Second, 3*time.Minute, 10*time.Second) in
Eventually/Consistently calls rather than shared <op>params/medik8sparams constants. This
violates the requirement to standardize async timeouts/intervals via shared parameters.
Code

tests/nmo-operator/tests/nmo_lifecycle.go[R195-196]

+			}, 30*time.Second, pollInterval).Should(Equal(corev1.PodPending),
+				"Pod should remain Pending on a cordoned node")
Relevance

●●● Strong

Hardcoded timeouts are routinely replaced with shared params-based timeouts/intervals in tests.

PR-#16

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1883 requires Eventually/Consistently to use shared timeout/interval constants
instead of literal durations. The added code passes literal timeouts/intervals directly (and also
defines local constants derived from literals).

Rule 1883: Eventually/Consistently must use shared timeout and interval constants instead of literals
tests/nmo-operator/tests/nmo_lifecycle.go[25-32]
tests/nmo-operator/tests/nmo_lifecycle.go[195-196]
tests/nmo-operator/tests/nmo_lifecycle.go[225-226]
tests/nmo-operator/tests/nmo_lifecycle.go[235-236]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`Eventually`/`Consistently` calls use hardcoded duration literals instead of shared timeout/poll interval constants.

## Issue Context
The project standardizes async waits via shared constants (from `nmoparams` or `medik8sparams`) so timeouts are consistent and centrally tunable.

## Fix Focus Areas
- tests/nmo-operator/tests/nmo_lifecycle.go[25-32]
- tests/nmo-operator/tests/nmo_lifecycle.go[193-219]
- tests/nmo-operator/tests/nmo_lifecycle.go[218-244]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


5. It IDs not in body ✗ Dismissed 📘 Rule violation ✧ Quality
Description
Each new Ginkgo It supplies reportxml.ID(...) as an argument to It(...) instead of calling it
inside the It body. This violates the requirement that every It assigns exactly one
reportxml.ID within the spec body before any side effects/assertions.
Code

tests/nmo-operator/tests/nmo_lifecycle.go[132]

+		It("Start node maintenance", reportxml.ID("29592"), func() {
Relevance

●● Moderate

Repo commonly uses reportxml.ID as an It argument; unclear if team will enforce “ID inside body”
rule.

PR-#13

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1805 requires a reportxml.ID(<non-empty string literal>) call inside every It
body. In the added specs, reportxml.ID(...) appears in the It(...) argument list rather than
within the function body.

Rule 1805: Assign a reportxml test case ID in every Ginkgo It and DescribeTable
tests/nmo-operator/tests/nmo_lifecycle.go[132-132]
tests/nmo-operator/tests/nmo_lifecycle.go[164-164]
tests/nmo-operator/tests/nmo_lifecycle.go[214-214]
tests/nmo-operator/tests/nmo_lifecycle.go[252-252]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`reportxml.ID("...")` is passed as an `It(...)` argument rather than being called inside the `It` body.

## Issue Context
Compliance requires the ID call to be inside the `It`/`DescribeTable` body (and exactly once) before any test actions.

## Fix Focus Areas
- tests/nmo-operator/tests/nmo_lifecycle.go[132-168]
- tests/nmo-operator/tests/nmo_lifecycle.go[164-212]
- tests/nmo-operator/tests/nmo_lifecycle.go[214-250]
- tests/nmo-operator/tests/nmo_lifecycle.go[252-279]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Vendored modules committed ✗ Dismissed 📘 Rule violation ⚙ Maintainability
Description
This PR modifies and adds files under vendor/, meaning vendored Go modules are being committed.
This violates the requirement to avoid relying on a committed vendor/ directory and can cause
dependency drift and build inconsistencies.
Code

vendor/modules.txt[R1-4]

+# github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161
+## explicit; go 1.16
+github.com/Azure/go-ansiterm
+github.com/Azure/go-ansiterm/winterm
Relevance

●● Moderate

No clear precedent on committing/removing vendor/, though repo has worked around vendoring behavior
in tooling.

PR-#12

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1935 disallows committing vendored Go modules. The diff shows updates to
vendor/modules.txt, proving that vendor/ content is being version-controlled in this PR.

Rule 1935: Do not rely on vendored Go modules; vendor directory must not be committed
vendor/modules.txt[1-10]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR commits changes under `vendor/` (e.g., `vendor/modules.txt`), but the compliance checklist disallows committing vendored Go modules.

## Issue Context
The repository should build using Go modules (`go mod download` / `go test ./...`) rather than a checked-in `vendor/` tree.

## Fix Focus Areas
- vendor/modules.txt[1-10]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Informational

7. Non-standard label constant used ✓ Resolved 📘 Rule violation ⚙ Maintainability
Description
The suite uses Label(nmoparams.Label) instead of label constants from tests/internal/labels.
This violates the requirement that spec labels come from the centralized tests/internal/labels
package.
Code

tests/nmo-operator/tests/nmo_lifecycle.go[R36-39]

+	Ordered,
+	ContinueOnFailure,
+	Label(nmoparams.Label), func() {
+		var (
Relevance

● Weak

Very similar labels-only enforcement suggestion was previously rejected; they kept params.Label in
Label(...).

PR-#54

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1948 requires Ginkgo spec labels to use exported identifiers from
tests/internal/labels, not ad-hoc strings/constants. The added suite uses Label(nmoparams.Label)
instead of labels.OperatorNMO (and related standard labels).

Rule 1948: Label all Ginkgo It and DescribeTable specs using constants from tests/internal/labels
tests/nmo-operator/tests/nmo_lifecycle.go[34-46]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Specs are labeled using `nmoparams.Label` rather than constants from `tests/internal/labels`.

## Issue Context
Centralized labels ensure consistent filtering across suites and CI jobs.

## Fix Focus Areas
- tests/nmo-operator/tests/nmo_lifecycle.go[34-46]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread vendor/modules.txt
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated

@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: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@go.mod`:
- Around line 23-25: Align the Kubernetes module versions in go.mod with
github.com/medik8s/node-maintenance-operator v0.21.0 by setting
k8s.io/apimachinery and k8s.io/client-go to v0.34.7. Update or remove the
k8s.io/client-go replace directive so it no longer selects v0.34.5, then
regenerate go.sum and vendor.

In `@tests/nmo-operator/tests/nmo_lifecycle.go`:
- Around line 112-118: Update the AfterAll safety cleanup around
APIClient.Delete to wait with Eventually until the leftover schedule test pod is
confirmed deleted, matching the existing cleanup pattern in the “Schedule pod to
node under maintenance” test and preserving the current conditional deletion
behavior.
- Around line 87-97: Update the NodeMaintenance existence checks in the
BeforeAll and AfterAll lifecycle hooks to treat errors.IsNotFound(err) as the
only expected missing-resource result; continue when not found, delete and
verify when Get succeeds, and fail explicitly for any other Get error.
- Around line 25-32: Move maintenanceTimeout, rebootTimeout, uncordonTimeout,
pollInterval, and the inline 30*time.Second, 3*time.Minute, and 10*time.Second
timing values into nmoparams, then update all Eventually/Consistently calls in
the nmo lifecycle tests to reference those nmoparams constants. Use
nmoparams.DefaultPollInterval for polling and remove the local timing
definitions while preserving the existing timeout values.
- Around line 282-286: Update rebootNodeViaDebug to execute the oc debug command
with exec.CommandContext and a suitable timeout, preserving the existing reboot
arguments. Capture the Run error instead of discarding it, and report failures
through GinkgoWriter while allowing expected connection closure after reboot to
be visible.
- Around line 219-226: Update the Eventually callback around nodes.Pull so it
returns false when the pull returns an error, rather than treating the error as
proof of NotReady. Only call isNodeReady with node.Object after a successful
pull, preserving the existing readiness transition assertion.
🪄 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: 959be0ff-7798-4b33-9aba-b135b30448fa

📥 Commits

Reviewing files that changed from the base of the PR and between dc232c8 and d02e743.

⛔ Files ignored due to path filters (651)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/Azure/go-ansiterm/LICENSE is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/README.md is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/SECURITY.md is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/constants.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/context.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/csi_entry_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/csi_param_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/escape_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/event_handler.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/ground_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/osc_string_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/parser.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/parser_actions.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/states.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/utilities.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/ansi.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/api.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/utilities.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go is excluded by !vendor/**
  • vendor/github.com/MakeNowJust/heredoc/LICENSE is excluded by !vendor/**
  • vendor/github.com/MakeNowJust/heredoc/README.md is excluded by !vendor/**
  • vendor/github.com/MakeNowJust/heredoc/heredoc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/.travis.yml is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/LICENSE is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/README.md is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs_json.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs_os.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs_zip.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/gettext.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/locale.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/encoder.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/file.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/header.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/message.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/util.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/plural/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/plural/formula.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/plural/table.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/comment.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/file.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/header.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/line_reader.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/message.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/re.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/util.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/tr.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/util.go is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/.gitignore is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/.travis.yml is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/LICENSE is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/README.md is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/decoder.go is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/path.go is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/pathaction.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/.travis.yml is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/LICENSE.MIT is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/README.md is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/error.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/error_1_13.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/error_backward.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/join_unwrap_1_20.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/join_unwrap_backward.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/parse_panic.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/stackframe.go is excluded by !vendor/**
  • vendor/github.com/google/btree/LICENSE is excluded by !vendor/**
  • vendor/github.com/google/btree/README.md is excluded by !vendor/**
  • vendor/github.com/google/btree/btree.go is excluded by !vendor/**
  • vendor/github.com/google/btree/btree_generic.go is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/.travis.yml is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/LICENSE.txt is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/README.md is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/httpcache.go is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/LICENSE is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/README.md is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/trap_others.go is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/trap_windows.go is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/.travis.yml is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/LICENSE is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/README.md is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/tabwriter.go is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/LICENSE is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/groupversion_info.go is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/nodemaintenance_types.go is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/github.com/mitchellh/go-wordwrap/LICENSE.md is excluded by !vendor/**
  • vendor/github.com/mitchellh/go-wordwrap/README.md is excluded by !vendor/**
  • vendor/github.com/mitchellh/go-wordwrap/wordwrap.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/NOTICE is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/connection.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/LICENSE is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/PATENTS is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/dictionary.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/options.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/read.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/types.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/write.go is excluded by !vendor/**
  • vendor/github.com/moby/term/.gitignore is excluded by !vendor/**
  • vendor/github.com/moby/term/LICENSE is excluded by !vendor/**
  • vendor/github.com/moby/term/README.md is excluded by !vendor/**
  • vendor/github.com/moby/term/ascii.go is excluded by !vendor/**
  • vendor/github.com/moby/term/doc.go is excluded by !vendor/**
  • vendor/github.com/moby/term/proxy.go is excluded by !vendor/**
  • vendor/github.com/moby/term/term.go is excluded by !vendor/**
  • vendor/github.com/moby/term/term_unix.go is excluded by !vendor/**
  • vendor/github.com/moby/term/term_windows.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_bsd.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_nonbsd.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_unix.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_windows.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/ansi_reader.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/ansi_writer.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/console.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/doc.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/.travis.yml is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/LICENSE is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/README.md is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/depth_holder.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/full_scan_patterns.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/gitignore.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/index_scan_patterns.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/initial_holder.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/match.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/pattern.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/patterns.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/util.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/README.md is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/types/config.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/types/flags.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/types/version.go is excluded by !vendor/**
  • vendor/github.com/onsi/gomega/CHANGELOG.md is excluded by !vendor/**
  • vendor/github.com/onsi/gomega/gomega_dsl.go is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/LICENSE is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/README.md is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/compression.go is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/diskv.go is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/index.go is excluded by !vendor/**
  • vendor/github.com/rh-ecosystem-edge/eco-goinfra/pkg/nodes/list.go is excluded by !vendor/**
  • vendor/github.com/rh-ecosystem-edge/eco-goinfra/pkg/nodes/node.go is excluded by !vendor/**
  • vendor/github.com/rh-ecosystem-edge/eco-goinfra/pkg/nodes/nodetypes.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/.gitignore is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/.travis.yml is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/LICENSE.txt is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/README.md is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/block.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/doc.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/entities.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/esc.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/html.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/inline.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/markdown.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/node.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/smartypants.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/.gitignore is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/.golangci.yml is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/.mailmap is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/CONDUCT.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/CONTRIBUTING.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/LICENSE.txt is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/MAINTAINERS is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/Makefile is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/README.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/SECURITY.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/active_help.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/args.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/bash_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/bash_completionsV2.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/cobra.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/command.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/command_notwin.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/command_win.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/fish_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/flag_groups.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/powershell_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/shell_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/zsh_completions.go is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/.gitignore is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/LICENSE is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/README.md is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/helpers.go is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/struct.go is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/treeprint.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/hpack/tables.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/http2.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched_random.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/plan9/syscall_plan9.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/aliases.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/dll_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/security_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/syscall_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/go/packages/golist.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/go/packages/packages.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/go/types/objectpath/objectpath.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/ureader.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/gocommand/version.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/pkgbits/version.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/typeparams/coretype.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/types.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/versions/features.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/generated.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/k8s.io/api/admission/v1/generated.proto is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/register.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/types.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/types_swagger_doc_generated.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/zz_generated.prerelease-lifecycle.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/generated.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/generated.proto is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/register.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/types.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/types_swagger_doc_generated.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/zz_generated.prerelease-lifecycle.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme/scheme.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/util/duration/duration.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/util/version/doc.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/util/version/version.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/builder_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/builder_flags_fake.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/client_config.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/command_headers.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/config_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/config_flags_fake.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/doc.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/filename_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/io_options.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/json_yaml_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/jsonpath_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/kube_template_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/name_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/print_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/record_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/template_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericiooptions/io_options.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/discard.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/doc.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/interface.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/json.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/jsonpath.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/kyaml.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/managedfields.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/name.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/sourcechecker.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/tableprinter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/tabwriter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/template.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/terminal.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/typesetter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/warningprinter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/yaml.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/builder.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/client.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/crd_finder.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/doc.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/fake.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/fallback_query_param_verifier.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/helper.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/interfaces.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/kustomizevisitor.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/mapper.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/metadata_decoder.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/query_param_verifier.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/query_param_verifier_v3.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/result.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/scheme.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/selector.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/visitor.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/discovery/cached/disk/cached_discovery.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/discovery/cached/disk/round_tripper.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/discovery/cached/memory/memcache.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/openapi/cached/client.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/openapi/cached/groupversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/openapi3/root.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/client.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/interfaces.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsint/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsint/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsint/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsint/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/types.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/util.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/PATENTS is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/template/exec.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/template/funcs.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/jsonpath.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/node.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/parser.go is excluded by !vendor/**
  • vendor/k8s.io/component-base/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/base.go is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/dynamic.go is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/version.go is excluded by !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/util/proto/validation/errors.go is excluded by !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/util/proto/validation/types.go is excluded by !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/util/proto/validation/validation.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/caching_verifier.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/env_file.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/factory.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/factory_client_access.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/helpers.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/kubectl_match_version.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/override_options.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/printing.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/cordon.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/default.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/drain.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/filters.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/scheme/install.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/scheme/scheme.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/i18n.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/README.md is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/extract.py is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/de_DE/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/de_DE/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/default/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/default/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/en_US/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/en_US/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/fr_FR/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/fr_FR/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/it_IT/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/it_IT/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ja_JP/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ja_JP/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ko_KR/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ko_KR/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/pt_BR/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/pt_BR/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/template.pot is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_CN/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_CN/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_TW/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_TW/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/default/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/default/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/en_US/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/en_US/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/interrupt/interrupt.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/doc.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/openapi.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/openapi_getter.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/command_groups.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/help_flags_printer.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/markdown.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/normalizers.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/templater.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/templates.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/resize.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/resizeevents.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/resizeevents_windows.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/term.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/term_writer.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/validation/schema.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/validation/validation.go is excluded by !vendor/**
  • vendor/k8s.io/utils/exec/README.md is excluded by !vendor/**
  • vendor/k8s.io/utils/exec/doc.go is excluded by !vendor/**
  • vendor/k8s.io/utils/exec/exec.go is excluded by !vendor/**
  • vendor/modules.txt is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/LICENSE is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/annotations/annotations.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/annotations/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fieldspec/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fieldspec/fieldspec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/filtersutil/setters.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fsslice/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fsslice/fsslice.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/iampolicygenerator/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/iampolicygenerator/iampolicygenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/imagetag.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/legacy.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/updater.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/labels/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/labels/labels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/nameref/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/nameref/nameref.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/nameref/seqfilter.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/namespace/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/namespace/namespace.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchjson6902/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchjson6902/patchjson6902.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchstrategicmerge/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchstrategicmerge/patchstrategicmerge.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/prefix/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/prefix/prefix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/refvar/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/refvar/expand.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/refvar/refvar.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replacement/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replacement/replacement.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replicacount/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replicacount/replicacount.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/suffix/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/suffix/suffix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/valueadd/valueadd.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/hasher/hasher.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/ifc/ifc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/loadconfigfromcrds.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/namereferencetransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/refvartransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/resaccumulator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/AnnotationsTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ConfigMapGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/HashTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/HelmChartInflationGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/IAMPolicyGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ImageTagTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/LabelTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/NamespaceTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PatchJson6902Transformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PatchStrategicMergeTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PatchTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PrefixTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ReplacementTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ReplicaCountTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/SecretGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/SortOrderTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/SuffixTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ValueAddTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/generators/configmap.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/generators/secret.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/generators/utils.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/git/cloner.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/git/gitrunner.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/git/repospec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/image/image.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/commonannotations.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/commonlabels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/defaultconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/images.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/metadatalabels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/nameprefix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/namereference.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/namespace.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/namesuffix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/replicas.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/templatelabels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/varreference.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/kusterr/yamlformaterror.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/fileloader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/loader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/loadrestrictions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/loaddefaultconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/namebackreferences.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/transformerconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinhelpers/builtinplugintype_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinhelpers/builtins.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/execplugin/execplugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/execplugin/shlex.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/fnplugin/fnplugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/loader/load_go_plugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/loader/load_go_plugin_disabled.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/loader/loader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/utils/utils.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/errmissingkustomization.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/kusttarget.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/kusttarget_configplugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/multitransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/annotations.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/errtimeout.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/makeResIds.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/stringslice.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/timedcall.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/validate/fieldvalidator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/konfig/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/konfig/general.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/konfig/plugins.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/krusty/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/krusty/kustomizer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/krusty/options.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/kv/kv.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/provenance/provenance.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/provider/depprovider.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resmap/factory.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resmap/resmap.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resmap/reswrangler.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/factory.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/idset.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/origin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/resource.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/builtinpluginloadingoptions_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/configmapargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/erronlybuiltinpluginsallowed.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/errunabletofind.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/fieldspec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/generationbehavior.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/generatorargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/generatoroptions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/helmchartargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/iampolicygenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/image.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/kustomization.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/kvpairsources.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/labels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/loadrestrictions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/loadrestrictions_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/objectmeta.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pair.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/patch.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/patchargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/patchstrategicmerge.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pluginconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pluginrestrictions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pluginrestrictions_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/replacement.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/replacementfield.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/replica.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/secretargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/selector.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/sortoptions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/typemeta.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/var.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/LICENSE is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/comments/comments.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/errors/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/ext/ext.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fieldmeta/fieldmeta.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/confirmeddir.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/file.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fileinfo.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fileondisk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/filesystem.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsnode.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsondisk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsondisk_unix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsondisk_windows.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/util.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/container/container.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/exec/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/exec/exec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/functiontypes.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/runtimeutil.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/types.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/byteio_reader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/byteio_writer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/ignorefilesmatcher.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/kio.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/kioutil/kioutil.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/pkgio_reader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/pkgio_writer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/tree.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/Makefile is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/README.md is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/openapiinfo.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/v1_21_2/swagger.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/v1_21_2/swagger.pb is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kustomizationapi/swagger.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kustomizationapi/swagger.json is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/openapi.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/order/syncorder.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/resid/gvk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/resid/resid.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/runfn/runfn.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/sets/string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/sets/stringlist.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/sliceutil/slice.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/utils/pathsplitter.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/alias.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/compatibility.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/const.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/datamap.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/filters.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/fns.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels/copied.deepcopy.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels/labels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels/selector.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/selection/operator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/errors/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/sets/empty.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/sets/string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/field/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/field/path.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/validation.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/kfns.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/mapnode.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/match.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/merge2/merge2.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/merge2/smpdirective.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/merge2/smpdirective_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/order.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/rnode.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/schema/schema.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/types.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/util.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/associative_sequence.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/map.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/nonassociative_sequence.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/scalar.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/visitor.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/walk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/yaml/kyaml/kyaml.go is excluded by !vendor/**
📒 Files selected for processing (2)
  • go.mod
  • tests/nmo-operator/tests/nmo_lifecycle.go

Comment thread go.mod
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
@ugreener
ugreener force-pushed the feat/nmo-lifecycle-tests branch from d02e743 to ba3b2c5 Compare August 2, 2026 10:15

@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: 1

🧹 Nitpick comments (1)
tests/nmo-operator/tests/nmo_lifecycle.go (1)

110-121: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider extracting the repeated node-uncordon wait into a helper.

The Eventually block checking !node.Object.Spec.Unschedulable is duplicated between AfterAll (Line 110-121) and "Stop node maintenance" (Line 313-322). A small helper, similar to deleteAndWaitForNMCR, e.g. waitForNodeSchedulable(nodeName string, timeout time.Duration), would remove the duplication and keep both call sites in sync if the check ever changes.

Also applies to: 313-322

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/nmo-operator/tests/nmo_lifecycle.go` around lines 110 - 121, The
node-uncordon polling logic is duplicated between the cleanup flow and “Stop
node maintenance.” Extract it into a shared waitForNodeSchedulable helper,
following the pattern of deleteAndWaitForNMCR, and replace both Eventually
blocks while preserving their timeout, poll interval, error handling, and
assertion behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/nmo-operator/tests/nmo_lifecycle.go`:
- Around line 144-148: Remove the DeferCleanup registration surrounding
deleteAndWaitForNMCR in the “Start node maintenance” setup, leaving the
NodeMaintenance CR and cordon intact for the remaining ordered lifecycle specs;
rely on “Stop node maintenance” for normal deletion and AfterAll for failure
cleanup.

---

Nitpick comments:
In `@tests/nmo-operator/tests/nmo_lifecycle.go`:
- Around line 110-121: The node-uncordon polling logic is duplicated between the
cleanup flow and “Stop node maintenance.” Extract it into a shared
waitForNodeSchedulable helper, following the pattern of deleteAndWaitForNMCR,
and replace both Eventually blocks while preserving their timeout, poll
interval, error handling, and assertion behavior.
🪄 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: 7ac35037-321d-49eb-a938-8eb9edfb47dc

📥 Commits

Reviewing files that changed from the base of the PR and between d02e743 and ba3b2c5.

⛔ Files ignored due to path filters (651)
  • go.sum is excluded by !**/*.sum
  • vendor/github.com/Azure/go-ansiterm/LICENSE is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/README.md is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/SECURITY.md is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/constants.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/context.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/csi_entry_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/csi_param_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/escape_intermediate_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/escape_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/event_handler.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/ground_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/osc_string_state.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/parser.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/parser_action_helpers.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/parser_actions.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/states.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/utilities.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/ansi.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/api.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/attr_translation.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/cursor_helpers.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/erase_helpers.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/scroll_helper.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/utilities.go is excluded by !vendor/**
  • vendor/github.com/Azure/go-ansiterm/winterm/win_event_handler.go is excluded by !vendor/**
  • vendor/github.com/MakeNowJust/heredoc/LICENSE is excluded by !vendor/**
  • vendor/github.com/MakeNowJust/heredoc/README.md is excluded by !vendor/**
  • vendor/github.com/MakeNowJust/heredoc/heredoc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/.travis.yml is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/LICENSE is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/README.md is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs_json.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs_os.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/fs_zip.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/gettext.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/locale.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/encoder.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/file.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/header.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/message.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/mo/util.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/plural/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/plural/formula.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/plural/table.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/comment.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/doc.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/file.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/header.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/line_reader.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/message.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/re.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/po/util.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/tr.go is excluded by !vendor/**
  • vendor/github.com/chai2010/gettext-go/util.go is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/.gitignore is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/.travis.yml is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/LICENSE is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/README.md is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/decoder.go is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/path.go is excluded by !vendor/**
  • vendor/github.com/exponent-io/jsonpath/pathaction.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/.travis.yml is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/LICENSE.MIT is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/README.md is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/error.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/error_1_13.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/error_backward.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/join_unwrap_1_20.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/join_unwrap_backward.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/parse_panic.go is excluded by !vendor/**
  • vendor/github.com/go-errors/errors/stackframe.go is excluded by !vendor/**
  • vendor/github.com/google/btree/LICENSE is excluded by !vendor/**
  • vendor/github.com/google/btree/README.md is excluded by !vendor/**
  • vendor/github.com/google/btree/btree.go is excluded by !vendor/**
  • vendor/github.com/google/btree/btree_generic.go is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/.travis.yml is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/LICENSE.txt is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/README.md is excluded by !vendor/**
  • vendor/github.com/gregjones/httpcache/httpcache.go is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/LICENSE is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/README.md is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/trap_others.go is excluded by !vendor/**
  • vendor/github.com/inconshreveable/mousetrap/trap_windows.go is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/.travis.yml is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/LICENSE is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/README.md is excluded by !vendor/**
  • vendor/github.com/liggitt/tabwriter/tabwriter.go is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/LICENSE is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/groupversion_info.go is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/nodemaintenance_types.go is excluded by !vendor/**
  • vendor/github.com/medik8s/node-maintenance-operator/api/v1beta1/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/github.com/mitchellh/go-wordwrap/LICENSE.md is excluded by !vendor/**
  • vendor/github.com/mitchellh/go-wordwrap/README.md is excluded by !vendor/**
  • vendor/github.com/mitchellh/go-wordwrap/wordwrap.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/NOTICE is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/connection.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/LICENSE is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/PATENTS is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/dictionary.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/options.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/read.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/types.go is excluded by !vendor/**
  • vendor/github.com/moby/spdystream/spdy/write.go is excluded by !vendor/**
  • vendor/github.com/moby/term/.gitignore is excluded by !vendor/**
  • vendor/github.com/moby/term/LICENSE is excluded by !vendor/**
  • vendor/github.com/moby/term/README.md is excluded by !vendor/**
  • vendor/github.com/moby/term/ascii.go is excluded by !vendor/**
  • vendor/github.com/moby/term/doc.go is excluded by !vendor/**
  • vendor/github.com/moby/term/proxy.go is excluded by !vendor/**
  • vendor/github.com/moby/term/term.go is excluded by !vendor/**
  • vendor/github.com/moby/term/term_unix.go is excluded by !vendor/**
  • vendor/github.com/moby/term/term_windows.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_bsd.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_nonbsd.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_unix.go is excluded by !vendor/**
  • vendor/github.com/moby/term/termios_windows.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/ansi_reader.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/ansi_writer.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/console.go is excluded by !vendor/**
  • vendor/github.com/moby/term/windows/doc.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/.travis.yml is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/LICENSE is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/README.md is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/depth_holder.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/full_scan_patterns.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/gitignore.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/index_scan_patterns.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/initial_holder.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/match.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/pattern.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/patterns.go is excluded by !vendor/**
  • vendor/github.com/monochromegane/go-gitignore/util.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/CHANGELOG.md is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/README.md is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/ginkgo/command/program.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/ginkgo/main.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/ginkgo_t_dsl.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/internal/testingtproxy/testing_t_proxy.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/types/config.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/types/flags.go is excluded by !vendor/**
  • vendor/github.com/onsi/ginkgo/v2/types/version.go is excluded by !vendor/**
  • vendor/github.com/onsi/gomega/CHANGELOG.md is excluded by !vendor/**
  • vendor/github.com/onsi/gomega/gomega_dsl.go is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/LICENSE is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/README.md is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/compression.go is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/diskv.go is excluded by !vendor/**
  • vendor/github.com/peterbourgon/diskv/index.go is excluded by !vendor/**
  • vendor/github.com/rh-ecosystem-edge/eco-goinfra/pkg/nodes/list.go is excluded by !vendor/**
  • vendor/github.com/rh-ecosystem-edge/eco-goinfra/pkg/nodes/node.go is excluded by !vendor/**
  • vendor/github.com/rh-ecosystem-edge/eco-goinfra/pkg/nodes/nodetypes.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/.gitignore is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/.travis.yml is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/LICENSE.txt is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/README.md is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/block.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/doc.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/entities.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/esc.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/html.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/inline.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/markdown.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/node.go is excluded by !vendor/**
  • vendor/github.com/russross/blackfriday/v2/smartypants.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/.gitignore is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/.golangci.yml is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/.mailmap is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/CONDUCT.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/CONTRIBUTING.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/LICENSE.txt is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/MAINTAINERS is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/Makefile is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/README.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/SECURITY.md is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/active_help.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/args.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/bash_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/bash_completionsV2.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/cobra.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/command.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/command_notwin.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/command_win.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/fish_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/flag_groups.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/powershell_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/shell_completions.go is excluded by !vendor/**
  • vendor/github.com/spf13/cobra/zsh_completions.go is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/.gitignore is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/LICENSE is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/README.md is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/helpers.go is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/struct.go is excluded by !vendor/**
  • vendor/github.com/xlab/treeprint/treeprint.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/hpack/tables.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/http2.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/server.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/transport.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go is excluded by !vendor/**
  • vendor/golang.org/x/net/http2/writesched_random.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/plan9/syscall_plan9.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/aliases.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/dll_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/security_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/sys/windows/syscall_windows.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/go/packages/golist.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/go/packages/packages.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/go/types/objectpath/objectpath.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/ureader.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/gocommand/version.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/pkgbits/version.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/typeparams/coretype.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/typesinternal/types.go is excluded by !vendor/**
  • vendor/golang.org/x/tools/internal/versions/features.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/generated.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/k8s.io/api/admission/v1/generated.proto is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/register.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/types.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/types_swagger_doc_generated.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1/zz_generated.prerelease-lifecycle.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/generated.pb.go is excluded by !**/*.pb.go, !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/generated.proto is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/register.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/types.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/types_swagger_doc_generated.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/zz_generated.prerelease-lifecycle.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/unstructuredscheme/scheme.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/util/duration/duration.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/util/version/doc.go is excluded by !vendor/**
  • vendor/k8s.io/apimachinery/pkg/util/version/version.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/builder_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/builder_flags_fake.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/client_config.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/command_headers.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/config_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/config_flags_fake.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/doc.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/filename_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/io_options.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/json_yaml_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/jsonpath_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/kube_template_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/name_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/print_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/record_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericclioptions/template_flags.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/genericiooptions/io_options.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/discard.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/doc.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/interface.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/json.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/jsonpath.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/kyaml.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/managedfields.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/name.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/sourcechecker.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/tableprinter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/tabwriter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/template.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/terminal.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/typesetter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/warningprinter.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/printers/yaml.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/builder.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/client.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/crd_finder.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/doc.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/fake.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/fallback_query_param_verifier.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/helper.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/interfaces.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/kustomizevisitor.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/mapper.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/metadata_decoder.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/query_param_verifier.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/query_param_verifier_v3.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/result.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/scheme.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/selector.go is excluded by !vendor/**
  • vendor/k8s.io/cli-runtime/pkg/resource/visitor.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/discovery/cached/disk/cached_discovery.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/discovery/cached/disk/round_tripper.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/discovery/cached/memory/memcache.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/openapi/cached/client.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/openapi/cached/groupversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/openapi3/root.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/client.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/interfaces.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsint/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsint/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta1/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/appsv1beta2/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/autoscalingv1/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsint/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsint/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/extensionsv1beta1/zz_generated.conversion.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/register.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/types.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/scheme/zz_generated.deepcopy.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/scale/util.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/PATENTS is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/template/exec.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/third_party/forked/golang/template/funcs.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/doc.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/jsonpath.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/node.go is excluded by !vendor/**
  • vendor/k8s.io/client-go/util/jsonpath/parser.go is excluded by !vendor/**
  • vendor/k8s.io/component-base/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/base.go is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/dynamic.go is excluded by !vendor/**
  • vendor/k8s.io/component-base/version/version.go is excluded by !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/util/proto/validation/errors.go is excluded by !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/util/proto/validation/types.go is excluded by !vendor/**
  • vendor/k8s.io/kube-openapi/pkg/util/proto/validation/validation.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/LICENSE is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/caching_verifier.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/env_file.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/factory.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/factory_client_access.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/helpers.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/kubectl_match_version.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/override_options.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/cmd/util/printing.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/cordon.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/default.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/drain.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/drain/filters.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/scheme/install.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/scheme/scheme.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/i18n.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/README.md is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/extract.py is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/de_DE/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/de_DE/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/default/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/default/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/en_US/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/en_US/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/fr_FR/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/fr_FR/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/it_IT/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/it_IT/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ja_JP/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ja_JP/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ko_KR/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/ko_KR/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/pt_BR/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/pt_BR/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/template.pot is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_CN/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_CN/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_TW/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/kubectl/zh_TW/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/default/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/default/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/en_US/LC_MESSAGES/k8s.mo is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/i18n/translations/test/en_US/LC_MESSAGES/k8s.po is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/interrupt/interrupt.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/OWNERS is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/doc.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/openapi.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/openapi/openapi_getter.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/command_groups.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/help_flags_printer.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/markdown.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/normalizers.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/templater.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/templates/templates.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/resize.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/resizeevents.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/resizeevents_windows.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/term.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/util/term/term_writer.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/validation/schema.go is excluded by !vendor/**
  • vendor/k8s.io/kubectl/pkg/validation/validation.go is excluded by !vendor/**
  • vendor/k8s.io/utils/exec/README.md is excluded by !vendor/**
  • vendor/k8s.io/utils/exec/doc.go is excluded by !vendor/**
  • vendor/k8s.io/utils/exec/exec.go is excluded by !vendor/**
  • vendor/modules.txt is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/LICENSE is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/annotations/annotations.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/annotations/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fieldspec/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fieldspec/fieldspec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/filtersutil/setters.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fsslice/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/fsslice/fsslice.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/iampolicygenerator/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/iampolicygenerator/iampolicygenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/imagetag.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/legacy.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/imagetag/updater.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/labels/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/labels/labels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/nameref/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/nameref/nameref.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/nameref/seqfilter.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/namespace/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/namespace/namespace.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchjson6902/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchjson6902/patchjson6902.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchstrategicmerge/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/patchstrategicmerge/patchstrategicmerge.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/prefix/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/prefix/prefix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/refvar/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/refvar/expand.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/refvar/refvar.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replacement/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replacement/replacement.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replicacount/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/replicacount/replicacount.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/suffix/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/suffix/suffix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/filters/valueadd/valueadd.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/hasher/hasher.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/ifc/ifc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/loadconfigfromcrds.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/namereferencetransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/refvartransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/accumulator/resaccumulator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/AnnotationsTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ConfigMapGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/HashTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/HelmChartInflationGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/IAMPolicyGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ImageTagTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/LabelTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/NamespaceTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PatchJson6902Transformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PatchStrategicMergeTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PatchTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/PrefixTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ReplacementTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ReplicaCountTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/SecretGenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/SortOrderTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/SuffixTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/ValueAddTransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/builtins/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/generators/configmap.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/generators/secret.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/generators/utils.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/git/cloner.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/git/gitrunner.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/git/repospec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/image/image.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/commonannotations.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/commonlabels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/defaultconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/images.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/metadatalabels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/nameprefix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/namereference.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/namespace.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/namesuffix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/replicas.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/templatelabels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/konfig/builtinpluginconsts/varreference.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/kusterr/yamlformaterror.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/fileloader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/loader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/loader/loadrestrictions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/loaddefaultconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/namebackreferences.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinconfig/transformerconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinhelpers/builtinplugintype_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/builtinhelpers/builtins.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/execplugin/execplugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/execplugin/shlex.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/fnplugin/fnplugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/loader/load_go_plugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/loader/load_go_plugin_disabled.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/loader/loader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/plugins/utils/utils.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/errmissingkustomization.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/kusttarget.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/kusttarget_configplugin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/target/multitransformer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/annotations.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/errtimeout.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/makeResIds.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/stringslice.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/utils/timedcall.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/internal/validate/fieldvalidator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/konfig/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/konfig/general.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/konfig/plugins.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/krusty/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/krusty/kustomizer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/krusty/options.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/kv/kv.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/provenance/provenance.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/provider/depprovider.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resmap/factory.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resmap/resmap.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resmap/reswrangler.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/factory.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/idset.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/origin.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/resource/resource.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/builtinpluginloadingoptions_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/configmapargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/erronlybuiltinpluginsallowed.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/errunabletofind.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/fieldspec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/generationbehavior.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/generatorargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/generatoroptions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/helmchartargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/iampolicygenerator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/image.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/kustomization.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/kvpairsources.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/labels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/loadrestrictions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/loadrestrictions_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/objectmeta.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pair.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/patch.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/patchargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/patchstrategicmerge.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pluginconfig.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pluginrestrictions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/pluginrestrictions_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/replacement.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/replacementfield.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/replica.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/secretargs.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/selector.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/sortoptions.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/typemeta.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/api/types/var.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/LICENSE is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/comments/comments.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/errors/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/ext/ext.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fieldmeta/fieldmeta.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/confirmeddir.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/file.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fileinfo.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fileondisk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/filesystem.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsnode.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsondisk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsondisk_unix.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/fsondisk_windows.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/filesys/util.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/container/container.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/exec/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/exec/exec.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/functiontypes.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/runtimeutil.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/fn/runtime/runtimeutil/types.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/byteio_reader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/byteio_writer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/ignorefilesmatcher.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/kio.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/kioutil/kioutil.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/pkgio_reader.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/pkgio_writer.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/kio/tree.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/Makefile is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/README.md is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/openapiinfo.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/v1_21_2/swagger.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kubernetesapi/v1_21_2/swagger.pb is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kustomizationapi/swagger.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/kustomizationapi/swagger.json is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/openapi/openapi.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/order/syncorder.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/resid/gvk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/resid/resid.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/runfn/runfn.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/sets/string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/sets/stringlist.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/sliceutil/slice.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/utils/pathsplitter.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/alias.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/compatibility.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/const.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/datamap.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/doc.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/filters.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/fns.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels/copied.deepcopy.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels/labels.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels/selector.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/selection/operator.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/errors/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/sets/empty.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/sets/string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/field/errors.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/field/path.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/util/validation/validation.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/kfns.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/mapnode.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/match.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/merge2/merge2.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/merge2/smpdirective.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/merge2/smpdirective_string.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/order.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/rnode.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/schema/schema.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/types.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/util.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/associative_sequence.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/map.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/nonassociative_sequence.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/scalar.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/visitor.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/kustomize/kyaml/yaml/walk/walk.go is excluded by !vendor/**
  • vendor/sigs.k8s.io/yaml/kyaml/kyaml.go is excluded by !vendor/**
📒 Files selected for processing (4)
  • go.mod
  • tests/nmo-operator/README.md
  • tests/nmo-operator/internal/nmoparams/const.go
  • tests/nmo-operator/tests/nmo_lifecycle.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • go.mod

Comment thread tests/nmo-operator/tests/nmo_lifecycle.go Outdated
@ugreener
ugreener force-pushed the feat/nmo-lifecycle-tests branch 12 times, most recently from ec66c43 to 2e3ebde Compare August 2, 2026 13:00
Port 4 NMO maintenance lifecycle tests from ocp-edge-auto to system-tests:
- OCP-29592: Start node maintenance (create CR, verify cordon/drain)
- OCP-29603: Schedule pod to node under maintenance (verify Pending)
- OCP-46761: Maintenance persists after node reboot
- OCP-29594: Stop node maintenance (delete CR, verify uncordon)

Tests run as an Ordered Ginkgo block with shared state. Node reboot
uses oc debug (no SSH, Prow-compatible). Adds NMO API v1beta1 as a
direct dependency for NodeMaintenance CR operations.

Jira: RHWA-1250

Co-Authored-By: Claude <noreply@anthropic.com>
@ugreener
ugreener force-pushed the feat/nmo-lifecycle-tests branch from 2e3ebde to 6692757 Compare August 2, 2026 13:07
@ugreener

ugreener commented Aug 2, 2026

Copy link
Copy Markdown
Author

/test 4.22-konflux-e2e-nmo-aws

@weshayutin weshayutin 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.

/LGTM

@razo7 razo7 left a comment

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.

The PR include many changes and I would merge it as it is for now. While there are some small gaps that we should consider in a follow up @ugreener


const (
schedulePodName = "nmo-schedule-test"
schedulePodNs = "default"

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.

NIT: tests should not create resources in the default namespace. Use a dedicated test namespace or medik8sparams.OperatorNs to avoid collisions with other workloads, parallel test suites, or restrictive RBAC policies on the default namespace.

}
})

It("Start node maintenance",

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.

Worth pointing out that the current coverage is weakened vs NMO source e2e (node_maintenance_test.go):
The source additionally validates

  • duplicate CR creation is rejected by the webhook
  • spec.NodeName patching is rejected (immutability)
  • workload drain/migration to another node. These are core NMO behaviors worth porting

Expect(APIClient.Create(context.Background(), nodeMaintenance)).To(Succeed(),
"Failed to create NodeMaintenance CR")

By("Waiting for NodeMaintenance to reach Succeeded phase")

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.

Small gap with source e2e, as it verifies that BeginMaintenance and SucceedMaintenance Kubernetes events are emitted. Events are the primary means of observability for operators, and we should consider adding event verification.


node, err := nodes.Pull(APIClient, targetNodeName)
Expect(err).ToNot(HaveOccurred())
Expect(node.Object.Spec.Unschedulable).To(BeTrue(),

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.

Small gap with source e2e, as it verifies the medik8s.io/drain NoSchedule taint (distinct from Unschedulable cordon) and validates maintenance lease creation (LeaseDurationSeconds, and HolderIdentity). The taint prevents pods with tolerations from scheduling; the lease signals to NHC that the node is under active maintenance.

Expect(err).ToNot(HaveOccurred(), "Failed to get boot ID before reboot")

By(fmt.Sprintf("Rebooting node %s via oc debug", targetNodeName))
_, _ = helpers.RunOnNode(context.Background(), targetNodeName, 2*time.Minute, "systemctl", "reboot")

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.

NIT: Hardcoded 2*time.Minute timeout. Per project convention, define as a constant in nmoparams/const.go (e.g., RunOnNodeTimeout). All other timeouts in this file correctly use nmoparams constants.

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.

Also, we don't verify that there are no errors, as RunOnNode returns a (string, error) pair and is considered "intentional" because the connection drops when the node reboots. Errors should not be discarded

Eventually(func(g Gomega) {
node, err := nodes.Pull(APIClient, targetNodeName)
g.Expect(err).ToNot(HaveOccurred())
g.Expect(node.Object.Spec.Unschedulable).To(BeTrue(),

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.

After reboot, also verify the medik8s.io/drain taint persists, since taints could theoretically be lost during node restart while cordon state (managed by kubelet) is preserved differently.

}, nmoparams.MaintenanceTimeout, nmoparams.DefaultPollInterval).Should(Succeed())
})

It("Stop node maintenance",

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.

Small gap with source e2e, as it verifies on stop: medik8s.io/drain taint removal, RemovedMaintenance event emission, and lease invalidation. Consider adding these checks for parity.


switch {
case err == nil:
Expect(APIClient.Delete(ctx, existing)).To(Succeed(),

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.

NIT: deleteAndWaitForNMCR uses Expect() and Eventually() directly. When assertions fail, the failure location points here instead of the caller. Use ExpectWithOffset(1, ...) and EventuallyWithOffset(1, ...) so failures report at the call site (lines 113, 345). Note: existing helpers in nmo.go have the same pattern, but fixing it here sets the right precedent.

Comment on lines +139 to +149
cleanupErr = APIClient.Get(context.Background(),
client.ObjectKey{Name: schedulePodName, Namespace: schedulePodNs}, testPod)

switch {
case cleanupErr == nil:
if delErr := APIClient.Delete(context.Background(), testPod); delErr != nil {
GinkgoWriter.Printf("WARNING: failed to delete schedule test pod: %v\n", delErr)
}
case !errors.IsNotFound(cleanupErr):
GinkgoWriter.Printf("WARNING: unexpected error checking schedule test pod: %v\n", cleanupErr)
}

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 logic can be used as a function :)

}, nmoparams.ScheduleCheckTimeout, nmoparams.DefaultPollInterval).Should(Equal(corev1.PodPending),
"Pod should remain Pending on a cordoned node")

By("Verifying pod was not scheduled (no nodeName assigned)")

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.

We can also look on nm CR status to see that the drain was not completed...

@openshift-ci

openshift-ci Bot commented Aug 9, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: razo7, ugreener, weshayutin

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 [razo7,ugreener,weshayutin]

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

@openshift-merge-bot
openshift-merge-bot Bot merged commit 0542793 into medik8s:main Aug 9, 2026
3 checks passed
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