Skip to content

Commit cb4ee93

Browse files
committed
client-go metadata: plumb context
1 parent 61847ea commit cb4ee93

File tree

7 files changed

+42
-42
lines changed

7 files changed

+42
-42
lines changed

staging/src/k8s.io/client-go/metadata/fake/simple.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package fake
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"strings"
2223

@@ -214,7 +215,7 @@ func (c *metadataResourceClient) UpdateStatus(obj *metav1.PartialObjectMetadata,
214215
}
215216

216217
// Delete records the object deletion and processes it via the reactor.
217-
func (c *metadataResourceClient) Delete(name string, opts *metav1.DeleteOptions, subresources ...string) error {
218+
func (c *metadataResourceClient) Delete(ctx context.Context, name string, opts metav1.DeleteOptions, subresources ...string) error {
218219
var err error
219220
switch {
220221
case len(c.namespace) == 0 && len(subresources) == 0:
@@ -238,7 +239,7 @@ func (c *metadataResourceClient) Delete(name string, opts *metav1.DeleteOptions,
238239
}
239240

240241
// DeleteCollection records the object collection deletion and processes it via the reactor.
241-
func (c *metadataResourceClient) DeleteCollection(opts *metav1.DeleteOptions, listOptions metav1.ListOptions) error {
242+
func (c *metadataResourceClient) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOptions metav1.ListOptions) error {
242243
var err error
243244
switch {
244245
case len(c.namespace) == 0:
@@ -255,7 +256,7 @@ func (c *metadataResourceClient) DeleteCollection(opts *metav1.DeleteOptions, li
255256
}
256257

257258
// Get records the object retrieval and processes it via the reactor.
258-
func (c *metadataResourceClient) Get(name string, opts metav1.GetOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
259+
func (c *metadataResourceClient) Get(ctx context.Context, name string, opts metav1.GetOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
259260
var uncastRet runtime.Object
260261
var err error
261262
switch {
@@ -290,7 +291,7 @@ func (c *metadataResourceClient) Get(name string, opts metav1.GetOptions, subres
290291
}
291292

292293
// List records the object deletion and processes it via the reactor.
293-
func (c *metadataResourceClient) List(opts metav1.ListOptions) (*metav1.PartialObjectMetadataList, error) {
294+
func (c *metadataResourceClient) List(ctx context.Context, opts metav1.ListOptions) (*metav1.PartialObjectMetadataList, error) {
294295
var obj runtime.Object
295296
var err error
296297
switch {
@@ -337,7 +338,7 @@ func (c *metadataResourceClient) List(opts metav1.ListOptions) (*metav1.PartialO
337338
return list, nil
338339
}
339340

340-
func (c *metadataResourceClient) Watch(opts metav1.ListOptions) (watch.Interface, error) {
341+
func (c *metadataResourceClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
341342
switch {
342343
case len(c.namespace) == 0:
343344
return c.client.Fake.
@@ -353,7 +354,7 @@ func (c *metadataResourceClient) Watch(opts metav1.ListOptions) (watch.Interface
353354
}
354355

355356
// Patch records the object patch and processes it via the reactor.
356-
func (c *metadataResourceClient) Patch(name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
357+
func (c *metadataResourceClient) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
357358
var uncastRet runtime.Object
358359
var err error
359360
switch {

staging/src/k8s.io/client-go/metadata/fake/simple_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package fake
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"testing"
2223

@@ -72,7 +73,7 @@ func TestList(t *testing.T) {
7273
newPartialObjectMetadata("group/version", "TheKind", "ns-foo", "name-baz"),
7374
newPartialObjectMetadata("group2/version", "TheKind", "ns-foo", "name2-baz"),
7475
)
75-
listFirst, err := client.Resource(schema.GroupVersionResource{Group: "group", Version: "version", Resource: "thekinds"}).List(metav1.ListOptions{})
76+
listFirst, err := client.Resource(schema.GroupVersionResource{Group: "group", Version: "version", Resource: "thekinds"}).List(context.TODO(), metav1.ListOptions{})
7677
if err != nil {
7778
t.Fatal(err)
7879
}
@@ -100,7 +101,7 @@ func (tc *patchTestCase) runner(t *testing.T) {
100101
client := NewSimpleMetadataClient(scheme, tc.object)
101102
resourceInterface := client.Resource(schema.GroupVersionResource{Group: testGroup, Version: testVersion, Resource: testResource}).Namespace(testNamespace)
102103

103-
got, recErr := resourceInterface.Patch(testName, tc.patchType, tc.patchBytes, metav1.PatchOptions{})
104+
got, recErr := resourceInterface.Patch(context.TODO(), testName, tc.patchType, tc.patchBytes, metav1.PatchOptions{})
104105

105106
if err := tc.verifyErr(recErr); err != nil {
106107
t.Error(err)

staging/src/k8s.io/client-go/metadata/interface.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ limitations under the License.
1717
package metadata
1818

1919
import (
20+
"context"
21+
2022
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2123
"k8s.io/apimachinery/pkg/runtime/schema"
2224
"k8s.io/apimachinery/pkg/types"
@@ -32,12 +34,12 @@ type Interface interface {
3234
// ResourceInterface contains the set of methods that may be invoked on objects by their metadata.
3335
// Update is not supported by the server, but Patch can be used for the actions Update would handle.
3436
type ResourceInterface interface {
35-
Delete(name string, options *metav1.DeleteOptions, subresources ...string) error
36-
DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error
37-
Get(name string, options metav1.GetOptions, subresources ...string) (*metav1.PartialObjectMetadata, error)
38-
List(opts metav1.ListOptions) (*metav1.PartialObjectMetadataList, error)
39-
Watch(opts metav1.ListOptions) (watch.Interface, error)
40-
Patch(name string, pt types.PatchType, data []byte, options metav1.PatchOptions, subresources ...string) (*metav1.PartialObjectMetadata, error)
37+
Delete(ctx context.Context, name string, options metav1.DeleteOptions, subresources ...string) error
38+
DeleteCollection(ctx context.Context, options metav1.DeleteOptions, listOptions metav1.ListOptions) error
39+
Get(ctx context.Context, name string, options metav1.GetOptions, subresources ...string) (*metav1.PartialObjectMetadata, error)
40+
List(ctx context.Context, opts metav1.ListOptions) (*metav1.PartialObjectMetadataList, error)
41+
Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error)
42+
Patch(ctx context.Context, name string, pt types.PatchType, data []byte, options metav1.PatchOptions, subresources ...string) (*metav1.PartialObjectMetadata, error)
4143
}
4244

4345
// Getter handles both namespaced and non-namespaced resource types consistently.

staging/src/k8s.io/client-go/metadata/metadata.go

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -120,14 +120,11 @@ func (c *client) Namespace(ns string) ResourceInterface {
120120
}
121121

122122
// Delete removes the provided resource from the server.
123-
func (c *client) Delete(name string, opts *metav1.DeleteOptions, subresources ...string) error {
123+
func (c *client) Delete(ctx context.Context, name string, opts metav1.DeleteOptions, subresources ...string) error {
124124
if len(name) == 0 {
125125
return fmt.Errorf("name is required")
126126
}
127-
if opts == nil {
128-
opts = &metav1.DeleteOptions{}
129-
}
130-
deleteOptionsByte, err := runtime.Encode(deleteOptionsCodec.LegacyCodec(schema.GroupVersion{Version: "v1"}), opts)
127+
deleteOptionsByte, err := runtime.Encode(deleteOptionsCodec.LegacyCodec(schema.GroupVersion{Version: "v1"}), &opts)
131128
if err != nil {
132129
return err
133130
}
@@ -136,16 +133,13 @@ func (c *client) Delete(name string, opts *metav1.DeleteOptions, subresources ..
136133
Delete().
137134
AbsPath(append(c.makeURLSegments(name), subresources...)...).
138135
Body(deleteOptionsByte).
139-
Do(context.TODO())
136+
Do(ctx)
140137
return result.Error()
141138
}
142139

143140
// DeleteCollection triggers deletion of all resources in the specified scope (namespace or cluster).
144-
func (c *client) DeleteCollection(opts *metav1.DeleteOptions, listOptions metav1.ListOptions) error {
145-
if opts == nil {
146-
opts = &metav1.DeleteOptions{}
147-
}
148-
deleteOptionsByte, err := runtime.Encode(deleteOptionsCodec.LegacyCodec(schema.GroupVersion{Version: "v1"}), opts)
141+
func (c *client) DeleteCollection(ctx context.Context, opts metav1.DeleteOptions, listOptions metav1.ListOptions) error {
142+
deleteOptionsByte, err := runtime.Encode(deleteOptionsCodec.LegacyCodec(schema.GroupVersion{Version: "v1"}), &opts)
149143
if err != nil {
150144
return err
151145
}
@@ -155,19 +149,19 @@ func (c *client) DeleteCollection(opts *metav1.DeleteOptions, listOptions metav1
155149
AbsPath(c.makeURLSegments("")...).
156150
Body(deleteOptionsByte).
157151
SpecificallyVersionedParams(&listOptions, dynamicParameterCodec, versionV1).
158-
Do(context.TODO())
152+
Do(ctx)
159153
return result.Error()
160154
}
161155

162156
// Get returns the resource with name from the specified scope (namespace or cluster).
163-
func (c *client) Get(name string, opts metav1.GetOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
157+
func (c *client) Get(ctx context.Context, name string, opts metav1.GetOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
164158
if len(name) == 0 {
165159
return nil, fmt.Errorf("name is required")
166160
}
167161
result := c.client.client.Get().AbsPath(append(c.makeURLSegments(name), subresources...)...).
168162
SetHeader("Accept", "application/vnd.kubernetes.protobuf;as=PartialObjectMetadata;g=meta.k8s.io;v=v1,application/json;as=PartialObjectMetadata;g=meta.k8s.io;v=v1,application/json").
169163
SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
170-
Do(context.TODO())
164+
Do(ctx)
171165
if err := result.Error(); err != nil {
172166
return nil, err
173167
}
@@ -199,11 +193,11 @@ func (c *client) Get(name string, opts metav1.GetOptions, subresources ...string
199193
}
200194

201195
// List returns all resources within the specified scope (namespace or cluster).
202-
func (c *client) List(opts metav1.ListOptions) (*metav1.PartialObjectMetadataList, error) {
196+
func (c *client) List(ctx context.Context, opts metav1.ListOptions) (*metav1.PartialObjectMetadataList, error) {
203197
result := c.client.client.Get().AbsPath(c.makeURLSegments("")...).
204198
SetHeader("Accept", "application/vnd.kubernetes.protobuf;as=PartialObjectMetadataList;g=meta.k8s.io;v=v1,application/json;as=PartialObjectMetadataList;g=meta.k8s.io;v=v1,application/json").
205199
SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
206-
Do(context.TODO())
200+
Do(ctx)
207201
if err := result.Error(); err != nil {
208202
return nil, err
209203
}
@@ -232,7 +226,7 @@ func (c *client) List(opts metav1.ListOptions) (*metav1.PartialObjectMetadataLis
232226
}
233227

234228
// Watch finds all changes to the resources in the specified scope (namespace or cluster).
235-
func (c *client) Watch(opts metav1.ListOptions) (watch.Interface, error) {
229+
func (c *client) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) {
236230
var timeout time.Duration
237231
if opts.TimeoutSeconds != nil {
238232
timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
@@ -243,11 +237,11 @@ func (c *client) Watch(opts metav1.ListOptions) (watch.Interface, error) {
243237
SetHeader("Accept", "application/vnd.kubernetes.protobuf;as=PartialObjectMetadata;g=meta.k8s.io;v=v1,application/json;as=PartialObjectMetadata;g=meta.k8s.io;v=v1,application/json").
244238
SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
245239
Timeout(timeout).
246-
Watch(context.TODO())
240+
Watch(ctx)
247241
}
248242

249243
// Patch modifies the named resource in the specified scope (namespace or cluster).
250-
func (c *client) Patch(name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
244+
func (c *client) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts metav1.PatchOptions, subresources ...string) (*metav1.PartialObjectMetadata, error) {
251245
if len(name) == 0 {
252246
return nil, fmt.Errorf("name is required")
253247
}
@@ -257,7 +251,7 @@ func (c *client) Patch(name string, pt types.PatchType, data []byte, opts metav1
257251
Body(data).
258252
SetHeader("Accept", "application/vnd.kubernetes.protobuf;as=PartialObjectMetadata;g=meta.k8s.io;v=v1,application/json;as=PartialObjectMetadata;g=meta.k8s.io;v=v1,application/json").
259253
SpecificallyVersionedParams(&opts, dynamicParameterCodec, versionV1).
260-
Do(context.TODO())
254+
Do(ctx)
261255
if err := result.Error(); err != nil {
262256
return nil, err
263257
}

staging/src/k8s.io/client-go/metadata/metadata_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package metadata
1818

1919
import (
20+
"context"
2021
"encoding/json"
2122
"net/http"
2223
"net/http/httptest"
@@ -72,7 +73,7 @@ func TestClient(t *testing.T) {
7273
})
7374
},
7475
want: func(t *testing.T, client *Client) {
75-
obj, err := client.Resource(gvr).Namespace("ns").Get("name", metav1.GetOptions{})
76+
obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{})
7677
if err != nil {
7778
t.Fatal(err)
7879
}
@@ -120,7 +121,7 @@ func TestClient(t *testing.T) {
120121
})
121122
},
122123
want: func(t *testing.T, client *Client) {
123-
objs, err := client.Resource(gvr).Namespace("ns").List(metav1.ListOptions{})
124+
objs, err := client.Resource(gvr).Namespace("ns").List(context.TODO(), metav1.ListOptions{})
124125
if err != nil {
125126
t.Fatal(err)
126127
}
@@ -162,7 +163,7 @@ func TestClient(t *testing.T) {
162163
})
163164
},
164165
want: func(t *testing.T, client *Client) {
165-
obj, err := client.Resource(gvr).Namespace("ns").Get("name", metav1.GetOptions{})
166+
obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{})
166167
if err == nil || !runtime.IsMissingKind(err) {
167168
t.Fatal(err)
168169
}
@@ -191,7 +192,7 @@ func TestClient(t *testing.T) {
191192
})
192193
},
193194
want: func(t *testing.T, client *Client) {
194-
obj, err := client.Resource(gvr).Namespace("ns").Get("name", metav1.GetOptions{})
195+
obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{})
195196
if err == nil || !runtime.IsMissingVersion(err) {
196197
t.Fatal(err)
197198
}
@@ -219,7 +220,7 @@ func TestClient(t *testing.T) {
219220
})
220221
},
221222
want: func(t *testing.T, client *Client) {
222-
obj, err := client.Resource(gvr).Namespace("ns").Get("name", metav1.GetOptions{})
223+
obj, err := client.Resource(gvr).Namespace("ns").Get(context.TODO(), "name", metav1.GetOptions{})
223224
if err == nil || !strings.Contains(err.Error(), "object does not appear to match the ObjectMeta schema") {
224225
t.Fatal(err)
225226
}

staging/src/k8s.io/client-go/metadata/metadatainformer/informer.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package metadatainformer
1818

1919
import (
20+
"context"
2021
"sync"
2122
"time"
2223

@@ -124,13 +125,13 @@ func NewFilteredMetadataInformer(client metadata.Interface, gvr schema.GroupVers
124125
if tweakListOptions != nil {
125126
tweakListOptions(&options)
126127
}
127-
return client.Resource(gvr).Namespace(namespace).List(options)
128+
return client.Resource(gvr).Namespace(namespace).List(context.TODO(), options)
128129
},
129130
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
130131
if tweakListOptions != nil {
131132
tweakListOptions(&options)
132133
}
133-
return client.Resource(gvr).Namespace(namespace).Watch(options)
134+
return client.Resource(gvr).Namespace(namespace).Watch(context.TODO(), options)
134135
},
135136
},
136137
&metav1.PartialObjectMetadata{},

staging/src/k8s.io/client-go/metadata/metadatainformer/informer_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func TestMetadataSharedInformerFactory(t *testing.T) {
103103
gvr: schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"},
104104
existingObj: newPartialObjectMetadata("extensions/v1beta1", "Deployment", "ns-foo", "name-foo"),
105105
trigger: func(gvr schema.GroupVersionResource, ns string, fakeClient *fake.FakeMetadataClient, testObject *metav1.PartialObjectMetadata) *metav1.PartialObjectMetadata {
106-
err := fakeClient.Resource(gvr).Namespace(ns).Delete(testObject.GetName(), &metav1.DeleteOptions{})
106+
err := fakeClient.Resource(gvr).Namespace(ns).Delete(context.TODO(), testObject.GetName(), metav1.DeleteOptions{})
107107
if err != nil {
108108
t.Error(err)
109109
}

0 commit comments

Comments
 (0)