in pkg/provider/alibaba/alb/listener.go [392:478]
func (m *ALBProvider) updateListenerExtraCertificates(ctx context.Context, lsID string, resLs *albmodel.Listener) error {
traceID := ctx.Value(util.TraceID)
desiredExtraCertIDs := sets.NewString()
_, desiredExtraCerts := buildSDKCertificates(resLs.Spec.Certificates)
for _, cert := range desiredExtraCerts {
desiredExtraCertIDs.Insert(cert.CertificateId)
}
currentExtraCertIDs := sets.NewString()
_, currentExtraCerts := buildSDKCertificatesModel(m.sdkCerts)
for _, cert := range currentExtraCerts {
currentExtraCertIDs.Insert(cert.CertificateId)
}
unmatchedResCerts := desiredExtraCertIDs.Difference(currentExtraCertIDs).List()
if len(unmatchedResCerts) != 0 {
certs := make([]albsdk.Certificate, 0)
for _, unmatchedResCert := range unmatchedResCerts {
certs = append(certs, albsdk.Certificate{
CertificateId: unmatchedResCert,
})
}
startTime := time.Now()
m.logger.V(util.MgrLogLevel).Info("associating additional certificates to listener",
"stackID", resLs.Stack().StackID(),
"resourceID", resLs.ID(),
"listenerID", lsID,
"traceID", traceID,
"certificates", certs,
"startTime", startTime,
util.Action, util.AssociateALBAdditionalCertificatesWithListener)
resp, err := m.AssociateALBAdditionalCertificatesWithListener(lsID, certs)
if err != nil {
m.logger.V(util.MgrLogLevel).Info("associating additional certificates to listener",
"stackID", resLs.Stack().StackID(),
"resourceID", resLs.ID(),
"listenerID", lsID,
"traceID", traceID,
"error", err.Error(),
util.Action, util.AssociateALBAdditionalCertificatesWithListener)
return err
}
m.logger.V(util.MgrLogLevel).Info("associated additional certificates to listener",
"stackID", resLs.Stack().StackID(),
"resourceID", resLs.ID(),
"listenerID", lsID,
"traceID", traceID,
"certificates", certs,
"requestID", resp.RequestId,
"elapsedTime", time.Since(startTime).Milliseconds(),
util.Action, util.AssociateALBAdditionalCertificatesWithListener)
}
unmatchedSDKCerts := currentExtraCertIDs.Difference(desiredExtraCertIDs).List()
if len(unmatchedSDKCerts) != 0 {
certs := make([]albsdk.Certificate, 0)
for _, unmatchedSDKCert := range unmatchedSDKCerts {
certs = append(certs, albsdk.Certificate{
CertificateId: unmatchedSDKCert,
})
}
startTime := time.Now()
m.logger.V(util.MgrLogLevel).Info("dissociating additional certificates from listener",
"stackID", resLs.Stack().StackID(),
"resourceID", resLs.ID(),
"listenerID", lsID,
"traceID", traceID,
"certificates", certs,
"startTime", startTime,
util.Action, util.DissociateALBAdditionalCertificatesFromListener)
resp, err := m.DissociateALBAdditionalCertificatesFromListener(lsID, certs)
if err != nil {
return err
}
m.logger.V(util.MgrLogLevel).Info("dissociated additional certificates from listener",
"stackID", resLs.Stack().StackID(),
"resourceID", resLs.ID(),
"listenerID", lsID,
"traceID", traceID,
"certificates", certs,
"requestID", resp.RequestId,
"elapsedTime", time.Since(startTime).Milliseconds(),
util.Action, util.DissociateALBAdditionalCertificatesFromListener)
}
return nil
}