mirror of
https://github.com/eliasstepanik/caddy-ingess.git
synced 2026-01-10 20:18:28 +00:00
* feat: Add plugin system to controller * add priority system and default empty tls connection policy
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package k8s
|
|
|
|
import (
|
|
v1 "k8s.io/api/core/v1"
|
|
"k8s.io/client-go/informers"
|
|
"k8s.io/client-go/tools/cache"
|
|
)
|
|
|
|
type ConfigMapHandlers struct {
|
|
AddFunc func(obj *v1.ConfigMap)
|
|
UpdateFunc func(oldObj, newObj *v1.ConfigMap)
|
|
DeleteFunc func(obj *v1.ConfigMap)
|
|
}
|
|
|
|
type ConfigMapParams struct {
|
|
Namespace string
|
|
InformerFactory informers.SharedInformerFactory
|
|
ConfigMapName string
|
|
}
|
|
|
|
func isControllerConfigMap(cm *v1.ConfigMap, name string) bool {
|
|
return cm.GetName() == name
|
|
}
|
|
|
|
func WatchConfigMaps(options ConfigMapParams, funcs ConfigMapHandlers) cache.SharedIndexInformer {
|
|
informer := options.InformerFactory.Core().V1().ConfigMaps().Informer()
|
|
|
|
informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
|
|
AddFunc: func(obj interface{}) {
|
|
cm, ok := obj.(*v1.ConfigMap)
|
|
|
|
if ok && isControllerConfigMap(cm, options.ConfigMapName) {
|
|
funcs.AddFunc(cm)
|
|
}
|
|
},
|
|
UpdateFunc: func(oldObj, newObj interface{}) {
|
|
oldCM, ok1 := oldObj.(*v1.ConfigMap)
|
|
newCM, ok2 := newObj.(*v1.ConfigMap)
|
|
|
|
if ok1 && ok2 && isControllerConfigMap(newCM, options.ConfigMapName) {
|
|
funcs.UpdateFunc(oldCM, newCM)
|
|
}
|
|
},
|
|
DeleteFunc: func(obj interface{}) {
|
|
cm, ok := obj.(*v1.ConfigMap)
|
|
|
|
if ok && isControllerConfigMap(cm, options.ConfigMapName) {
|
|
funcs.DeleteFunc(cm)
|
|
}
|
|
},
|
|
})
|
|
|
|
return informer
|
|
}
|