func()

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
}