From c49c344c2a6abdbfdd2b0b693e34cf67e4eda30f Mon Sep 17 00:00:00 2001 From: RoyUP9 <87927115+RoyUP9@users.noreply.github.com> Date: Sun, 9 Jan 2022 10:50:58 +0200 Subject: [PATCH] Added kubernetes provider singleton (#599) --- agent/pkg/controllers/config_controller.go | 4 ++-- agent/pkg/providers/kubernetes_provider.go | 27 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 agent/pkg/providers/kubernetes_provider.go diff --git a/agent/pkg/controllers/config_controller.go b/agent/pkg/controllers/config_controller.go index 7adc5a761..cecc94e08 100644 --- a/agent/pkg/controllers/config_controller.go +++ b/agent/pkg/controllers/config_controller.go @@ -45,7 +45,7 @@ func PostTapConfig(c *gin.Context) { podRegex, _ := regexp.Compile(".*") - kubernetesProvider, err := kubernetes.NewProviderInCluster() + kubernetesProvider, err := providers.GetKubernetesProvider() if err != nil { c.JSON(http.StatusInternalServerError, err) return @@ -66,7 +66,7 @@ func PostTapConfig(c *gin.Context) { } func GetTapConfig(c *gin.Context) { - kubernetesProvider, err := kubernetes.NewProviderInCluster() + kubernetesProvider, err := providers.GetKubernetesProvider() if err != nil { c.JSON(http.StatusInternalServerError, err) return diff --git a/agent/pkg/providers/kubernetes_provider.go b/agent/pkg/providers/kubernetes_provider.go new file mode 100644 index 000000000..d485279d4 --- /dev/null +++ b/agent/pkg/providers/kubernetes_provider.go @@ -0,0 +1,27 @@ +package providers + +import ( + "github.com/up9inc/mizu/shared/kubernetes" + "sync" +) + +var lock = &sync.Mutex{} + +var kubernetesProvider *kubernetes.Provider + +func GetKubernetesProvider() (*kubernetes.Provider, error) { + if kubernetesProvider == nil { + lock.Lock() + defer lock.Unlock() + + if kubernetesProvider == nil { + var err error + kubernetesProvider, err = kubernetes.NewProviderInCluster() + if err != nil { + return nil, err + } + } + } + + return kubernetesProvider, nil +}