Skip to content

Commit 532e03b

Browse files
committed
Merge branch 'pravega-master' into zk-backup-controller
2 parents a53eebc + a62cbf1 commit 532e03b

12 files changed

+5897
-3373
lines changed

.github/workflows/ci.yaml

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ jobs:
2929
sudo go version
3030
- name: Check out code into the Go module directory
3131
uses: actions/checkout@v2
32+
- name: get go version
33+
run: go version
3234
- name: Gofmt and License checks
3335
run: make check
3436
- name: unit tests
@@ -37,7 +39,7 @@ jobs:
3739
uses: codecov/[email protected]
3840
- name: Set env
3941
run: |
40-
echo "KUBERNETES_VERSION=v1.20.13" >> $GITHUB_ENV
42+
echo "KUBERNETES_VERSION=v1.23.1" >> $GITHUB_ENV
4143
echo "OPERATOR_SDK_VERSION=v0.19.4" >> $GITHUB_ENV
4244
echo "MINIKUBE_VERSION=v1.24.0" >> $GITHUB_ENV
4345
echo "KUBERNETES_CONFIG_FILE=$HOME/.kube/config" >> $GITHUB_ENV

api/v1beta1/doc.go

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* Copyright (c) 2018 Dell Inc., or its subsidiaries. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*/
10+
11+
// Package v1beta1 contains API Schema definitions for the zookeeper v1beta1 API
12+
// group
13+
// +k8s:deepcopy-gen=package,register
14+
// +groupName=zookeeper.pravega.io
15+
package v1beta1

config/crd/bases/zookeeper.pravega.io_zookeeperclusters.yaml

+5,552-3,138
Large diffs are not rendered by default.

controllers/zookeeperbackup_controller.go

-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import (
3737
"github.com/mitchellh/hashstructure/v2"
3838
)
3939

40-
4140
var logBk = logf.Log.WithName("controller_zookeeperbackup")
4241

4342
// ZookeeperBackupReconciler reconciles a ZookeeperBackup object

controllers/zookeepercluster_controller.go

