Skip to content

build(toolchain): bump go from 1.25 to 1.26#708

Merged
wikkyk merged 12 commits into
release/v0.9.0from
go/1.26
Apr 20, 2026
Merged

build(toolchain): bump go from 1.25 to 1.26#708
wikkyk merged 12 commits into
release/v0.9.0from
go/1.26

Conversation

@wikkyk
Copy link
Copy Markdown
Collaborator

@wikkyk wikkyk commented Apr 9, 2026

Issue #, if available:
Deprecates #629

Description of changes:
Bump go to 1.26.0, update docs and Dockerfile.

Testing performed:
make test

@wikkyk wikkyk added documentation Improvements or additions to documentation docker go/1.26 Requires Go 1.26 labels Apr 9, 2026
@wikkyk wikkyk added this to the v0.9.0 milestone Apr 9, 2026
dependabot Bot added 3 commits April 10, 2026 10:33
Bumps [github.com/luthermonson/go-proxmox](https://github.com/luthermonson/go-proxmox) from 0.4.0 to 0.4.1.
- [Release notes](https://github.com/luthermonson/go-proxmox/releases)
- [Commits](luthermonson/go-proxmox@v0.4.0...v0.4.1)

---
updated-dependencies:
- dependency-name: github.com/luthermonson/go-proxmox
  dependency-version: 0.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.42.0 to 0.43.0.
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](golang/tools@v0.42.0...v0.43.0)

---
updated-dependencies:
- dependency-name: golang.org/x/tools
  dependency-version: 0.43.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](docker/login-action@b45d80f...4907a6d)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@wikkyk wikkyk marked this pull request as ready for review April 10, 2026 10:17
Copilot AI review requested due to automatic review settings April 10, 2026 10:17
@wikkyk wikkyk linked an issue Apr 10, 2026 that may be closed by this pull request
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates CAPMOX’s build/tooling baseline to Go 1.26 so local development, CI, and the container build use the newer Go toolchain.

Changes:

  • Bump the module Go version to go 1.26.0.
  • Update the development prerequisites documentation to Go 1.26.
  • Update the Docker builder image to golang:1.26.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
go.mod Raises the Go language/toolchain baseline to 1.26.0.
docs/Development.md Updates contributor-facing prerequisite Go version to 1.26.
Dockerfile Builds the manager binary using the Go 1.26 image.

Comment thread go.mod
module github.com/ionos-cloud/cluster-api-provider-proxmox

go 1.25.0
go 1.26.0
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

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

go.mod is bumped to Go 1.26.0, but the kube-api-linter golangci config still targets Go 1.25 (.golangci-kal.yml:run.go). This can cause linting to run with the wrong language version/features; please bump that config to 1.26 to match go.mod.

Copilot uses AI. Check for mistakes.
Comment thread docs/Development.md
Comment on lines 34 to 37
- git
- make
- Go v1.23
- Go v1.26
- Kubebuilder (only required for making new controllers)
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

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

This doc now lists Go v1.26, but there are still repository docs/instructions that mention Go 1.25.0 (e.g. .github/copilot-instructions.md:9,45,130 and custom-instructions/repo/.github/copilot-instructions.md:9,45,130). Please update those as well to keep contributor guidance consistent.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

this is going away with #730

@wikkyk wikkyk marked this pull request as draft April 10, 2026 11:51
@wikkyk
Copy link
Copy Markdown
Collaborator Author

wikkyk commented Apr 10, 2026

I added notes to #669 to make the bump tool also target the files mentioned by copilot.

dependabot Bot and others added 8 commits April 13, 2026 09:28
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.6.1 to 3.0.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](softprops/action-gh-release@153bb8e...b430933)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@d08e5c3...bcafcac)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@bbbca2d...043fb46)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
The state machine was set to the wrong state after reconcilePowerState,
therefore proxmoxmachine.Status.Addresses was never populated.
Our tests for reconcileMachineAddresses succesfully ran as the code
itself was fine. Our E2E tests did not fail because we do not depend
on this field.

To catch these kinds of errors in the future, I've made a new test
for ReconcileVM which tries to test its workings in their entirety.

fix: 710
fix: 714

test(vmservice): complete end-to-end ReconcileVM state machine test

