Skip to content

NO-JIRA: Do not import external dependencies into API packages#8355

Merged
openshift-merge-bot[bot] merged 3 commits intoopenshift:mainfrom
JoelSpeed:no-api-external-deps
Apr 28, 2026
Merged

NO-JIRA: Do not import external dependencies into API packages#8355
openshift-merge-bot[bot] merged 3 commits intoopenshift:mainfrom
JoelSpeed:no-api-external-deps

Conversation

@JoelSpeed
Copy link
Copy Markdown
Contributor

@JoelSpeed JoelSpeed commented Apr 28, 2026

What this PR does / why we need it:

By including utility functionality in the API module, this pollutes the imports and causes issues for external contributors. For example, having the karpenter dependency pins external importers of the APIs to K8s 0.34 because of the reliance on an outdated openshift fork of karpenter.

Utils should live separately, in this case they were only used in one location so I've moved them directly to the call site package.

Please do not allow util functions in the API module again.

Which issue(s) this PR fixes:

Fixes

Special notes for your reviewer:

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Summary by CodeRabbit

  • Chores
    • Simplified the project's dependency set by removing numerous unused transitive packages to improve build clarity and maintainability.
    • Removed several compatibility overrides and replace directives to streamline dependency resolution and reduce potential conflicts.
    • Added a small lightweight text utility dependency to support development and testing tasks.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Apr 28, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@JoelSpeed: This pull request explicitly references no jira issue.

Details

In response to this:

What this PR does / why we need it:

By including utility functionality in the API module, this pollutes the imports and causes issues for external contributors. For example, having the karpenter dependency pins external importers of the APIs to K8s 0.34 because of the reliance on an outdated openshift fork of karpenter.

Utils should live separately, in this case they were only used in one location so I've moved them directly to the call site package.

Please do not allow util functions in the API module again.

Which issue(s) this PR fixes:

Fixes

Special notes for your reviewer:

