Skip to content

Commit a6075d4

Browse files
authored
Changed the order of CreateOrUpdate functions (#1623)
* Changed order or CreateOrUpdate functions * Fixed mockedclient to return NotFound on update
1 parent 2cf2cae commit a6075d4

File tree

4 files changed

+18
-14
lines changed

4 files changed

+18
-14
lines changed

Diff for: pkg/kube/client/mocked_client.go

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ func (m mockedClient) Create(_ context.Context, obj k8sClient.Object, _ ...k8sCl
5959
func (m mockedClient) Update(_ context.Context, obj k8sClient.Object, _ ...k8sClient.UpdateOption) error {
6060
relevantMap := m.ensureMapFor(obj)
6161
objKey := k8sClient.ObjectKeyFromObject(obj)
62+
if _, ok := relevantMap[objKey]; !ok {
63+
return errors.NewNotFound(schema.GroupResource{}, obj.GetName())
64+
}
6265
relevantMap[objKey] = obj
6366
return nil
6467
}

Diff for: pkg/kube/configmap/configmap.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,14 @@ func UpdateField(ctx context.Context, getUpdater GetUpdater, objectKey client.Ob
8585
// CreateOrUpdate creates the given ConfigMap if it doesn't exist,
8686
// or updates it if it does.
8787
func CreateOrUpdate(ctx context.Context, getUpdateCreator GetUpdateCreator, cm corev1.ConfigMap) error {
88-
_, err := getUpdateCreator.GetConfigMap(ctx, types.NamespacedName{Name: cm.Name, Namespace: cm.Namespace})
89-
if err != nil {
88+
if err := getUpdateCreator.UpdateConfigMap(ctx, cm); err != nil {
9089
if apiErrors.IsNotFound(err) {
9190
return getUpdateCreator.CreateConfigMap(ctx, cm)
91+
} else {
92+
return err
9293
}
93-
return err
9494
}
95-
return getUpdateCreator.UpdateConfigMap(ctx, cm)
95+
return nil
9696
}
9797

9898
// filelikePropertiesToMap converts a file-like field in a ConfigMap to a map[string]string.

Diff for: pkg/kube/secret/secret.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,14 @@ func UpdateField(ctx context.Context, getUpdater GetUpdater, objectKey client.Ob
9999

100100
// CreateOrUpdate creates the Secret if it doesn't exist, other wise it updates it
101101
func CreateOrUpdate(ctx context.Context, getUpdateCreator GetUpdateCreator, secret corev1.Secret) error {
102-
_, err := getUpdateCreator.GetSecret(ctx, types.NamespacedName{Name: secret.Name, Namespace: secret.Namespace})
103-
if err != nil {
102+
if err := getUpdateCreator.UpdateSecret(ctx, secret); err != nil {
104103
if SecretNotExist(err) {
105104
return getUpdateCreator.CreateSecret(ctx, secret)
105+
} else {
106+
return err
106107
}
107-
return err
108108
}
109-
return getUpdateCreator.UpdateSecret(ctx, secret)
109+
return nil
110110
}
111111

112112
// HasAllKeys returns true if the provided secret contains an element for every

Diff for: pkg/kube/statefulset/statefulset.go

+7-6
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,16 @@ type GetUpdateCreateDeleter interface {
5353

5454
// CreateOrUpdate creates the given StatefulSet if it doesn't exist,
5555
// or updates it if it does.
56-
func CreateOrUpdate(ctx context.Context, getUpdateCreator GetUpdateCreator, sts appsv1.StatefulSet) (appsv1.StatefulSet, error) {
57-
_, err := getUpdateCreator.GetStatefulSet(ctx, types.NamespacedName{Name: sts.Name, Namespace: sts.Namespace})
58-
if err != nil {
56+
func CreateOrUpdate(ctx context.Context, getUpdateCreator GetUpdateCreator, statefulSet appsv1.StatefulSet) (appsv1.StatefulSet, error) {
57+
if sts, err := getUpdateCreator.UpdateStatefulSet(ctx, statefulSet); err != nil {
5958
if apiErrors.IsNotFound(err) {
60-
return appsv1.StatefulSet{}, getUpdateCreator.CreateStatefulSet(ctx, sts)
59+
return statefulSet, getUpdateCreator.CreateStatefulSet(ctx, statefulSet)
60+
} else {
61+
return appsv1.StatefulSet{}, err
6162
}
62-
return appsv1.StatefulSet{}, err
63+
} else {
64+
return sts, nil
6365
}
64-
return getUpdateCreator.UpdateStatefulSet(ctx, sts)
6566
}
6667

6768
// GetAndUpdate applies the provided function to the most recent version of the object

0 commit comments

Comments
 (0)