From 73e94b4ba50acaf35bc5a9f52b44b8e662dd985f Mon Sep 17 00:00:00 2001 From: Guillaume Tardif Date: Thu, 4 Feb 2021 15:36:57 +0100 Subject: [PATCH] Add Kube client Signed-off-by: Guillaume Tardif --- kube/client/client.go | 43 +++++++++++++++++++++++++++++++++++++++++++ kube/compose.go | 9 +++++++-- 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 kube/client/client.go diff --git a/kube/client/client.go b/kube/client/client.go new file mode 100644 index 000000000..da97872ab --- /dev/null +++ b/kube/client/client.go @@ -0,0 +1,43 @@ +// +build kube + +/* + Copyright 2020 Docker Compose CLI authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package client + +import ( + "k8s.io/cli-runtime/pkg/genericclioptions" + "k8s.io/client-go/kubernetes" +) + +type KubeClient struct { + client *kubernetes.Clientset +} + +func NewKubeClient(config genericclioptions.RESTClientGetter) (*KubeClient, error) { + restConfig, err := config.ToRESTConfig() + if err != nil { + return nil, err + } + + clientset, err := kubernetes.NewForConfig(restConfig) + if err != nil { + return nil, err + } + return &KubeClient{ + client: clientset, + }, nil +} diff --git a/kube/compose.go b/kube/compose.go index c648950c8..27266da77 100644 --- a/kube/compose.go +++ b/kube/compose.go @@ -30,12 +30,14 @@ import ( "github.com/docker/compose-cli/api/context/store" "github.com/docker/compose-cli/api/errdefs" "github.com/docker/compose-cli/api/progress" + "github.com/docker/compose-cli/kube/client" "github.com/docker/compose-cli/kube/helm" "github.com/docker/compose-cli/kube/resources" ) type composeService struct { - sdk *helm.Actions + sdk *helm.Actions + client *client.KubeClient } // NewComposeService create a kubernetes implementation of the compose.Service API @@ -52,11 +54,14 @@ func NewComposeService(ctx context.Context) (compose.Service, error) { return nil, err } actions, err := helm.NewActions(config) + apiClient, err := client.NewKubeClient(config) if err != nil { return nil, err } + return &composeService{ - sdk: actions, + sdk: actions, + client: apiClient, }, nil }