Skip to content

Tryote#490

Open
huali9 wants to merge 6 commits intoopenshift:mainfrom
huali9:tryote
Open

Tryote#490
huali9 wants to merge 6 commits intoopenshift:mainfrom
huali9:tryote

Conversation

@huali9
Copy link
Contributor

@huali9 huali9 commented Mar 6, 2026

Summary by CodeRabbit

  • New Features

    • Added E2E testing infrastructure for the OpenTelemetry Extension with new build and test targets (extension, ote-test, ote-test-dry-run).
    • Extension binary is now included in the Docker image.
  • Documentation

    • Added comprehensive guide for running and configuring E2E tests with various execution modes, filtering options, and troubleshooting tips.
  • Chores

    • Updated build and test execution workflows to support E2E testing modes.
    • Removed unused dependency.

huali9 and others added 4 commits March 6, 2026 17:06
- Move cmd/extension to test/e2e/cmd/extension
- Remove test/e2e from go.work (make it independent)
- Remove test/e2e references from main go.mod
- Update Makefile to build extension with GOWORK=off
- test/e2e module now operates independently from main module

Single-Module Strategy ensures test/e2e is completely self-contained,
simplifying dependency management and avoiding workspace mode issues.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove test/e2e module dependencies from main repository vendor directory.
With Single-Module Strategy, test/e2e manages its own dependencies independently.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Move the OpenShift Tests Extension (OTE) module back to the e2e
directory at repository root, as it was originally located before
the Single-Module Strategy conversion.

Updated:
- Directory: test/e2e → e2e
- Makefile: extension and e2e targets
- hack/test.sh: path detection logic

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Update the e2e module to use the correct import path after moving
from test/e2e to e2e, and configure make targets to use the OTE
extension binary for running tests.

Changes:
- Update module name: test/e2e → e2e in go.mod
- Update all import paths in test files
- Update cmd/extension/main.go import path
- Update Makefile: make e2e now uses extension binary
- Keep *_tests.go naming (required for OTE import mechanism)

The *_tests.go naming (plural) is required because:
- *_test.go files are only compiled during 'go test', cannot be imported
- OTE extension needs to import the package to register tests
- *_tests.go files are regular Go files that can be imported

Both make e2e and make ote-test now use the extension binary,
ensuring consistent behavior with the OTE framework.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@openshift-ci-robot
Copy link

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 6, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

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

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

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

huali9 and others added 2 commits March 6, 2026 19:44
Update hack/vendor.sh to exclude the e2e module from workspace
processing, as it uses Single-Module Strategy with GOWORK=off.

Changes:
- Remove e2e from module tidy loop
- Remove e2e from module verify loop
- Remove 'go work use -r .' which auto-discovers all modules
- Add comment explaining e2e exclusion

This prevents e2e dependencies from being vendored into the main
repository's vendor directory.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add -mod=readonly flag to extension build to prevent Go from checking
the main repository's vendor directory, which doesn't contain e2e
module dependencies.

This fixes CI build errors like:
  "is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt"

The -mod=readonly flag ensures:
- e2e dependencies are loaded from module cache, not vendor/
- go.mod/go.sum are not modified during build
- Build is reproducible in CI environment

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 6, 2026

📝 Walkthrough

Walkthrough

This pull request introduces a new OpenTelemetry E2E test framework for the cluster CAPI operator. The changes add test infrastructure files, update the Makefile to support extension binary building and test execution, modify the Docker build to include the extension binary, adjust the test script to handle E2E test mode separately, update module workspace handling, and provide comprehensive test documentation.

Changes

