Skip to content

Commit

Permalink
chore: move ConditionType to dash0monitoring/v1alpha1 package
Browse files Browse the repository at this point in the history
The package dash0monitoring/v1alpha1 should not import internal packages
if possible.
  • Loading branch information
basti1302 committed Aug 6, 2024
1 parent f0fa254 commit 42e9540
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 23 deletions.
24 changes: 15 additions & 9 deletions api/dash0monitoring/v1alpha1/dash0monitoring_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"

"github.com/dash0hq/dash0-operator/internal/common/controller"
"github.com/dash0hq/dash0-operator/internal/dash0/util"
)

const (
Expand Down Expand Up @@ -121,6 +120,13 @@ func readOptionalBooleanWithDefault(setting *bool, defaultValue bool) bool {
return *setting
}

type ConditionType string

const (
ConditionTypeAvailable ConditionType = "Available"
ConditionTypeDegraded ConditionType = "Degraded"
)

// Dash0MonitoringStatus defines the observed state of the Dash0 monitoring resource.
type Dash0MonitoringStatus struct {
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
Expand Down Expand Up @@ -155,13 +161,13 @@ func (d *Dash0Monitoring) IsMarkedForDeletion() bool {
}

func (d *Dash0Monitoring) IsAvailable() bool {
if condition := d.getCondition(util.ConditionTypeAvailable); condition != nil {
if condition := d.getCondition(ConditionTypeAvailable); condition != nil {
return condition.Status == metav1.ConditionTrue
}
return false
}

func (d *Dash0Monitoring) getCondition(conditionType util.ConditionType) *metav1.Condition {
func (d *Dash0Monitoring) getCondition(conditionType ConditionType) *metav1.Condition {
for _, c := range d.Status.Conditions {
if c.Type == string(conditionType) {
return &c
Expand All @@ -175,15 +181,15 @@ func (d *Dash0Monitoring) SetAvailableConditionToUnknown() {
meta.SetStatusCondition(
&d.Status.Conditions,
metav1.Condition{
Type: string(util.ConditionTypeAvailable),
Type: string(ConditionTypeAvailable),
Status: metav1.ConditionUnknown,
Reason: "ReconcileStarted",
Message: "Dash0 has started resource reconciliation.",
})
meta.SetStatusCondition(
&d.Status.Conditions,
metav1.Condition{
Type: string(util.ConditionTypeDegraded),
Type: string(ConditionTypeDegraded),
Status: metav1.ConditionTrue,
Reason: "ReconcileStarted",
Message: "Dash0 is still starting.",
Expand All @@ -197,12 +203,12 @@ func (d *Dash0Monitoring) EnsureResourceIsMarkedAsAvailable() {
meta.SetStatusCondition(
&d.Status.Conditions,
metav1.Condition{
Type: string(util.ConditionTypeAvailable),
Type: string(ConditionTypeAvailable),
Status: metav1.ConditionTrue,
Reason: "ReconcileFinished",
Message: "Dash0 is active in this namespace now.",
})
meta.RemoveStatusCondition(&d.Status.Conditions, string(util.ConditionTypeDegraded))
meta.RemoveStatusCondition(&d.Status.Conditions, string(ConditionTypeDegraded))
}

func (d *Dash0Monitoring) EnsureResourceIsMarkedAsAboutToBeDeleted() {
Expand All @@ -222,15 +228,15 @@ func (d *Dash0Monitoring) EnsureResourceIsMarkedAsDegraded(
meta.SetStatusCondition(
&d.Status.Conditions,
metav1.Condition{
Type: string(util.ConditionTypeAvailable),
Type: string(ConditionTypeAvailable),
Status: metav1.ConditionFalse,
Reason: reason,
Message: message,
})
meta.SetStatusCondition(
&d.Status.Conditions,
metav1.Condition{
Type: string(util.ConditionTypeDegraded),
Type: string(ConditionTypeDegraded),
Status: metav1.ConditionTrue,
Reason: reason,
Message: message,
Expand Down
2 changes: 1 addition & 1 deletion internal/dash0/controller/dash0_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ func (r *Dash0Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl
r.Status(),
dash0MonitoringResource,
dash0MonitoringResource.Status.Conditions,
string(util.ConditionTypeAvailable),
string(dash0v1alpha1.ConditionTypeAvailable),
&logger,
)
if err != nil {
Expand Down
18 changes: 9 additions & 9 deletions internal/dash0/controller/dash0_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,12 +156,12 @@ var _ = Describe("The Dash0 controller", Ordered, func() {
triggerReconcileRequestForName(ctx, reconciler, "", thirdName)

Eventually(func(g Gomega) {
resource1Available := loadCondition(ctx, Dash0MonitoringResourceQualifiedName, util.ConditionTypeAvailable)
resource1Degraded := loadCondition(ctx, Dash0MonitoringResourceQualifiedName, util.ConditionTypeDegraded)
resource2Available := loadCondition(ctx, secondName, util.ConditionTypeAvailable)
resource2Degraded := loadCondition(ctx, secondName, util.ConditionTypeDegraded)
resource3Available := loadCondition(ctx, thirdName, util.ConditionTypeAvailable)
resource3Degraded := loadCondition(ctx, thirdName, util.ConditionTypeDegraded)
resource1Available := loadCondition(ctx, Dash0MonitoringResourceQualifiedName, dash0v1alpha1.ConditionTypeAvailable)
resource1Degraded := loadCondition(ctx, Dash0MonitoringResourceQualifiedName, dash0v1alpha1.ConditionTypeDegraded)
resource2Available := loadCondition(ctx, secondName, dash0v1alpha1.ConditionTypeAvailable)
resource2Degraded := loadCondition(ctx, secondName, dash0v1alpha1.ConditionTypeDegraded)
resource3Available := loadCondition(ctx, thirdName, dash0v1alpha1.ConditionTypeAvailable)
resource3Degraded := loadCondition(ctx, thirdName, dash0v1alpha1.ConditionTypeDegraded)

// The first two resource should have been marked as degraded.
verifyCondition(
Expand Down Expand Up @@ -1048,16 +1048,16 @@ func verifyDash0MonitoringResourceIsAvailable(ctx context.Context) *metav1.Condi
By("Verifying status conditions")
Eventually(func(g Gomega) {
dash0MonitoringResource := LoadDash0MonitoringResourceOrFail(ctx, k8sClient, g)
availableCondition = meta.FindStatusCondition(dash0MonitoringResource.Status.Conditions, string(util.ConditionTypeAvailable))
availableCondition = meta.FindStatusCondition(dash0MonitoringResource.Status.Conditions, string(dash0v1alpha1.ConditionTypeAvailable))
g.Expect(availableCondition).NotTo(BeNil())
g.Expect(availableCondition.Status).To(Equal(metav1.ConditionTrue))
degraded := meta.FindStatusCondition(dash0MonitoringResource.Status.Conditions, string(util.ConditionTypeDegraded))
degraded := meta.FindStatusCondition(dash0MonitoringResource.Status.Conditions, string(dash0v1alpha1.ConditionTypeDegraded))
g.Expect(degraded).To(BeNil())
}, timeout, pollingInterval).Should(Succeed())
return availableCondition
}

func loadCondition(ctx context.Context, dash0MonitoringResourceName types.NamespacedName, conditionType util.ConditionType) *metav1.Condition {
func loadCondition(ctx context.Context, dash0MonitoringResourceName types.NamespacedName, conditionType dash0v1alpha1.ConditionType) *metav1.Condition {
dash0MonitoringResource := LoadDash0MonitoringResourceByNameOrFail(ctx, k8sClient, Default, dash0MonitoringResourceName)
return meta.FindStatusCondition(dash0MonitoringResource.Status.Conditions, string(conditionType))
}
Expand Down
4 changes: 0 additions & 4 deletions internal/dash0/util/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,9 @@ package util

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

type ConditionType string
type Reason string

const (
ConditionTypeAvailable ConditionType = "Available"
ConditionTypeDegraded ConditionType = "Degraded"

ReasonSuccessfulInstrumentation Reason = "SuccessfulInstrumentation"
ReasonNoInstrumentationNecessary Reason = "AlreadyInstrumented"
ReasonFailedInstrumentation Reason = "FailedInstrumentation"
Expand Down

0 comments on commit 42e9540

Please sign in to comment.