Skip to content

Commit 586c33e

Browse files
authored
Updated function to return updated StatefulSet (#208)
1 parent 83b011f commit 586c33e

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ tags
7575
.vscode/*
7676
.history
7777
# End of https://www.gitignore.io/api/go,vim,emacs,visualstudiocode
78-
78+
*DS_Store
79+
*mypy_cache
7980
.idea
8081
vendor
8182
__pycache__

pkg/controller/mongodb/replica_set_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,9 +353,10 @@ func (r *ReplicaSetReconciler) resetStatefulSetUpdateStrategy(mdb mdbv1.MongoDB)
353353
return nil
354354
}
355355
// if we changed the version, we need to reset the UpdatePolicy back to OnUpdate
356-
return statefulset.GetAndUpdate(r.client, mdb.NamespacedName(), func(sts *appsv1.StatefulSet) {
356+
_, err := statefulset.GetAndUpdate(r.client, mdb.NamespacedName(), func(sts *appsv1.StatefulSet) {
357357
sts.Spec.UpdateStrategy.Type = appsv1.RollingUpdateStatefulSetStrategyType
358358
})
359+
return err
359360
}
360361

361362
// isStatefulSetReady checks to see if the stateful set corresponding to the given MongoDB resource
@@ -419,7 +420,7 @@ func (r *ReplicaSetReconciler) createOrUpdateStatefulSet(mdb mdbv1.MongoDB) erro
419420
return errors.Errorf("error getting StatefulSet: %s", err)
420421
}
421422
buildStatefulSetModificationFunction(mdb)(&set)
422-
if err = statefulset.CreateOrUpdate(r.client, set); err != nil {
423+
if _, err = statefulset.CreateOrUpdate(r.client, set); err != nil {
423424
return errors.Errorf("error creating/updating StatefulSet: %s", err)
424425
}
425426
return nil

pkg/kube/client/client.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,11 @@ func (c client) GetStatefulSet(objectKey k8sClient.ObjectKey) (appsv1.StatefulSe
138138
}
139139

140140
// UpdateStatefulSet provides a thin wrapper and client.Client to update appsv1.StatefulSet types
141-
func (c client) UpdateStatefulSet(sts appsv1.StatefulSet) error {
142-
return c.Update(context.TODO(), &sts)
141+
// the updated StatefulSet is returned
142+
func (c client) UpdateStatefulSet(sts appsv1.StatefulSet) (appsv1.StatefulSet, error) {
143+
stsToUpdate := &sts
144+
err := c.Update(context.TODO(), stsToUpdate)
145+
return *stsToUpdate, err
143146
}
144147

145148
// CreateStatefulSet provides a thin wrapper and client.Client to create appsv1.StatefulSet types

pkg/kube/statefulset/statefulset.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type Getter interface {
2626
}
2727

2828
type Updater interface {
29-
UpdateStatefulSet(sts appsv1.StatefulSet) error
29+
UpdateStatefulSet(sts appsv1.StatefulSet) (appsv1.StatefulSet, error)
3030
}
3131

3232
type Creator interface {
@@ -57,22 +57,22 @@ type GetUpdateCreateDeleter interface {
5757

5858
// CreateOrUpdate creates the given StatefulSet if it doesn't exist,
5959
// or updates it if it does.
60-
func CreateOrUpdate(getUpdateCreator GetUpdateCreator, sts appsv1.StatefulSet) error {
60+
func CreateOrUpdate(getUpdateCreator GetUpdateCreator, sts appsv1.StatefulSet) (appsv1.StatefulSet, error) {
6161
_, err := getUpdateCreator.GetStatefulSet(types.NamespacedName{Name: sts.Name, Namespace: sts.Namespace})
6262
if err != nil {
6363
if apiErrors.IsNotFound(err) {
64-
return getUpdateCreator.CreateStatefulSet(sts)
64+
return appsv1.StatefulSet{}, getUpdateCreator.CreateStatefulSet(sts)
6565
}
66-
return err
66+
return appsv1.StatefulSet{}, err
6767
}
6868
return getUpdateCreator.UpdateStatefulSet(sts)
6969
}
7070

7171
// GetAndUpdate applies the provided function to the most recent version of the object
72-
func GetAndUpdate(getUpdater GetUpdater, nsName types.NamespacedName, updateFunc func(*appsv1.StatefulSet)) error {
72+
func GetAndUpdate(getUpdater GetUpdater, nsName types.NamespacedName, updateFunc func(*appsv1.StatefulSet)) (appsv1.StatefulSet, error) {
7373
sts, err := getUpdater.GetStatefulSet(nsName)
7474
if err != nil {
75-
return err
75+
return appsv1.StatefulSet{}, err
7676
}
7777
// apply the function on the most recent version of the resource
7878
updateFunc(&sts)

0 commit comments

Comments
 (0)