package issuers import ( "context" "fmt" corev1 "k8s.io/api/core/v1" acmapi "gitbucket.jerxie.com/yangyangxie/AnthosCertManager/pkg/apis/anthoscertmanager/v1" "gitbucket.jerxie.com/yangyangxie/AnthosCertManager/pkg/controller/globals" logf "gitbucket.jerxie.com/yangyangxie/AnthosCertManager/pkg/logs" apiequality "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/errors" ) const ( errorInitIssuer = "ErrInitIssuer" messageErrorInitIssuer = "Error initializing issuer: " ) func (c *controller) Sync(ctx context.Context, iss *acmapi.Issuer) (err error) { log := logf.FromContext(ctx) ctx, cancel := context.WithTimeout(ctx, globals.DefaultControllerContextTimeout) defer cancel() issuerCopy := iss.DeepCopy() // Sync the status at the end. defer func() { if saveErr := c.updateIssuerStatus(ctx, iss, issuerCopy); saveErr != nil { err = errors.NewAggregate([]error{saveErr, err}) log.Error(err, "error update the issuer status") } }() i, err := c.issuerFactory.IssuerFor(issuerCopy) if err != nil { return err } // Initialize the issuer err = i.Setup(ctx) if err != nil { s := messageErrorInitIssuer + err.Error() log.Error(err, "error setting up issuer") c.recorder.Event(issuerCopy, corev1.EventTypeWarning, errorInitIssuer, s) return err } return nil } func (c *controller) updateIssuerStatus(ctx context.Context, old, new *acmapi.Issuer) error { if apiequality.Semantic.DeepEqual(old.Status, new.Status) { return nil } log := logf.FromContext(ctx) log.Info(fmt.Sprintf("new issuer structure: %+v", new)) _, err := c.acmClient.AnthosCertmanagerV1().Issuers(new.Namespace).UpdateStatus(ctx, new, metav1.UpdateOptions{}) return err }