Checklist:

  • Subject and description added to both, commit and PR.
  • Relevant issues have been referenced.
  • This change includes docs.
  • This change includes unit tests.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 28, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 28, 2026

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

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 28, 2026

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 api/go.mod file was modified to reduce the dependency graph: the direct github.com/aws/karpenter-provider-aws requirement and related replace directives (OpenShift AWS provider and Karpenter fork) were removed, and many indirect modules were pruned (notably AWS SDK v2, OpenAPI/json-patch, Prometheus/cron, Cobra, Zap, Multierr, multiple golang.org/x/* modules, and Kubernetes/controller-runtime/Karpenter transitive deps). A single new indirect module github.com/kr/text v0.2.0 was added. No public Go APIs were changed.

🚥 Pre-merge checks | ✅ 12
✅ Passed checks (12 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main change: removing external dependencies from the API module by eliminating utility functions that were causing dependency bloat in go.mod.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
Stable And Deterministic Test Names ✅ Passed PR only modifies api/go.mod with no test file changes. Existing tests use standard Go testing, not Ginkgo, so custom check for Ginkgo test names does not apply.
Test Structure And Quality ✅ Passed Custom check for Ginkgo test structure is not applicable; PR only modifies api/go.mod dependency file with no test file changes.
Microshift Test Compatibility ✅ Passed This PR only modifies the api/go.mod dependency file, removing external dependencies. No new Ginkgo e2e tests are added, so the MicroShift Test Compatibility check does not apply.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This pull request does not add any new Ginkgo e2e tests. The PR exclusively modifies api/go.mod to remove external dependencies. Since the SNO compatibility check applies only when new Ginkgo e2e tests are added, and this PR contains no new test additions, the check is not applicable and therefore passes.
Topology-Aware Scheduling Compatibility ✅ Passed PR only modifies api/go.mod and configuration files; no deployment manifests, operator code, or controllers are added or modified.
Ote Binary Stdout Contract ✅ Passed PR modifies only api/go.mod, a dependency declaration file with no executable code. OTE Binary Stdout Contract applies solely to process-level code. go.mod files cannot contain executable code, therefore no violations possible.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR exclusively modifies api/go.mod to remove dependencies and does not add or modify any Ginkgo e2e tests.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci openshift-ci Bot added the area/api Indicates the PR includes changes for the API label Apr 28, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 28, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JoelSpeed

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

The pull request process is described here

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

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

@openshift-ci openshift-ci Bot added approved Indicates a PR has been approved by an approver from all required OWNERS files. and removed do-not-merge/needs-area labels Apr 28, 2026
@JoelSpeed JoelSpeed force-pushed the no-api-external-deps branch from ef883fd to ba1451d Compare April 28, 2026 08:20
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 36.36%. Comparing base (e1903d5) to head (54ecdea).
⚠️ Report is 10 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8355      +/-   ##
==========================================
+ Coverage   36.30%   36.36%   +0.05%     
==========================================
  Files         764      765       +1     
  Lines       93019    93138     +119     
==========================================
+ Hits        33775    33873      +98     
- Misses      56531    56551      +20     
- Partials     2713     2714       +1     

see 1 file with indirect coverage changes

Flag Coverage Δ
cmd-support 30.02% <ø> (ø)
cpo-hostedcontrolplane 37.05% <ø> (ø)
cpo-other 35.69% <ø> (ø)
hypershift-operator 47.89% <ø> (ø)
other 28.37% <ø> (+0.69%) ⬆️

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

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

Copy link
Copy Markdown
Contributor

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

🧹 Nitpick comments (1)
api/go.mod (1)

36-38: Remove orphaned karpenter replace directives.

Lines 36-38 contain replace directives for karpenter packages that are no longer in the dependency graph. The go mod why command confirms that neither github.com/aws/karpenter-provider-aws nor sigs.k8s.io/karpenter are required by the main module. Go only applies replace directives to modules that are actually needed; these directives serve no purpose and should be deleted to keep the module file clean.

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

In `@api/go.mod` around lines 36 - 38, Remove the two orphaned replace directives
for modules github.com/aws/karpenter-provider-aws and sigs.k8s.io/karpenter from
go.mod: delete the lines starting with "replace
github.com/aws/karpenter-provider-aws =>
github.com/openshift/aws-karpenter-provider-aws ..." and "replace
sigs.k8s.io/karpenter => github.com/openshift/kubernetes-sigs-karpenter ...",
since go mod why shows neither module is in the dependency graph and replace
directives only apply to required modules; after removal run go mod tidy to
verify no regressions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@api/go.mod`:
- Line 17: Remove the unnecessary indirect dependency entry
"github.com/stretchr/testify v1.11.1" from api/go.mod (leave the
"github.com/kr/text v0.2.0 // indirect" entry intact), then run go mod tidy to
update the module graph and regenerate go.sum; ensure only transitive deps
required by the YAML chain remain and verify with go mod why that testify is no
longer listed.

---

Nitpick comments:
In `@api/go.mod`:
- Around line 36-38: Remove the two orphaned replace directives for modules
github.com/aws/karpenter-provider-aws and sigs.k8s.io/karpenter from go.mod:
delete the lines starting with "replace github.com/aws/karpenter-provider-aws =>
github.com/openshift/aws-karpenter-provider-aws ..." and "replace
sigs.k8s.io/karpenter => github.com/openshift/kubernetes-sigs-karpenter ...",
since go mod why shows neither module is in the dependency graph and replace
directives only apply to required modules; after removal run go mod tidy to
verify no regressions.
🪄 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: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 10ee4d15-7aca-442f-9d2f-678d3a67d641

📥 Commits

Reviewing files that changed from the base of the PR and between 222a19f and ef883fd.

⛔ Files ignored due to path filters (299)
  • api/go.sum is excluded by !**/*.sum
  • api/vendor/github.com/aws/aws-sdk-go-v2/service/ec2/LICENSE.txt is excluded by !**/vendor/**
  • api/vendor/github.com/aws/aws-sdk-go-v2/service/ec2/types/enums.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/aws-sdk-go-v2/service/ec2/types/types.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/NOTICE is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/apis.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/crds/karpenter.k8s.aws_ec2nodeclasses.yaml is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/crds/karpenter.sh_nodeclaims.yaml is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/crds/karpenter.sh_nodeoverlays.yaml is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/crds/karpenter.sh_nodepools.yaml is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/v1/doc.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/v1/ec2nodeclass.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/v1/ec2nodeclass_defaults.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/v1/ec2nodeclass_status.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/v1/labels.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/karpenter-provider-aws/pkg/apis/v1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !**/zz_generated*.go, !**/zz_generated*
  • api/vendor/github.com/aws/smithy-go/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/aws/smithy-go/NOTICE is excluded by !**/vendor/**
  • api/vendor/github.com/aws/smithy-go/document/doc.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/smithy-go/document/document.go is excluded by !**/vendor/**
  • api/vendor/github.com/aws/smithy-go/document/errors.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/NOTICE is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/metrics/metrics.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/metrics/multi.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/metrics/prometheus.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/metrics/types.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/object/object.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/option/environment.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/option/function.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/serrors/logger.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/serrors/serrors.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/status/condition.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/status/condition_set.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/status/controller.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/status/doc.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/status/metrics.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/status/unstructured_adapter.go is excluded by !**/vendor/**
  • api/vendor/github.com/awslabs/operatorpkg/status/zz_generated.deepcopy.go is excluded by !**/vendor/**, !**/zz_generated*.go, !**/zz_generated*
  • api/vendor/github.com/awslabs/operatorpkg/unstructured/unstructured.go is excluded by !**/vendor/**
  • api/vendor/github.com/beorn7/perks/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/beorn7/perks/quantile/exampledata.txt is excluded by !**/vendor/**
  • api/vendor/github.com/beorn7/perks/quantile/stream.go is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/LICENSE.txt is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/testall.sh is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/xxhash.go is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.s is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/xxhash_arm64.s is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/xxhash_other.go is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go is excluded by !**/vendor/**
  • api/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/bypass.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/bypasssafe.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/common.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/config.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/doc.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/dump.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/format.go is excluded by !**/vendor/**
  • api/vendor/github.com/davecgh/go-spew/spew/spew.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/.goconvey is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/.travis.yml is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/CHANGES.md is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/Makefile is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/SECURITY.md is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/Srcfile is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/bench_test.sh is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/compress.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/compressor_cache.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/compressor_pools.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/compressors.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/constants.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/container.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/cors_filter.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/coverage.sh is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/curly.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/curly_route.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/custom_verb.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/doc.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/entity_accessors.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/extensions.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/filter.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/filter_adapter.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/jsr311.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/log/log.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/logger.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/mime.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/options_filter.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/parameter.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/path_expression.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/path_processor.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/request.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/response.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/route.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/route_builder.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/route_reader.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/router.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/service_error.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/web_service.go is excluded by !**/vendor/**
  • api/vendor/github.com/emicklei/go-restful/v3/web_service_container.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/errors.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/decode.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/encode.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/fold.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/fuzz.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/indent.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/scanner.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/stream.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/tables.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/internal/json/tags.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/merge.go is excluded by !**/vendor/**
  • api/vendor/github.com/evanphx/json-patch/v5/patch.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/.cirrus.yml is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/.mailmap is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/backend_fen.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/backend_inotify.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/backend_kqueue.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/backend_other.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/backend_windows.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/fsnotify.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/darwin.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_darwin.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_dragonfly.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_freebsd.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_kqueue.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_linux.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_netbsd.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_openbsd.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_solaris.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/debug_windows.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/freebsd.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/internal.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/unix.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/unix2.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/internal/windows.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/shared.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/staticcheck.conf is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/system_bsd.go is excluded by !**/vendor/**
  • api/vendor/github.com/fsnotify/fsnotify/system_darwin.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/.editorconfig is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/.golangci.yml is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/CODE_OF_CONDUCT.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/errors.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonpointer/pointer.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonreference/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonreference/.golangci.yml is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonreference/CODE_OF_CONDUCT.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonreference/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonreference/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonreference/internal/normalize_url.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/jsonreference/reference.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/.editorconfig is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/.gitattributes is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/.golangci.yml is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/BENCHMARK.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/CODE_OF_CONDUCT.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/convert.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/convert_types.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/doc.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/errors.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/file.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/initialism_index.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/json.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/loading.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/name_lexem.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/net.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/path.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/split.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/string_bytes.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/util.go is excluded by !**/vendor/**
  • api/vendor/github.com/go-openapi/swag/yaml.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/btree/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/google/btree/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/btree/btree.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/btree/btree_generic.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/compiler/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/compiler/context.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/compiler/error.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/compiler/extensions.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/compiler/helpers.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/compiler/main.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/compiler/reader.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/extensions/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/extensions/extension.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !**/*.pb.go
  • api/vendor/github.com/google/gnostic-models/extensions/extension.proto is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/extensions/extensions.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/base.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/display.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/models.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/operations.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/reader.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/schema.json is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/jsonschema/writer.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !**/*.pb.go
  • api/vendor/github.com/google/gnostic-models/openapiv2/OpenAPIv2.proto is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv2/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv2/document.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv2/openapi-2.0.json is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !**/*.pb.go
  • api/vendor/github.com/google/gnostic-models/openapiv3/OpenAPIv3.proto is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv3/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv3/annotations.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !**/*.pb.go
  • api/vendor/github.com/google/gnostic-models/openapiv3/annotations.proto is excluded by !**/vendor/**
  • api/vendor/github.com/google/gnostic-models/openapiv3/document.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/compare.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/export.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/function/func.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/value/name.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/value/pointer.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/options.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/path.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/report.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/report_compare.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/report_references.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/report_reflect.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/report_slices.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/report_text.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/go-cmp/cmp/report_value.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/CHANGELOG.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/CONTRIBUTING.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/CONTRIBUTORS is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/dce.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/doc.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/hash.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/marshal.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/node.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/node_js.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/node_net.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/null.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/sql.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/time.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/util.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/uuid.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/version1.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/version4.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/version6.go is excluded by !**/vendor/**
  • api/vendor/github.com/google/uuid/version7.go is excluded by !**/vendor/**
  • api/vendor/github.com/inconshreveable/mousetrap/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/inconshreveable/mousetrap/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/inconshreveable/mousetrap/trap_others.go is excluded by !**/vendor/**
  • api/vendor/github.com/inconshreveable/mousetrap/trap_windows.go is excluded by !**/vendor/**
  • api/vendor/github.com/josharian/intern/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/josharian/intern/intern.go is excluded by !**/vendor/**
  • api/vendor/github.com/josharian/intern/license.md is excluded by !**/vendor/**
  • api/vendor/github.com/mailru/easyjson/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/mailru/easyjson/buffer/pool.go is excluded by !**/vendor/**
  • api/vendor/github.com/mailru/easyjson/jlexer/bytestostr.go is excluded by !**/vendor/**
  • api/vendor/github.com/mailru/easyjson/jlexer/bytestostr_nounsafe.go is excluded by !**/vendor/**
  • api/vendor/github.com/mailru/easyjson/jlexer/error.go is excluded by !**/vendor/**
  • api/vendor/github.com/mailru/easyjson/jlexer/lexer.go is excluded by !**/vendor/**
  • api/vendor/github.com/mailru/easyjson/jwriter/writer.go is excluded by !**/vendor/**
  • api/vendor/github.com/mitchellh/hashstructure/v2/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/mitchellh/hashstructure/v2/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/mitchellh/hashstructure/v2/errors.go is excluded by !**/vendor/**
  • api/vendor/github.com/mitchellh/hashstructure/v2/hashstructure.go is excluded by !**/vendor/**
  • api/vendor/github.com/mitchellh/hashstructure/v2/include.go is excluded by !**/vendor/**
  • api/vendor/github.com/munnerz/goautoneg/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/munnerz/goautoneg/Makefile is excluded by !**/vendor/**
  • api/vendor/github.com/munnerz/goautoneg/README.txt is excluded by !**/vendor/**
  • api/vendor/github.com/munnerz/goautoneg/autoneg.go is excluded by !**/vendor/**
  • api/vendor/github.com/patrickmn/go-cache/CONTRIBUTORS is excluded by !**/vendor/**
  • api/vendor/github.com/patrickmn/go-cache/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/patrickmn/go-cache/README.md is excluded by !**/vendor/**
  • api/vendor/github.com/patrickmn/go-cache/cache.go is excluded by !**/vendor/**
  • api/vendor/github.com/patrickmn/go-cache/sharded.go is excluded by !**/vendor/**
  • api/vendor/github.com/pkg/errors/.gitignore is excluded by !**/vendor/**
  • api/vendor/github.com/pkg/errors/.travis.yml is excluded by !**/vendor/**
  • api/vendor/github.com/pkg/errors/LICENSE is excluded by !**/vendor/**
  • api/vendor/github.com/pkg/errors/Makefile is excluded by !**/vendor/**
📒 Files selected for processing (1)
  • api/go.mod

Comment thread api/go.mod
@JoelSpeed JoelSpeed force-pushed the no-api-external-deps branch from ba1451d to 36c1541 Compare April 28, 2026 08:36
@JoelSpeed JoelSpeed marked this pull request as ready for review April 28, 2026 08:56
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Apr 28, 2026
@openshift-ci openshift-ci Bot requested review from jparrill and muraee April 28, 2026 08:57
@JoelSpeed JoelSpeed force-pushed the no-api-external-deps branch 2 times, most recently from 55df723 to b83ea99 Compare April 28, 2026 09:27
@hypershift-jira-solve-ci
Copy link
Copy Markdown

Test Failure Analysis Complete

Job Information

Test Failure Analysis

Error

Error: load packages in root "/home/runner/_work/hypershift/hypershift/api": err: exit status 1: stderr: go: inconsistent vendoring in /home/runner/_work/hypershift/hypershift/api:
	github.com/stretchr/testify@v1.11.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt

make: *** [Makefile:246: hypershift-api] Error 1

Summary

The make generate update pipeline fails at the hypershift-api target because the api/vendor directory is inconsistent with api/go.mod. The PR removes karpenter-provider-aws (and ~60 transitive dependencies) from api/go.mod to avoid importing external dependencies into the API module. However, the Makefile target ordering causes go work sync to re-inject github.com/stretchr/testify@v1.11.1 into api/go.mod after api/vendor has already been built without it, and no re-vendoring is performed before controller-gen attempts to load the api/ packages.

Root Cause

The Makefile update target runs these steps in order:

update: api-deps workspace-sync deps api api-docs clients docs-aggregate
  1. api-deps — Runs go mod tidy && go mod vendor inside api/. After this PR, api/go.mod has only 4 direct dependencies (openshift/api, k8s.io/api, k8s.io/apimachinery, k8s.io/utils) and ~15 indirect ones. stretchr/testify is NOT among them. The api/vendor/ directory is built correctly at this point.

  2. workspace-sync — Runs go work sync using hack/workspace/go.work, which declares both ./hypershift (root module) and ./hypershift/api as workspace modules. The root go.mod requires github.com/stretchr/testify@v1.11.1. The go work sync command upgrades the minimum dependency versions in all workspace modules to be consistent — this modifies api/go.mod to add stretchr/testify@v1.11.1 as an explicit requirement.

  3. deps — Runs go mod tidy && go mod vendor for the root module only — it does NOT re-vendor api/.

  4. api (→ hypershift-api) — Runs controller-gen object paths="./api/...". controller-gen loads the api/ Go packages, which triggers vendoring validation. Go finds testify@v1.11.1 in api/go.mod (added by step 2) but NOT in api/vendor/modules.txt (built in step 1 before testify was added). This causes the "inconsistent vendoring" error.

Why this worked on main: On main, api/go.mod includes karpenter-provider-aws which transitively depends on testify. So when api-deps vendors, testify is already present. When workspace-sync upgrades the version, the vendor directory still contains testify (just possibly an older version), and Go tolerates version bumps in go.mod if the package is already vendored. The PR removes karpenter, so testify is completely absent from api/vendor/, and workspace-sync adding it to go.mod creates the fatal inconsistency.

Recommendations
  1. Re-run api-deps after workspace-sync — Change the update target to:

    update: api-deps workspace-sync deps api-deps api api-docs clients docs-aggregate

    Or create a separate api-revendor target that runs after workspace-sync to re-sync api/vendor with the modified api/go.mod.

  2. Alternatively, prevent go work sync from modifying api/go.mod — If the goal is to keep api/ free of external dependencies, go work sync is counterproductive because it pulls root-module dependencies back into api/go.mod. Consider either:

    • Removing api/ from the go.work file, or
    • Running api-deps (which does go mod tidy) again after workspace-sync to prune the re-injected dependencies, then re-vendoring.
  3. Shortest fix — Add a post-workspace-sync step that runs cd api && go mod tidy && go mod vendor to re-clean and re-vendor the API module after workspace synchronization.

Evidence
Evidence Detail
Error message go: inconsistent vendoring in .../api: github.com/stretchr/testify@v1.11.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
Failed make target Makefile:246: hypershift-apicontroller-gen object paths="./api/..."
Target ordering update: api-deps workspace-sync deps api ... — api-deps vendors BEFORE workspace-sync modifies api/go.mod
workspace-sync log (line 277) go work sync downloads testify v1.11.1 at 09:32:57
api-deps log (line 241-257) go mod tidy/vendor in api/ downloads testify v1.10.0 at 09:32:34 (as transitive only, NOT explicit)
PR's api/go.mod at commit Does NOT contain stretchr/testify — it was removed along with karpenter
Root go.mod Contains github.com/stretchr/testify v1.11.1 as explicit dependency
go.work file use (./hypershift, ./hypershift/api) — both modules in workspace
main branch api/go.mod Contains karpenter-provider-aws which transitively includes testify in vendor
api/vendor/modules.txt NOT modified by the PR — workspace-sync doesn't re-vendor

@JoelSpeed JoelSpeed force-pushed the no-api-external-deps branch from b83ea99 to 4ad754e Compare April 28, 2026 11:08
We should not have external dependencies like Karpenter within the API module.
This is bad practice and causes issues for consumers.
Only ever depend on k8s.io/apimachinery, k8s.io/api and k8s.io/utils where possible
@JoelSpeed JoelSpeed force-pushed the no-api-external-deps branch from 4ad754e to 3318ccd Compare April 28, 2026 11:56
This removes the dependency on karpenter for external imports of the api module
This aligns the module to the updates in the API submodule
@JoelSpeed JoelSpeed force-pushed the no-api-external-deps branch from 3318ccd to 54ecdea Compare April 28, 2026 12:05
@muraee
Copy link
Copy Markdown
Contributor

muraee commented Apr 28, 2026

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Apr 28, 2026
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling tests matching the pipeline_run_if_changed or not excluded by pipeline_skip_if_only_changed parameters:
/test e2e-aks
/test e2e-aws
/test e2e-aws-upgrade-hypershift-operator
/test e2e-azure-self-managed
/test e2e-kubevirt-aws-ovn-reduced
/test e2e-v2-aws

@cwbotbot
Copy link
Copy Markdown

cwbotbot commented Apr 28, 2026

Test Results

e2e-aws

e2e-aks

@JoelSpeed
Copy link
Copy Markdown
Contributor Author

/verified by @JoelSpeed

I tested this locally and it appears to work for my purpose. Disconnects the karpenter link when I revendor this into ARO

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Apr 28, 2026
@openshift-ci-robot
Copy link
Copy Markdown

@JoelSpeed: This PR has been marked as verified by @JoelSpeed.

Details

In response to this:

/verified by @JoelSpeed

I tested this locally and it appears to work for my purpose. Disconnects the karpenter link when I revendor this into ARO

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

/retest-required

Remaining retests: 0 against base HEAD cc51a9c and 2 for PR HEAD 54ecdea in total

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 28, 2026

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

approved Indicates a PR has been approved by an approver from all required OWNERS files. area/api Indicates the PR includes changes for the API jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants