@@ -12,6 +12,7 @@ import (
12
12
"github.com/mongodb/mongodb-kubernetes-operator/controllers/predicates"
13
13
"sigs.k8s.io/controller-runtime/pkg/builder"
14
14
"sigs.k8s.io/controller-runtime/pkg/controller"
15
+ "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
15
16
"sigs.k8s.io/controller-runtime/pkg/source"
16
17
17
18
"github.com/mongodb/mongodb-kubernetes-operator/pkg/kube/container"
@@ -46,6 +47,7 @@ import (
46
47
appsv1 "k8s.io/api/apps/v1"
47
48
corev1 "k8s.io/api/core/v1"
48
49
apiErrors "k8s.io/apimachinery/pkg/api/errors"
50
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
49
51
"k8s.io/apimachinery/pkg/runtime"
50
52
"k8s.io/apimachinery/pkg/types"
51
53
ctrl "sigs.k8s.io/controller-runtime"
@@ -453,13 +455,25 @@ func (r *ReplicaSetReconciler) deployMongoDBReplicaSet(mdb mdbv1.MongoDBCommunit
453
455
// The Service definition is built from the `mdb` resource. If `isArbiter` is set to true, the Service
454
456
// will be created for the arbiters Statefulset.
455
457
func (r * ReplicaSetReconciler ) ensureService (mdb mdbv1.MongoDBCommunity , isArbiter bool ) error {
456
- svc := buildService (mdb , isArbiter )
457
- err := r .client .Create (context .TODO (), & svc )
458
- if err != nil && apiErrors .IsAlreadyExists (err ) {
459
- r .log .Infof ("The service already exists... moving forward: %s" , err )
458
+ name := mdb .ServiceName ()
459
+ if isArbiter {
460
+ name = mdb .ArbiterServiceName ()
461
+ }
462
+
463
+ svc := & corev1.Service {ObjectMeta : metav1.ObjectMeta {Name : name , Namespace : mdb .Namespace }}
464
+ op , err := controllerutil .CreateOrUpdate (context .TODO (), r .client , svc , func () error {
465
+ resourceVersion := svc .ResourceVersion // Save resourceVersion for later
466
+ * svc = buildService (mdb , isArbiter )
467
+ svc .ResourceVersion = resourceVersion
468
+ return nil
469
+ })
470
+ if err != nil {
471
+ r .log .Infof ("Cloud not create or patch the service: %s" , err )
460
472
return nil
461
473
}
462
474
475
+ r .log .Infow ("Create/Update operation succeeded" , "operation" , op )
476
+
463
477
return err
464
478
}
465
479
0 commit comments