func (cs *CRStatus) WithReason(reason string) *CRStatus {
	cs.Condition.Reason = reason
	return cs
}
WithReason returns CRStatus with Condition reason
package lcm
import (
	v1 "github.com/goharbor/harbor-cluster-operator/apis/goharbor.io/v1alpha1"
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type Controller interface {
	Provision() (*CRStatus, error)
	Delete() (*CRStatus, error)
	Scale() (*CRStatus, error)
	ScaleUp(newReplicas uint64) (*CRStatus, error)
	ScaleDown(newReplicas uint64) (*CRStatus, error)
	Update(spec *v1.HarborCluster) (*CRStatus, error)
}
type CRStatus struct {
	Condition  v1.HarborClusterCondition `json:"condition"`
	Properties Properties                `json:"properties"`
}
func New(conditionType v1.HarborClusterConditionType) *CRStatus {
	return &CRStatus{
		Condition: v1.HarborClusterCondition{
			LastTransitionTime: metav1.Now(),
			Type:               conditionType,
		},
	}
}
func (cs *CRStatus) WithStatus(status corev1.ConditionStatus) *CRStatus {
	cs.Condition.Status = status
	return cs
}