diff options
| author | Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com> | 2025-01-07 15:08:15 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-07 15:08:15 -0500 |
| commit | 1a998b1415f937fde94b8912e4eec9235e542e93 (patch) | |
| tree | ae4b38dc27f27b981a55bc57e188868e52949ef9 /pkg/kube | |
| parent | 9a20452b7fbe84d13a941a19a29d931481c61d88 (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.go | 83 | ||||
| -rw-r--r-- | pkg/kube/kubernetes_test.go | 23 |
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: ®istryKube.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: ®istryKube.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: ®istryKube.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: ®istryKube.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: ®istryKube.KubernetesClient{Clientset: clientset, Namespace: "default"}} event, err := client.CreateApplicationEvent(application, "TestEvent", "test-message", annotations) require.NoError(t, err) require.NotNil(t, event) |
