Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

51 changes: 0 additions & 51 deletions integration_tests/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,8 @@ import (

"k8s.io/utils/ptr"

corev1 "k8s.io/api/core/v1"

appsv1 "k8s.io/api/apps/v1"

"sigs.k8s.io/controller-runtime/pkg/reconcile"

"github.com/redhat-developer/rhdh-operator/api"

"k8s.io/apimachinery/pkg/types"
Expand All @@ -39,53 +35,6 @@ var _ = When("create backstage with CR configured", func() {
deleteNamespace(ctx, ns)
})

It("creates default Backstage and then update CR to not to use local DB", func() {
backstageName := createAndReconcileBackstage(ctx, ns, api.BackstageSpec{}, "")

Eventually(func(g Gomega) {
By("creating Deployment with database.enableLocalDb=true by default")

err := k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: fmt.Sprintf("backstage-psql-%s", backstageName)}, &appsv1.StatefulSet{})
g.Expect(err).To(Not(HaveOccurred()))

err = k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: fmt.Sprintf("backstage-psql-%s", backstageName)}, &corev1.Service{})
g.Expect(err).To(Not(HaveOccurred()))

err = k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: fmt.Sprintf("backstage-psql-secret-%s", backstageName)}, &corev1.Secret{})
g.Expect(err).To(Not(HaveOccurred()))

}, time.Minute, time.Second).Should(Succeed())

By("updating Backstage")
update := &api.Backstage{}
err := k8sClient.Get(ctx, types.NamespacedName{Name: backstageName, Namespace: ns}, update)
Expect(err).To(Not(HaveOccurred()))
update.Spec.Database = &api.Database{}
update.Spec.Database.EnableLocalDb = ptr.To(false)
err = k8sClient.Update(ctx, update)
Expect(err).To(Not(HaveOccurred()))
_, err = NewTestBackstageReconciler(ns).ReconcileAny(ctx, reconcile.Request{
NamespacedName: types.NamespacedName{Name: backstageName, Namespace: ns},
})
Expect(err).To(Not(HaveOccurred()))

Eventually(func(g Gomega) {
By("deleting Local Db StatefulSet, Service and Secret")
err = k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: fmt.Sprintf("backstage-psql-%s", backstageName)}, &appsv1.StatefulSet{})
g.Expect(err).To(HaveOccurred())
g.Expect(errors.IsNotFound(err))

err = k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: fmt.Sprintf("backstage-psql-%s", backstageName)}, &corev1.Service{})
g.Expect(err).To(HaveOccurred())
g.Expect(errors.IsNotFound(err))

err = k8sClient.Get(ctx, types.NamespacedName{Namespace: ns, Name: fmt.Sprintf("backstage-psql-secret-%s", backstageName)}, &corev1.Secret{})
g.Expect(err).To(HaveOccurred())
g.Expect(errors.IsNotFound(err))
}, time.Minute, time.Second).Should(Succeed())

})