+12-11
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,16 @@ package controllers
1212
import (
1313
"context"
1414
"fmt"
15+
"strconv"
16+
"time"
17+
1518
"github.com/pravega/zookeeper-operator/pkg/controller/config"
1619
"github.com/pravega/zookeeper-operator/pkg/utils"
1720
"github.com/pravega/zookeeper-operator/pkg/yamlexporter"
1821
"github.com/pravega/zookeeper-operator/pkg/zk"
1922
"k8s.io/client-go/kubernetes/scheme"
2023
"sigs.k8s.io/controller-runtime/pkg/client/fake"
2124
"sigs.k8s.io/controller-runtime/pkg/predicate"
22-
"strconv"
23-
"time"
2425

2526
"github.com/go-logr/logr"
2627
zookeeperv1beta1 "github.com/pravega/zookeeper-operator/api/v1beta1"
@@ -59,7 +60,7 @@ type reconcileFun func(cluster *zookeeperv1beta1.ZookeeperCluster) error
5960
// +kubebuilder:rbac:groups=zookeeper.pravega.io.zookeeper.pravega.io,resources=zookeeperclusters,verbs=get;list;watch;create;update;patch;delete
6061
// +kubebuilder:rbac:groups=zookeeper.pravega.io.zookeeper.pravega.io,resources=zookeeperclusters/status,verbs=get;update;patch
6162

62-
func (r *ZookeeperClusterReconciler) Reconcile(request ctrl.Request) (ctrl.Result, error) {
63+
func (r *ZookeeperClusterReconciler) Reconcile(_ context.Context, request ctrl.Request) (ctrl.Result, error) {
6364
r.Log = log.WithValues(
6465
"Request.Namespace", request.Namespace,
6566
"Request.Name", request.Name)
@@ -262,7 +263,7 @@ func (r *ZookeeperClusterReconciler) updateStatefulSet(instance *zookeeperv1beta
262263

263264
func (r *ZookeeperClusterReconciler) upgradeStatefulSet(instance *zookeeperv1beta1.ZookeeperCluster, foundSts *appsv1.StatefulSet) (err error) {
264265

265-
//Getting the upgradeCondition from the zk clustercondition
266+
// Getting the upgradeCondition from the zk clustercondition
266267
_, upgradeCondition := instance.Status.GetClusterCondition(zookeeperv1beta1.ClusterConditionUpgrading)
267268

268269
if upgradeCondition == nil {
@@ -271,8 +272,8 @@ func (r *ZookeeperClusterReconciler) upgradeStatefulSet(instance *zookeeperv1bet
271272
return nil
272273
}
273274

274-
//Setting the upgrade condition to true to trigger the upgrade
275-
//When the zk cluster is upgrading Statefulset CurrentRevision and UpdateRevision are not equal and zk cluster image tag is not equal to CurrentVersion
275+
// Setting the upgrade condition to true to trigger the upgrade
276+
// When the zk cluster is upgrading Statefulset CurrentRevision and UpdateRevision are not equal and zk cluster image tag is not equal to CurrentVersion
276277
if upgradeCondition.Status == corev1.ConditionFalse {
277278
if instance.Status.IsClusterInReadyState() && foundSts.Status.CurrentRevision != foundSts.Status.UpdateRevision && instance.Spec.Image.Tag != instance.Status.CurrentVersion {
278279
instance.Status.TargetVersion = instance.Spec.Image.Tag
@@ -281,20 +282,20 @@ func (r *ZookeeperClusterReconciler) upgradeStatefulSet(instance *zookeeperv1bet
281282
}
282283
}
283284

284-
//checking if the upgrade is in progress
285+
// checking if the upgrade is in progress
285286
if upgradeCondition.Status == corev1.ConditionTrue {
286-
//checking when the targetversion is empty
287+
// checking when the targetversion is empty
287288
if instance.Status.TargetVersion == "" {
288289
r.Log.Info("upgrading to an unknown version: cancelling upgrade process")
289290
return r.clearUpgradeStatus(instance)
290291
}
291-
//Checking for upgrade completion
292+
// Checking for upgrade completion
292293
if foundSts.Status.CurrentRevision == foundSts.Status.UpdateRevision {
293294
instance.Status.CurrentVersion = instance.Status.TargetVersion
294295
r.Log.Info("upgrade completed")
295296
return r.clearUpgradeStatus(instance)
296297
}
297-
//updating the upgradecondition if upgrade is in progress
298+
// updating the upgradecondition if upgrade is in progress
298299
if foundSts.Status.CurrentRevision != foundSts.Status.UpdateRevision {
299300
r.Log.Info("upgrade in progress")
300301
if fmt.Sprint(foundSts.Status.UpdatedReplicas) != upgradeCondition.Message {
@@ -555,7 +556,7 @@ func (r *ZookeeperClusterReconciler) reconcileClusterStatus(instance *zookeeperv
555556
instance.Status.Members.Ready = readyMembers
556557
instance.Status.Members.Unready = unreadyMembers
557558

558-
//If Cluster is in a ready state...
559+
// If Cluster is in a ready state...
559560
if instance.Spec.Replicas == instance.Status.ReadyReplicas && (!instance.Status.MetaRootCreated) {
560561
r.Log.Info("Cluster is Ready, Creating ZK Metadata...")
561562
zkUri := utils.GetZkServiceUri(instance)

controllers/zookeepercluster_controller_test.go

+44-46
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
corev1 "k8s.io/api/core/v1"
2424
policyv1beta1 "k8s.io/api/policy/v1beta1"
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26-
"k8s.io/apimachinery/pkg/runtime"
2726
"k8s.io/apimachinery/pkg/types"
2827
"k8s.io/client-go/kubernetes/scheme"
2928
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -106,9 +105,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
106105
)
107106

108107
BeforeEach(func() {
109-
cl = fake.NewFakeClient(z)
108+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(z).Build()
110109
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
111-
res, err = r.Reconcile(req)
110+
res, err = r.Reconcile(context.TODO(), req)
112111
})
113112

114113
It("shouldn't error", func() {
@@ -135,9 +134,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
135134

136135
BeforeEach(func() {
137136
z.WithDefaults()
138-
cl = fake.NewFakeClient(z)
137+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(z).Build()
139138
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
140-
res, err = r.Reconcile(req)
139+
res, err = r.Reconcile(context.TODO(), req)
141140
})
142141

143142
It("should not error", func() {
@@ -206,9 +205,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
206205
next := z.DeepCopy()
207206
st := zk.MakeStatefulSet(z)
208207
next.Spec.Replicas = 6
209-
cl = fake.NewFakeClient([]runtime.Object{next, st}...)
208+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, st).Build()
210209
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
211-
res, err = r.Reconcile(req)
210+
res, err = r.Reconcile(context.TODO(), req)
212211
})
213212

214213
It("should not raise an error", func() {
@@ -234,9 +233,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
234233
z.Status.Init()
235234
next := z.DeepCopy()
236235
st := zk.MakeStatefulSet(z)
237-
cl = fake.NewFakeClient([]runtime.Object{next, st}...)
236+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, st).Build()
238237
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
239-
res, err = r.Reconcile(req)
238+
res, err = r.Reconcile(context.TODO(), req)
240239
})
241240

242241
It("should not raise an error", func() {
@@ -265,9 +264,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
265264
z.Status.Init()
266265
next = z.DeepCopy()
267266
sa = zk.MakeServiceAccount(z)
268-
cl = fake.NewFakeClientWithScheme(s, []runtime.Object{next, sa}...)
267+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, sa).Build()
269268
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
270-
res, err = r.Reconcile(req)
269+
res, err = r.Reconcile(context.TODO(), req)
271270
})
272271

273272
It("should not raise an error", func() {
@@ -282,9 +281,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
282281
})
283282
It("should update the service account", func() {
284283
next.Spec.Pod.ImagePullSecrets = []corev1.LocalObjectReference{{Name: "test-pull-secret"}}
285-
cl = fake.NewFakeClientWithScheme(s, []runtime.Object{next, sa}...)
284+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, sa).Build()
286285
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
287-
_, err := r.Reconcile(req)
286+
_, err := r.Reconcile(context.TODO(), req)
288287
Ω(err).To(BeNil())
289288

290289
foundSA := &corev1.ServiceAccount{}
@@ -307,15 +306,15 @@ var _ = Describe("ZookeeperCluster Controller", func() {
307306
next.Status.CurrentVersion = "0.2.6"
308307
next.Status.SetPodsReadyConditionTrue()
309308
st := zk.MakeStatefulSet(z)
310-
cl = fake.NewFakeClient([]runtime.Object{next, st}...)
309+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, st).Build()
311310
st = &appsv1.StatefulSet{}
312311
err = cl.Get(context.TODO(), req.NamespacedName, st)
313-
//changing the Revision value to simulate the upgrade scenario
312+
// changing the Revision value to simulate the upgrade scenario
314313
st.Status.CurrentRevision = "CurrentRevision"
315314
st.Status.UpdateRevision = "UpdateRevision"
316315
cl.Status().Update(context.TODO(), st)
317316
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
318-
res, err = r.Reconcile(req)
317+
res, err = r.Reconcile(context.TODO(), req)
319318
})
320319

321320
It("should not raise an error", func() {
@@ -347,7 +346,7 @@ var _ = Describe("ZookeeperCluster Controller", func() {
347346
It("should check if the cluster is in upgrade failed state", func() {
348347
z.Status.SetErrorConditionTrue("UpgradeFailed", " ")
349348
cl.Status().Update(context.TODO(), z)
350-
res, err = r.Reconcile(req)
349+
res, err = r.Reconcile(context.TODO(), req)
351350
Ω(err).To(BeNil())
352351
})
353352
})
@@ -367,19 +366,19 @@ var _ = Describe("ZookeeperCluster Controller", func() {
367366
next.Status.TargetVersion = "0.2.7"
368367
next.Status.SetUpgradingConditionTrue(" ", " ")
369368
st := zk.MakeStatefulSet(z)
370-
cl = fake.NewFakeClient([]runtime.Object{next, st}...)
369+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, st).Build()
371370
st = &appsv1.StatefulSet{}
372371
err = cl.Get(context.TODO(), req.NamespacedName, st)
373-
//changing the Revision value to simulate the upgrade scenario completion
372+
// changing the Revision value to simulate the upgrade scenario completion
374373
st.Status.CurrentRevision = "complete"
375374
st.Status.UpdateRevision = "complete"
376375
cl.Status().Update(context.TODO(), st)
377376
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
378377
foundZookeeper := &v1beta1.ZookeeperCluster{}
379378
_ = cl.Get(context.TODO(), req.NamespacedName, foundZookeeper)
380-
res, err = r.Reconcile(req)
381-
res, err = r.Reconcile(req)
382-
res, err = r.Reconcile(req)
379+
res, err = r.Reconcile(context.TODO(), req)
380+
res, err = r.Reconcile(context.TODO(), req)
381+
res, err = r.Reconcile(context.TODO(), req)
383382
})
384383

385384
It("should not raise an error", func() {
@@ -414,19 +413,19 @@ var _ = Describe("ZookeeperCluster Controller", func() {
414413
next.Status.SetUpgradingConditionTrue(" ", "1")
415414
next.Status.TargetVersion = "0.2.7"
416415
st := zk.MakeStatefulSet(z)
417-
cl = fake.NewFakeClient([]runtime.Object{next, st}...)
416+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, st).Build()
418417
st = &appsv1.StatefulSet{}
419418
err = cl.Get(context.TODO(), req.NamespacedName, st)
420-
//changing the Revision value to simulate the upgrade scenario
419+
// changing the Revision value to simulate the upgrade scenario
421420
st.Status.CurrentRevision = "currentRevision"
422421
st.Status.UpdateRevision = "updateRevision"
423422
st.Status.UpdatedReplicas = 2
424423
cl.Status().Update(context.TODO(), st)
425424
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
426-
res, err = r.Reconcile(req)
427-
//sleeping for 3 seconds
425+
res, err = r.Reconcile(context.TODO(), req)
426+
// sleeping for 3 seconds
428427
time.Sleep(3 * time.Second)
429-
//checking if more than 2 secs have passed from the last update time
428+
// checking if more than 2 secs have passed from the last update time
430429
err = checkSyncTimeout(next, " ", 1, 2*time.Second)
431430

432431
})
@@ -458,9 +457,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
458457
next.Status.TargetVersion = ""
459458
next.Status.IsClusterInUpgradingState()
460459
st := zk.MakeStatefulSet(z)
461-
cl = fake.NewFakeClient([]runtime.Object{next, st}...)
460+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, st).Build()
462461
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
463-
res, err = r.Reconcile(req)
462+
res, err = r.Reconcile(context.TODO(), req)
464463
})
465464

466465
It("should not raise an error", func() {
@@ -482,10 +481,10 @@ var _ = Describe("ZookeeperCluster Controller", func() {
482481
BeforeEach(func() {
483482
z.WithDefaults()
484483
z.Status.Init()
485-
cl = fake.NewFakeClient(z)
484+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(z).Build()
486485
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
487486
req.NamespacedName.Namespace = "temp"
488-
res, err = r.Reconcile(req)
487+
res, err = r.Reconcile(context.TODO(), req)
489488
})
490489
It("should have false in reconcile result", func() {
491490
Ω(res.Requeue).To(Equal(false))
@@ -503,9 +502,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
503502
BeforeEach(func() {
504503
z.WithDefaults()
505504
z.Status.Init()
506-
cl = fake.NewFakeClient(z)
505+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(z).Build()
507506
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
508-
res, err = r.Reconcile(req)
507+
res, err = r.Reconcile(context.TODO(), req)
509508
})
510509

511510
It("should not raise an error", func() {
@@ -576,9 +575,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
576575
next := z.DeepCopy()
577576
next.Spec.Ports[0].ContainerPort = 2182
578577
svc := zk.MakeClientService(z)
579-
cl = fake.NewFakeClient([]runtime.Object{next, svc}...)
578+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, svc).Build()
580579
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
581-
res, err = r.Reconcile(req)
580+
res, err = r.Reconcile(context.TODO(), req)
582581
})
583582

584583
It("should not raise an error", func() {
@@ -594,9 +593,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
594593
BeforeEach(func() {
595594
z.WithDefaults()
596595
z.Spec.Persistence = nil
597-
cl = fake.NewFakeClient(z)
596+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(z).Build()
598597
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
599-
res, err = r.Reconcile(req)
598+
res, err = r.Reconcile(context.TODO(), req)
600599
err = r.reconcileFinalizers(z)
601600
// update deletion timestamp
602601
_ = cl.Get(context.TODO(), req.NamespacedName, z)
@@ -618,7 +617,7 @@ var _ = Describe("ZookeeperCluster Controller", func() {
618617
BeforeEach(func() {
619618
z.WithDefaults()
620619
z.Spec.Persistence = nil
621-
cl = fake.NewFakeClient(z)
620+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(z).Build()
622621
})
623622
It("should have 1 finalizer, should not raise an error", func() {
624623
config.DisableFinalizer = false
@@ -693,9 +692,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
693692
next = z.DeepCopy()
694693
next.Spec.TriggerRollingRestart = true
695694
svc = zk.MakeClientService(z)
696-
cl = fake.NewFakeClient([]runtime.Object{next, svc}...)
695+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, svc).Build()
697696
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
698-
res, err = r.Reconcile(req)
697+
res, err = r.Reconcile(context.TODO(), req)
699698
err = cl.Get(context.TODO(), req.NamespacedName, foundZk)
700699
})
701700

@@ -713,9 +712,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
713712

714713
next.Spec.TriggerRollingRestart = false
715714
svc = zk.MakeClientService(z)
716-
cl = fake.NewFakeClient([]runtime.Object{next, svc}...)
715+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, svc).Build()
717716
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
718-
res, err = r.Reconcile(req)
717+
res, err = r.Reconcile(context.TODO(), req)
719718

720719
Ω(res.Requeue).To(Equal(false))
721720
Ω(err).To(BeNil())
@@ -734,9 +733,8 @@ var _ = Describe("ZookeeperCluster Controller", func() {
734733
// update the crd instance
735734
next.Spec.TriggerRollingRestart = false
736735
svc = zk.MakeClientService(z)
737-
cl = fake.NewFakeClient([]runtime.Object{next, svc}...)
738736
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
739-
res, err = r.Reconcile(req)
737+
res, err = r.Reconcile(context.TODO(), req)
740738
err = cl.Get(context.TODO(), req.NamespacedName, foundZk)
741739

742740
// check that restartTime was not updated
@@ -752,9 +750,9 @@ var _ = Describe("ZookeeperCluster Controller", func() {
752750
// update the crd instance to trigger rolling restart
753751
next.Spec.TriggerRollingRestart = true
754752
svc = zk.MakeClientService(z)
755-
cl = fake.NewFakeClient([]runtime.Object{next, svc}...)
753+
cl = fake.NewClientBuilder().WithScheme(scheme.Scheme).WithRuntimeObjects(next, svc).Build()
756754
r = &ZookeeperClusterReconciler{Client: cl, Scheme: s, ZkClient: mockZkClient}
757-
res, err = r.Reconcile(req)
755+
res, err = r.Reconcile(context.TODO(), req)
758756
err = cl.Get(context.TODO(), req.NamespacedName, foundZk)
759757

760758
// check that restartTime was updated

0 commit comments

Comments
 (0)