Skip to content

Commit 016f8e2

Browse files
Initialize the kubeClient and applicationsClientSet correctly (#1025)
Signed-off-by: Ishita Sequeira <[email protected]>
1 parent 980eff5 commit 016f8e2

File tree

4 files changed

+36
-43
lines changed

4 files changed

+36
-43
lines changed

.readthedocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ build:
66
python: "3.12"
77
mkdocs:
88
fail_on_warning: false
9+
configuration: mkdocs.yml
910
python:
1011
install:
1112
- requirements: docs/requirements.txt

cmd/util.go

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@ package main
33
import (
44
"context"
55
"fmt"
6-
"path/filepath"
76
"time"
87

98
"github.com/argoproj-labs/argocd-image-updater/pkg/kube"
10-
registryKube "github.com/argoproj-labs/argocd-image-updater/registry-scanner/pkg/kube"
11-
"github.com/argoproj-labs/argocd-image-updater/registry-scanner/pkg/log"
129
)
1310

1411
func getPrintableInterval(interval time.Duration) string {
@@ -28,30 +25,11 @@ func getPrintableHealthPort(port int) string {
2825
}
2926

3027
func getKubeConfig(ctx context.Context, namespace string, kubeConfig string) (*kube.ImageUpdaterKubernetesClient, error) {
31-
var fullKubeConfigPath string
32-
var kubeClient *kube.ImageUpdaterKubernetesClient
33-
var err error
3428

35-
if kubeConfig != "" {
36-
fullKubeConfigPath, err = filepath.Abs(kubeConfig)
37-
if err != nil {
38-
return nil, fmt.Errorf("cannot expand path %s: %v", kubeConfig, err)
39-
}
40-
}
41-
42-
if fullKubeConfigPath != "" {
43-
log.Debugf("Creating Kubernetes client from %s", fullKubeConfigPath)
44-
} else {
45-
log.Debugf("Creating in-cluster Kubernetes client")
46-
}
47-
48-
kubernetesClient, err := registryKube.NewKubernetesClientFromConfig(ctx, namespace, fullKubeConfigPath)
29+
kubeClient, err := kube.NewKubernetesClient(ctx, kubeConfig, namespace)
4930
if err != nil {
5031
return nil, err
5132
}
52-
kubeClient = &kube.ImageUpdaterKubernetesClient{
53-
KubeClient: kubernetesClient,
54-
}
5533

5634
return kubeClient, nil
5735
}

pkg/kube/kubernetes.go

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package kube
55
import (
66
"context"
77
"fmt"
8+
"os"
89
"time"
910

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

2022
type ImageUpdaterKubernetesClient struct {
2123
ApplicationsClientset versioned.Interface
2224
KubeClient *kube.KubernetesClient
2325
}
2426

25-
func NewKubernetesClient(ctx context.Context, client kubernetes.Interface, applicationsClientset versioned.Interface, namespace string) *ImageUpdaterKubernetesClient {
27+
func NewKubernetesClient(ctx context.Context, kubeConfig, namespace string) (*ImageUpdaterKubernetesClient, error) {
28+
29+
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
30+
loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig
31+
loadingRules.ExplicitPath = kubeConfig
32+
overrides := clientcmd.ConfigOverrides{}
33+
clientConfig := clientcmd.NewInteractiveDeferredLoadingClientConfig(loadingRules, &overrides, os.Stdin)
34+
35+
config, err := clientConfig.ClientConfig()
36+
if err != nil {
37+
return nil, err
38+
}
39+
40+
if namespace == "" {
41+
namespace, _, err = clientConfig.Namespace()
42+
if err != nil {
43+
return nil, err
44+
}
45+
}
46+
47+
clientset, err := kubernetes.NewForConfig(config)
48+
if err != nil {
49+
return nil, err
50+
}
51+
52+
applicationsClientset, err := versioned.NewForConfig(config)
53+
if err != nil {
54+
return nil, err
55+
}
56+
2657
kc := &ImageUpdaterKubernetesClient{}
27-
kc.KubeClient = kube.NewKubernetesClient(ctx, client, namespace)
58+
kc.KubeClient = kube.NewKubernetesClient(ctx, clientset, namespace)
2859
kc.ApplicationsClientset = applicationsClientset
29-
return kc
60+
return kc, nil
3061
}
3162

3263
// CreateApplicationEvent creates a kubernetes event with a custom reason and message for an application.

pkg/kube/kubernetes_test.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package kube
22

33
import (
4-
"context"
54
"testing"
65

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

18-
func Test_NewKubernetesClient(t *testing.T) {
19-
t.Run("Get new K8s client for remote cluster instance", func(t *testing.T) {
20-
client, err := registryKube.NewKubernetesClientFromConfig(context.TODO(), "", "../../test/testdata/kubernetes/config")
21-
require.NoError(t, err)
22-
assert.NotNil(t, client)
23-
assert.Equal(t, "default", client.Namespace)
24-
})
25-
26-
t.Run("Get new K8s client for remote cluster instance specified namespace", func(t *testing.T) {
27-
client, err := registryKube.NewKubernetesClientFromConfig(context.TODO(), "argocd", "../../test/testdata/kubernetes/config")
28-
require.NoError(t, err)
29-
assert.NotNil(t, client)
30-
assert.Equal(t, "argocd", client.Namespace)
31-
})
32-
}
33-
3417
func Test_GetDataFromSecrets(t *testing.T) {
3518
t.Run("Get all data from dummy secret", func(t *testing.T) {
3619
secret := fixture.MustCreateSecretFromFile("../../test/testdata/resources/dummy-secret.json")

0 commit comments

Comments
 (0)