summaryrefslogtreecommitdiff
path: root/pkg/kube
diff options
context:
space:
mode:
authorIshita Sequeira <46771830+ishitasequeira@users.noreply.github.com>2025-01-07 15:08:15 -0500
committerGitHub <noreply@github.com>2025-01-07 15:08:15 -0500
commit1a998b1415f937fde94b8912e4eec9235e542e93 (patch)
treeae4b38dc27f27b981a55bc57e188868e52949ef9 /pkg/kube
parent9a20452b7fbe84d13a941a19a29d931481c61d88 (diff)
Move references for kube, image, registry to registry-scanner (#998)
Signed-off-by: Ishita Sequeira <ishiseq29@gmail.com>
Diffstat (limited to 'pkg/kube')
-rw-r--r--pkg/kube/kubernetes.go83
-rw-r--r--pkg/kube/kubernetes_test.go23
2 files changed, 20 insertions, 86 deletions
diff --git a/pkg/kube/kubernetes.go b/pkg/kube/kubernetes.go
index 1158331..cb8c7f8 100644
--- a/pkg/kube/kubernetes.go
+++ b/pkg/kube/kubernetes.go
@@ -5,10 +5,9 @@ package kube
import (
"context"
"fmt"
- "os"
"time"
- "github.com/argoproj-labs/argocd-image-updater/pkg/metrics"
+ kube "github.com/argoproj-labs/argocd-image-updater/registry-scanner/pkg/kube"
appv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
"github.com/argoproj/argo-cd/v2/pkg/client/clientset/versioned"
@@ -16,88 +15,22 @@ 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 KubernetesClient struct {
- Clientset kubernetes.Interface
+type ImageUpdaterKubernetesClient struct {
ApplicationsClientset versioned.Interface
- Context context.Context
- Namespace string
+ KubeClient *kube.KubernetesClient
}
-func NewKubernetesClient(ctx context.Context, client kubernetes.Interface, applicationsClientset versioned.Interface, namespace string) *KubernetesClient {
- kc := &KubernetesClient{}
- kc.Context = ctx
- kc.Clientset = client
+func NewKubernetesClient(ctx context.Context, client kubernetes.Interface, applicationsClientset versioned.Interface, namespace string) *ImageUpdaterKubernetesClient {
+ kc := &ImageUpdaterKubernetesClient{}
+ kc.KubeClient = kube.NewKubernetesClient(ctx, client, namespace)
kc.ApplicationsClientset = applicationsClientset
- kc.Namespace = namespace
return kc
}
-// NewKubernetesClient creates a new Kubernetes client object from given
-// configuration file. If configuration file is the empty string, in-cluster
-// client will be created.
-func NewKubernetesClientFromConfig(ctx context.Context, namespace string, kubeconfig string) (*KubernetesClient, 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
- }
-
- return NewKubernetesClient(ctx, clientset, applicationsClientset, namespace), nil
-}
-
-// GetSecretData returns the raw data from named K8s secret in given namespace
-func (client *KubernetesClient) GetSecretData(namespace string, secretName string) (map[string][]byte, error) {
- secret, err := client.Clientset.CoreV1().Secrets(namespace).Get(client.Context, secretName, metav1.GetOptions{})
- metrics.Clients().IncreaseK8sClientRequest(1)
- if err != nil {
- metrics.Clients().IncreaseK8sClientRequest(1)
- return nil, err
- }
- return secret.Data, nil
-}
-
-// GetSecretField returns the value of a field from named K8s secret in given namespace
-func (client *KubernetesClient) GetSecretField(namespace string, secretName string, field string) (string, error) {
- secret, err := client.GetSecretData(namespace, secretName)
- metrics.Clients().IncreaseK8sClientRequest(1)
- if err != nil {
- metrics.Clients().IncreaseK8sClientRequest(1)
- return "", err
- }
- if data, ok := secret[field]; !ok {
- return "", fmt.Errorf("secret '%s/%s' does not have a field '%s'", namespace, secretName, field)
- } else {
- return string(data), nil
- }
-}
-
// CreateApplicationEvent creates a kubernetes event with a custom reason and message for an application.
-func (client *KubernetesClient) CreateApplicationEvent(app *appv1alpha1.Application, reason string, message string, annotations map[string]string) (*v1.Event, error) {
+func (client *ImageUpdaterKubernetesClient) CreateApplicationEvent(app *appv1alpha1.Application, reason string, message string, annotations map[string]string) (*v1.Event, error) {
t := metav1.Time{Time: time.Now()}
event := v1.Event{
@@ -125,7 +58,7 @@ func (client *KubernetesClient) CreateApplicationEvent(app *appv1alpha1.Applicat
Reason: reason,
}
- result, err := client.Clientset.CoreV1().Events(app.ObjectMeta.Namespace).Create(client.Context, &event, metav1.CreateOptions{})
+ result, err := client.KubeClient.Clientset.CoreV1().Events(app.ObjectMeta.Namespace).Create(client.KubeClient.Context, &event, metav1.CreateOptions{})
if err != nil {
return nil, err
}
diff --git a/pkg/kube/kubernetes_test.go b/pkg/kube/kubernetes_test.go
index 35d6922..d1b2fae 100644
--- a/pkg/kube/kubernetes_test.go
+++ b/pkg/kube/kubernetes_test.go
@@ -7,6 +7,7 @@ import (
appv1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ registryKube "github.com/argoproj-labs/argocd-image-updater/registry-scanner/pkg/kube"
"github.com/argoproj-labs/argocd-image-updater/test/fake"
"github.com/argoproj-labs/argocd-image-updater/test/fixture"
@@ -16,14 +17,14 @@ import (
func Test_NewKubernetesClient(t *testing.T) {
t.Run("Get new K8s client for remote cluster instance", func(t *testing.T) {
- client, err := NewKubernetesClientFromConfig(context.TODO(), "", "../../test/testdata/kubernetes/config")
+ 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 := NewKubernetesClientFromConfig(context.TODO(), "argocd", "../../test/testdata/kubernetes/config")
+ 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)
@@ -34,8 +35,8 @@ 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")
clientset := fake.NewFakeClientsetWithResources(secret)
- client := &KubernetesClient{Clientset: clientset}
- data, err := client.GetSecretData("test-namespace", "test-secret")
+ client := &ImageUpdaterKubernetesClient{KubeClient: &registryKube.KubernetesClient{Clientset: clientset}}
+ data, err := client.KubeClient.GetSecretData("test-namespace", "test-secret")
require.NoError(t, err)
require.NotNil(t, data)
assert.Len(t, data, 1)
@@ -45,8 +46,8 @@ func Test_GetDataFromSecrets(t *testing.T) {
t.Run("Get string data from dummy secret existing field", func(t *testing.T) {
secret := fixture.MustCreateSecretFromFile("../../test/testdata/resources/dummy-secret.json")
clientset := fake.NewFakeClientsetWithResources(secret)
- client := &KubernetesClient{Clientset: clientset}
- data, err := client.GetSecretField("test-namespace", "test-secret", "namespace")
+ client := &ImageUpdaterKubernetesClient{KubeClient: &registryKube.KubernetesClient{Clientset: clientset}}
+ data, err := client.KubeClient.GetSecretField("test-namespace", "test-secret", "namespace")
require.NoError(t, err)
assert.Equal(t, "argocd", data)
})
@@ -54,8 +55,8 @@ func Test_GetDataFromSecrets(t *testing.T) {
t.Run("Get string data from dummy secret non-existing field", func(t *testing.T) {
secret := fixture.MustCreateSecretFromFile("../../test/testdata/resources/dummy-secret.json")
clientset := fake.NewFakeClientsetWithResources(secret)
- client := &KubernetesClient{Clientset: clientset}
- data, err := client.GetSecretField("test-namespace", "test-secret", "nonexisting")
+ client := &ImageUpdaterKubernetesClient{KubeClient: &registryKube.KubernetesClient{Clientset: clientset}}
+ data, err := client.KubeClient.GetSecretField("test-namespace", "test-secret", "nonexisting")
require.Error(t, err)
require.Empty(t, data)
})
@@ -63,8 +64,8 @@ func Test_GetDataFromSecrets(t *testing.T) {
t.Run("Get string data from non-existing secret non-existing field", func(t *testing.T) {
secret := fixture.MustCreateSecretFromFile("../../test/testdata/resources/dummy-secret.json")
clientset := fake.NewFakeClientsetWithResources(secret)
- client := &KubernetesClient{Clientset: clientset}
- data, err := client.GetSecretField("test-namespace", "test", "namespace")
+ client := &ImageUpdaterKubernetesClient{KubeClient: &registryKube.KubernetesClient{Clientset: clientset}}
+ data, err := client.KubeClient.GetSecretField("test-namespace", "test", "namespace")
require.Error(t, err)
require.Empty(t, data)
})
@@ -88,7 +89,7 @@ func Test_CreateApplicationEvent(t *testing.T) {
"origin": "nginx:1.12.2",
}
clientset := fake.NewFakeClientsetWithResources()
- client := &KubernetesClient{Clientset: clientset, Namespace: "default"}
+ client := &ImageUpdaterKubernetesClient{KubeClient: &registryKube.KubernetesClient{Clientset: clientset, Namespace: "default"}}
event, err := client.CreateApplicationEvent(application, "TestEvent", "test-message", annotations)
require.NoError(t, err)
require.NotNil(t, event)