Skip to content

Commit 6e0ff5a

Browse files
committed
Modernize codebase with Go 1.26
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
1 parent 205ea6d commit 6e0ff5a

15 files changed

Lines changed: 63 additions & 46 deletions

.golangci.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ linters:
88
- dupl
99
- errcheck
1010
- ginkgolinter
11-
- goconst
1211
- gocyclo
1312
- govet
1413
- ineffassign
@@ -51,6 +50,9 @@ linters:
5150
# Omit embedded fields from selector expression.
5251
# https://staticcheck.dev/docs/checks/#QF1008
5352
- -QF1008
53+
# Use fmt.Fprintf.
54+
# https://staticcheck.dev/docs/checks/#QF1008
55+
- -QF1012
5456
exclusions:
5557
generated: lax
5658
rules:

api/v1/groupversion_info.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,36 @@
77
package v1
88

99
import (
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
"k8s.io/apimachinery/pkg/runtime"
1012
"k8s.io/apimachinery/pkg/runtime/schema"
11-
"sigs.k8s.io/controller-runtime/pkg/scheme"
1213
)
1314

1415
var (
1516
// GroupVersion is group version used to register these objects
1617
GroupVersion = schema.GroupVersion{Group: "fluxcd.controlplane.io", Version: "v1"}
1718

18-
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
19-
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}
19+
// schemeBuilder accumulates the type registration functions for this API group.
20+
schemeBuilder runtime.SchemeBuilder
21+
22+
// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
23+
SchemeBuilder = &groupVersionBuilder{}
2024

2125
// AddToScheme adds the types in this group-version to the given scheme.
22-
AddToScheme = SchemeBuilder.AddToScheme
26+
AddToScheme = schemeBuilder.AddToScheme
2327
)
28+
29+
// groupVersionBuilder registers Go types with the package's GroupVersion.
30+
// It replaces the deprecated sigs.k8s.io/controller-runtime/pkg/scheme.Builder
31+
// so that this API package depends only on k8s.io/apimachinery.
32+
type groupVersionBuilder struct{}
33+
34+
// Register schedules the given runtime.Object types to be added to the scheme
35+
// under the package's GroupVersion when AddToScheme is called.
36+
func (b *groupVersionBuilder) Register(objects ...runtime.Object) {
37+
schemeBuilder.Register(func(s *runtime.Scheme) error {
38+
s.AddKnownTypes(GroupVersion, objects...)
39+
metav1.AddToGroupVersion(s, GroupVersion)
40+
return nil
41+
})
42+
}

