From c5e24b324e221745237b1b9e2de9d09b94cf4c8e Mon Sep 17 00:00:00 2001 From: Oleksii Kliukin Date: Thu, 29 Jun 2017 10:41:39 +0200 Subject: [PATCH] Move KubernetesClient to k8sutil package. --- cmd/main.go | 5 ++--- pkg/cluster/cluster.go | 2 +- pkg/cluster/types.go | 33 --------------------------------- pkg/controller/controller.go | 3 ++- pkg/controller/util_test.go | 6 +++--- pkg/util/k8sutil/k8sutil.go | 31 ++++++++++++++++++++++++++++++- 6 files changed, 38 insertions(+), 42 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index b1362d66f..c38eb2e91 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -8,7 +8,6 @@ import ( "sync" "syscall" - "github.com/zalando-incubator/postgres-operator/pkg/cluster" "github.com/zalando-incubator/postgres-operator/pkg/controller" "github.com/zalando-incubator/postgres-operator/pkg/spec" "github.com/zalando-incubator/postgres-operator/pkg/util/config" @@ -49,7 +48,7 @@ func ControllerConfig() *controller.Config { log.Fatalf("Can't get REST config: %s", err) } - client, err := k8sutil.KubernetesClient(restConfig) + client, err := k8sutil.ClientSet(restConfig) if err != nil { log.Fatalf("Can't create client: %s", err) } @@ -61,7 +60,7 @@ func ControllerConfig() *controller.Config { return &controller.Config{ RestConfig: restConfig, - KubeClient: cluster.NewFromKubernetesInterface(client), + KubeClient: k8sutil.NewFromKubernetesInterface(client), RestClient: restClient, } } diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 12a28c36f..c7ab410e6 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -35,7 +35,7 @@ var ( // Config contains operator-wide clients and configuration used from a cluster. TODO: remove struct duplication. type Config struct { - KubeClient KubernetesClient + KubeClient k8sutil.KubernetesClient RestClient *rest.RESTClient RestConfig *rest.Config TeamsAPIClient *teams.API diff --git a/pkg/cluster/types.go b/pkg/cluster/types.go index 43190d140..5091e532d 100644 --- a/pkg/cluster/types.go +++ b/pkg/cluster/types.go @@ -1,41 +1,8 @@ package cluster -import ( - "k8s.io/client-go/kubernetes" - v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" - v1core "k8s.io/client-go/kubernetes/typed/core/v1" - extensions "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" -) - type PostgresRole string const ( Master PostgresRole = "master" Replica PostgresRole = "replica" ) - -type KubernetesClient struct { - v1core.SecretsGetter - v1core.ServicesGetter - v1core.EndpointsGetter - v1core.PodsGetter - v1core.PersistentVolumesGetter - v1core.PersistentVolumeClaimsGetter - v1core.ConfigMapsGetter - v1beta1.StatefulSetsGetter - extensions.ThirdPartyResourcesGetter -} - -func NewFromKubernetesInterface(src kubernetes.Interface) (c KubernetesClient) { - c = KubernetesClient{} - c.PodsGetter = src.CoreV1() - c.ServicesGetter = src.CoreV1() - c.EndpointsGetter = src.CoreV1() - c.SecretsGetter = src.CoreV1() - c.ConfigMapsGetter = src.CoreV1() - c.PersistentVolumeClaimsGetter = src.CoreV1() - c.PersistentVolumesGetter = src.CoreV1() - c.StatefulSetsGetter = src.AppsV1beta1() - c.ThirdPartyResourcesGetter = src.ExtensionsV1beta1() - return -} diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 985d0e6f2..dc62504d3 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -13,12 +13,13 @@ import ( "github.com/zalando-incubator/postgres-operator/pkg/spec" "github.com/zalando-incubator/postgres-operator/pkg/util/config" "github.com/zalando-incubator/postgres-operator/pkg/util/constants" + "github.com/zalando-incubator/postgres-operator/pkg/util/k8sutil" "github.com/zalando-incubator/postgres-operator/pkg/util/teams" ) type Config struct { RestConfig *rest.Config - KubeClient cluster.KubernetesClient + KubeClient k8sutil.KubernetesClient RestClient *rest.RESTClient TeamsAPIClient *teams.API InfrastructureRoles map[string]spec.PgUser diff --git a/pkg/controller/util_test.go b/pkg/controller/util_test.go index 47649667a..bd7d7d049 100644 --- a/pkg/controller/util_test.go +++ b/pkg/controller/util_test.go @@ -8,9 +8,9 @@ import ( v1core "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/pkg/api/v1" - "github.com/zalando-incubator/postgres-operator/pkg/cluster" "github.com/zalando-incubator/postgres-operator/pkg/spec" "github.com/zalando-incubator/postgres-operator/pkg/util/config" + "github.com/zalando-incubator/postgres-operator/pkg/util/k8sutil" ) const ( @@ -43,8 +43,8 @@ func (c *MockSecretGetter) Secrets(namespace string) v1core.SecretInterface { return &mockSecret{} } -func newMockKubernetesClient() cluster.KubernetesClient { - return cluster.KubernetesClient{SecretsGetter: &MockSecretGetter{}} +func newMockKubernetesClient() k8sutil.KubernetesClient { + return k8sutil.KubernetesClient{SecretsGetter: &MockSecretGetter{}} } func newMockController() *Controller { diff --git a/pkg/util/k8sutil/k8sutil.go b/pkg/util/k8sutil/k8sutil.go index f0ea50dd4..981083cb9 100644 --- a/pkg/util/k8sutil/k8sutil.go +++ b/pkg/util/k8sutil/k8sutil.go @@ -5,6 +5,9 @@ import ( "time" "k8s.io/client-go/kubernetes" + v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" + v1core "k8s.io/client-go/kubernetes/typed/core/v1" + extensions "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" "k8s.io/client-go/pkg/api" apierrors "k8s.io/client-go/pkg/api/errors" "k8s.io/client-go/pkg/api/unversioned" @@ -18,6 +21,32 @@ import ( "github.com/zalando-incubator/postgres-operator/pkg/util/retryutil" ) +type KubernetesClient struct { + v1core.SecretsGetter + v1core.ServicesGetter + v1core.EndpointsGetter + v1core.PodsGetter + v1core.PersistentVolumesGetter + v1core.PersistentVolumeClaimsGetter + v1core.ConfigMapsGetter + v1beta1.StatefulSetsGetter + extensions.ThirdPartyResourcesGetter +} + +func NewFromKubernetesInterface(src kubernetes.Interface) (c KubernetesClient) { + c = KubernetesClient{} + c.PodsGetter = src.CoreV1() + c.ServicesGetter = src.CoreV1() + c.EndpointsGetter = src.CoreV1() + c.SecretsGetter = src.CoreV1() + c.ConfigMapsGetter = src.CoreV1() + c.PersistentVolumeClaimsGetter = src.CoreV1() + c.PersistentVolumesGetter = src.CoreV1() + c.StatefulSetsGetter = src.AppsV1beta1() + c.ThirdPartyResourcesGetter = src.ExtensionsV1beta1() + return +} + func RestConfig(kubeConfig string, outOfCluster bool) (*rest.Config, error) { if outOfCluster { return clientcmd.BuildConfigFromFlags("", kubeConfig) @@ -25,7 +54,7 @@ func RestConfig(kubeConfig string, outOfCluster bool) (*rest.Config, error) { return rest.InClusterConfig() } -func KubernetesClient(config *rest.Config) (client *kubernetes.Clientset, err error) { +func ClientSet(config *rest.Config) (client *kubernetes.Clientset, err error) { return kubernetes.NewForConfig(config) }