Set Go toolchain to v1.26.1 and apply modernizations (#138)

This change makes sure that we use the latest Go version when building
and applies some modernization fixes.
This commit is contained in:
Philip Laine
2026-03-12 21:40:36 +01:00
committed by GitHub
parent 0fde3631b2
commit 47b1f55c45
8 changed files with 34 additions and 41 deletions
+1 -1
View File
@@ -137,7 +137,7 @@ func main() {
defaultLabelsMap := make(map[string]string)
if defaultLabels != "" {
for _, s := range strings.Split(defaultLabels, ",") {
for s := range strings.SplitSeq(defaultLabels, ",") {
kv := strings.Split(s, "=")
if len(kv) != 2 {
panic(fmt.Errorf("invalid label format: %s", s))
+2
View File
@@ -2,6 +2,8 @@ module github.com/netbirdio/kubernetes-operator
go 1.25.0
toolchain go1.26.1
require (
github.com/go-logr/logr v1.4.3
github.com/google/uuid v1.6.0
+7 -7
View File
@@ -68,9 +68,9 @@ func (r *NBPolicyReconciler) getResources(ctx context.Context, nbPolicy *netbird
// mapResources map each NBResource ports and protocols into one object to generate the policy
// returns map[protocol] => ports, destination group IDs
func (r *NBPolicyReconciler) mapResources(ctx context.Context, nbPolicy *netbirdiov1.NBPolicy, resources []netbirdiov1.NBResource, logger logr.Logger) (map[string][]int32, []string, error) {
portMapping := map[string]map[int32]interface{}{
protocolTCP: make(map[int32]interface{}),
protocolUDP: make(map[int32]interface{}),
portMapping := map[string]map[int32]any{
protocolTCP: make(map[int32]any),
protocolUDP: make(map[int32]any),
}
groups, err := r.groupNamesToIDs(ctx, nbPolicy.Spec.DestinationGroups, logger)
if err != nil {
@@ -85,11 +85,11 @@ func (r *NBPolicyReconciler) mapResources(ctx context.Context, nbPolicy *netbird
}
resourcePolicies := util.SplitTrim(*resource.Status.PolicyName, ",")
if generatedBy == "" && !util.Contains(resourcePolicies, nbPolicy.Name) {
if generatedBy == "" && !slices.Contains(resourcePolicies, nbPolicy.Name) {
continue
}
if generatedBy != "" && !util.Contains(resourcePolicies, strings.ReplaceAll(nbPolicy.Name, "-"+generatedBy, "")) {
if generatedBy != "" && !slices.Contains(resourcePolicies, strings.ReplaceAll(nbPolicy.Name, "-"+generatedBy, "")) {
continue
}
// Groups
@@ -282,7 +282,7 @@ func (r *NBPolicyReconciler) syncPolicy(ctx context.Context, nbPolicy *netbirdio
return requeue, errUnknownProtocol
}
if len(nbPolicy.Spec.Protocols) > 0 && !util.Contains(nbPolicy.Spec.Protocols, protocol) {
if len(nbPolicy.Spec.Protocols) > 0 && !slices.Contains(nbPolicy.Spec.Protocols, protocol) {
if policyID != nil {
logger.Info("Deleting protocol policy as NBPolicy has restricted protocols", "protocol", protocol)
err := r.netbird.Policies.Delete(ctx, *policyID)
@@ -363,7 +363,7 @@ func (r *NBPolicyReconciler) handleDelete(ctx context.Context, nbPolicy *netbird
}
nbPolicy.Status.UDPPolicyID = nil
}
if util.Contains(nbPolicy.Finalizers, "netbird.io/cleanup") {
if slices.Contains(nbPolicy.Finalizers, "netbird.io/cleanup") {
nbPolicy.Finalizers = util.Without(nbPolicy.Finalizers, "netbird.io/cleanup")
err := r.Client.Update(ctx, nbPolicy)
if err != nil {
+6 -6
View File
@@ -217,7 +217,7 @@ func (r *NBResourceReconciler) handlePolicyAddUpdate(ctx context.Context, req ct
return err
}
if !util.Contains(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String()) {
if !slices.Contains(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String()) {
nbPolicy.Status.ManagedServiceList = append(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String())
updatePolicyStatus = true
}
@@ -293,7 +293,7 @@ func (r *NBResourceReconciler) handlePolicyAddUpdate(ctx context.Context, req ct
func (r *NBResourceReconciler) handlePolicyDelete(ctx context.Context, req ctrl.Request, nbResource *netbirdiov1.NBResource, specPolicies []string, policy string, logger logr.Logger) error {
var nbPolicy netbirdiov1.NBPolicy
if !util.Contains(specPolicies, policy) {
if !slices.Contains(specPolicies, policy) {
kubeName := policy
if v, ok := nbResource.Status.PolicyNameMapping[policy]; ok {
kubeName = v
@@ -314,7 +314,7 @@ func (r *NBResourceReconciler) handlePolicyDelete(ctx context.Context, req ctrl.
}
delete(nbResource.Status.PolicyNameMapping, policy)
} else if util.Contains(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String()) {
} else if slices.Contains(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String()) {
nbPolicy.Status.ManagedServiceList = util.Without(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String())
nbPolicy.Status.LastUpdatedAt = &v1.Time{Time: time.Now()}
err := r.Client.Status().Update(ctx, &nbPolicy)
@@ -364,7 +364,7 @@ func (r *NBResourceReconciler) handlePolicy(ctx context.Context, req ctrl.Reques
// handleGroupUpdate update network resource groups
func (r *NBResourceReconciler) handleGroupUpdate(ctx context.Context, nbResource *netbirdiov1.NBResource, groupIDs []string, resource *api.NetworkResource, logger logr.Logger) error {
// Handle possible updated group IDs
groupIDMap := make(map[string]interface{})
groupIDMap := make(map[string]any)
for _, g := range groupIDs {
groupIDMap[g] = nil
}
@@ -478,7 +478,7 @@ func (r *NBResourceReconciler) handleGroups(ctx context.Context, req ctrl.Reques
if ownerIndex == -1 {
continue
}
if util.Contains(nbResource.Spec.Groups, g.Spec.Name) {
if slices.Contains(nbResource.Spec.Groups, g.Spec.Name) {
continue
}
if len(g.OwnerReferences) > 1 {
@@ -603,7 +603,7 @@ func (r *NBResourceReconciler) handleDelete(ctx context.Context, req ctrl.Reques
return err
}
if !errors.IsNotFound(err) && util.Contains(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String()) {
if !errors.IsNotFound(err) && slices.Contains(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String()) {
nbPolicy.Status.ManagedServiceList = util.Without(nbPolicy.Status.ManagedServiceList, req.NamespacedName.String())
nbPolicy.Status.LastUpdatedAt = &v1.Time{Time: time.Now()}
err = r.Client.Status().Update(ctx, &nbPolicy)
@@ -3,6 +3,8 @@ package controller
import (
"context"
"fmt"
"maps"
"slices"
"strings"
"time"
@@ -123,9 +125,7 @@ func (r *NBRoutingPeerReconciler) handleDeployment(ctx context.Context, req ctrl
}
labels := r.DefaultLabels
for k, v := range nbrp.Spec.Labels {
labels[k] = v
}
maps.Copy(labels, nbrp.Spec.Labels)
podLabels := labels
podLabels["app.kubernetes.io/name"] = "netbird-router"
@@ -617,7 +617,7 @@ func (r *NBRoutingPeerReconciler) handleDelete(ctx context.Context, req ctrl.Req
}
}
if nbGroup.Spec.Name != "" && util.Contains(nbGroup.Finalizers, "netbird.io/routing-peer-cleanup") {
if nbGroup.Spec.Name != "" && slices.Contains(nbGroup.Finalizers, "netbird.io/routing-peer-cleanup") {
nbGroup.Finalizers = util.Without(nbGroup.Finalizers, "netbird.io/routing-peer-cleanup")
logger.Info("Removing netbird.io/routing-peer-cleanup finalizer NBGroup", "namespace", nbGroup.Namespace, "name", nbGroup.Name)
err = r.Client.Update(ctx, &nbGroup)
+11 -10
View File
@@ -3,6 +3,7 @@ package controller
import (
"context"
"fmt"
"slices"
"strconv"
"strings"
"time"
@@ -96,7 +97,7 @@ func (r *ServiceReconciler) hideService(ctx context.Context, req ctrl.Request, s
}
}
if util.Contains(svc.Finalizers, "netbird.io/cleanup") {
if slices.Contains(svc.Finalizers, "netbird.io/cleanup") {
svc.Finalizers = util.Without(svc.Finalizers, "netbird.io/cleanup")
err := r.Client.Update(ctx, &svc)
if err != nil {
@@ -115,7 +116,7 @@ func (r *ServiceReconciler) exposeService(ctx context.Context, req ctrl.Request,
routerNamespace = req.Namespace
}
if !util.Contains(svc.Finalizers, "netbird.io/cleanup") {
if !slices.Contains(svc.Finalizers, "netbird.io/cleanup") {
svc.Finalizers = append(svc.Finalizers, "netbird.io/cleanup")
err := r.Client.Update(ctx, &svc)
if err != nil {
@@ -196,7 +197,7 @@ func (r *ServiceReconciler) reconcileNBResource(nbResource *netbirdiov1.NBResour
if v, ok := svc.Annotations[serviceGroupsAnnotation]; ok {
//nolint:prealloc
groups = nil
for _, g := range strings.Split(v, ",") {
for g := range strings.SplitSeq(v, ",") {
groups = append(groups, strings.TrimSpace(g))
}
}
@@ -237,7 +238,7 @@ func (r *ServiceReconciler) applyPolicy(nbResource *netbirdiov1.NBResource, svc
}
var filterPorts []int32
if v, ok := svc.Annotations[servicePortsAnnotation]; ok {
for _, v := range strings.Split(v, ",") {
for v := range strings.SplitSeq(v, ",") {
port, err := strconv.ParseInt(v, 10, 64)
if err != nil {
return err
@@ -267,23 +268,23 @@ func (r *ServiceReconciler) applyPolicy(nbResource *netbirdiov1.NBResource, svc
for _, p := range svc.Spec.Ports {
switch p.Protocol {
case corev1.ProtocolTCP:
if (len(filterPorts) > 0 && !util.Contains(filterPorts, p.Port)) || (len(filterProtocols) > 0 && !util.Contains(filterProtocols, "tcp")) {
if util.Contains(nbResource.Spec.TCPPorts, p.Port) {
if (len(filterPorts) > 0 && !slices.Contains(filterPorts, p.Port)) || (len(filterProtocols) > 0 && !slices.Contains(filterProtocols, "tcp")) {
if slices.Contains(nbResource.Spec.TCPPorts, p.Port) {
nbResource.Spec.TCPPorts = util.Without(nbResource.Spec.TCPPorts, p.Port)
}
continue
}
if !util.Contains(nbResource.Spec.TCPPorts, p.Port) {
if !slices.Contains(nbResource.Spec.TCPPorts, p.Port) {
nbResource.Spec.TCPPorts = append(nbResource.Spec.TCPPorts, p.Port)
}
case corev1.ProtocolUDP:
if (len(filterPorts) > 0 && !util.Contains(filterPorts, p.Port)) || (len(filterProtocols) > 0 && !util.Contains(filterProtocols, "udp")) {
if util.Contains(nbResource.Spec.UDPPorts, p.Port) {
if (len(filterPorts) > 0 && !slices.Contains(filterPorts, p.Port)) || (len(filterProtocols) > 0 && !slices.Contains(filterProtocols, "udp")) {
if slices.Contains(nbResource.Spec.UDPPorts, p.Port) {
nbResource.Spec.UDPPorts = util.Without(nbResource.Spec.UDPPorts, p.Port)
}
continue
}
if !util.Contains(nbResource.Spec.UDPPorts, p.Port) {
if !slices.Contains(nbResource.Spec.UDPPorts, p.Port) {
nbResource.Spec.UDPPorts = append(nbResource.Spec.UDPPorts, p.Port)
}
default:
+1 -11
View File
@@ -2,16 +2,6 @@ package util
import "strings"
// Contains return if y is in slice x
func Contains[T comparable](x []T, y T) bool {
for _, v := range x {
if v == y {
return true
}
}
return false
}
// Without return all of x in same order without y
func Without[T comparable](x []T, y T) []T {
var ret []T
@@ -29,7 +19,7 @@ func Equivalent[T comparable](x, y []T) bool {
return false
}
mp := make(map[T]interface{})
mp := make(map[T]any)
for _, v := range x {
mp[v] = nil
}
+2 -2
View File
@@ -153,8 +153,8 @@ func LoadImageToKindClusterWithName(name string) error {
// according to line breakers, and ignores the empty elements in it.
func GetNonEmptyLines(output string) []string {
var res []string
elements := strings.Split(output, "\n")
for _, element := range elements {
elements := strings.SplitSeq(output, "\n")
for element := range elements {
if element != "" {
res = append(res, element)
}