Skip to content

Commit

Permalink
Initialize the kubeClient and applicationsClientSet correctly
Browse files Browse the repository at this point in the history
Signed-off-by: Ishita Sequeira <ishiseq29@gmail.com>
  • Loading branch information
ishitasequeira committed Jan 29, 2025
1 parent 980eff5 commit c2a4fb2
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 33 deletions.
40 changes: 24 additions & 16 deletions cmd/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ package main
import (
"context"
"fmt"
"path/filepath"
"os"
"time"

"github.com/argoproj-labs/argocd-image-updater/pkg/kube"
registryKube "github.com/argoproj-labs/argocd-image-updater/registry-scanner/pkg/kube"
"github.com/argoproj-labs/argocd-image-updater/registry-scanner/pkg/log"
"github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)

func getPrintableInterval(interval time.Duration) string {
Expand All @@ -28,30 +29,37 @@ func getPrintableHealthPort(port int) string {
}

func getKubeConfig(ctx context.Context, namespace string, kubeConfig string) (*kube.ImageUpdaterKubernetesClient, error) {
var fullKubeConfigPath string
var kubeClient *kube.ImageUpdaterKubernetesClient
var err error

if kubeConfig != "" {
fullKubeConfigPath, err = filepath.Abs(kubeConfig)
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig
loadingRules.ExplicitPath = kubeConfig
overrides := clientcmd.ConfigOverrides{}
clientConfig := clientcmd.NewInteractiveDeferredLoadingClientConfig(loadingRules, &overrides, os.Stdin)

config, err := clientConfig.ClientConfig()
if err != nil {
return nil, err
}

if namespace == "" {
namespace, _, err = clientConfig.Namespace()
if err != nil {
return nil, fmt.Errorf("cannot expand path %s: %v", kubeConfig, err)
return nil, err
}
}

if fullKubeConfigPath != "" {
log.Debugf("Creating Kubernetes client from %s", fullKubeConfigPath)
} else {
log.Debugf("Creating in-cluster Kubernetes client")
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}

kubernetesClient, err := registryKube.NewKubernetesClientFromConfig(ctx, namespace, fullKubeConfigPath)
applicationsClientset, err := versioned.NewForConfig(config)
if err != nil {
return nil, err
}
kubeClient = &kube.ImageUpdaterKubernetesClient{
KubeClient: kubernetesClient,
}

kubeClient = kube.NewKubernetesClient(ctx, clientset, applicationsClientset, namespace)

return kubeClient, nil
}
17 changes: 0 additions & 17 deletions pkg/kube/kubernetes_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package kube

import (
"context"
"testing"

appv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
Expand All @@ -15,22 +14,6 @@ import (
"github.com/stretchr/testify/require"
)

func Test_NewKubernetesClient(t *testing.T) {
t.Run("Get new K8s client for remote cluster instance", func(t *testing.T) {
client, err := registryKube.NewKubernetesClientFromConfig(context.TODO(), "", "../../test/testdata/kubernetes/config")
require.NoError(t, err)
assert.NotNil(t, client)
assert.Equal(t, "default", client.Namespace)
})

t.Run("Get new K8s client for remote cluster instance specified namespace", func(t *testing.T) {
client, err := registryKube.NewKubernetesClientFromConfig(context.TODO(), "argocd", "../../test/testdata/kubernetes/config")
require.NoError(t, err)
assert.NotNil(t, client)
assert.Equal(t, "argocd", client.Namespace)
})
}

func Test_GetDataFromSecrets(t *testing.T) {
t.Run("Get all data from dummy secret", func(t *testing.T) {
secret := fixture.MustCreateSecretFromFile("../../test/testdata/resources/dummy-secret.json")
Expand Down

0 comments on commit c2a4fb2

Please sign in to comment.