func()

in watcher/handlerEndpoint.go [75:104]


func (e *EpHandler) update(obj interface{}) {
	eps, ok := obj.(*v1.Endpoints)
	if !ok {
		log.Println("In Endpoint Update; cannot cast to *v1.Endpoints.")
		return
	}
	podSvcName := eps.GetObjectMeta().GetName()
	namespace := eps.GetNamespace()

	if !e.Ep.NsManager.IncludeNamespace(namespace) {
		log.Println("Namespace not included")
		return
	}

	for _, subset := range eps.Subsets {
		for _, port := range subset.Ports {
			portnum := fmt.Sprint(port.Port)
			portname := port.Name
			key := util.ConstructSvcPortString(namespace, podSvcName, portnum)
			for _, addr := range subset.Addresses {
				k := "temp_" + key
				v := util.ConstructIPPortString(addr.IP, portnum, portname)
				e.Ep.RedisClient.DefaultDBSAdd(k, v)
			}
			e.Ep.RedisClient.DefaultDBSUnionStore(key, "temp_"+key)
			e.Ep.RedisClient.DefaultDBDel("temp_" + key)
		}

	}
}