func()

in watcher/handlerIngress.go [342:425]


func (g *IgHandler) delete(obj interface{}) {
	ingressObj, ok := obj.(*nv1.Ingress)
	if !ok {
		log.Println("In HandlerIngress Delete; cannot cast to *nv1.Ingress")
		return
	}

	namespace := ingressObj.GetNamespace()
	// v1.18 ingress class name field in ingress object
	//ingressClass, _ := util.ExtractIngressClass(ingressObj.GetAnnotations())
	ingressClass, _ := util.ExtractIngressClassName(obj)
	if !g.Ep.NsManager.IncludeNamespace(namespace) || !g.Ep.ATSManager.IncludeIngressClass(ingressClass) {
		log.Println("Namespace not included or Ingress Class not matched")
		return
	}

	name := ingressObj.GetName()
	version := ingressObj.GetResourceVersion()
	nameversion := util.ConstructNameVersionString(namespace, name, version)

	_, snippetErr := util.ExtractServerSnippet(ingressObj.GetAnnotations())

	if ingressObj.Spec.DefaultBackend != nil {
		host := "*"
		scheme := "http"
		path := "/"
		pathType := nv1.PathTypePrefix
		hostPath := util.ConstructHostPathString(scheme, host, path, pathType)
		service := ingressObj.Spec.DefaultBackend.Service.Name
		port := strconv.Itoa(int(ingressObj.Spec.DefaultBackend.Service.Port.Number))
		svcport := util.ConstructSvcPortString(namespace, service, port)

		g.Ep.RedisClient.DBOneSRem(hostPath, svcport)

		if snippetErr == nil {
			g.Ep.RedisClient.DBOneSRem(hostPath, nameversion)
		}

		scheme = "https"
		hostPath = util.ConstructHostPathString(scheme, host, path, pathType)

		g.Ep.RedisClient.DBOneSRem(hostPath, svcport)

		if snippetErr == nil {
			g.Ep.RedisClient.DBOneSRem(hostPath, nameversion)
		}
	}

	tlsHosts := make(map[string]string)

	for _, ingressTLS := range ingressObj.Spec.TLS {
		for _, tlsHost := range ingressTLS.Hosts {
			tlsHosts[tlsHost] = "1"
		}
	}

	for _, ingressRule := range ingressObj.Spec.Rules {
		host := ingressRule.Host
		if host == "" {
			host = "*"
		}
		scheme := "http"
		if _, ok := tlsHosts[host]; ok {
			scheme = "https"
		}

		for _, httpPath := range ingressRule.HTTP.Paths {

			path := httpPath.Path
			pathType := *httpPath.PathType
			hostPath := util.ConstructHostPathString(scheme, host, path, pathType)
			service := httpPath.Backend.Service.Name
			port := strconv.Itoa(int(httpPath.Backend.Service.Port.Number))
			svcport := util.ConstructSvcPortString(namespace, service, port)

			g.Ep.RedisClient.DBOneSRem(hostPath, svcport)

			if snippetErr == nil {
				g.Ep.RedisClient.DBOneSRem(hostPath, nameversion)
			}
		}

	}
}