Skip to content

Commit 7642a5b

Browse files
authored
Merge pull request #441 from gianlucam76/advance-libsveltos-sveltos-agent
(chore) advance to golang v1.25.6
2 parents 2ec05c1 + 3850f3d commit 7642a5b

25 files changed

+163
-99
lines changed

.github/workflows/main.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
- name: Set up Go
1919
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
2020
with:
21-
go-version: 1.25.5
21+
go-version: 1.25.6
2222
- name: Build
2323
run: make build
2424
- name: FMT
@@ -37,7 +37,7 @@ jobs:
3737
- name: Set up Go
3838
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
3939
with:
40-
go-version: 1.25.5
40+
go-version: 1.25.6
4141
- name: ut
4242
run: make test
4343
env:
@@ -50,7 +50,7 @@ jobs:
5050
- name: Set up Go
5151
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
5252
with:
53-
go-version: 1.25.5
53+
go-version: 1.25.6
5454
- name: fv
5555
run: make create-cluster fv
5656
env:
@@ -63,7 +63,7 @@ jobs:
6363
- name: Set up Go
6464
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
6565
with:
66-
go-version: 1.25.5
66+
go-version: 1.25.6
6767
- name: fv-sharding
6868
run: make create-cluster fv-sharding
6969
env:
@@ -76,7 +76,7 @@ jobs:
7676
- name: Set up Go
7777
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
7878
with:
79-
go-version: 1.25.5
79+
go-version: 1.25.6
8080
- name: fv-agentless
8181
run: make create-cluster fv-agentless
8282
env:
@@ -89,7 +89,7 @@ jobs:
8989
- name: Set up Go
9090
uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0
9191
with:
92-
go-version: 1.25.5
92+
go-version: 1.25.6
9393
- name: fv-pullmode
9494
run: make create-cluster-pullmode fv-pullmode
9595
env:

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM golang:1.25.5 AS builder
2+
FROM golang:1.25.6 AS builder
33

44
ARG BUILDOS
55
ARG TARGETARCH

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Classifier currently supports the following classification criteria:
1616
1. Kubernetes version
1717
2. Kubernetes resources
1818

19-
For instance, this Classifier instance will match any cluster whose Kubernetes version is greater than or equal to "v1.24.0" and strictly less than "v1.25.5"
19+
For instance, this Classifier instance will match any cluster whose Kubernetes version is greater than or equal to "v1.24.0" and strictly less than "v1.25.6"
2020

2121
```
2222
apiVersion: lib.projectsveltos.io/v1beta1
@@ -31,7 +31,7 @@ spec:
3131
- comparison: GreaterThanOrEqualTo
3232
version: 1.24.0
3333
- comparison: LessThan
34-
version: 1.25.5
34+
version: 1.25.6
3535
```
3636

3737
When a cluster is a match for a Classifier instances, all classifierLabels will be automatically added to the Cluster instance.
@@ -45,8 +45,8 @@ Refer to [examples](./examples/) for more complex examples.
4545
## A simple use case: upgrade helm charts automatically when Kubernetes cluster is upgraded
4646
Suppose you are managing several Kubernetes clusters with different versions.
4747
And you want to deploy:
48-
1. OPA Gatekeeper version 3.10.0 in any Kubernetes cluster whose version is >= v1.25.5
49-
2. OPA Gatekeeper version 3.9.0 in any Kubernetes cluster whose version is >= v1.24.0 && < v1.25.5
48+
1. OPA Gatekeeper version 3.10.0 in any Kubernetes cluster whose version is >= v1.25.6
49+
2. OPA Gatekeeper version 3.9.0 in any Kubernetes cluster whose version is >= v1.24.0 && < v1.25.6
5050

5151
You can create following ClusterProfiles and Classifiers in the management cluster:
5252
```
@@ -102,7 +102,7 @@ spec:
102102
value: v3-10
103103
kubernetesVersionConstraints:
104104
- comparison: GreaterThanOrEqualTo
105-
version: 1.25.5
105+
version: 1.25.6
106106
```
107107

108108
```
@@ -118,7 +118,7 @@ spec:
118118
- comparison: GreaterThanOrEqualTo
119119
version: 1.24.0
120120
- comparison: LessThan
121-
version: 1.25.5
121+
version: 1.25.6
122122
```
123123

124124
With the above configuration:

controllers/classifier_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ type ClassifierReconciler struct {
116116

117117
// List of current existing Classifiers
118118
AllClassifierSet libsveltosset.Set
119+
120+
Logger logr.Logger
119121
}
120122