Cohort / File(s) Summary
Build System & Configuration
Makefile, Dockerfile.rhel, go.mod, hack/vendor.sh
Updated PHONY targets to add extension, ote-test, and ote-test-dry-run targets; build and e2e targets now depend on extension binary. Dockerfile.rhel copies the extension binary into the final image. Removed indirect golang/mock dependency. Module workspace handling now explicitly excludes e2e module with GOWORK=off strategy.
E2E Test Framework
e2e/cmd/extension/main.go, e2e/doc.go, e2e/fixtures.go
New test entry point that parses flags, registers Gomega failure handling, and runs Ginkgo test suite. Added e2e package declaration and FixturePath utility function for constructing paths to test fixtures using runtime introspection.
Test Execution Script
hack/test.sh
Introduced E2E_MODE detection based on TEST_DIRS contents; conditional logic branches between module-based e2e test execution (via GOWORK=off) and standard vendor-enabled testing. Reworked command emission to cd into e2e directory for e2e tests.
Documentation
RUN_OTE_TESTS.md
New comprehensive guide covering prerequisites, test execution modes (dry-run, filtering by platform/migration, parallel execution, timeout configuration), output formats (JUnit, JSON), troubleshooting, best practices, and reference of available Ginkgo options.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A new test suite hops into place,
Building binaries, running with grace,
The e2e framework, so shiny and bright,
With fixtures and config, everything's right!
From docker to makefiles, the changes align,
Testing the cluster—oh, what a fine time! 🧪✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The PR title 'Tryote' is vague and does not meaningfully describe the substantial changes made, which involve restructuring e2e tests, adding OTE extension support, and updating build workflows. Use a more descriptive title that captures the main change, such as 'Restructure e2e tests with OpenTelemetry Extension (OTE) support' or 'Move e2e tests to single-module strategy with OTE extension'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.5.0)

Error: can't load config: unsupported version of the configuration: "" See https://golangci-lint.run/docs/product/migration-guide for migration instructions
The command is terminated due to an error: can't load config: unsupported version of the configuration: "" See https://golangci-lint.run/docs/product/migration-guide for migration instructions

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (5)
hack/vendor.sh (1)

10-10: Avoid duplicating the module list across loops.

Line 10 and Line 19 hardcode the same modules twice; this can drift and cause inconsistent tidy/verify behavior.

♻️ Suggested refactor
+modules=(. manifests-gen hack/tools)
+
 # Tidy all modules in the workspace
 echo "Running go mod tidy for all modules..."
 # Note: e2e is excluded from workspace (uses Single-Module Strategy with GOWORK=off)
-for module in . manifests-gen hack/tools; do
+for module in "${modules[@]}"; do
   if [ -f "$module/go.mod" ]; then
     echo "Tidying $module"
     (cd "$module" && go mod tidy)
@@
 # Verify all modules
 echo "Verifying all modules..."
-for module in . manifests-gen hack/tools; do
+for module in "${modules[@]}"; do
   if [ -f "$module/go.mod" ]; then
     echo "Verifying $module"
     (cd "$module" && go mod verify)

Also applies to: 19-19

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

In `@hack/vendor.sh` at line 10, The module list is duplicated in the two
for-loops (the literal ". manifests-gen hack/tools"); extract that list into a
single variable (e.g., MODULES) at the top of the script and replace each "for
module in . manifests-gen hack/tools; do" occurrence with "for module in
$MODULES; do" so both loops (the one starting at the shown for and the other at
the second similar for) iterate the same centralized value; update any comments
and ensure MODULES is quoted/space-separated appropriately.
RUN_OTE_TESTS.md (1)

211-217: Add language specifier to fenced code blocks.

The output format examples lack language specifiers. Adding text or plaintext satisfies markdown linting and improves rendering consistency.

📝 Suggested fix
 ### Default output
-```
+```text
 Running Suite: Cluster CAPI Operator E2E Suite

Apply similarly to lines 220 and 229.

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