api/v1/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/cli/distro_mirror.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -423,8 +423,7 @@ func isNotFound(err error) bool {
423423
if err == nil {
424424
return false
425425
}
426-
var terr *transport.Error
427-
if errors.As(err, &terr) {
426+
if terr, ok := errors.AsType[*transport.Error](err); ok {
428427
return terr.StatusCode == 404
429428
}
430429
return false

cmd/cli/migrate_resources_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,12 @@ const (
2626
)
2727

2828
func installMigrateTestCRD(ctx context.Context, g *WithT) func() {
29-
preserve := true
3029
schemaProps := &apiextensionsv1.JSONSchemaProps{
3130
Type: "object",
3231
Properties: map[string]apiextensionsv1.JSONSchemaProps{
3332
"spec": {
3433
Type: "object",
35-
XPreserveUnknownFields: &preserve,
34+
XPreserveUnknownFields: new(true),
3635
},
3736
},
3837
}

cmd/operator/main.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import (
3232
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3333
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3434
_ "k8s.io/client-go/plugin/pkg/client/auth"
35-
"k8s.io/utils/ptr"
3635
ctrl "sigs.k8s.io/controller-runtime"
3736
ctrlcache "sigs.k8s.io/controller-runtime/pkg/cache"
3837
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
@@ -224,7 +223,7 @@ func main() {
224223
RetryPeriod: &leaderElectionOptions.RetryPeriod,
225224
Controller: ctrlcfg.Controller{
226225
MaxConcurrentReconciles: concurrent,
227-
RecoverPanic: ptr.To(true),
226+
RecoverPanic: new(true),
228227
},
229228
Client: ctrlclient.Options{
230229
Cache: &ctrlclient.CacheOptions{

internal/builder/workload_identity.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,15 @@ import (
1414
// ValidateAndApplyWorkloadIdentityConfig validates and applies the workload identity options
1515
// based on the provided cluster configuration and Flux version in the Options struct.
1616
func (o *Options) ValidateAndApplyWorkloadIdentityConfig(cluster fluxcdv1.Cluster) error {
17-
var (
18-
firstControllersWithObjectLevelWorkloadIdentity = []string{
19-
"source-controller",
20-
"kustomize-controller",
21-
"notification-controller",
22-
"image-reflector-controller",
23-
"image-automation-controller",
24-
}
25-
26-
allControllers = append(firstControllersWithObjectLevelWorkloadIdentity, "helm-controller")
17+
firstControllersWithObjectLevelWorkloadIdentity := make([]string, 0, 6)
18+
firstControllersWithObjectLevelWorkloadIdentity = append(firstControllersWithObjectLevelWorkloadIdentity,
19+
"source-controller",
20+
"kustomize-controller",
21+
"notification-controller",
22+
"image-reflector-controller",
23+
"image-automation-controller",
2724
)
25+
allControllers := append(firstControllersWithObjectLevelWorkloadIdentity, "helm-controller")
2826

2927
// Parse Flux version.
3028
version, err := semver.NewVersion(o.Version)

internal/controller/fluxinstance_controller_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2626
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2727
"k8s.io/apimachinery/pkg/types"
28-
"k8s.io/utils/ptr"
2928
"sigs.k8s.io/controller-runtime/pkg/client"
3029
"sigs.k8s.io/controller-runtime/pkg/reconcile"
3130

@@ -1024,7 +1023,7 @@ func TestFluxInstanceReconciler_WaitTimeout(t *testing.T) {
10241023
g := NewWithT(t)
10251024
reconciler := getFluxInstanceReconciler(t)
10261025
spec := getDefaultFluxSpec(t)
1027-
spec.Wait = ptr.To(true)
1026+
spec.Wait = new(true)
10281027
spec.Sync = nil
10291028
spec.Kustomize = &fluxcdv1.Kustomize{
10301029
Patches: []kustomize.Patch{
@@ -1110,8 +1109,8 @@ func getDefaultFluxSpec(t *testing.T) fluxcdv1.FluxInstanceSpec {
11101109
t.Setenv("NOTIFICATIONS_DISABLED", "yes")
11111110

11121111
return fluxcdv1.FluxInstanceSpec{
1113-
Wait: ptr.To(false),
1114-
MigrateResources: ptr.To(true),
1112+
Wait: new(false),
1113+
MigrateResources: new(true),
11151114
Distribution: fluxcdv1.Distribution{
11161115
Version: "v2.3.0",
11171116
Registry: "ghcr.io/fluxcd",

internal/controller/resourcesetinputprovider_controller.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -934,8 +934,7 @@ func (r *ResourceSetInputProviderReconciler) callExternalServiceProvider(
934934
limitedReader := http.MaxBytesReader(nil, resp.Body, maxExternalServicePayloadSize)
935935
body, err := io.ReadAll(limitedReader)
936936
if err != nil {
937-
var maxBytesErr *http.MaxBytesError
938-
if errors.As(err, &maxBytesErr) {
937+
if _, ok := errors.AsType[*http.MaxBytesError](err); ok {
939938
return nil, fmt.Errorf("external service '%s' response body exceeds "+
940939
"the maximum allowed size of %d bytes", obj.Spec.URL, maxExternalServicePayloadSize)
941940
}

internal/gitprovider/gitlab.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func (p *GitLabProvider) ListBranches(ctx context.Context, opts Options) ([]Resu
111111
},
112112
}
113113
if opts.Filters.Include != nil {
114-
glOpts.Regex = gitlab.Ptr(opts.Filters.Include.String())
114+
glOpts.Regex = new(opts.Filters.Include.String())
115115
}
116116

117117
results := make([]Result, 0)
@@ -155,7 +155,7 @@ func (p *GitLabProvider) ListRequests(ctx context.Context, opts Options) ([]Resu
155155
}
156156

157157
glOpts := &gitlab.ListProjectMergeRequestsOptions{
158-
State: gitlab.Ptr("opened"),
158+
State: new("opened"),
159159
Labels: labels,
160160
ListOptions: gitlab.ListOptions{
161161
PerPage: 100,
@@ -221,9 +221,9 @@ func (p *GitLabProvider) ListEnvironments(ctx context.Context, opts Options) ([]
221221
// This is only available through the Deployments API.
222222
deployments, _, err := p.Client.Deployments.ListProjectDeployments(p.Project, &gitlab.ListProjectDeploymentsOptions{
223223
ListOptions: gitlab.ListOptions{},
224-
OrderBy: gitlab.Ptr("created_at"),
225-
Sort: gitlab.Ptr("desc"),
226-
Environment: gitlab.Ptr(env.Name),
224+
OrderBy: new("created_at"),
225+
Sort: new("desc"),
226+
Environment: new(env.Name),
227227
})
228228
if err != nil {
229229
return nil, fmt.Errorf(`could not list deployments for environment "%s": %v`, env.Name, err)

0 commit comments

Comments
 (0)