diff --git a/deploy/crds/onepassword.com_onepassworditems_crd.yaml b/deploy/crds/onepassword.com_onepassworditems_crd.yaml index bc27b69..64b8534 100644 --- a/deploy/crds/onepassword.com_onepassworditems_crd.yaml +++ b/deploy/crds/onepassword.com_onepassworditems_crd.yaml @@ -63,9 +63,6 @@ spec: - type type: object type: array - ready: - description: True when the Kubernetes secret is ready for use. - type: boolean required: - conditions type: object diff --git a/pkg/apis/onepassword/v1/onepasswordsecret_types.go b/pkg/apis/onepassword/v1/onepasswordsecret_types.go index 6358c80..c056fd0 100644 --- a/pkg/apis/onepassword/v1/onepasswordsecret_types.go +++ b/pkg/apis/onepassword/v1/onepasswordsecret_types.go @@ -36,9 +36,6 @@ type OnePasswordItemStatus struct { // Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file // Add custom validation using kubebuilder tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html Conditions []OnePasswordItemCondition `json:"conditions"` - - // True when the Kubernetes secret is ready for use. - Ready *bool `json:"ready,omitempty"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -51,7 +48,7 @@ type OnePasswordItem struct { metav1.ObjectMeta `json:"metadata,omitempty"` // Kubernetes secret type. More info: https://kubernetes.io/docs/concepts/configuration/secret/#secret-types - Type string `json:"type,omitempty"` + Type string `json:"type,omitempty"` Spec OnePasswordItemSpec `json:"spec,omitempty"` Status OnePasswordItemStatus `json:"status,omitempty"` diff --git a/pkg/apis/onepassword/v1/zz_generated.deepcopy.go b/pkg/apis/onepassword/v1/zz_generated.deepcopy.go index 158a327..024797c 100644 --- a/pkg/apis/onepassword/v1/zz_generated.deepcopy.go +++ b/pkg/apis/onepassword/v1/zz_generated.deepcopy.go @@ -113,11 +113,6 @@ func (in *OnePasswordItemStatus) DeepCopyInto(out *OnePasswordItemStatus) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.Ready != nil { - in, out := &in.Ready, &out.Ready - *out = new(bool) - **out = **in - } return } diff --git a/pkg/controller/onepassworditem/onepassworditem_controller.go b/pkg/controller/onepassworditem/onepassworditem_controller.go index 2ca870b..7a17462 100644 --- a/pkg/controller/onepassworditem/onepassworditem_controller.go +++ b/pkg/controller/onepassworditem/onepassworditem_controller.go @@ -172,22 +172,32 @@ func (r *ReconcileOnePasswordItem) HandleOnePasswordItem(resource *onepasswordv1 } func (r *ReconcileOnePasswordItem) updateStatus(resource *onepasswordv1.OnePasswordItem, err error) error { - condition := onepasswordv1.OnePasswordItemCondition{ - Type: onepasswordv1.OnePasswordItemReady, - Status: metav1.ConditionTrue, - } + existingCondition := findCondition(resource.Status.Conditions, onepasswordv1.OnePasswordItemReady) + updatedCondition := existingCondition if err != nil { - condition.Message = err.Error() - condition.Status = metav1.ConditionFalse + updatedCondition.Message = err.Error() + updatedCondition.Status = metav1.ConditionFalse + } else { + updatedCondition.Message = "" + updatedCondition.Status = metav1.ConditionTrue } - ready := err == nil - if resource.Status.Ready == nil || ready != *resource.Status.Ready { - condition.LastTransitionTime = metav1.Now() + if existingCondition.Status != updatedCondition.Status { + updatedCondition.LastTransitionTime = metav1.Now() } - resource.Status.Ready = &ready - - resource.Status.Conditions = []onepasswordv1.OnePasswordItemCondition{condition} + resource.Status.Conditions = []onepasswordv1.OnePasswordItemCondition{updatedCondition} return r.kubeClient.Status().Update(context.Background(), resource) } + +func findCondition(conditions []onepasswordv1.OnePasswordItemCondition, t onepasswordv1.OnePasswordItemConditionType) onepasswordv1.OnePasswordItemCondition { + for _, c := range conditions { + if c.Type == t { + return c + } + } + return onepasswordv1.OnePasswordItemCondition{ + Type: t, + Status: metav1.ConditionUnknown, + } +}