diff --git a/controllers/operator/mongodbsearch_controller_test.go b/controllers/operator/mongodbsearch_controller_test.go index ba3885042..f2955e6bd 100644 --- a/controllers/operator/mongodbsearch_controller_test.go +++ b/controllers/operator/mongodbsearch_controller_test.go @@ -158,7 +158,13 @@ func TestMongoDBSearchReconcile_Success(t *testing.T) { ctx := context.Background() search := newMongoDBSearch("search", mock.TestNamespace, "mdb") mdbc := newMongoDBCommunity("mdb", mock.TestNamespace) - reconciler, c := newSearchReconciler(mdbc, search) + + operatorConfig := search_controller.OperatorSearchConfig{ + SearchRepo: "test-repo", + SearchName: "test-search", + SearchVersion: "1.28.7", + } + reconciler, c := newSearchReconcilerWithOperatorConfig(mdbc, operatorConfig, search) res, err := reconciler.Reconcile( ctx, @@ -184,6 +190,12 @@ func TestMongoDBSearchReconcile_Success(t *testing.T) { err = c.Get(ctx, search.StatefulSetNamespacedName(), sts) assert.NoError(t, err) + // TODO: Cover more version test cases in refactor + updated := &searchv1.MongoDBSearch{} + err = c.Get(ctx, types.NamespacedName{Name: search.Name, Namespace: search.Namespace}, updated) + assert.NoError(t, err) + assert.Equal(t, "1.28.7", updated.Status.Version, "Status.Version should be populated with the operator version") + queue := controllertest.Queue{Interface: workqueue.New()} reconciler.mdbcWatcher.Create(ctx, event.CreateEvent{Object: mdbc}, &queue) assert.Equal(t, 1, queue.Len()) diff --git a/controllers/search_controller/mongodbsearch_reconcile_helper.go b/controllers/search_controller/mongodbsearch_reconcile_helper.go index 08a264853..12fedcc04 100644 --- a/controllers/search_controller/mongodbsearch_reconcile_helper.go +++ b/controllers/search_controller/mongodbsearch_reconcile_helper.go @@ -86,9 +86,11 @@ func (r *MongoDBSearchReconcileHelper) reconcile(ctx context.Context, log *zap.S return workflow.Failed(err) } - if err := r.ValidateSearchImageVersion(); err != nil { + searchImageVersion := r.getMongotVersion() + if err := r.ValidateSearchImageVersion(searchImageVersion); err != nil { return workflow.Failed(err) } + r.mdbSearch.Status.Version = searchImageVersion if err := r.ValidateSingleMongoDBSearchForSearchSource(ctx); err != nil { return workflow.Failed(err) @@ -428,9 +430,7 @@ func (r *MongoDBSearchReconcileHelper) ValidateSingleMongoDBSearchForSearchSourc return nil } -func (r *MongoDBSearchReconcileHelper) ValidateSearchImageVersion() error { - version := r.getMongotImage() - +func (r *MongoDBSearchReconcileHelper) ValidateSearchImageVersion(version string) error { if strings.Contains(version, unsupportedSearchVersion) { return xerrors.Errorf(unsupportedSearchVersionErrorFmt, unsupportedSearchVersion) } @@ -438,7 +438,7 @@ func (r *MongoDBSearchReconcileHelper) ValidateSearchImageVersion() error { return nil } -func (r *MongoDBSearchReconcileHelper) getMongotImage() string { +func (r *MongoDBSearchReconcileHelper) getMongotVersion() string { version := strings.TrimSpace(r.mdbSearch.Spec.Version) if version != "" { return version @@ -454,9 +454,22 @@ func (r *MongoDBSearchReconcileHelper) getMongotImage() string { for _, container := range r.mdbSearch.Spec.StatefulSetConfiguration.SpecWrapper.Spec.Template.Spec.Containers { if container.Name == MongotContainerName { - return container.Image + return extractImageTag(container.Image) } } return "" } + +func extractImageTag(image string) string { + if image == "" { + return "" + } + + lastColonIndex := strings.LastIndex(image, ":") + if lastColonIndex == -1 { + return "" + } + + return image[lastColonIndex+1:] +}