Merge https://github.com/kubernetes/cloud-provider-vsphere:master (7540cfb) into main - #130
Conversation
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.
Update CPI release guide
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
|
Note Reviews pausedIt 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 Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughThe 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. ChangesCPI release and validation
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🟡 Moderate · up to 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: 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
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 error, 4 warnings)
✅ Passed checks (10 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
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 Regular contributors should join the org to skip this step. Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions 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. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
There was a problem hiding this comment.
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
📒 Files selected for processing (3)
.github/dependabot.ymldocs/book/tutorials/make_a_new_cpi_release.mdtest/e2e/cpi_vm_test.go
| **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>" | ||
| ``` |
There was a problem hiding this comment.
🔒 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.
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
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
…ainer image to be consistent with ART for 4.17 Reconciling with https://github.com/openshift/ocp-build-data/tree/4c1326094222f9209876f06833179a1b9178faf7/images/ose-vsphere-cloud-controller-manager.yml
…ainer image to be consistent with ART for 4.18 Reconciling with https://github.com/openshift/ocp-build-data/tree/827ab4ccce9cbbcf82c9dbaf6398b61d6cff8d7a/images/ose-vsphere-cloud-controller-manager.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.
…ainer image to be consistent with ART for 4.19 Reconciling with https://github.com/openshift/ocp-build-data/tree/2ea3e6158c93ca104b9d59fd58a71536fa01fb2d/images/ose-vsphere-cloud-controller-manager.yml
…ainer image to be consistent with ART for 4.20 Reconciling with https://github.com/openshift/ocp-build-data/tree/dfb5c7d531490cfdc61a3b88bc533702b9624997/images/ose-vsphere-cloud-controller-manager.yml
…ainer image to be consistent with ART for 4.21 Reconciling with https://github.com/openshift/ocp-build-data/tree/3f07d84a47b15417f7743cfc35510788f4bd1ff9/images/ose-vsphere-cloud-controller-manager.yml
…ainer image to be consistent with ART for 4.22 Reconciling with https://github.com/openshift/ocp-build-data/tree/087d1930e36b609f77d73bd8a313d85c940cff4d/images/ose-vsphere-cloud-controller-manager.yml
…ainer image to be consistent with ART for 4.22 Reconciling with https://github.com/openshift/ocp-build-data/tree/992b0dc3f0e12d86e7466dadf1eb51b2584a9a83/images/ose-vsphere-cloud-controller-manager.yml
…ainer image to be consistent with ART for 5.0 Reconciling with https://github.com/openshift-eng/ocp-build-data/tree/7691ed4dc0b6585b358f9e73fb736ace9a48a286/images/ose-vsphere-cloud-controller-manager.yml
89c7f7c to
42abecd
Compare
This is an automated rebase PR generated by RebaseBot.
Summary
https://github.com/kubernetes/cloud-provider-vsphere:masterhttps://github.com/openshift/cloud-provider-vsphere:mainDropped downstream commits
1a8fa50UPSTREAM: : Updating and vendoring go modules after an upstream rebase (dropped by tag policy)Logs
View job log