Skip to content

Merge https://github.com/kubernetes/cloud-provider-vsphere:master (7540cfb) into main - #130

Open
cloud-team-rebase-bot[bot] wants to merge 97 commits into
openshift:mainfrom
openshift-cloud-team:rebase-bot-main
Open

Merge https://github.com/kubernetes/cloud-provider-vsphere:master (7540cfb) into main#130
cloud-team-rebase-bot[bot] wants to merge 97 commits into
openshift:mainfrom
openshift-cloud-team:rebase-bot-main

Conversation

@cloud-team-rebase-bot

@cloud-team-rebase-bot cloud-team-rebase-bot Bot commented Jul 30, 2026

Copy link
Copy Markdown

This is an automated rebase PR generated by RebaseBot.

Summary

  • Source: https://github.com/kubernetes/cloud-provider-vsphere:master
  • Destination: https://github.com/openshift/cloud-provider-vsphere:main
  • 72 new upstream commits

Dropped downstream commits

  • 1a8fa50 UPSTREAM: : Updating and vendoring go modules after an upstream rebase (dropped by tag policy)

Logs

View job log

zhanggbj and others added 14 commits July 22, 2026 16:03
Revise the release documentation to provide detailed phase-by-phase instructions
covering dependency bumps, local/CI testing, documentation generation, git tagging,
automated/manual image promotion, and post-release updates.
Clarity that Dependabot tracks the three latest active release branches
corresponding to the officially supported minor releases from N to N-2.
Address linting failures including blanks-around-lists (MD032), unordered list
style consistency (MD004), blanks-around-fences (MD031), and trailing whitespace (MD009).
…N-3)

Expand Dependabot tracking from three to four release branches to officially
support releases from N to N-3, with release-1.36 (N) as the latest release.
Reflect the change in official support policy (from N to N-3 active
release branches) inside the Dependabot update section of the release guide.
Include instructions to verify Prow security scan jobs, run "make verify-security"
locally to check container images and dependencies, and merge relevant package
bump PRs before drafting the release.
Swap Phase 1 (dependencies) and Phase 2 (testing/CI). Mention in the dependency
bumping phase that any dependency bump PR must pass CI tests prior to merging.
Move Dockerfile update info to Phase 3 (Update Release Documents) since it is
covered by update-docs.sh script for GA releases.
Remove the "Build and Test Locally" section containing "make docker-image" from
Phase 1, leaving only the "CI and Testbed Maintenance" instructions as they are
the primary release gate. Fix a minor typo in the introduction of Phase 1.
Add a note in Phase 4 stating that all Beta, RC, and GA/Official releases
require a unique Git tag.
Add "Phase 5: Cut a New Release Branch" to document when and how to cut a new
minor release branch (e.g. release-1.37) from master. Correctly renumber all
subsequent Phases (6 through 9).
Restore and update the Beta/RC note in Phase 3 for update-docs.sh context.
In the getInternalIPFromNode and getExternalIPFromNode helpers,
returning address.String() returns the stringified Go/protobuf struct.
Use address.Address to return the raw IP.
When running VM lifecycle specs sequentially, a newly recreated Node might register with the cluster
before the CAPI controllers have finished updating its NodeRef mapping in the bootstrap cluster's
Machine status. This causes an immediate "machine not found" error during BeforeEach.
🐛 fix node IP address parsing in test helper
🐛 Handle timing race when fetching CAPI Machine and VM objects
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Note

Reviews paused

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

Use the following commands to manage reviews:

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

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

The changes update CPI release procedures and dependency automation, add Helm node IP selection, refresh build inputs, and expand vSphere end-to-end tests for readiness, networking, VM deletion, and worker replacement.

Changes

CPI release and validation