Exercise task lifecycle via ReconcileInFlightTask, disk resize via
ResizeDisk, and fix a misleading comment.

fix(vm_test.go): use RFC5739 for IP addresses
feat(vm_test.go): also mock CloneVM in E2E ReconcileVM test
fix(task.go): proxmox qmstart is inconsistent and leads to state failure

TaskFailure State is now only set if the action is not qmstart.
It looks impossible to detect a failure in qmstart. This fixes
the state machine transition in ReconcileVM.

test(taskservice): add task_test.go to appease quality gate

Coverage for task.go dropped below the gate after the qmstart fix.
These tests exercise every switch branch but are mostly tautological
since the logic is straightforward and already covered by the
end-to-end ReconcileVM test.

fix(vm.go): typo in reconcileVirtualMachineConfig
chore(vmservice/taskservice): address code review for state machine fix

Co-Authored-By: Vic Kerr <wiktor.kerr@ionos.com>
Co-Authored-By: Claude <noreply@anthropic.com>
@wikkyk wikkyk marked this pull request as ready for review April 20, 2026 12:23
Copilot AI review requested due to automatic review settings April 20, 2026 12:23
@wikkyk
Copy link
Copy Markdown
Collaborator Author

wikkyk commented Apr 20, 2026

rebased on main, merge will rebase release/v0.9.0 on main too

@wikkyk wikkyk merged commit da8a33d into release/v0.9.0 Apr 20, 2026
7 checks passed
@wikkyk wikkyk deleted the go/1.26 branch April 20, 2026 12:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 20 out of 21 changed files in this pull request and generated 3 comments.

Comment thread go.mod
k8s.io/code-generator/cmd/conversion-gen => k8s.io/code-generator/cmd/conversion-gen v0.33.3
k8s.io/kube-openapi/pkg/schemaconv => k8s.io/kube-openapi/pkg/schemaconv v0.0.0-20250701173324-9bd5c66d9911 // drop for k8s 34
sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.11.7
sigs.k8s.io/cluster-api => sigs.k8s.io/cluster-api v1.11.8
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

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

PR title/description says this is a Go toolchain bump, but this change also updates Cluster API versions (and other deps) and introduces behavior/test changes in the VM/task reconciliation state machine. Please update the PR description/title to reflect the additional scope (or split the behavioral changes into a separate PR) so reviewers can assess risk appropriately.

Copilot uses AI. Check for mistakes.
Comment on lines +118 to 121
if proxmoxMachineHasVMProvisionFailedReason(scope) {
scope.Logger.V(4).Info("invalid proxmoxmachine state", "state", conditions.GetReason(scope.ProxmoxMachine, infrav1.ProxmoxMachineVirtualMachineProvisionedCondition))
// If you end up here, please file a bug report.
return vm, errors.New("invalid state (failed and no error)")
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

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

proxmoxMachineHasVMProvisionFailedReason now treats TaskFailed as a terminal/invalid state, but the log+error text here still tells users to “file a bug report” and returns a generic "invalid state (failed and no error)". For TaskFailed this can be a normal operational failure (e.g., clone/configure task failure) and the current message hides the actual condition/message set earlier; consider returning an error that surfaces the current condition reason/message (or differentiating TaskFailed vs VMProvisionFailed in the messaging).

Copilot uses AI. Check for mistakes.
Comment on lines +137 to +141
func proxmoxMachineHasVMProvisionFailedReason(scope *scope.MachineScope) bool {
reason := conditions.GetReason(scope.ProxmoxMachine, infrav1.ProxmoxMachineVirtualMachineProvisionedCondition)
return reason == infrav1.ProxmoxMachineVirtualMachineProvisionedVMProvisionFailedReason ||
reason == infrav1.ProxmoxMachineVirtualMachineProvisionedTaskFailedReason
}
Copy link

Copilot AI Apr 20, 2026

Choose a reason for hiding this comment

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

The helper name proxmoxMachineHasVMProvisionFailedReason is misleading now that it also returns true for ProxmoxMachineVirtualMachineProvisionedTaskFailedReason. Rename it (and/or update its doc/comment) so it accurately reflects the broader set of terminal failure reasons being checked.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation go/1.26 Requires Go 1.26

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants