From 12b0e099db0772e1f9bcb14a4dd9b348db0277e0 Mon Sep 17 00:00:00 2001 From: Ricardo Lopes Date: Thu, 14 Dec 2023 06:26:45 +0000 Subject: [PATCH] Migrate client-go/metadata to contextual logging (#122225) * client-go: migrate metadata to contextual logging Signed-off-by: Ricardo Lopes * client-go: test for metadata contextual logs Signed-off-by: Ricardo Lopes * refactor: extract context for table driven testing Signed-off-by: Ricardo Lopes * refactor: pass context as first parameter Signed-off-by: Ricardo Lopes --------- Signed-off-by: Ricardo Lopes Kubernetes-commit: 86ab185fa1e98e249fe3e380217099832fe22a4e --- metadata/metadata.go | 4 ++-- metadata/metadata_test.go | 34 ++++++++++++++++++---------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/metadata/metadata.go b/metadata/metadata.go index 8152aa12..2cc7e22a 100644 --- a/metadata/metadata.go +++ b/metadata/metadata.go @@ -191,7 +191,7 @@ func (c *client) Get(ctx context.Context, name string, opts metav1.GetOptions, s } obj, err := result.Get() if runtime.IsNotRegisteredError(err) { - klog.V(5).Infof("Unable to retrieve PartialObjectMetadata: %#v", err) + klog.FromContext(ctx).V(5).Info("Could not retrieve PartialObjectMetadata", "err", err) rawBytes, err := result.Raw() if err != nil { return nil, err @@ -227,7 +227,7 @@ func (c *client) List(ctx context.Context, opts metav1.ListOptions) (*metav1.Par } obj, err := result.Get() if runtime.IsNotRegisteredError(err) { - klog.V(5).Infof("Unable to retrieve PartialObjectMetadataList: %#v", err) + klog.FromContext(ctx).V(5).Info("Could not retrieve PartialObjectMetadataList", "err", err) rawBytes, err := result.Raw() if err != nil { return nil, err diff --git a/metadata/metadata_test.go b/metadata/metadata_test.go index ff52b5a1..8e206926 100644 --- a/metadata/metadata_test.go +++ b/metadata/metadata_test.go @@ -32,6 +32,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/rest" + "k8s.io/klog/v2/ktesting" ) func TestClient(t *testing.T) { @@ -55,7 +56,7 @@ func TestClient(t *testing.T) { testCases := []struct { name string handler func(t *testing.T, w http.ResponseWriter, req *http.Request) - want func(t *testing.T, client *Client) + want func(ctx context.Context, t *testing.T, client *Client) }{ { name: "GET is able to convert a JSON object to PartialObjectMetadata", @@ -77,8 +78,8 @@ func TestClient(t *testing.T) { }, }) }, - want: func(t *testing.T, client *Client) { - obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{}) + want: func(ctx context.Context, t *testing.T, client *Client) { + obj, err := client.Resource(gvr).Namespace("ns").Get(ctx, "name", metav1.GetOptions{}) if err != nil { t.Fatal(err) } @@ -125,8 +126,8 @@ func TestClient(t *testing.T) { }, }) }, - want: func(t *testing.T, client *Client) { - objs, err := client.Resource(gvr).Namespace("ns").List(context.TODO(), metav1.ListOptions{}) + want: func(ctx context.Context, t *testing.T, client *Client) { + objs, err := client.Resource(gvr).Namespace("ns").List(ctx, metav1.ListOptions{}) if err != nil { t.Fatal(err) } @@ -167,8 +168,8 @@ func TestClient(t *testing.T) { }, }) }, - want: func(t *testing.T, client *Client) { - obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{}) + want: func(ctx context.Context, t *testing.T, client *Client) { + obj, err := client.Resource(gvr).Namespace("ns").Get(ctx, "name", metav1.GetOptions{}) if err == nil || !runtime.IsMissingKind(err) { t.Fatal(err) } @@ -196,8 +197,8 @@ func TestClient(t *testing.T) { }, }) }, - want: func(t *testing.T, client *Client) { - obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{}) + want: func(ctx context.Context, t *testing.T, client *Client) { + obj, err := client.Resource(gvr).Namespace("ns").Get(ctx, "name", metav1.GetOptions{}) if err == nil || !runtime.IsMissingVersion(err) { t.Fatal(err) } @@ -224,8 +225,8 @@ func TestClient(t *testing.T) { ObjectMeta: metav1.ObjectMeta{}, }) }, - want: func(t *testing.T, client *Client) { - obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{}) + want: func(ctx context.Context, t *testing.T, client *Client) { + obj, err := client.Resource(gvr).Namespace("ns").Get(ctx, "name", metav1.GetOptions{}) if err == nil || !strings.Contains(err.Error(), "object does not appear to match the ObjectMeta schema") { t.Fatal(err) } @@ -254,8 +255,8 @@ func TestClient(t *testing.T) { } writeJSON(t, w, statusOK) }, - want: func(t *testing.T, client *Client) { - err := client.Resource(gvr).Namespace("ns").Delete(context.TODO(), "name", metav1.DeleteOptions{}) + want: func(ctx context.Context, t *testing.T, client *Client) { + err := client.Resource(gvr).Namespace("ns").Delete(ctx, "name", metav1.DeleteOptions{}) if err != nil { t.Fatal(err) } @@ -282,8 +283,8 @@ func TestClient(t *testing.T) { writeJSON(t, w, statusOK) }, - want: func(t *testing.T, client *Client) { - err := client.Resource(gvr).Namespace("ns").DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{}) + want: func(ctx context.Context, t *testing.T, client *Client) { + err := client.Resource(gvr).Namespace("ns").DeleteCollection(ctx, metav1.DeleteOptions{}, metav1.ListOptions{}) if err != nil { t.Fatal(err) } @@ -296,9 +297,10 @@ func TestClient(t *testing.T) { s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { tt.handler(t, w, req) })) defer s.Close() + _, ctx := ktesting.NewTestContext(t) cfg := ConfigFor(&rest.Config{Host: s.URL}) client := NewForConfigOrDie(cfg).(*Client) - tt.want(t, client) + tt.want(ctx, t, client) }) } }