diff --git a/pkg/apis/certmanager/v1alpha1/helpers.go b/pkg/apis/certmanager/v1alpha1/helpers.go index 79c82395b..c269ce861 100644 --- a/pkg/apis/certmanager/v1alpha1/helpers.go +++ b/pkg/apis/certmanager/v1alpha1/helpers.go @@ -52,6 +52,18 @@ func (c *CertificateACMEStatus) SaveAuthorization(a ACMEDomainAuthorization) { c.Authorizations = append(c.Authorizations, a) } +func IssuerHasCondition(iss *Issuer, condition IssuerCondition) bool { + if len(iss.Status.Conditions) == 0 { + return false + } + for _, cond := range iss.Status.Conditions { + if condition.Type == cond.Type && condition.Status == cond.Status { + return true + } + } + return false +} + func UpdateIssuerStatusCondition(iss *Issuer, conditionType IssuerConditionType, status ConditionStatus, reason, message string) *Issuer { toUpdate := iss.DeepCopy() newCondition := IssuerCondition{ diff --git a/pkg/controller/certificates/sync.go b/pkg/controller/certificates/sync.go index 38d2bfd54..2e6851710 100644 --- a/pkg/controller/certificates/sync.go +++ b/pkg/controller/certificates/sync.go @@ -30,7 +30,12 @@ func (c *Controller) Sync(crt *v1alpha1.Certificate) (err error) { return fmt.Errorf("could not get issuer '%s' for certificate '%s': %s", crt.Spec.Issuer, crt.Name, err.Error()) } - if !issuerObj.Status.Ready { + issuerReady := !v1alpha1.IssuerHasCondition(issuerObj, v1alpha1.IssuerCondition{ + Type: v1alpha1.IssuerConditionReady, + Status: v1alpha1.ConditionTrue, + }) + + if !issuerReady { return fmt.Errorf("issuer '%s/%s' for certificate '%s' not ready", issuerObj.Namespace, issuerObj.Name, crt.Name) } diff --git a/test/util/util.go b/test/util/util.go index 82b8570b9..80fe00bc0 100644 --- a/test/util/util.go +++ b/test/util/util.go @@ -23,17 +23,7 @@ func WaitForIssuerCondition(client clientset.IssuerInterface, name string, condi return false, fmt.Errorf("error getting Issuer %v: %v", name, err) } - if len(issuer.Status.Conditions) == 0 { - return false, nil - } - - for _, cond := range issuer.Status.Conditions { - if condition.Type == cond.Type && condition.Status == cond.Status { - return true, nil - } - } - - return false, nil + return v1alpha1.IssuerHasCondition(issuer, condition), nil }, ) }