diff --git a/api/v1alpha1/operator_types.go b/api/v1alpha1/operator_types.go index 0fc09278b..1234e8e68 100644 --- a/api/v1alpha1/operator_types.go +++ b/api/v1alpha1/operator_types.go @@ -33,10 +33,11 @@ const ( // TODO(user): add more Types, here and into init() TypeReady = "Ready" - ReasonInstallationSucceeded = "InstallationSucceeded" - ReasonResolutionFailed = "ResolutionFailed" - ReasonBundleLookupFailed = "BundleLookupFailed" - ReasonBundleDeploymentFailed = "BundleDeploymentFailed" + ReasonInstallationSucceeded = "InstallationSucceeded" + ReasonResolutionFailed = "ResolutionFailed" + ReasonBundleLookupFailed = "BundleLookupFailed" + ReasonInstallationFailed = "InstallationFailed" + ReasonInstallationStatusUnknown = "InstallationStatusUnknown" ) func init() { @@ -49,7 +50,8 @@ func init() { ReasonInstallationSucceeded, ReasonResolutionFailed, ReasonBundleLookupFailed, - ReasonBundleDeploymentFailed, + ReasonInstallationFailed, + ReasonInstallationStatusUnknown, ) } diff --git a/controllers/operator_controller.go b/controllers/operator_controller.go index fe79edcb9..8492bb8df 100644 --- a/controllers/operator_controller.go +++ b/controllers/operator_controller.go @@ -155,7 +155,7 @@ func (r *OperatorReconciler) reconcile(ctx context.Context, op *operatorsv1alpha apimeta.SetStatusCondition(&op.Status.Conditions, metav1.Condition{ Type: operatorsv1alpha1.TypeReady, Status: metav1.ConditionFalse, - Reason: operatorsv1alpha1.ReasonBundleDeploymentFailed, + Reason: operatorsv1alpha1.ReasonInstallationFailed, Message: err.Error(), ObservedGeneration: op.GetGeneration(), }) @@ -168,7 +168,7 @@ func (r *OperatorReconciler) reconcile(ctx context.Context, op *operatorsv1alpha apimeta.SetStatusCondition(&op.Status.Conditions, metav1.Condition{ Type: operatorsv1alpha1.TypeReady, Status: metav1.ConditionUnknown, - Reason: operatorsv1alpha1.ReasonInstallationSucceeded, + Reason: operatorsv1alpha1.ReasonInstallationStatusUnknown, Message: err.Error(), ObservedGeneration: op.GetGeneration(), }) @@ -320,11 +320,14 @@ func mapBDStatusToReadyCondition(existingBD *rukpakv1alpha1.BundleDeployment, ob // 3. If the Operator "Ready" status is "False": There is error observed from Rukpak. Update the status accordingly. status, message := verifyBDStatus(existingBD) var reason string - // TODO: introduce a new reason for condition Unknown, instead of defaulting it to Installation Succeeded. - if status == metav1.ConditionTrue { + + switch status { + case metav1.ConditionTrue: reason = operatorsv1alpha1.ReasonInstallationSucceeded - } else { - reason = operatorsv1alpha1.ReasonBundleDeploymentFailed + case metav1.ConditionFalse: + reason = operatorsv1alpha1.ReasonInstallationFailed + default: + reason = operatorsv1alpha1.ReasonInstallationStatusUnknown } return metav1.Condition{ diff --git a/controllers/operator_controller_test.go b/controllers/operator_controller_test.go index 1e682d519..f1764ca19 100644 --- a/controllers/operator_controller_test.go +++ b/controllers/operator_controller_test.go @@ -116,7 +116,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(operator.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionUnknown)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationStatusUnknown)) Expect(cond.Message).To(ContainSubstring("waiting for bundleDeployment")) }) }) @@ -179,7 +179,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(operator.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionUnknown)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationStatusUnknown)) Expect(cond.Message).To(ContainSubstring("waiting for bundleDeployment")) }) }) @@ -227,7 +227,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(operator.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionUnknown)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationStatusUnknown)) Expect(cond.Message).To(ContainSubstring("waiting for bundleDeployment")) }) }) @@ -363,7 +363,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(op.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionUnknown)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationStatusUnknown)) Expect(cond.Message).To(ContainSubstring(`waiting for bundleDeployment`)) }) @@ -393,7 +393,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(op.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionFalse)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationFailed)) Expect(cond.Message).To(ContainSubstring(`failed to unpack`)) }) @@ -423,7 +423,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(op.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionFalse)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationFailed)) Expect(cond.Message).To(ContainSubstring(`failed to install`)) }) @@ -490,7 +490,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(op.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionUnknown)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationStatusUnknown)) Expect(cond.Message).To(ContainSubstring(`could not determine the state of bundleDeployment`)) }) @@ -520,7 +520,7 @@ var _ = Describe("Reconcile Test", func() { cond := apimeta.FindStatusCondition(op.Status.Conditions, operatorsv1alpha1.TypeReady) Expect(cond).NotTo(BeNil()) Expect(cond.Status).To(Equal(metav1.ConditionUnknown)) - Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonBundleDeploymentFailed)) + Expect(cond.Reason).To(Equal(operatorsv1alpha1.ReasonInstallationStatusUnknown)) Expect(cond.Message).To(ContainSubstring(`could not determine the state of bundleDeployment`)) }) })