It("creates Backstage with disabled local DB and secret", func() {
backstageName := createAndReconcileBackstage(ctx, ns, api.BackstageSpec{
Database: &api.Database{
Expand Down
59 changes: 1 addition & 58 deletions internal/controller/backstage_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,14 @@ import (
"fmt"
"reflect"

"github.com/redhat-developer/rhdh-operator/pkg/platform"

"github.com/redhat-developer/rhdh-operator/pkg/model/multiobject"
"github.com/redhat-developer/rhdh-operator/pkg/platform"
"github.com/redhat-developer/rhdh-operator/pkg/utils"

"k8s.io/utils/ptr"

openshift "github.com/openshift/api/route/v1"

"k8s.io/apimachinery/pkg/api/meta"

metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

corev1 "k8s.io/api/core/v1"

appsv1 "k8s.io/api/apps/v1"

"github.com/redhat-developer/rhdh-operator/pkg/model"

"github.com/redhat-developer/rhdh-operator/api"
Expand Down Expand Up @@ -123,10 +114,6 @@ func (r *BackstageReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
return ctrl.Result{}, errorAndStatus(&backstage, "failed to apply backstage objects", err)
}

if err := r.cleanObjects(ctx, backstage); err != nil {
return ctrl.Result{}, errorAndStatus(&backstage, "failed to clean backstage objects ", err)
}

r.setDeploymentStatus(ctx, &backstage, *bsModel)
return ctrl.Result{}, nil
}
Expand Down Expand Up @@ -187,50 +174,6 @@ func (r *BackstageReconciler) applyPayload(ctx context.Context, obj client.Objec
return nil
}

func (r *BackstageReconciler) cleanObjects(ctx context.Context, backstage api.Backstage) error {

const failedToCleanup = "failed to cleanup runtime"
// check if local database disabled, respective objects have to deleted/unowned
if !backstage.Spec.IsLocalDbEnabled() {
if err := r.tryToDelete(ctx, &appsv1.StatefulSet{}, model.DbStatefulSetName(backstage.Name), backstage.Namespace); err != nil {
return fmt.Errorf("%s %w", failedToCleanup, err)
}
if err := r.tryToDelete(ctx, &corev1.Service{}, model.DbServiceName(backstage.Name), backstage.Namespace); err != nil {
return fmt.Errorf("%s %w", failedToCleanup, err)
}
if err := r.tryToDelete(ctx, &corev1.Secret{}, model.DbSecretDefaultName(backstage.Name), backstage.Namespace); err != nil {
return fmt.Errorf("%s %w", failedToCleanup, err)
}
}

//// check if route disabled, respective objects have to deleted/unowned
if r.Platform.IsOpenshift() && !backstage.Spec.IsRouteEnabled() {
if err := r.tryToDelete(ctx, &openshift.Route{}, model.RouteName(backstage.Name), backstage.Namespace); err != nil {
return fmt.Errorf("%s %w", failedToCleanup, err)
}
}

return nil
}

// tryToDelete tries to delete the object by name and namespace, does not throw error if object not found or CRD does not exist
func (r *BackstageReconciler) tryToDelete(ctx context.Context, obj client.Object, name string, ns string) error {
obj.SetName(name)
obj.SetNamespace(ns)
if err := r.Delete(ctx, obj); err != nil {
if meta.IsNoMatchError(err) {
// RHDHBUGS-1990: no match for kind or resource, which can happen for example if the Prometheus CRDs
// are not installed when trying to delete a ServiceMonitor resource
return nil
}
if errors.IsNotFound(err) {
return nil
}
return fmt.Errorf("failed to delete %s: %w", name, err)
}
return nil
}

// SetupWithManager sets up the controller with the Manager.
func (r *BackstageReconciler) SetupWithManager(mgr ctrl.Manager) error {

Expand Down
83 changes: 0 additions & 83 deletions internal/controller/backstage_controller_test.go

This file was deleted.

7 changes: 1 addition & 6 deletions internal/controller/monitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,7 @@ func (r *BackstageReconciler) applyServiceMonitor(ctx context.Context, backstage
lg := log.FromContext(ctx).WithValues("Backstage", backstage.Name)

if !backstage.Spec.IsMonitoringEnabled() {
lg.Info("monitoring disabled, deleting any existing ServiceMonitor")
return r.tryToDelete(ctx,
&monitoringv1.ServiceMonitor{},
utils.GenerateRuntimeObjectName(backstage.Name, "metrics"),
backstage.Namespace,
)
return nil
}

sm := &monitoringv1.ServiceMonitor{
Expand Down
9 changes: 0 additions & 9 deletions internal/controller/monitor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
"github.com/stretchr/testify/assert"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
Expand Down Expand Up @@ -70,14 +69,6 @@ func TestApplyServiceMonitor_MonitoringDisabled(t *testing.T) {
// Apply service monitor (should delete the existing one)
err = r.applyServiceMonitor(ctx, backstage)
assert.NoError(t, err)

// Verify ServiceMonitor was deleted
sm := &monitoringv1.ServiceMonitor{}
err = r.Get(ctx, types.NamespacedName{
Name: utils.GenerateRuntimeObjectName(backstage.Name, "metrics"),
Namespace: backstage.Namespace,
}, sm)
assert.True(t, apierrors.IsNotFound(err))
}

func TestApplyServiceMonitor_MonitoringEnabled_NoCRD(t *testing.T) {
Expand Down
Loading