121123
//+kubebuilder:rbac:groups=lib.projectsveltos.io,resources=classifiers,verbs=get;list;watch;create;update;patch;delete
@@ -480,7 +482,7 @@ func (r *ClassifierReconciler) getMatchingClusters(ctx context.Context,
480482
for i := range classifierReportList.Items {
481483
report := &classifierReportList.Items[i]
482484

483-
// Only consider reports with ClusterNamespace set (type #2 in your logic)
485+
// Only consider reports with ClusterNamespace set
484486
if report.Spec.ClusterNamespace == "" {
485487
continue
486488
}
@@ -591,7 +593,6 @@ func (r *ClassifierReconciler) updateLabelsOnMatchingClusters(ctx context.Contex
591593
}
592594

593595
clusterLogger := logger.WithValues("cluster", fmt.Sprintf("%s/%s", cluster.GetNamespace(), cluster.GetName()))
594-
595596
// Attempt to update labels on the physical cluster
596597
if err := r.updateLabelsOnCluster(ctx, classifierScope, cluster, clusterproxy.GetClusterType(ref), clusterLogger); err != nil {
597598
if !apierrors.IsNotFound(err) {

controllers/classifier_controller_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ var _ = Describe("Classifier: Reconciler", func() {
6767
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
6868
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
6969
Mux: sync.Mutex{},
70+
Logger: logger,
7071
}
7172

7273
classifierName := client.ObjectKey{
@@ -144,6 +145,7 @@ var _ = Describe("Classifier: Reconciler", func() {
144145
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
145146
Mux: sync.Mutex{},
146147
Deployer: dep,
148+
Logger: logger,
147149
}
148150

149151
// Because Classifier is currently deployed in a Cluster (Status.ClusterInfo is set
@@ -207,6 +209,7 @@ var _ = Describe("Classifier: Reconciler", func() {
207209
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
208210
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
209211
Mux: sync.Mutex{},
212+
Logger: logger,
210213
}
211214

212215
classifierScope, err := scope.NewClassifierScope(scope.ClassifierScopeParams{
@@ -275,6 +278,7 @@ var _ = Describe("Classifier: Reconciler", func() {
275278
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
276279
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
277280
Mux: sync.Mutex{},
281+
Logger: logger,
278282
}
279283

280284
classifierScope, err := scope.NewClassifierScope(scope.ClassifierScopeParams{
@@ -340,6 +344,7 @@ var _ = Describe("Classifier: Reconciler", func() {
340344
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
341345
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
342346
Mux: sync.Mutex{},
347+
Logger: logger,
343348
}
344349

345350
classifierScope, err := scope.NewClassifierScope(scope.ClassifierScopeParams{
@@ -416,6 +421,7 @@ var _ = Describe("Classifier: Reconciler", func() {
416421
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
417422
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
418423
Mux: sync.Mutex{},
424+
Logger: logger,
419425
}
420426

421427
classifierScope, err := scope.NewClassifierScope(scope.ClassifierScopeParams{
@@ -483,6 +489,7 @@ var _ = Describe("Classifier: Reconciler", func() {
483489
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
484490
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
485491
Mux: sync.Mutex{},
492+
Logger: logger,
486493
}
487494

488495
oldMatches := map[corev1.ObjectReference]bool{clusterRef: true}
@@ -553,6 +560,7 @@ var _ = Describe("Classifier: Reconciler", func() {
553560
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
554561
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
555562
Mux: sync.Mutex{},
563+
Logger: logger,
556564
}
557565

558566
clusterRef := &corev1.ObjectReference{

controllers/classifier_deployer.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,6 +1391,12 @@ func deployClassifierInstance(ctx context.Context, remoteClient client.Client,
13911391
logger.V(logs.LogDebug).Info("deploy classifier instance")
13921392

13931393
if !isPullMode {
1394+
if getAgentInMgmtCluster() {
1395+
// If sveltos-agent is deployed in the management cluster, Classifier instance
1396+
// does not need to be deployed in the managed cluster. So return here
1397+
return nil
1398+
}
1399+
13941400
currentClassifier := &libsveltosv1beta1.Classifier{}
13951401
err := remoteClient.Get(ctx, types.NamespacedName{Name: classifier.Name}, currentClassifier)
13961402
if err != nil {

controllers/classifier_predicates.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,14 @@ func ClassifierReportPredicate(logger logr.Logger) predicate.Funcs {
256256
return true
257257
}
258258

259+
// return true if ClassifierReport.Spec.ClusterNamespace has changed
260+
// This happens in agentless mode as sveltos
261+
if oldReport.Spec.ClusterNamespace != newReport.Spec.ClusterNamespace {
262+
log.V(logs.LogVerbose).Info(
263+
"ClassifierReport Spec.ClusterNamespace changed. Will attempt to reconcile associated Classifiers.")
264+
return true
265+
}
266+
259267
// otherwise, return false
260268
log.V(logs.LogVerbose).Info(
261269
"ClassifierReport did not match expected conditions. Will not attempt to reconcile associated Classifiers.")

controllers/classifier_transformations.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ func (r *ClassifierReconciler) requeueClassifierForClassifierReport(
161161
) []reconcile.Request {
162162

163163
report := o.(*libsveltosv1beta1.ClassifierReport)
164-
logger := textlogger.NewLogger(textlogger.NewConfig(textlogger.Verbosity(1))).WithValues(
164+
logger := r.Logger.WithValues(
165165
"objectMapper",
166166
"requeueClassifierForClassifierReport",
167167
"namespace",

controllers/classifier_transformations_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
corev1 "k8s.io/api/core/v1"
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
"k8s.io/apimachinery/pkg/types"
29+
"k8s.io/klog/v2/textlogger"
2930
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
3031
"sigs.k8s.io/controller-runtime/pkg/client"
3132
"sigs.k8s.io/controller-runtime/pkg/client/fake"
@@ -90,11 +91,13 @@ var _ = Describe("ClassifierTransformations map functions", func() {
9091
c := fake.NewClientBuilder().WithScheme(scheme).WithStatusSubresource(initObjects...).
9192
WithObjects(initObjects...).Build()
9293

94+
logger := textlogger.NewLogger(textlogger.NewConfig(textlogger.Verbosity(1)))
9395
reconciler := &controllers.ClassifierReconciler{
9496
Client: c,
9597
Scheme: scheme,
9698
Mux: sync.Mutex{},
9799
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
100+
Logger: logger,
98101
}
99102

100103
set := libsveltosset.Set{}
@@ -143,11 +146,13 @@ var _ = Describe("ClassifierTransformations map functions", func() {
143146
c := fake.NewClientBuilder().WithScheme(scheme).WithStatusSubresource(initObjects...).
144147
WithObjects(initObjects...).Build()
145148

149+
logger := textlogger.NewLogger(textlogger.NewConfig(textlogger.Verbosity(1)))
146150
reconciler := &controllers.ClassifierReconciler{
147151
Client: c,
148152
Scheme: scheme,
149153
Mux: sync.Mutex{},
150154
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
155+
Logger: logger,
151156
}
152157

153158
requests := controllers.RequeueClassifierForClassifierReport(reconciler, context.TODO(), report)

controllers/controllers_suite_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"k8s.io/apimachinery/pkg/util/wait"
3636
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3737
"k8s.io/klog/v2"
38+
"k8s.io/klog/v2/textlogger"
3839
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
3940
"sigs.k8s.io/cluster-api/util"
4041
ctrl "sigs.k8s.io/controller-runtime"
@@ -184,15 +185,15 @@ func getClassifierReport(classifierName, clusterNamespace, clusterName string) *
184185
}
185186

186187
func getClassifierInstance(name string) *libsveltosv1beta1.Classifier {
187-
classifierLabels := []libsveltosv1beta1.ClassifierLabel{{Key: "version", Value: "v1.25.5"}}
188+
classifierLabels := []libsveltosv1beta1.ClassifierLabel{{Key: "version", Value: "v1.25.6"}}
188189
return &libsveltosv1beta1.Classifier{
189190
ObjectMeta: metav1.ObjectMeta{
190191
Name: name,
191192
},
192193
Spec: libsveltosv1beta1.ClassifierSpec{
193194
KubernetesVersionConstraints: []libsveltosv1beta1.KubernetesVersionConstraint{
194195
{
195-
Version: "1.25.5",
196+
Version: "1.25.6",
196197
Comparison: string(libsveltosv1beta1.ComparisonEqual),
197198
},
198199
},
@@ -202,13 +203,15 @@ func getClassifierInstance(name string) *libsveltosv1beta1.Classifier {
202203
}
203204

204205
func getClassifierReconciler(c client.Client, dep deployer.DeployerInterface) *controllers.ClassifierReconciler {
206+
logger := textlogger.NewLogger(textlogger.NewConfig(textlogger.Verbosity(1)))
205207
return &controllers.ClassifierReconciler{
206208
Client: c,
207209
Scheme: scheme,
208210
Deployer: dep,
209211
ClusterMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
210212
ClassifierMap: make(map[corev1.ObjectReference]*libsveltosset.Set),
211213
Mux: sync.Mutex{},
214+
Logger: logger,
212215
}
213216
}
214217

0 commit comments

Comments
 (0)