func()

in pkg/loadbalancers/target_proxies.go [106:195]


func (l *L7) checkHttpsProxy() (err error) {
	isL7ILB := utils.IsGCEL7ILBIngress(l.runtimeInfo.Ingress)
	tr := translator.NewTranslator(isL7ILB, l.namer)
	env := &translator.Env{FrontendConfig: l.runtimeInfo.FrontendConfig}

	if len(l.sslCerts) == 0 {
		klog.V(2).Infof("No SSL certificates for %q, will not create HTTPS Proxy.", l)
		return nil
	}

	urlMapKey, err := l.CreateKey(l.um.Name)
	if err != nil {
		return err
	}
	description, err := l.description()
	version := l.Versions().TargetHttpProxy
	proxy, sslPolicySet, err := tr.ToCompositeTargetHttpsProxy(env, description, version, urlMapKey, l.sslCerts)
	if err != nil {
		return err
	}

	key, err := l.CreateKey(proxy.Name)
	if err != nil {
		return err
	}

	currentProxy, _ := composite.GetTargetHttpsProxy(l.cloud, key, version)
	if err != nil {
		return err
	}

	if currentProxy == nil {
		klog.V(3).Infof("Creating new https Proxy for urlmap %q", l.um.Name)

		if err = composite.CreateTargetHttpsProxy(l.cloud, key, proxy); err != nil {
			return err
		}
		l.recorder.Eventf(l.runtimeInfo.Ingress, corev1.EventTypeNormal, events.SyncIngress, "TargetProxy %q created", key.Name)

		key, err = l.CreateKey(proxy.Name)
		if err != nil {
			return err
		}
		currentProxy, err = composite.GetTargetHttpsProxy(l.cloud, key, version)
		if err != nil {
			return err
		}

		l.tps = currentProxy
		return nil
	}

	if !utils.EqualResourcePaths(currentProxy.UrlMap, proxy.UrlMap) {
		klog.V(2).Infof("Https Proxy %v has the wrong url map, setting %v overwriting %v", currentProxy.Name, proxy.UrlMap, currentProxy.UrlMap)
		key, err := l.CreateKey(currentProxy.Name)
		if err != nil {
			return err
		}
		if err := composite.SetUrlMapForTargetHttpsProxy(l.cloud, key, currentProxy, proxy.UrlMap); err != nil {
			return err
		}
		l.recorder.Eventf(l.runtimeInfo.Ingress, corev1.EventTypeNormal, events.SyncIngress, "TargetProxy %q updated", key.Name)
	}

	if !l.compareCerts(currentProxy.SslCertificates) {
		klog.V(2).Infof("Https Proxy %q has the wrong ssl certs, setting %v overwriting %v",
			currentProxy.Name, toCertNames(l.sslCerts), currentProxy.SslCertificates)
		var sslCertURLs []string
		for _, cert := range l.sslCerts {
			sslCertURLs = append(sslCertURLs, cert.SelfLink)
		}
		key, err := l.CreateKey(currentProxy.Name)
		if err != nil {
			return err
		}
		if err := composite.SetSslCertificateForTargetHttpsProxy(l.cloud, key, currentProxy, sslCertURLs); err != nil {
			return err
		}
		l.recorder.Eventf(l.runtimeInfo.Ingress, corev1.EventTypeNormal, events.SyncIngress, "TargetProxy %q certs updated", key.Name)
	}

	if flags.F.EnableFrontendConfig && sslPolicySet {
		if err := l.ensureSslPolicy(env, currentProxy, proxy.SslPolicy); err != nil {
			return err
		}
	}

	l.tps = currentProxy
	return nil
}