In `@RUN_OTE_TESTS.md` around lines 211 - 217, Add a language specifier (e.g.,
text or plaintext) to the fenced code blocks in RUN_OTE_TESTS.md that show the
test output examples (the blocks starting with "Running Suite: Cluster CAPI
Operator E2E Suite" and the subsequent output examples) so they read ```text
instead of ```; update all three example fences to include the specifier to
satisfy markdown linting and improve rendering consistency.
e2e/fixtures.go (1)

14-14: Minor: Comment path doesn't match actual structure.

The comment says test/e2e/fixtures/{elem...} but based on the file location (e2e/fixtures.go), the actual path would be e2e/fixtures/{elem...}.

📝 Suggested fix
-	// Build path: test/e2e/fixtures/{elem...}
+	// Build path: e2e/fixtures/{elem...}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@e2e/fixtures.go` at line 14, Update the inline comment string "// Build path:
test/e2e/fixtures/{elem...}" to match the actual structure by changing
"test/e2e/fixtures/{elem...}" to "e2e/fixtures/{elem...}" so the build path
comment in e2e/fixtures.go accurately reflects the repository layout.
hack/test.sh (1)

48-54: Redundant conditional: both branches produce identical result.

The if/else block sets ARTIFACT_DIR_ARG to the same value ("${ARTIFACT_DIR}") in both branches. This appears to be scaffolding for future differentiation or leftover from refactoring.

♻️ Suggested simplification
-  # For e2e mode, artifact dir needs to be relative to e2e or absolute
-  if [ "$E2E_MODE" = true ]; then
-    ARTIFACT_DIR_ARG="${ARTIFACT_DIR}"
-  else
-    ARTIFACT_DIR_ARG="${ARTIFACT_DIR}"
-  fi
+  ARTIFACT_DIR_ARG="${ARTIFACT_DIR}"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hack/test.sh` around lines 48 - 54, The if/else that sets ARTIFACT_DIR_ARG
based on E2E_MODE is redundant because both branches assign ARTIFACT_DIR; remove
the conditional and directly set ARTIFACT_DIR_ARG="${ARTIFACT_DIR}" before
appending to GINKGO_ARGS, keeping the subsequent GINKGO_ARGS="${GINKGO_ARGS}
--cover --coverprofile=test-unit-coverage.out --output-dir=${ARTIFACT_DIR_ARG}"
line unchanged; update or remove any comments about e2e-specific behavior if no
longer applicable.
Makefile (1)

32-32: Consider whether extension should be part of the default build target.

The extension binary is a test tool (E2E test runner), but it's now built as part of the main build target alongside production binaries. This may increase build times unnecessarily for development workflows that don't need E2E tests.

If this is intentional (e.g., for CI image builds), this is fine. Otherwise, consider removing it from build dependencies.

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

In `@Makefile` at line 32, The build target currently depends on the test tool
binary "extension", which makes the main "build" target compile E2E test code
and slows local development; remove "extension" from the dependency list for the
"build" target (or replace with a new CI-specific target like "build-ci" that
includes "extension") and add a separate phony target (e.g., "build-e2e" or
"extension") to build the test runner when needed; update Makefile targets
"build", the new CI/extension target, and any CI scripts that expect "extension"
to be built so CI still builds it.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@e2e/cmd/extension/main.go`:
- Around line 14-21: The current main() incorrectly calls ginkgo.RunSpecs() with
ginkgo.GinkgoT(); move the suite entry into a proper Go test function instead:
create a Test function (e.g., TestClusterCAPIOperatorE2E(t *testing.T)) that
calls gomega.RegisterFailHandler(ginkgo.Fail) and ginkgo.RunSpecs(t, "Cluster
CAPI Operator E2E Suite"), remove or stop using ginkgo.RunSpecs/ginkgo.GinkgoT
from main(), and ensure main() is not used to drive Ginkgo v2 suites (or remove
main entirely and build/run as a test binary).

In `@RUN_OTE_TESTS.md`:
- Around line 145-148: The comment claiming "Stop after 3 test failures" is
misleading because the flags shown (--ginkgo.fail-on-pending and
--ginkgo.flake-attempts=3) do not implement that behavior; update the
documentation to either (a) correct the description to explain that
--ginkgo.flake-attempts=3 retries failures up to 3 times and
--ginkgo.fail-on-pending fails on pending specs, or (b) replace the example with
the correct flag (--ginkgo.fail-fast) if you intend to stop on the first
failure; mention the exact flags (--ginkgo.fail-on-pending,
--ginkgo.flake-attempts, --ginkgo.fail-fast) so the maintainer can locate and
edit the example accordingly.

---

Nitpick comments:
In `@e2e/fixtures.go`:
- Line 14: Update the inline comment string "// Build path:
test/e2e/fixtures/{elem...}" to match the actual structure by changing
"test/e2e/fixtures/{elem...}" to "e2e/fixtures/{elem...}" so the build path
comment in e2e/fixtures.go accurately reflects the repository layout.

In `@hack/test.sh`:
- Around line 48-54: The if/else that sets ARTIFACT_DIR_ARG based on E2E_MODE is
redundant because both branches assign ARTIFACT_DIR; remove the conditional and
directly set ARTIFACT_DIR_ARG="${ARTIFACT_DIR}" before appending to GINKGO_ARGS,
keeping the subsequent GINKGO_ARGS="${GINKGO_ARGS} --cover
--coverprofile=test-unit-coverage.out --output-dir=${ARTIFACT_DIR_ARG}" line
unchanged; update or remove any comments about e2e-specific behavior if no
longer applicable.

In `@hack/vendor.sh`:
- Line 10: The module list is duplicated in the two for-loops (the literal ".
manifests-gen hack/tools"); extract that list into a single variable (e.g.,
MODULES) at the top of the script and replace each "for module in .
manifests-gen hack/tools; do" occurrence with "for module in $MODULES; do" so
both loops (the one starting at the shown for and the other at the second
similar for) iterate the same centralized value; update any comments and ensure
MODULES is quoted/space-separated appropriately.

In `@Makefile`:
- Line 32: The build target currently depends on the test tool binary
"extension", which makes the main "build" target compile E2E test code and slows
local development; remove "extension" from the dependency list for the "build"
target (or replace with a new CI-specific target like "build-ci" that includes
"extension") and add a separate phony target (e.g., "build-e2e" or "extension")
to build the test runner when needed; update Makefile targets "build", the new
CI/extension target, and any CI scripts that expect "extension" to be built so
CI still builds it.

In `@RUN_OTE_TESTS.md`:
- Around line 211-217: Add a language specifier (e.g., text or plaintext) to the
fenced code blocks in RUN_OTE_TESTS.md that show the test output examples (the
blocks starting with "Running Suite: Cluster CAPI Operator E2E Suite" and the
subsequent output examples) so they read ```text instead of ```; update all
three example fences to include the specifier to satisfy markdown linting and
improve rendering consistency.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: fa4575fd-16d5-4e06-8f13-3675238cfb0b

📥 Commits

Reviewing files that changed from the base of the PR and between db34340 and ad20a66.

⛔ Files ignored due to path filters (279)
  • go.sum is excluded by !**/*.sum
  • go.work is excluded by !**/*.work
  • go.work.sum is excluded by !**/*.sum
  • vendor/github.com/aws/aws-sdk-go/LICENSE.txt is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/NOTICE.txt is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/auth/bearer/token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/awserr/error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/awserr/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/awsutil/copy.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/awsutil/equal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/awsutil/path_value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/awsutil/prettify.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/client/client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/client/default_retryer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/client/logger.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/client/metadata/client_info.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/client/no_op_retryer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/context_1_5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/context_background_1_5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/convert_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/corehandlers/awsinternal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/corehandlers/param_validator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/chain_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/context_background_go1.7.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/context_go1.9.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds/ec2_role_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/endpointcreds/provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/example.ini is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/shared_credentials_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/os_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/sso_cached_token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/ssocreds/token_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/static_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/assume_role_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/credentials/stscreds/web_identity_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/csm/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/csm/enable.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/csm/metric_chan.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/defaults/defaults.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/defaults/shared_config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/token_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/legacy_regions.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/jsonvalue.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/logger.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/connection_reset_error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/http_request.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/offset_reader.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/request.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/request_1_7.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/request_1_8.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/request_context.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/request_context_1_6.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/request_pagination.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/timeout_read_closer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/validation.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/request/waiter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/credentials.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport_go1.12.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport_go1.5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/custom_transport_go1.6.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/session.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/signer/v4/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/signer/v4/request_context_go1.7.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/signer/v4/stream.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/signer/v4/uri_path.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/url.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/url_1_7.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/aws/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/context/background_go1.5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/ast.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/comma_token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/comment_token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/empty_token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/expression.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/fuzz.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/ini.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/ini_lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/literal_tokens.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/newline_token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/number_helper.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/op_tokens.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/parse_error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/parse_stack.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/sep_tokens.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/skipper.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/value_util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/visitor.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/walker.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/ini/ws_token.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkio/byte.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.6.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkio/io_go1.7.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkmath/floor_go1.9.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkrand/locked_source.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkrand/read_1_5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sdkuri/path.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config_resolve_home.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/shared_config_resolve_home_go1.12.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/strings/strings.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sync/singleflight/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/internal/sync/singleflight/singleflight.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/build.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/ec2query/unmarshal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/host.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/idempotency.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/build.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/json/jsonutil/unmarshal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/jsonrpc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/jsonrpc/unmarshal_error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/jsonvalue.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/protocol.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/query/build.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/query/queryutil/queryutil.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/query/unmarshal_error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/rest/build.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/rest/payload.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/restjson.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/restjson/unmarshal_error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/timestamp.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal_error.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/build.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/sort.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/unmarshal.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil/xml_to_struct.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ec2/api.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ec2/customizations.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ec2/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ec2/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ec2/service.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ec2/waiters.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/kms/api.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/kms/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/kms/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/kms/service.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sso/api.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sso/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sso/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sso/service.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sso/ssoiface/interface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ssooidc/api.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ssooidc/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ssooidc/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/ssooidc/service.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sts/api.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sts/customizations.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sts/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sts/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sts/service.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/aws/aws-sdk-go/service/sts/stsiface/interface.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/go-cmp/cmp/cmpopts/equate.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/go-cmp/cmp/cmpopts/ignore.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/go-cmp/cmp/cmpopts/sort.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/go-cmp/cmp/cmpopts/struct_filter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/go-cmp/cmp/cmpopts/xform.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/Makefile is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/NOTICE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/api.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/astnodetype_string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/functions.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/interpreter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/lexer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/parser.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/toktype_string.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/jmespath/go-jmespath/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/baremetalhost_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/baremetalhost_validation.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/baremetalhost_webhook.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/bmceventsubscription_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/bmceventsubscription_validation.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/bmceventsubscription_webhook.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/firmwareschema_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/groupversion_info.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/hardwaredata_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/hostfirmwaresettings_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/preprovisioningimage_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/apis/metal3.io/v1alpha1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/access.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/credentials.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/ibmc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/idrac.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/idrac_virtualmedia.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/ilo4.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/ilo5.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/ipmi.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/irmc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/redfish.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/metal3-io/baremetal-operator/pkg/hardwareutils/bmc/redfish_virtualmedia.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/aws_client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/capi_machines.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/capi_machinesets.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/cluster.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/clusterautoscalers.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/daemonset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/deployment.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/framework.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/gatherer/data-gatherer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/gatherer/oc-cli.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/gcp_client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/ginkgo-labels.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/jobs.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/machinehealthcheck.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/machines.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/machinesets.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/nodes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/pods.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/proxies.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/services.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/utils.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/pkg/framework/webhooks.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/apps/v1/daemonset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/cluster-api/core/v1beta1/cluster.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/cluster-api/core/v1beta1/machine.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/cluster-api/core/v1beta1/machineset.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-provider-baremetal/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-provider-baremetal/pkg/apis/baremetal/v1alpha1/baremetalmachineproviderspec_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-provider-baremetal/pkg/apis/baremetal/v1alpha1/baremetalmachineproviderstatus_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-provider-baremetal/pkg/apis/baremetal/v1alpha1/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-provider-baremetal/pkg/apis/baremetal/v1alpha1/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-api-provider-baremetal/pkg/apis/baremetal/v1alpha1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/openshift/cluster-autoscaler-operator/LICENSE is excluded by !**/vendor/**, !vendor/**
📒 Files selected for processing (21)
  • Dockerfile.rhel
  • Makefile
  • RUN_OTE_TESTS.md
  • e2e/aws_tests.go
  • e2e/azure_tests.go
  • e2e/baremetal_tests.go
  • e2e/cmd/extension/main.go
  • e2e/doc.go
  • e2e/e2e_tests.go
  • e2e/fixtures.go
  • e2e/gcp_tests.go
  • e2e/machine_migration_capi_authoritative_tests.go
  • e2e/machine_migration_mapi_authoritative_tests.go
  • e2e/machineset_migration_capi_authoritative_tests.go
  • e2e/machineset_migration_mapi_authoritative_tests.go
  • e2e/openstack_tests.go
  • e2e/powervs_tests.go
  • e2e/vsphere_tests.go
  • go.mod
  • hack/test.sh
  • hack/vendor.sh
💤 Files with no reviewable changes (1)
  • go.mod

Comment on lines +14 to +21
func main() {
flag.Parse()
gomega.RegisterFailHandler(ginkgo.Fail)

success := ginkgo.RunSpecs(ginkgo.GinkgoT(), "Cluster CAPI Operator E2E Suite")
if !success {
os.Exit(1)
}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

Ginkgo v2 RunSpecs standalone binary GinkgoT usage pattern

💡 Result:

RunSpecs + “standalone binary” (precompiled suite) pattern (Ginkgo v2)

  1. Keep the normal suite entrypoint (still required):
func TestMySuite(t *testing.T) {
  RegisterFailHandler(Fail)
  RunSpecs(t, "My Suite")
}

RunSpecs is the Ginkgo spec-runner entrypoint and is intended to be called from a TestX(t *testing.T) function. [2]

  1. Build a standalone *.test binary and run it:
ginkgo build ./path/to/suite
# produces: package-name.test
./package-name.test          # run directly
# or
ginkgo package-name.test     # run via ginkgo

For parallel execution of a precompiled suite, invoke it via the CLI:

ginkgo -p ./path/to/suite.test

[1]


GinkgoT() usage pattern (why/when/how)

Use GinkgoT() inside your specs when a third-party library wants something *testing.T-like (or accepts it via an interface), e.g. gomock/testify:

var _ = Describe("Consumer", func() {
  var ctrl *gomock.Controller

  BeforeEach(func() {
    ctrl = gomock.NewController(GinkgoT())
  })

  It("does stuff", func() {
    // ...
  })
})

Ginkgo documents GinkgoT() specifically for plugging Ginkgo specs into libraries that expect *testing.T behavior; it also supports Cleanup() semantics (so gomock can auto-register Finish()), and for testing.TB you should use GinkgoTB(). [3]


🏁 Script executed:

find . -name "go.mod" -type f | head -5

Repository: openshift/cluster-capi-operator

Length of output: 139


🏁 Script executed:

cat ./e2e/go.mod | grep -i ginkgo

Repository: openshift/cluster-capi-operator

Length of output: 109


🏁 Script executed:

cat ./go.mod | grep -i ginkgo

Repository: openshift/cluster-capi-operator

Length of output: 197


🏁 Script executed:

head -20 e2e/cmd/extension/main.go

Repository: openshift/cluster-capi-operator

Length of output: 445


Incorrect usage of ginkgo.RunSpecs() and ginkgo.GinkgoT() in standalone binary.

According to Ginkgo v2 documentation, RunSpecs() must be called from a TestX(t *testing.T) function, not from main(). Additionally, GinkgoT() is intended exclusively for use inside test specs to pass to libraries that expect *testing.T (e.g., gomock), not as an argument to RunSpecs().

For a standalone test binary entry point, either:

  1. Create a proper test function: func TestMySuite(t *testing.T) { RegisterFailHandler(Fail); RunSpecs(t, "...") }
  2. Use ginkgo build ./path/to/suite to produce a .test binary and run it directly or via the Ginkgo CLI
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@e2e/cmd/extension/main.go` around lines 14 - 21, The current main()
incorrectly calls ginkgo.RunSpecs() with ginkgo.GinkgoT(); move the suite entry
into a proper Go test function instead: create a Test function (e.g.,
TestClusterCAPIOperatorE2E(t *testing.T)) that calls
gomega.RegisterFailHandler(ginkgo.Fail) and ginkgo.RunSpecs(t, "Cluster CAPI
Operator E2E Suite"), remove or stop using ginkgo.RunSpecs/ginkgo.GinkgoT from
main(), and ensure main() is not used to drive Ginkgo v2 suites (or remove main
entirely and build/run as a test binary).

Comment on lines +145 to +148

# Stop after 3 test failures
./bin/extension --ginkgo.fail-on-pending --ginkgo.flake-attempts=3
```
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Misleading description: options don't match the stated behavior.

The comment says "Stop after 3 test failures" but:

  • --ginkgo.fail-on-pending causes the suite to fail if there are pending specs, not after N failures
  • --ginkgo.flake-attempts=3 retries failed tests up to 3 times before marking them as failed

To stop after the first failure, --ginkgo.fail-fast (shown above) is correct. Consider revising or removing this example.

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

In `@RUN_OTE_TESTS.md` around lines 145 - 148, The comment claiming "Stop after 3
test failures" is misleading because the flags shown (--ginkgo.fail-on-pending
and --ginkgo.flake-attempts=3) do not implement that behavior; update the
documentation to either (a) correct the description to explain that
--ginkgo.flake-attempts=3 retries failures up to 3 times and
--ginkgo.fail-on-pending fails on pending specs, or (b) replace the example with
the correct flag (--ginkgo.fail-fast) if you intend to stop on the first
failure; mention the exact flags (--ginkgo.fail-on-pending,
--ginkgo.flake-attempts, --ginkgo.fail-fast) so the maintainer can locate and
edit the example accordingly.

@huali9
Copy link
Contributor Author

huali9 commented Mar 6, 2026

/test e2e-aws-capi-techpreview

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 6, 2026

@huali9: all tests passed!

Full PR test history. Your PR dashboard.

Details

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

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants