Skip to content

Commit

Permalink
Initialize the kubeClient and applicationsClientSet correctly (argopr…
Browse files Browse the repository at this point in the history
…oj-labs#1025)

Signed-off-by: Ishita Sequeira <ishiseq29@gmail.com>
  • Loading branch information
ishitasequeira authored Jan 30, 2025
1 parent 980eff5 commit 016f8e2
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 43 deletions.
1 change: 1 addition & 0 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ build:
python: "3.12"
mkdocs:
fail_on_warning: false
configuration: mkdocs.yml
python:
install:
- requirements: docs/requirements.txt
24 changes: 1 addition & 23 deletions cmd/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,9 @@ package main
import (
"context"
"fmt"
"path/filepath"
"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"
)

func getPrintableInterval(interval time.Duration) string {
Expand All @@ -28,30 +25,11 @@ 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)
if err != nil {
return nil, fmt.Errorf("cannot expand path %s: %v", kubeConfig, err)
}
}

if fullKubeConfigPath != "" {
log.Debugf("Creating Kubernetes client from %s", fullKubeConfigPath)
} else {
log.Debugf("Creating in-cluster Kubernetes client")
}

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

return kubeClient, nil
}
37 changes: 34 additions & 3 deletions pkg/kube/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package kube
import (
"context"
"fmt"
"os"
"time"

kube "github.com/argoproj-labs/argocd-image-updater/registry-scanner/pkg/kube"
Expand All @@ -15,18 +16,48 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
_ "k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/client-go/tools/clientcmd"
)

type ImageUpdaterKubernetesClient struct {
ApplicationsClientset versioned.Interface
KubeClient *kube.KubernetesClient
}

func NewKubernetesClient(ctx context.Context, client kubernetes.Interface, applicationsClientset versioned.Interface, namespace string) *ImageUpdaterKubernetesClient {
func NewKubernetesClient(ctx context.Context, kubeConfig, namespace string) (*ImageUpdaterKubernetesClient, error) {

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, err
}
}

clientset, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, err
}

applicationsClientset, err := versioned.NewForConfig(config)
if err != nil {
return nil, err
}

kc := &ImageUpdaterKubernetesClient{}
kc.KubeClient = kube.NewKubernetesClient(ctx, client, namespace)
kc.KubeClient = kube.NewKubernetesClient(ctx, clientset, namespace)
kc.ApplicationsClientset = applicationsClientset
return kc
return kc, nil
}

// CreateApplicationEvent creates a kubernetes event with a custom reason and message for an application.
Expand Down
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 016f8e2

Please sign in to comment.