Layer / File(s) Summary
Release procedures and branch automation
docs/book/tutorials/make_a_new_cpi_release.md, .github/dependabot.yml
The release guide now covers phased releases, dependency updates, tagging, image promotion, chart publication, and Dependabot maintenance. Dependabot adds release-1.36 configuration and updates older release metadata.
Node network configuration and installation validation
charts/vsphere-cpi/values.yaml, charts/vsphere-cpi/templates/configmap.yaml, test/e2e/cpi_install_test.go
The Helm chart adds node subnet, VM network, and exclusion settings. The installation test applies these settings and verifies the worker-node IP.
VM lifecycle and worker replacement validation
test/e2e/cpi_vm_test.go
VM tests retry resource lookups and identity checks, pause reconciliation during deletion, and verify replacement worker creation.
Dependency and build environment refresh
go.mod, test/e2e/go.mod, hack/tools/go.mod, Makefile, cluster/images/controller-manager/Dockerfile, cloudbuild*.yaml
Go, Ginkgo, Go, Docker, and Cloud Build inputs are updated.
Workflow action pin updates
.github/workflows/*
The workflows now use the pinned actions/checkout v7.0.1 action.

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

Merge Risk: 🟡 Moderate · up to 082d4

This rebase leaves mutable external container inputs, persistent write-capable checkout credentials in four workflows, and release-candidate Kubernetes modules in the production dependency graph. These create supply-chain, repository-security, and dependency-compatibility risks, so merge should wait for fixes or explicit owner acceptance.

Suggested reviewers: radekmanak, theobarberbany, zhanggbj

Sequence Diagram(s)

sequenceDiagram
  participant E2ETest
  participant Helm
  participant CPI
  participant WorkerNode
  E2ETest->>WorkerNode: Discover internal IP and VM network
  E2ETest->>Helm: Upgrade release with node network values
  Helm->>CPI: Render nodes configuration
  CPI->>WorkerNode: Select node address
  E2ETest->>WorkerNode: Verify IP remains in configured subnet
Loading

Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error, 4 warnings)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error New E2E klog.Infof calls log runtime worker-node, VM, and vSphere network names, which can expose internal hostnames; these logs are absent from origin/main. Remove or redact runtime node, VM, and network identifiers. Do not log raw Helm command output; use fixed status messages or sanitized values.
Test Structure And Quality ⚠️ Warning The new nodes-config It adds multiple Expect(err).NotTo(HaveOccurred()) and Eventually(...).Should(Succeed()) calls without diagnostic messages, and its Helm upgrade has no AfterEach restore. Add meaningful messages to all new assertions and waits. Bound the Helm command and restore the shared kube-system/vsphere-cpi configuration during cleanup.
Microshift Test Compatibility ⚠️ Warning The changed VM-deletion test now expects the deleted worker node to disappear and a replacement worker node to be created; this node-scaling assumption is unsupported on MicroShift and has no skip... Add [Skipped:MicroShift] to the test name or guard it with IsMicroShiftCluster and g.Skip. If MicroShift CI applies, verify with the appropriate MicroShift e2e job.
Single Node Openshift (Sno) Test Compatibility ⚠️ Warning New It() calls getWorkerNode(), which excludes control-plane-labeled nodes and waits for a separate worker; no SNO guard exists, so it can time out on SNO. Add [Skipped:SingleReplicaTopology] or an IsSingleNode()/skipOnSingleNodeTopology() guard, then verify with /payload-job periodic-ci-openshift-release-master-ci-4.22-e2e-aws-upgrade-ovn-single-node.
Ipv6 And Disconnected Network Test Compatibility ⚠️ Warning The new Ginkgo It at cpi_install_test.go:103 hardcodes /24 and 255.255.255.0/24, so it assumes IPv4 instead of adapting to IPv6. Run the required IPv6 CI job. Replace these values with family-aware CIDRs using GetIPAddressFamily()/correctCIDRFamily(), or skip the test when IPv4 is required.
✅ Passed checks (10 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the upstream repository, source revision, and target branch for the merge described in the PR objectives.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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 The PR adds one Ginkgo It title, and it is a static literal; all project-level It/Describe/Context/When titles use literals with no dynamic node, IP, pod, namespace, or timestamp data.
Topology-Aware Scheduling Compatibility ✅ Passed The diff adds vSphere node IP settings to a ConfigMap and updates E2E polling; no Deployment/DaemonSet scheduling fields or topology constraints changed. Existing control-plane affinity is unchanged.
Ote Binary Stdout Contract ✅ Passed The PR adds only klog calls inside Ginkgo It/By test bodies; it adds no process-level stdout writes, and e2e_suite_test.go is unchanged.
No-Weak-Crypto ✅ Passed The PR diff adds no weak-crypto calls, modes, custom crypto, or secret comparisons; the only MD5/SHA1/DES/RC4 matches are generated x/tools stdlib metadata.
Container-Privileges ✅ Passed The PR adds no privileged, hostPID, hostIPC, SYS_ADMIN, or allowPrivilegeEscalation settings; existing hostNetwork and non-root settings are unchanged, and the image uses USER nobody.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci openshift-ci Bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Jul 30, 2026
@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown

Hi @cloud-team-rebase-bot[bot]. Thanks for your PR.

I'm waiting for a openshift member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

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.

@openshift-ci

openshift-ci Bot commented Jul 30, 2026

Copy link
Copy Markdown

[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 nrb 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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

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

Inline comments:
In `@docs/book/tutorials/make_a_new_cpi_release.md`:
- Around line 196-202: Update the GITHUB_TOKEN setup instructions to avoid
placing the personal access token in shell history; replace the inline export
example with a hidden prompt or credential-manager approach that assigns and
exports the token while preserving the existing environment-variable
requirement.
🪄 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: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 4b9fcb6c-9e86-4431-bf0e-115d89d3ee06

📥 Commits

Reviewing files that changed from the base of the PR and between eb29de1 and 01bea79.

📒 Files selected for processing (3)
  • .github/dependabot.yml
  • docs/book/tutorials/make_a_new_cpi_release.md
  • test/e2e/cpi_vm_test.go

Comment on lines +196 to +202
**Prerequisites & Environment Variables**:

- **`GITHUB_TOKEN`**: You must expose a GitHub personal access token with repository write/pull-request permissions in your environment so `kpromo` can push your fork and create the PR on `kubernetes/k8s.io`.

```shell
export GITHUB_TOKEN="<your_github_token>"
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Avoid placing the PAT directly in shell history.

Lines [198-202] encourage users to type a live token into a command; Bash can save that command to the history file. Use a credential manager or hidden prompt instead. (gnu.org)

Safer example
read -rsp "GitHub token: " GITHUB_TOKEN
printf '\n'
export GITHUB_TOKEN
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/book/tutorials/make_a_new_cpi_release.md` around lines 196 - 202, Update
the GITHUB_TOKEN setup instructions to avoid placing the personal access token
in shell history; replace the inline export example with a hidden prompt or
credential-manager approach that assigns and exports the token while preserving
the existing environment-variable requirement.

zhanggbj and others added 8 commits August 4, 2026 14:33
Delete the CAPI Machine object afterwards to ensure Cluster API
recreates a worker node for subsequent test specs.

Signed-off-by: Gong Zhang <gong.zhang@broadcom.com>
…state conflict

When powering off and destroying a VM directly in vCenter, CAPV controller
unpause reconciliation attempts to power the VM back on if CAPI is active,
causing vCenter Destroy tasks to fail with InvalidState (Powered on).

Pause workload cluster reconciliation prior to power off and destroy operations,
wait for PoweredOff state, and unpause afterwards.

Signed-off-by: Gong Zhang <gong.zhang@broadcom.com>
Restore worker node state to fix e2e test flake
- Update CAPI dependency to v1.14.0-beta.0 and CAPV dependency to v1.17.0-beta.0.
- Update CAPI, CAPV, and Kubernetes version variables in test/e2e/config/vsphere-ci.yaml.
All GitHub Actions must be pinned to a full-length 40-character commit SHA
to comply with the security policy of the kubernetes organization.

- Pin actions/checkout to 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 (v7.0.0)
- Pin actions/setup-go to 0778a10ce47b5d450cf60fb94fafad4330008a35 (v7.0.0)
- Pin azure/setup-helm to 95ecf4967d92f8074e91c548e394f8ac547da403 (v5.0.1)
- Pin helm/chart-releaser-action to cae68fefc6b5f367a0275617c9f83181ba54714f (v1.7.0)
Add six new parameters under config.nodes to the chart:
 - internalNetworkSubnetCidr
 - externalNetworkSubnetCidr
 - internalVmNetworkName
 - externalVmNetworkName
 - excludeInternalNetworkSubnetCidr
 - excludeExternalNetworkSubnetCidr

 The nodes section renders conditionally in the ConfigMap template, only omitting when at least one parameter is set.

Signed-off-by: Aleksander Brajer-Wiaderek <a.brajer-wiaderek@outlook.com>

test(e2e): add nodes config validation test for CPI helm upgrade

Add an E2E test that dynamically validates the new nodes config section by upgrading CPI helm chart with runtime-discovered values:
 - Computes /24 subnet from worker node's internal IP
 - Queries vSphere for the VM's attached network name
 - Upgrades CPI with helm --reuse-values setting internalNetworkSubnetCidr, internalVmNetworkName and excludeInternalNetworkSubnetCidr
 - Verifies the daemonset becomes ready and the node's internal IP falls within configured subnet

Signed-off-by: Aleksander Brajer-Wiaderek <a.brajer-wiaderek@outlook.com>

fix(test, e2e): wait for worker node readiness before nodes config test

Signed-off-by: Aleksander Brajer-Wiaderek <a.brajer-wiaderek@outlook.com>

fix(test, e2e): flaky test timeout

Signed-off-by: Aleksander Brajer-Wiaderek <a.brajer-wiaderek@outlook.com>
feat(helm): add nodes config section for node IP address selection
@cloud-team-rebase-bot cloud-team-rebase-bot Bot changed the title Merge https://github.com/kubernetes/cloud-provider-vsphere:master (08a3422) into main Merge https://github.com/kubernetes/cloud-provider-vsphere:master (5393f39) into main Aug 6, 2026
dependabot Bot and others added 28 commits August 31, 2026 06:51
Bumps [sigs.k8s.io/kind](https://github.com/kubernetes-sigs/kind) from 0.32.0 to 0.33.0.
- [Release notes](https://github.com/kubernetes-sigs/kind/releases)
- [Changelog](https://github.com/kubernetes-sigs/kind/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/kind@v0.32.0...v0.33.0)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/kind
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…les/test/e2e/master/onsi-4cc9c0bd73

🌱 (chore): Bump github.com/onsi/gomega from 1.42.1 to 1.43.0 in /test/e2e in the onsi group
…les/hack/tools/master/sigs.k8s.io/kind-0.33.0

🌱 (chore): Bump sigs.k8s.io/kind from 0.32.0 to 0.33.0 in /hack/tools
Update OWNERS according Openshift project needs.
Remove upstream OWNERS_ALIASES file, we do not use it
at the moment.

# Conflicts:
#	OWNERS_ALIASES

# Conflicts:
#	OWNERS_ALIASES

# Conflicts:
#	OWNERS_ALIASES

# Conflicts:
#	OWNERS_ALIASES

# Conflicts:
#	OWNERS_ALIASES
Added Openshift specific builds scripts, linter/tests/etc
runners. Extended makefile with OCP specific targets.

Upstream version of lint, and fmt pollutes
go.mod and go.sum files, so, own versions of such scripts was
introduced.
…ents

OCP build system does expect *.assembly.stream.json and
build system specific Dockerfile files to be copied into the build container.
Remove respective entries from the .dockerignore to satisfy this requirement.
# Conflicts:
#	.github/workflows/release.yml

# Conflicts:
#	.github/workflows/auto-release-helm-chart.yml

# Conflicts:
#	.github/workflows/auto-release-helm-chart.yml

# Conflicts:
#	.github/workflows/auto-release-helm-chart.yml

# Conflicts:
#	.github/workflows/auto-release-helm-chart.yml

# Conflicts:
#	.github/workflows/auto-release-helm-chart.yml

# Conflicts:
#	.github/workflows/auto-release-helm-chart.yml

# Conflicts:
#	.github/workflows/auto-release-helm-chart.yml
This change converts the script to not download goimports in favor of
using the available binary from the path. This is being implemented to
avoid situations where the latest version of goimports clashes with the
go language version specified in the go.mod.
@cloud-team-rebase-bot cloud-team-rebase-bot Bot changed the title Merge https://github.com/kubernetes/cloud-provider-vsphere:master (028666e) into main Merge https://github.com/kubernetes/cloud-provider-vsphere:master (7540cfb) into main Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.