client-go dynamic client: add context to callers

This commit is contained in:
Jordan Liggitt 2020-03-06 10:17:41 -05:00
parent 6fa54d715f
commit b7c2faf26c
48 changed files with 391 additions and 370 deletions

View File

@ -17,6 +17,7 @@ limitations under the License.
package apiclient package apiclient
import ( import (
"context"
"encoding/json" "encoding/json"
"fmt" "fmt"
@ -74,7 +75,7 @@ func NewClientBackedDryRunGetterFromKubeconfig(file string) (*ClientBackedDryRun
// HandleGetAction handles GET actions to the dryrun clientset this interface supports // HandleGetAction handles GET actions to the dryrun clientset this interface supports
func (clg *ClientBackedDryRunGetter) HandleGetAction(action core.GetAction) (bool, runtime.Object, error) { func (clg *ClientBackedDryRunGetter) HandleGetAction(action core.GetAction) (bool, runtime.Object, error) {
unstructuredObj, err := clg.dynamicClient.Resource(action.GetResource()).Namespace(action.GetNamespace()).Get(action.GetName(), metav1.GetOptions{}) unstructuredObj, err := clg.dynamicClient.Resource(action.GetResource()).Namespace(action.GetNamespace()).Get(context.TODO(), action.GetName(), metav1.GetOptions{})
// Inform the user that the requested object wasn't found. // Inform the user that the requested object wasn't found.
printIfNotExists(err) printIfNotExists(err)
if err != nil { if err != nil {
@ -95,7 +96,7 @@ func (clg *ClientBackedDryRunGetter) HandleListAction(action core.ListAction) (b
FieldSelector: action.GetListRestrictions().Fields.String(), FieldSelector: action.GetListRestrictions().Fields.String(),
} }
unstructuredList, err := clg.dynamicClient.Resource(action.GetResource()).Namespace(action.GetNamespace()).List(listOpts) unstructuredList, err := clg.dynamicClient.Resource(action.GetResource()).Namespace(action.GetNamespace()).List(context.TODO(), listOpts)
if err != nil { if err != nil {
return true, nil, err return true, nil, err
} }

View File

@ -93,7 +93,7 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta
for _, v := range noxuDefinition.Spec.Versions { for _, v := range noxuDefinition.Spec.Versions {
noxuResourceClients[v.Name] = newNamespacedCustomResourceVersionedClient(ns, dynamicClient, noxuDefinition, v.Name) noxuResourceClients[v.Name] = newNamespacedCustomResourceVersionedClient(ns, dynamicClient, noxuDefinition, v.Name)
noxuWatch, err := noxuResourceClients[v.Name].Watch(metav1.ListOptions{}) noxuWatch, err := noxuResourceClients[v.Name].Watch(context.TODO(), metav1.ListOptions{})
if disabledVersions[v.Name] { if disabledVersions[v.Name] {
if !errors.IsNotFound(err) { if !errors.IsNotFound(err) {
t.Errorf("expected the watch operation fail with NotFound for disabled version %s, got error: %v", v.Name, err) t.Errorf("expected the watch operation fail with NotFound for disabled version %s, got error: %v", v.Name, err)
@ -161,7 +161,7 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta
// Check get for all versions // Check get for all versions
for version2, noxuResourceClient2 := range noxuResourceClients { for version2, noxuResourceClient2 := range noxuResourceClients {
// Get test // Get test
gottenNoxuInstance, err := noxuResourceClient2.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient2.Get(context.TODO(), "foo", metav1.GetOptions{})
if disabledVersions[version2] { if disabledVersions[version2] {
if !errors.IsNotFound(err) { if !errors.IsNotFound(err) {
@ -179,7 +179,7 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta
} }
// List test // List test
listWithItem, err := noxuResourceClient2.List(metav1.ListOptions{}) listWithItem, err := noxuResourceClient2.List(context.TODO(), metav1.ListOptions{})
if disabledVersions[version2] { if disabledVersions[version2] {
if !errors.IsNotFound(err) { if !errors.IsNotFound(err) {
t.Errorf("expected the list operation fail with NotFound for disabled version %s, got error: %v", version2, err) t.Errorf("expected the list operation fail with NotFound for disabled version %s, got error: %v", version2, err)
@ -208,14 +208,14 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta
gottenNoxuInstance = &unstructured.Unstructured{} gottenNoxuInstance = &unstructured.Unstructured{}
gottenNoxuInstance.SetName("foo") gottenNoxuInstance.SetName("foo")
} else { } else {
gottenNoxuInstance, err = noxuResourceClient2.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err = noxuResourceClient2.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
} }
gottenNoxuInstance.Object["updated"] = version2 gottenNoxuInstance.Object["updated"] = version2
updatedNoxuInstance, err := noxuResourceClient2.Update(gottenNoxuInstance, metav1.UpdateOptions{}) updatedNoxuInstance, err := noxuResourceClient2.Update(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if disabledVersions[version2] { if disabledVersions[version2] {
if !errors.IsNotFound(err) { if !errors.IsNotFound(err) {
t.Errorf("expected the update operation fail with NotFound for disabled version %s, got error: %v", version2, err) t.Errorf("expected the update operation fail with NotFound for disabled version %s, got error: %v", version2, err)
@ -265,11 +265,11 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta
} }
// Delete test // Delete test
if err := noxuResourceClient.Delete("foo", *metav1.NewDeleteOptions(0)); err != nil { if err := noxuResourceClient.Delete(context.TODO(), "foo", *metav1.NewDeleteOptions(0)); err != nil {
t.Fatal(err) t.Fatal(err)
} }
listWithoutItem, err := noxuResourceClient.List(metav1.ListOptions{}) listWithoutItem, err := noxuResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -305,7 +305,7 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta
} }
// Delete test // Delete test
if err := noxuResourceClient.DeleteCollection(*metav1.NewDeleteOptions(0), metav1.ListOptions{}); err != nil { if err := noxuResourceClient.DeleteCollection(context.TODO(), *metav1.NewDeleteOptions(0), metav1.ListOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
} }
@ -333,7 +333,7 @@ func TestInvalidCRUD(t *testing.T) {
for _, v := range noxuDefinition.Spec.Versions { for _, v := range noxuDefinition.Spec.Versions {
noxuResourceClients[v.Name] = newNamespacedCustomResourceVersionedClient("", dynamicClient, noxuDefinition, v.Name) noxuResourceClients[v.Name] = newNamespacedCustomResourceVersionedClient("", dynamicClient, noxuDefinition, v.Name)
noxuWatch, err := noxuResourceClients[v.Name].Watch(metav1.ListOptions{}) noxuWatch, err := noxuResourceClients[v.Name].Watch(context.TODO(), metav1.ListOptions{})
if disabledVersions[v.Name] { if disabledVersions[v.Name] {
if !errors.IsNotFound(err) { if !errors.IsNotFound(err) {
t.Errorf("expected the watch operation fail with NotFound for disabled version %s, got error: %v", v.Name, err) t.Errorf("expected the watch operation fail with NotFound for disabled version %s, got error: %v", v.Name, err)
@ -354,7 +354,7 @@ func TestInvalidCRUD(t *testing.T) {
for version, noxuResourceClient := range noxuResourceClients { for version, noxuResourceClient := range noxuResourceClients {
// Case when typeless Unstructured object is passed // Case when typeless Unstructured object is passed
typelessInstance := &unstructured.Unstructured{} typelessInstance := &unstructured.Unstructured{}
if _, err := noxuResourceClient.Create(typelessInstance, metav1.CreateOptions{}); !errors.IsBadRequest(err) { if _, err := noxuResourceClient.Create(context.TODO(), typelessInstance, metav1.CreateOptions{}); !errors.IsBadRequest(err) {
t.Errorf("expected badrequest for submitting empty object, got %#v", err) t.Errorf("expected badrequest for submitting empty object, got %#v", err)
} }
// Case when apiVersion and Kind would be set up from GVK, but no other objects are present // Case when apiVersion and Kind would be set up from GVK, but no other objects are present
@ -364,7 +364,7 @@ func TestInvalidCRUD(t *testing.T) {
"kind": "WishIHadChosenNoxu", "kind": "WishIHadChosenNoxu",
}, },
} }
if _, err := noxuResourceClient.Create(typedNoBodyInstance, metav1.CreateOptions{}); !errors.IsInvalid(err) { if _, err := noxuResourceClient.Create(context.TODO(), typedNoBodyInstance, metav1.CreateOptions{}); !errors.IsInvalid(err) {
t.Errorf("expected invalid request for submitting malformed object, got %#v", err) t.Errorf("expected invalid request for submitting malformed object, got %#v", err)
} }
} }
@ -372,7 +372,7 @@ func TestInvalidCRUD(t *testing.T) {
func testFieldSelector(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta1.CustomResourceDefinition, dynamicClient dynamic.Interface) { func testFieldSelector(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta1.CustomResourceDefinition, dynamicClient dynamic.Interface) {
noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
initialList, err := noxuResourceClient.List(metav1.ListOptions{}) initialList, err := noxuResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -395,6 +395,7 @@ func testFieldSelector(t *testing.T, ns string, noxuDefinition *apiextensionsv1b
t.Fatal(err) t.Fatal(err)
} }
noxuWatch, err := noxuResourceClient.Watch( noxuWatch, err := noxuResourceClient.Watch(
context.TODO(),
metav1.ListOptions{ metav1.ListOptions{
ResourceVersion: initialListListMeta.GetResourceVersion(), ResourceVersion: initialListListMeta.GetResourceVersion(),
FieldSelector: "metadata.name=foo", FieldSelector: "metadata.name=foo",
@ -449,7 +450,7 @@ func testFieldSelector(t *testing.T, ns string, noxuDefinition *apiextensionsv1b
t.Errorf("missing watch event") t.Errorf("missing watch event")
} }
gottenNoxuInstance, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -457,7 +458,7 @@ func testFieldSelector(t *testing.T, ns string, noxuDefinition *apiextensionsv1b
t.Errorf("expected %v, got %v", e, a) t.Errorf("expected %v, got %v", e, a)
} }
listWithItem, err := noxuResourceClient.List(metav1.ListOptions{FieldSelector: "metadata.name=foo"}) listWithItem, err := noxuResourceClient.List(context.TODO(), metav1.ListOptions{FieldSelector: "metadata.name=foo"})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -468,14 +469,14 @@ func testFieldSelector(t *testing.T, ns string, noxuDefinition *apiextensionsv1b
t.Errorf("expected %v, got %v", e, a) t.Errorf("expected %v, got %v", e, a)
} }
if err := noxuResourceClient.Delete("bar", metav1.DeleteOptions{}); err != nil { if err := noxuResourceClient.Delete(context.TODO(), "bar", metav1.DeleteOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := noxuResourceClient.Delete("foo", metav1.DeleteOptions{}); err != nil { if err := noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
listWithoutItem, err := noxuResourceClient.List(metav1.ListOptions{}) listWithoutItem, err := noxuResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -578,7 +579,7 @@ func TestNoNamespaceReject(t *testing.T) {
ns := "" ns := ""
noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
initialList, err := noxuResourceClient.List(metav1.ListOptions{}) initialList, err := noxuResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -640,7 +641,7 @@ func TestSelfLink(t *testing.T) {
noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo") noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo")
createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}) createdNoxuInstance, err := noxuNamespacedResourceClient.Create(context.TODO(), noxuInstanceToCreate, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -659,7 +660,7 @@ func TestSelfLink(t *testing.T) {
curletResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, curletDefinition) curletResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, curletDefinition)
curletInstanceToCreate := fixtures.NewCurletInstance(ns, "foo") curletInstanceToCreate := fixtures.NewCurletInstance(ns, "foo")
createdCurletInstance, err := curletResourceClient.Create(curletInstanceToCreate, metav1.CreateOptions{}) createdCurletInstance, err := curletResourceClient.Create(context.TODO(), curletInstanceToCreate, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -686,7 +687,7 @@ func TestPreserveInt(t *testing.T) {
noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo") noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo")
createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}) createdNoxuInstance, err := noxuNamespacedResourceClient.Create(context.TODO(), noxuInstanceToCreate, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -729,14 +730,14 @@ func TestPatch(t *testing.T) {
t.Logf("Creating foo") t.Logf("Creating foo")
noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo") noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo")
_, err = noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}) _, err = noxuNamespacedResourceClient.Create(context.TODO(), noxuInstanceToCreate, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
t.Logf("Patching .num.num2 to 999") t.Logf("Patching .num.num2 to 999")
patch := []byte(`{"num": {"num2":999}}`) patch := []byte(`{"num": {"num2":999}}`)
patchedNoxuInstance, err := noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}) patchedNoxuInstance, err := noxuNamespacedResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -751,7 +752,7 @@ func TestPatch(t *testing.T) {
// a patch with no change // a patch with no change
t.Logf("Patching .num.num2 again to 999") t.Logf("Patching .num.num2 again to 999")
patchedNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}) patchedNoxuInstance, err = noxuNamespacedResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -761,7 +762,7 @@ func TestPatch(t *testing.T) {
// an empty patch // an empty patch
t.Logf("Applying empty patch") t.Logf("Applying empty patch")
patchedNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), metav1.PatchOptions{}) patchedNoxuInstance, err = noxuNamespacedResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, []byte(`{}`), metav1.PatchOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -804,7 +805,7 @@ func TestCrossNamespaceListWatch(t *testing.T) {
ns := "" ns := ""
noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
initialList, err := noxuResourceClient.List(metav1.ListOptions{}) initialList, err := noxuResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -817,7 +818,7 @@ func TestCrossNamespaceListWatch(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
noxuWatch, err := noxuResourceClient.Watch(metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()}) noxuWatch, err := noxuResourceClient.Watch(context.TODO(), metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -827,7 +828,7 @@ func TestCrossNamespaceListWatch(t *testing.T) {
ns1 := "namespace-1" ns1 := "namespace-1"
noxuNamespacedResourceClient1 := newNamespacedCustomResourceClient(ns1, dynamicClient, noxuDefinition) noxuNamespacedResourceClient1 := newNamespacedCustomResourceClient(ns1, dynamicClient, noxuDefinition)
instances[ns1] = createInstanceWithNamespaceHelper(t, ns1, "foo1", noxuNamespacedResourceClient1, noxuDefinition) instances[ns1] = createInstanceWithNamespaceHelper(t, ns1, "foo1", noxuNamespacedResourceClient1, noxuDefinition)
noxuNamespacesWatch1, err := noxuNamespacedResourceClient1.Watch(metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()}) noxuNamespacesWatch1, err := noxuNamespacedResourceClient1.Watch(context.TODO(), metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()})
if err != nil { if err != nil {
t.Fatalf("Failed to watch namespace: %s, error: %v", ns1, err) t.Fatalf("Failed to watch namespace: %s, error: %v", ns1, err)
} }
@ -836,13 +837,13 @@ func TestCrossNamespaceListWatch(t *testing.T) {
ns2 := "namespace-2" ns2 := "namespace-2"
noxuNamespacedResourceClient2 := newNamespacedCustomResourceClient(ns2, dynamicClient, noxuDefinition) noxuNamespacedResourceClient2 := newNamespacedCustomResourceClient(ns2, dynamicClient, noxuDefinition)
instances[ns2] = createInstanceWithNamespaceHelper(t, ns2, "foo2", noxuNamespacedResourceClient2, noxuDefinition) instances[ns2] = createInstanceWithNamespaceHelper(t, ns2, "foo2", noxuNamespacedResourceClient2, noxuDefinition)
noxuNamespacesWatch2, err := noxuNamespacedResourceClient2.Watch(metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()}) noxuNamespacesWatch2, err := noxuNamespacedResourceClient2.Watch(context.TODO(), metav1.ListOptions{ResourceVersion: initialListListMeta.GetResourceVersion()})
if err != nil { if err != nil {
t.Fatalf("Failed to watch namespace: %s, error: %v", ns2, err) t.Fatalf("Failed to watch namespace: %s, error: %v", ns2, err)
} }
defer noxuNamespacesWatch2.Stop() defer noxuNamespacesWatch2.Stop()
createdList, err := noxuResourceClient.List(metav1.ListOptions{}) createdList, err := noxuResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -103,7 +103,7 @@ func TestChangeCRD(t *testing.T) {
go func(i int) { go func(i int) {
defer wg.Done() defer wg.Done()
noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, fmt.Sprintf("foo-%d", i)) noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, fmt.Sprintf("foo-%d", i))
if _, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}); err != nil { if _, err := noxuNamespacedResourceClient.Create(context.TODO(), noxuInstanceToCreate, metav1.CreateOptions{}); err != nil {
t.Error(err) t.Error(err)
return return
} }
@ -113,7 +113,7 @@ func TestChangeCRD(t *testing.T) {
case <-stopChan: case <-stopChan:
return return
default: default:
if _, err := noxuNamespacedResourceClient.Get(noxuInstanceToCreate.GetName(), metav1.GetOptions{}); err != nil { if _, err := noxuNamespacedResourceClient.Get(context.TODO(), noxuInstanceToCreate.GetName(), metav1.GetOptions{}); err != nil {
t.Error(err) t.Error(err)
continue continue
} }
@ -130,7 +130,7 @@ func TestChangeCRD(t *testing.T) {
case <-stopChan: case <-stopChan:
return return
default: default:
w, err := noxuNamespacedResourceClient.Watch(metav1.ListOptions{}) w, err := noxuNamespacedResourceClient.Watch(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Errorf("unexpected error establishing watch: %v", err) t.Errorf("unexpected error establishing watch: %v", err)
continue continue

View File

@ -197,7 +197,7 @@ func testWebhookConverter(t *testing.T, watchCache bool) {
defer ctcTearDown() defer ctcTearDown()
// read only object to read at a different version than stored when we need to force conversion // read only object to read at a different version than stored when we need to force conversion
marker, err := ctc.versionedClient("marker", "v1beta1").Create(newConversionMultiVersionFixture("marker", "marker", "v1beta1"), metav1.CreateOptions{}) marker, err := ctc.versionedClient("marker", "v1beta1").Create(context.TODO(), newConversionMultiVersionFixture("marker", "marker", "v1beta1"), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -216,7 +216,7 @@ func testWebhookConverter(t *testing.T, watchCache bool) {
// wait until new webhook is called the first time // wait until new webhook is called the first time
if err := wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) { if err := wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) {
_, err := ctc.versionedClient(marker.GetNamespace(), "v1alpha1").Get(marker.GetName(), metav1.GetOptions{}) _, err := ctc.versionedClient(marker.GetNamespace(), "v1alpha1").Get(context.TODO(), marker.GetName(), metav1.GetOptions{})
select { select {
case <-upCh: case <-upCh:
return true, nil return true, nil
@ -247,13 +247,13 @@ func validateStorageVersion(t *testing.T, ctc *conversionTestContext) {
t.Run(version.Name, func(t *testing.T) { t.Run(version.Name, func(t *testing.T) {
name := "storageversion-" + version.Name name := "storageversion-" + version.Name
client := ctc.versionedClient(ns, version.Name) client := ctc.versionedClient(ns, version.Name)
obj, err := client.Create(newConversionMultiVersionFixture(ns, name, version.Name), metav1.CreateOptions{}) obj, err := client.Create(context.TODO(), newConversionMultiVersionFixture(ns, name, version.Name), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
ctc.setAndWaitStorageVersion(t, "v1beta2") ctc.setAndWaitStorageVersion(t, "v1beta2")
if _, err = client.Get(obj.GetName(), metav1.GetOptions{}); err != nil { if _, err = client.Get(context.TODO(), obj.GetName(), metav1.GetOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -275,7 +275,7 @@ func validateMixedStorageVersions(versions ...string) func(t *testing.T, ctc *co
ctc.setAndWaitStorageVersion(t, version) ctc.setAndWaitStorageVersion(t, version)
name := "mixedstorage-stored-as-" + version name := "mixedstorage-stored-as-" + version
obj, err := clients[version].Create(newConversionMultiVersionFixture(ns, name, version), metav1.CreateOptions{}) obj, err := clients[version].Create(context.TODO(), newConversionMultiVersionFixture(ns, name, version), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -285,12 +285,12 @@ func validateMixedStorageVersions(versions ...string) func(t *testing.T, ctc *co
// Ensure copies of an object have the same fields and values at each custom resource definition version regardless of storage version // Ensure copies of an object have the same fields and values at each custom resource definition version regardless of storage version
for clientVersion, client := range clients { for clientVersion, client := range clients {
t.Run(clientVersion, func(t *testing.T) { t.Run(clientVersion, func(t *testing.T) {
o1, err := client.Get(objNames[0], metav1.GetOptions{}) o1, err := client.Get(context.TODO(), objNames[0], metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
for _, objName := range objNames[1:] { for _, objName := range objNames[1:] {
o2, err := client.Get(objName, metav1.GetOptions{}) o2, err := client.Get(context.TODO(), objName, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -314,7 +314,7 @@ func validateServed(t *testing.T, ctc *conversionTestContext) {
t.Run(version.Name, func(t *testing.T) { t.Run(version.Name, func(t *testing.T) {
name := "served-" + version.Name name := "served-" + version.Name
client := ctc.versionedClient(ns, version.Name) client := ctc.versionedClient(ns, version.Name)
obj, err := client.Create(newConversionMultiVersionFixture(ns, name, version.Name), metav1.CreateOptions{}) obj, err := client.Create(context.TODO(), newConversionMultiVersionFixture(ns, name, version.Name), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -340,7 +340,7 @@ func validateNonTrivialConverted(t *testing.T, ctc *conversionTestContext) {
t.Fatal(err) t.Fatal(err)
} }
} }
if _, err := client.Create(fixture, metav1.CreateOptions{}); err != nil { if _, err := client.Create(context.TODO(), fixture, metav1.CreateOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -353,7 +353,7 @@ func validateNonTrivialConverted(t *testing.T, ctc *conversionTestContext) {
for _, getVersion := range ctc.crd.Spec.Versions { for _, getVersion := range ctc.crd.Spec.Versions {
client := ctc.versionedClient(ns, getVersion.Name) client := ctc.versionedClient(ns, getVersion.Name)
obj, err := client.Get(name, metav1.GetOptions{}) obj, err := client.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -361,7 +361,7 @@ func validateNonTrivialConverted(t *testing.T, ctc *conversionTestContext) {
} }
// send a non-trivial patch to the main resource to verify the oldObject is in the right version // send a non-trivial patch to the main resource to verify the oldObject is in the right version
if _, err := client.Patch(name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"main":"true"}}}`), metav1.PatchOptions{}); err != nil { if _, err := client.Patch(context.TODO(), name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"main":"true"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
// verify that the right, pruned version is in storage // verify that the right, pruned version is in storage
@ -372,7 +372,7 @@ func validateNonTrivialConverted(t *testing.T, ctc *conversionTestContext) {
verifyMultiVersionObject(t, "v1beta1", obj) verifyMultiVersionObject(t, "v1beta1", obj)
// send a non-trivial patch to the status subresource to verify the oldObject is in the right version // send a non-trivial patch to the status subresource to verify the oldObject is in the right version
if _, err := client.Patch(name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"status":"true"}}}`), metav1.PatchOptions{}, "status"); err != nil { if _, err := client.Patch(context.TODO(), name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"status":"true"}}}`), metav1.PatchOptions{}, "status"); err != nil {
t.Fatal(err) t.Fatal(err)
} }
// verify that the right, pruned version is in storage // verify that the right, pruned version is in storage
@ -398,7 +398,7 @@ func validateNonTrivialConvertedList(t *testing.T, ctc *conversionTestContext) {
t.Fatal(err) t.Fatal(err)
} }
} }
_, err := client.Create(fixture, metav1.CreateOptions{}) _, err := client.Create(context.TODO(), fixture, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -408,7 +408,7 @@ func validateNonTrivialConvertedList(t *testing.T, ctc *conversionTestContext) {
for _, listVersion := range ctc.crd.Spec.Versions { for _, listVersion := range ctc.crd.Spec.Versions {
t.Run(fmt.Sprintf("listing objects as %s", listVersion.Name), func(t *testing.T) { t.Run(fmt.Sprintf("listing objects as %s", listVersion.Name), func(t *testing.T) {
client := ctc.versionedClient(ns, listVersion.Name) client := ctc.versionedClient(ns, listVersion.Name)
obj, err := client.List(metav1.ListOptions{}) obj, err := client.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -443,7 +443,7 @@ func validateStoragePruning(t *testing.T, ctc *conversionTestContext) {
if err := unstructured.SetNestedField(fixture.Object, "foo", "garbage"); err != nil { if err := unstructured.SetNestedField(fixture.Object, "foo", "garbage"); err != nil {
t.Fatal(err) t.Fatal(err)
} }
_, err := client.Create(fixture, metav1.CreateOptions{}) _, err := client.Create(context.TODO(), fixture, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -471,7 +471,7 @@ func validateStoragePruning(t *testing.T, ctc *conversionTestContext) {
for _, getVersion := range ctc.crd.Spec.Versions { for _, getVersion := range ctc.crd.Spec.Versions {
client := ctc.versionedClient(ns, getVersion.Name) client := ctc.versionedClient(ns, getVersion.Name)
obj, err := client.Get(name, metav1.GetOptions{}) obj, err := client.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -496,7 +496,7 @@ func validateObjectMetaMutation(t *testing.T, ctc *conversionTestContext) {
ctc.setAndWaitStorageVersion(t, storageVersion) ctc.setAndWaitStorageVersion(t, storageVersion)
name := "objectmeta-mutation-" + storageVersion name := "objectmeta-mutation-" + storageVersion
client := ctc.versionedClient(ns, storageVersion) client := ctc.versionedClient(ns, storageVersion)
obj, err := client.Create(newConversionMultiVersionFixture(ns, name, storageVersion), metav1.CreateOptions{}) obj, err := client.Create(context.TODO(), newConversionMultiVersionFixture(ns, name, storageVersion), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -504,7 +504,7 @@ func validateObjectMetaMutation(t *testing.T, ctc *conversionTestContext) {
t.Logf("Getting object in other version v1beta2") t.Logf("Getting object in other version v1beta2")
client = ctc.versionedClient(ns, "v1beta2") client = ctc.versionedClient(ns, "v1beta2")
obj, err = client.Get(name, metav1.GetOptions{}) obj, err = client.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -513,7 +513,7 @@ func validateObjectMetaMutation(t *testing.T, ctc *conversionTestContext) {
t.Logf("Creating object in non-storage version") t.Logf("Creating object in non-storage version")
name = "objectmeta-mutation-v1beta2" name = "objectmeta-mutation-v1beta2"
client = ctc.versionedClient(ns, "v1beta2") client = ctc.versionedClient(ns, "v1beta2")
obj, err = client.Create(newConversionMultiVersionFixture(ns, name, "v1beta2"), metav1.CreateOptions{}) obj, err = client.Create(context.TODO(), newConversionMultiVersionFixture(ns, name, "v1beta2"), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -521,7 +521,7 @@ func validateObjectMetaMutation(t *testing.T, ctc *conversionTestContext) {
t.Logf("Listing objects in non-storage version") t.Logf("Listing objects in non-storage version")
client = ctc.versionedClient(ns, "v1beta2") client = ctc.versionedClient(ns, "v1beta2")
list, err := client.List(metav1.ListOptions{}) list, err := client.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -582,7 +582,7 @@ func validateUIDMutation(t *testing.T, ctc *conversionTestContext) {
ctc.setAndWaitStorageVersion(t, storageVersion) ctc.setAndWaitStorageVersion(t, storageVersion)
name := "uid-mutation-" + storageVersion name := "uid-mutation-" + storageVersion
client := ctc.versionedClient(ns, "v1beta2") client := ctc.versionedClient(ns, "v1beta2")
obj, err := client.Create(newConversionMultiVersionFixture(ns, name, "v1beta2"), metav1.CreateOptions{}) obj, err := client.Create(context.TODO(), newConversionMultiVersionFixture(ns, name, "v1beta2"), metav1.CreateOptions{})
if err == nil { if err == nil {
t.Fatalf("expected creation error, but got: %v", obj) t.Fatalf("expected creation error, but got: %v", obj)
} else if !strings.Contains(err.Error(), "must have the same UID") { } else if !strings.Contains(err.Error(), "must have the same UID") {
@ -607,7 +607,7 @@ func validateDefaulting(t *testing.T, ctc *conversionTestContext) {
if err := unstructured.SetNestedField(fixture.Object, map[string]interface{}{}, "defaults"); err != nil { if err := unstructured.SetNestedField(fixture.Object, map[string]interface{}{}, "defaults"); err != nil {
t.Fatal(err) t.Fatal(err)
} }
created, err := client.Create(fixture, metav1.CreateOptions{}) created, err := client.Create(context.TODO(), fixture, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -654,7 +654,7 @@ func validateDefaulting(t *testing.T, ctc *conversionTestContext) {
continue continue
} }
got, err := ctc.versionedClient(ns, v.Name).Get(created.GetName(), metav1.GetOptions{}) got, err := ctc.versionedClient(ns, v.Name).Get(context.TODO(), created.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -681,7 +681,7 @@ func expectConversionFailureMessage(id, message string) func(t *testing.T, ctc *
clients := ctc.versionedClients(ns) clients := ctc.versionedClients(ns)
var err error var err error
// storage version is v1beta1, so this skips conversion // storage version is v1beta1, so this skips conversion
obj, err := clients["v1beta1"].Create(newConversionMultiVersionFixture(ns, id, "v1beta1"), metav1.CreateOptions{}) obj, err := clients["v1beta1"].Create(context.TODO(), newConversionMultiVersionFixture(ns, id, "v1beta1"), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -689,19 +689,19 @@ func expectConversionFailureMessage(id, message string) func(t *testing.T, ctc *
t.Run(verb, func(t *testing.T) { t.Run(verb, func(t *testing.T) {
switch verb { switch verb {
case "get": case "get":
_, err = clients["v1beta2"].Get(obj.GetName(), metav1.GetOptions{}) _, err = clients["v1beta2"].Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
case "list": case "list":
_, err = clients["v1beta2"].List(metav1.ListOptions{}) _, err = clients["v1beta2"].List(context.TODO(), metav1.ListOptions{})
case "create": case "create":
_, err = clients["v1beta2"].Create(newConversionMultiVersionFixture(ns, id, "v1beta2"), metav1.CreateOptions{}) _, err = clients["v1beta2"].Create(context.TODO(), newConversionMultiVersionFixture(ns, id, "v1beta2"), metav1.CreateOptions{})
case "update": case "update":
_, err = clients["v1beta2"].Update(obj, metav1.UpdateOptions{}) _, err = clients["v1beta2"].Update(context.TODO(), obj, metav1.UpdateOptions{})
case "patch": case "patch":
_, err = clients["v1beta2"].Patch(obj.GetName(), types.MergePatchType, []byte(`{"metadata":{"annotations":{"patch":"true"}}}`), metav1.PatchOptions{}) _, err = clients["v1beta2"].Patch(context.TODO(), obj.GetName(), types.MergePatchType, []byte(`{"metadata":{"annotations":{"patch":"true"}}}`), metav1.PatchOptions{})
case "delete": case "delete":
err = clients["v1beta2"].Delete(obj.GetName(), &metav1.DeleteOptions{}) err = clients["v1beta2"].Delete(context.TODO(), obj.GetName(), metav1.DeleteOptions{})
case "deletecollection": case "deletecollection":
err = clients["v1beta2"].DeleteCollection(&metav1.DeleteOptions{}, metav1.ListOptions{}) err = clients["v1beta2"].DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{})
} }
if err == nil { if err == nil {
@ -716,11 +716,11 @@ func expectConversionFailureMessage(id, message string) func(t *testing.T, ctc *
t.Run(fmt.Sprintf("%s-%s", subresource, verb), func(t *testing.T) { t.Run(fmt.Sprintf("%s-%s", subresource, verb), func(t *testing.T) {
switch verb { switch verb {
case "create": case "create":
_, err = clients["v1beta2"].Create(newConversionMultiVersionFixture(ns, id, "v1beta2"), metav1.CreateOptions{}, subresource) _, err = clients["v1beta2"].Create(context.TODO(), newConversionMultiVersionFixture(ns, id, "v1beta2"), metav1.CreateOptions{}, subresource)
case "update": case "update":
_, err = clients["v1beta2"].Update(obj, metav1.UpdateOptions{}, subresource) _, err = clients["v1beta2"].Update(context.TODO(), obj, metav1.UpdateOptions{}, subresource)
case "patch": case "patch":
_, err = clients["v1beta2"].Patch(obj.GetName(), types.MergePatchType, []byte(`{"metadata":{"annotations":{"patch":"true"}}}`), metav1.PatchOptions{}, subresource) _, err = clients["v1beta2"].Patch(context.TODO(), obj.GetName(), types.MergePatchType, []byte(`{"metadata":{"annotations":{"patch":"true"}}}`), metav1.PatchOptions{}, subresource)
} }
if err == nil { if err == nil {
@ -983,7 +983,7 @@ func (c *conversionTestContext) setAndWaitStorageVersion(t *testing.T, version s
// create probe object. Version should be the default one to avoid webhook calls during test setup. // create probe object. Version should be the default one to avoid webhook calls during test setup.
client := c.versionedClient("probe", "v1beta1") client := c.versionedClient("probe", "v1beta1")
name := fmt.Sprintf("probe-%v", uuid.NewUUID()) name := fmt.Sprintf("probe-%v", uuid.NewUUID())
storageProbe, err := client.Create(newConversionMultiVersionFixture("probe", name, "v1beta1"), metav1.CreateOptions{}) storageProbe, err := client.Create(context.TODO(), newConversionMultiVersionFixture("probe", name, "v1beta1"), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -991,7 +991,7 @@ func (c *conversionTestContext) setAndWaitStorageVersion(t *testing.T, version s
// update object continuously and wait for etcd to have the target storage version. // update object continuously and wait for etcd to have the target storage version.
c.waitForStorageVersion(t, version, c.versionedClient(storageProbe.GetNamespace(), "v1beta1"), storageProbe) c.waitForStorageVersion(t, version, c.versionedClient(storageProbe.GetNamespace(), "v1beta1"), storageProbe)
err = client.Delete(name, &metav1.DeleteOptions{}) err = client.Delete(context.TODO(), name, metav1.DeleteOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -1014,7 +1014,7 @@ func (c *conversionTestContext) setStorageVersion(t *testing.T, version string)
func (c *conversionTestContext) waitForStorageVersion(t *testing.T, version string, versionedClient dynamic.ResourceInterface, obj *unstructured.Unstructured) *unstructured.Unstructured { func (c *conversionTestContext) waitForStorageVersion(t *testing.T, version string, versionedClient dynamic.ResourceInterface, obj *unstructured.Unstructured) *unstructured.Unstructured {
if err := c.etcdObjectReader.WaitForStorageVersion(version, obj.GetNamespace(), obj.GetName(), 30*time.Second, func() { if err := c.etcdObjectReader.WaitForStorageVersion(version, obj.GetNamespace(), obj.GetName(), 30*time.Second, func() {
if _, err := versionedClient.Patch(obj.GetName(), types.MergePatchType, []byte(`{}`), metav1.PatchOptions{}); err != nil { if _, err := versionedClient.Patch(context.TODO(), obj.GetName(), types.MergePatchType, []byte(`{}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("failed to update object: %v", err) t.Fatalf("failed to update object: %v", err)
} }
}); err != nil { }); err != nil {
@ -1047,7 +1047,7 @@ func (c *conversionTestContext) waitForServed(t *testing.T, version string, serv
timeout := 30 * time.Second timeout := 30 * time.Second
waitCh := time.After(timeout) waitCh := time.After(timeout)
for { for {
obj, err := versionedClient.Get(obj.GetName(), metav1.GetOptions{}) obj, err := versionedClient.Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if (err == nil && served) || (errors.IsNotFound(err) && served == false) { if (err == nil && served) || (errors.IsNotFound(err) && served == false) {
return return
} }

View File

@ -265,7 +265,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
} }
unstructured.SetNestedField(foo.Object, "a", "spec", "a") unstructured.SetNestedField(foo.Object, "a", "spec", "a")
unstructured.SetNestedField(foo.Object, "b", "status", "b") unstructured.SetNestedField(foo.Object, "b", "status", "b")
foo, err = fooClient.Create(foo, metav1.CreateOptions{}) foo, err = fooClient.Create(context.TODO(), foo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }
@ -279,7 +279,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
t.Logf("Updating status and expecting 'a' and 'b' to show up.") t.Logf("Updating status and expecting 'a' and 'b' to show up.")
unstructured.SetNestedField(foo.Object, map[string]interface{}{}, "status") unstructured.SetNestedField(foo.Object, map[string]interface{}{}, "status")
if foo, err = fooClient.UpdateStatus(foo, metav1.UpdateOptions{}); err != nil { if foo, err = fooClient.UpdateStatus(context.TODO(), foo, metav1.UpdateOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
mustExist(foo.Object, [][]string{{"spec", "a"}, {"spec", "b"}, {"status", "a"}, {"status", "b"}}) mustExist(foo.Object, [][]string{{"spec", "a"}, {"spec", "b"}, {"status", "a"}, {"status", "b"}})
@ -289,7 +289,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
t.Logf("wait until GET sees 'c' in both status and spec") t.Logf("wait until GET sees 'c' in both status and spec")
if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
obj, err := fooClient.Get(foo.GetName(), metav1.GetOptions{}) obj, err := fooClient.Get(context.TODO(), foo.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -306,7 +306,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
t.Logf("wait until GET sees 'c' in both status and spec of cached get") t.Logf("wait until GET sees 'c' in both status and spec of cached get")
if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
obj, err := fooClient.Get(foo.GetName(), metav1.GetOptions{ResourceVersion: "0"}) obj, err := fooClient.Get(context.TODO(), foo.GetName(), metav1.GetOptions{ResourceVersion: "0"})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -322,7 +322,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
mustExist(foo.Object, [][]string{{"spec", "a"}, {"spec", "b"}, {"spec", "c"}, {"status", "a"}, {"status", "b"}, {"status", "c"}}) mustExist(foo.Object, [][]string{{"spec", "a"}, {"spec", "b"}, {"spec", "c"}, {"status", "a"}, {"status", "b"}, {"status", "c"}})
t.Logf("verify LIST sees 'c' in both status and spec") t.Logf("verify LIST sees 'c' in both status and spec")
foos, err := fooClient.List(metav1.ListOptions{}) foos, err := fooClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -331,7 +331,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
} }
t.Logf("verify LIST from cache sees 'c' in both status and spec") t.Logf("verify LIST from cache sees 'c' in both status and spec")
foos, err = fooClient.List(metav1.ListOptions{ResourceVersion: "0"}) foos, err = fooClient.List(context.TODO(), metav1.ListOptions{ResourceVersion: "0"})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -344,7 +344,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
// The contents of the watch cache are seen by list with rv=0, which is tested by this test. // The contents of the watch cache are seen by list with rv=0, which is tested by this test.
if !watchCache { if !watchCache {
t.Logf("verify WATCH sees 'c' in both status and spec") t.Logf("verify WATCH sees 'c' in both status and spec")
w, err := fooClient.Watch(metav1.ListOptions{ResourceVersion: initialResourceVersion}) w, err := fooClient.Watch(context.TODO(), metav1.ListOptions{ResourceVersion: initialResourceVersion})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -369,7 +369,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
addDefault("v1beta1", "c", "C") addDefault("v1beta1", "c", "C")
removeDefault("v1beta2", "c") removeDefault("v1beta2", "c")
if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
obj, err := fooClient.Get(foo.GetName(), metav1.GetOptions{}) obj, err := fooClient.Get(context.TODO(), foo.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -383,7 +383,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
mustNotExist(foo.Object, [][]string{{"spec", "c"}, {"status", "c"}}) mustNotExist(foo.Object, [][]string{{"spec", "c"}, {"status", "c"}})
t.Logf("Updating status, expecting 'c' to be set in status only") t.Logf("Updating status, expecting 'c' to be set in status only")
if foo, err = fooClient.UpdateStatus(foo, metav1.UpdateOptions{}); err != nil { if foo, err = fooClient.UpdateStatus(context.TODO(), foo, metav1.UpdateOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
mustExist(foo.Object, [][]string{{"spec", "a"}, {"spec", "b"}, {"status", "a"}, {"status", "b"}, {"status", "c"}}) mustExist(foo.Object, [][]string{{"spec", "a"}, {"spec", "b"}, {"status", "a"}, {"status", "b"}, {"status", "c"}})
@ -394,7 +394,7 @@ func testDefaulting(t *testing.T, watchCache bool) {
removeDefault("v1beta1", "b") removeDefault("v1beta1", "b")
removeDefault("v1beta1", "c") removeDefault("v1beta1", "c")
if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { if err := wait.PollImmediate(100*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
obj, err := fooClient.Get(foo.GetName(), metav1.GetOptions{}) obj, err := fooClient.Get(context.TODO(), foo.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -623,7 +623,7 @@ func TestCustomResourceDefaultingOfMetaFields(t *testing.T) {
} }
} }
} }
returnedFoo, err = fooClient.Create(returnedFoo, metav1.CreateOptions{}) returnedFoo, err = fooClient.Create(context.TODO(), returnedFoo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }

View File

@ -50,7 +50,7 @@ func TestFinalization(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
uid := createdNoxuInstance.GetUID() uid := createdNoxuInstance.GetUID()
err = noxuResourceClient.Delete(name, metav1.DeleteOptions{ err = noxuResourceClient.Delete(context.TODO(), name, metav1.DeleteOptions{
Preconditions: &metav1.Preconditions{ Preconditions: &metav1.Preconditions{
UID: &uid, UID: &uid,
}, },
@ -59,13 +59,13 @@ func TestFinalization(t *testing.T) {
// Deleting something with a finalizer sets deletion timestamp to a not-nil value but does not // Deleting something with a finalizer sets deletion timestamp to a not-nil value but does not
// remove the object from the API server. Here we read it to confirm this. // remove the object from the API server. Here we read it to confirm this.
gottenNoxuInstance, err := noxuResourceClient.Get(name, metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient.Get(context.TODO(), name, metav1.GetOptions{})
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, gottenNoxuInstance.GetDeletionTimestamp()) require.NotNil(t, gottenNoxuInstance.GetDeletionTimestamp())
// Trying to delete it again to confirm it will not remove the object because finalizer is still there. // Trying to delete it again to confirm it will not remove the object because finalizer is still there.
err = noxuResourceClient.Delete(name, metav1.DeleteOptions{ err = noxuResourceClient.Delete(context.TODO(), name, metav1.DeleteOptions{
Preconditions: &metav1.Preconditions{ Preconditions: &metav1.Preconditions{
UID: &uid, UID: &uid,
}, },
@ -77,19 +77,19 @@ func TestFinalization(t *testing.T) {
// object will be deleted as part of the finalizer update. // object will be deleted as part of the finalizer update.
for { for {
gottenNoxuInstance.SetFinalizers(nil) gottenNoxuInstance.SetFinalizers(nil)
_, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) _, err = noxuResourceClient.Update(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err == nil { if err == nil {
break break
} }
if !errors.IsConflict(err) { if !errors.IsConflict(err) {
require.NoError(t, err) // Fail on unexpected error require.NoError(t, err) // Fail on unexpected error
} }
gottenNoxuInstance, err = noxuResourceClient.Get(name, metav1.GetOptions{}) gottenNoxuInstance, err = noxuResourceClient.Get(context.TODO(), name, metav1.GetOptions{})
require.NoError(t, err) require.NoError(t, err)
} }
// Check that the object is actually gone. // Check that the object is actually gone.
_, err = noxuResourceClient.Get(name, metav1.GetOptions{}) _, err = noxuResourceClient.Get(context.TODO(), name, metav1.GetOptions{})
require.Error(t, err) require.Error(t, err)
require.True(t, errors.IsNotFound(err), "%#v", err) require.True(t, errors.IsNotFound(err), "%#v", err)
} }
@ -116,7 +116,7 @@ func TestFinalizationAndDeletion(t *testing.T) {
// Delete a CR. Because there's a finalizer, it will not get deleted now. // Delete a CR. Because there's a finalizer, it will not get deleted now.
uid := createdNoxuInstance.GetUID() uid := createdNoxuInstance.GetUID()
err = noxuResourceClient.Delete(name, metav1.DeleteOptions{ err = noxuResourceClient.Delete(context.TODO(), name, metav1.DeleteOptions{
Preconditions: &metav1.Preconditions{ Preconditions: &metav1.Preconditions{
UID: &uid, UID: &uid,
}, },
@ -124,7 +124,7 @@ func TestFinalizationAndDeletion(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
// Check is the CR scheduled for deletion. // Check is the CR scheduled for deletion.
gottenNoxuInstance, err := noxuResourceClient.Get(name, metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient.Get(context.TODO(), name, metav1.GetOptions{})
require.NoError(t, err) require.NoError(t, err)
require.NotNil(t, gottenNoxuInstance.GetDeletionTimestamp()) require.NotNil(t, gottenNoxuInstance.GetDeletionTimestamp())
@ -132,26 +132,26 @@ func TestFinalizationAndDeletion(t *testing.T) {
fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient) fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient)
// Check is CR still there after the CRD deletion. // Check is CR still there after the CRD deletion.
gottenNoxuInstance, err = noxuResourceClient.Get(name, metav1.GetOptions{}) gottenNoxuInstance, err = noxuResourceClient.Get(context.TODO(), name, metav1.GetOptions{})
require.NoError(t, err) require.NoError(t, err)
// Update the CR to remove the finalizer. // Update the CR to remove the finalizer.
for { for {
gottenNoxuInstance.SetFinalizers(nil) gottenNoxuInstance.SetFinalizers(nil)
_, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) _, err = noxuResourceClient.Update(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err == nil { if err == nil {
break break
} }
if !errors.IsConflict(err) { if !errors.IsConflict(err) {
require.NoError(t, err) // Fail on unexpected error require.NoError(t, err) // Fail on unexpected error
} }
gottenNoxuInstance, err = noxuResourceClient.Get(name, metav1.GetOptions{}) gottenNoxuInstance, err = noxuResourceClient.Get(context.TODO(), name, metav1.GetOptions{})
require.NoError(t, err) require.NoError(t, err)
} }
// Verify the CR is gone. // Verify the CR is gone.
// It should return the NonFound error. // It should return the NonFound error.
_, err = noxuResourceClient.Get(name, metav1.GetOptions{}) _, err = noxuResourceClient.Get(context.TODO(), name, metav1.GetOptions{})
if !errors.IsNotFound(err) { if !errors.IsNotFound(err) {
t.Fatalf("unable to delete cr: %v", err) t.Fatalf("unable to delete cr: %v", err)
} }

View File

@ -462,11 +462,11 @@ func isWatchCachePrimed(crd *apiextensionsv1.CustomResourceDefinition, dynamicCl
"spec": map[string]interface{}{}, "spec": map[string]interface{}{},
}, },
} }
createdInstance, err := resourceClient.Create(instance, metav1.CreateOptions{}) createdInstance, err := resourceClient.Create(context.TODO(), instance, metav1.CreateOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
err = resourceClient.Delete(createdInstance.GetName(), metav1.DeleteOptions{}) err = resourceClient.Delete(context.TODO(), createdInstance.GetName(), metav1.DeleteOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -480,6 +480,7 @@ func isWatchCachePrimed(crd *apiextensionsv1.CustomResourceDefinition, dynamicCl
// delivered to any future watch with resourceVersion=0. // delivered to any future watch with resourceVersion=0.
for _, v := range versions { for _, v := range versions {
noxuWatch, err := resourceClientForVersion(crd, dynamicClientSet, ns, v).Watch( noxuWatch, err := resourceClientForVersion(crd, dynamicClientSet, ns, v).Watch(
context.TODO(),
metav1.ListOptions{ResourceVersion: createdInstance.GetResourceVersion()}) metav1.ListOptions{ResourceVersion: createdInstance.GetResourceVersion()})
if err != nil { if err != nil {
return false, err return false, err

View File

@ -39,7 +39,7 @@ func instantiateCustomResource(t *testing.T, instanceToCreate *unstructured.Unst
} }
func instantiateVersionedCustomResource(t *testing.T, instanceToCreate *unstructured.Unstructured, client dynamic.ResourceInterface, definition *apiextensionsv1beta1.CustomResourceDefinition, version string) (*unstructured.Unstructured, error) { func instantiateVersionedCustomResource(t *testing.T, instanceToCreate *unstructured.Unstructured, client dynamic.ResourceInterface, definition *apiextensionsv1beta1.CustomResourceDefinition, version string) (*unstructured.Unstructured, error) {
createdInstance, err := client.Create(instanceToCreate, metav1.CreateOptions{}) createdInstance, err := client.Create(context.TODO(), instanceToCreate, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Logf("%#v", createdInstance) t.Logf("%#v", createdInstance)
return nil, err return nil, err

View File

@ -143,7 +143,7 @@ func TestListTypes(t *testing.T) {
if err := yaml.Unmarshal([]byte(listTypeResourceInstance), &invalidInstance.Object); err != nil { if err := yaml.Unmarshal([]byte(listTypeResourceInstance), &invalidInstance.Object); err != nil {
t.Fatal(err) t.Fatal(err)
} }
_, createErr := fooClient.Create(invalidInstance, metav1.CreateOptions{}) _, createErr := fooClient.Create(context.TODO(), invalidInstance, metav1.CreateOptions{})
if createErr == nil { if createErr == nil {
t.Fatalf("Expected validation errors, but did not get one") t.Fatalf("Expected validation errors, but did not get one")
} }
@ -170,7 +170,7 @@ func TestListTypes(t *testing.T) {
for _, invalid := range invalidListTypeFields { for _, invalid := range invalidListTypeFields {
unstructured.RemoveNestedField(validInstance.Object, invalid) unstructured.RemoveNestedField(validInstance.Object, invalid)
} }
validInstance, err = fooClient.Create(validInstance, metav1.CreateOptions{}) validInstance, err = fooClient.Create(context.TODO(), validInstance, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -183,7 +183,7 @@ func TestListTypes(t *testing.T) {
l = append(l, l[0]) l = append(l, l[0])
modifiedInstance.Object[valid] = l modifiedInstance.Object[valid] = l
} }
_, err = fooClient.Update(modifiedInstance, metav1.UpdateOptions{}) _, err = fooClient.Update(context.TODO(), modifiedInstance, metav1.UpdateOptions{})
if err == nil { if err == nil {
t.Fatalf("Expected validation errors, but did not get one") t.Fatalf("Expected validation errors, but did not get one")
} }
@ -211,7 +211,7 @@ func TestListTypes(t *testing.T) {
t.Logf("Updating again with invalid values, eventually successfully due to ratcheting logic") t.Logf("Updating again with invalid values, eventually successfully due to ratcheting logic")
err = wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) { err = wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) {
_, err = fooClient.Update(modifiedInstance, metav1.UpdateOptions{}) _, err = fooClient.Update(context.TODO(), modifiedInstance, metav1.UpdateOptions{})
if err == nil { if err == nil {
return true, err return true, err
} }

View File

@ -17,6 +17,7 @@ limitations under the License.
package integration package integration
import ( import (
"context"
"path" "path"
"reflect" "reflect"
"strings" "strings"
@ -181,7 +182,7 @@ func TestInvalidObjectMetaInStorage(t *testing.T) {
t.Logf("Checking that invalid objects can be deleted") t.Logf("Checking that invalid objects can be deleted")
noxuResourceClient := newNamespacedCustomResourceClient("default", dynamicClient, noxuDefinition) noxuResourceClient := newNamespacedCustomResourceClient("default", dynamicClient, noxuDefinition)
if err := noxuResourceClient.Delete("foo", metav1.DeleteOptions{}); err != nil { if err := noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{}); err != nil {
t.Fatalf("Unexpected delete error %v", err) t.Fatalf("Unexpected delete error %v", err)
} }
if _, err := etcdclient.Put(ctx, key, string(val)); err != nil { if _, err := etcdclient.Put(ctx, key, string(val)); err != nil {
@ -189,7 +190,7 @@ func TestInvalidObjectMetaInStorage(t *testing.T) {
} }
t.Logf("Checking that ObjectMeta is pruned from unknown fields") t.Logf("Checking that ObjectMeta is pruned from unknown fields")
obj, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) obj, err := noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("Unexpected error: %v", err) t.Fatalf("Unexpected error: %v", err)
} }
@ -249,7 +250,7 @@ func TestInvalidObjectMetaInStorage(t *testing.T) {
t.Logf("Trying to fail on updating with invalid labels") t.Logf("Trying to fail on updating with invalid labels")
unstructured.SetNestedField(obj.Object, "changed", "metadata", "labels", "something") unstructured.SetNestedField(obj.Object, "changed", "metadata", "labels", "something")
if got, err := noxuResourceClient.Update(obj, metav1.UpdateOptions{}); err == nil { if got, err := noxuResourceClient.Update(context.TODO(), obj, metav1.UpdateOptions{}); err == nil {
objJSON, _ := json.Marshal(obj.Object) objJSON, _ := json.Marshal(obj.Object)
gotJSON, _ := json.Marshal(got.Object) gotJSON, _ := json.Marshal(got.Object)
t.Fatalf("Expected update error, but didn't get one\nin: %s\nresponse: %v", string(objJSON), string(gotJSON)) t.Fatalf("Expected update error, but didn't get one\nin: %s\nresponse: %v", string(objJSON), string(gotJSON))
@ -257,7 +258,7 @@ func TestInvalidObjectMetaInStorage(t *testing.T) {
t.Logf("Trying to fail on updating with invalid embedded label") t.Logf("Trying to fail on updating with invalid embedded label")
unstructured.SetNestedField(obj.Object, "fixed", "metadata", "labels", "invalid") unstructured.SetNestedField(obj.Object, "fixed", "metadata", "labels", "invalid")
if got, err := noxuResourceClient.Update(obj, metav1.UpdateOptions{}); err == nil { if got, err := noxuResourceClient.Update(context.TODO(), obj, metav1.UpdateOptions{}); err == nil {
objJSON, _ := json.Marshal(obj.Object) objJSON, _ := json.Marshal(obj.Object)
gotJSON, _ := json.Marshal(got.Object) gotJSON, _ := json.Marshal(got.Object)
t.Fatalf("Expected update error, but didn't get one\nin: %s\nresponse: %v", string(objJSON), string(gotJSON)) t.Fatalf("Expected update error, but didn't get one\nin: %s\nresponse: %v", string(objJSON), string(gotJSON))
@ -265,13 +266,13 @@ func TestInvalidObjectMetaInStorage(t *testing.T) {
t.Logf("Fixed all labels and update should work") t.Logf("Fixed all labels and update should work")
unstructured.SetNestedField(obj.Object, "fixed", "embedded", "metadata", "labels", "invalid") unstructured.SetNestedField(obj.Object, "fixed", "embedded", "metadata", "labels", "invalid")
if _, err := noxuResourceClient.Update(obj, metav1.UpdateOptions{}); err != nil { if _, err := noxuResourceClient.Update(context.TODO(), obj, metav1.UpdateOptions{}); err != nil {
t.Errorf("Unexpected update error with fixed labels: %v", err) t.Errorf("Unexpected update error with fixed labels: %v", err)
} }
t.Logf("Trying to fail on updating with wrongly-typed embedded label") t.Logf("Trying to fail on updating with wrongly-typed embedded label")
unstructured.SetNestedField(obj.Object, int64(42), "embedded", "metadata", "labels", "invalid") unstructured.SetNestedField(obj.Object, int64(42), "embedded", "metadata", "labels", "invalid")
if got, err := noxuResourceClient.Update(obj, metav1.UpdateOptions{}); err == nil { if got, err := noxuResourceClient.Update(context.TODO(), obj, metav1.UpdateOptions{}); err == nil {
objJSON, _ := json.Marshal(obj.Object) objJSON, _ := json.Marshal(obj.Object)
gotJSON, _ := json.Marshal(got.Object) gotJSON, _ := json.Marshal(got.Object)
t.Fatalf("Expected update error, but didn't get one\nin: %s\nresponse: %v", string(objJSON), string(gotJSON)) t.Fatalf("Expected update error, but didn't get one\nin: %s\nresponse: %v", string(objJSON), string(gotJSON))
@ -452,7 +453,7 @@ func TestEmbeddedResources(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
unstructured.SetNestedField(foo.Object, "foo", "metadata", "name") unstructured.SetNestedField(foo.Object, "foo", "metadata", "name")
foo, err = fooClient.Create(foo, metav1.CreateOptions{}) foo, err = fooClient.Create(context.TODO(), foo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }
@ -474,7 +475,7 @@ func TestEmbeddedResources(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
unstructured.SetNestedField(wronglyTyped.Object, "invalid", "metadata", "name") unstructured.SetNestedField(wronglyTyped.Object, "invalid", "metadata", "name")
_, err = fooClient.Create(wronglyTyped, metav1.CreateOptions{}) _, err = fooClient.Create(context.TODO(), wronglyTyped, metav1.CreateOptions{})
if err == nil { if err == nil {
t.Fatal("Expected creation to fail, but didn't") t.Fatal("Expected creation to fail, but didn't")
} }
@ -495,7 +496,7 @@ func TestEmbeddedResources(t *testing.T) {
} }
unstructured.SetNestedField(invalid.Object, "invalid", "metadata", "name") unstructured.SetNestedField(invalid.Object, "invalid", "metadata", "name")
unstructured.SetNestedField(invalid.Object, "x y", "metadata", "labels", "foo") unstructured.SetNestedField(invalid.Object, "x y", "metadata", "labels", "foo")
_, err = fooClient.Create(invalid, metav1.CreateOptions{}) _, err = fooClient.Create(context.TODO(), invalid, metav1.CreateOptions{})
if err == nil { if err == nil {
t.Fatal("Expected creation to fail, but didn't") t.Fatal("Expected creation to fail, but didn't")
} }
@ -522,7 +523,7 @@ func TestEmbeddedResources(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
unstructured.SetNestedField(valid.Object, "valid", "metadata", "name") unstructured.SetNestedField(valid.Object, "valid", "metadata", "name")
valid, err = fooClient.Create(valid, metav1.CreateOptions{}) valid, err = fooClient.Create(context.TODO(), valid, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }
@ -533,7 +534,7 @@ func TestEmbeddedResources(t *testing.T) {
valid.Object[k] = v valid.Object[k] = v
} }
unstructured.SetNestedField(valid.Object, "x y", "metadata", "labels", "foo") unstructured.SetNestedField(valid.Object, "x y", "metadata", "labels", "foo")
if _, err = fooClient.Update(valid, metav1.UpdateOptions{}); err == nil { if _, err = fooClient.Update(context.TODO(), valid, metav1.UpdateOptions{}); err == nil {
t.Fatal("Expected update error, but got none") t.Fatal("Expected update error, but got none")
} }
t.Logf("Update failed with: %v", err) t.Logf("Update failed with: %v", err)

View File

@ -17,6 +17,7 @@ limitations under the License.
package integration package integration
import ( import (
"context"
"path" "path"
"reflect" "reflect"
"strings" "strings"
@ -209,7 +210,7 @@ func TestPruningCreate(t *testing.T) {
unstructured.SetNestedField(foo.Object, float64(42.0), "beta") unstructured.SetNestedField(foo.Object, float64(42.0), "beta")
unstructured.SetNestedField(foo.Object, "bar", "metadata", "unspecified") unstructured.SetNestedField(foo.Object, "bar", "metadata", "unspecified")
unstructured.SetNestedField(foo.Object, "bar", "metadata", "labels", "foo") unstructured.SetNestedField(foo.Object, "bar", "metadata", "labels", "foo")
foo, err = fooClient.Create(foo, metav1.CreateOptions{}) foo, err = fooClient.Create(context.TODO(), foo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }
@ -256,7 +257,7 @@ func TestPruningStatus(t *testing.T) {
if err := yaml.Unmarshal([]byte(pruningFooInstance), &foo.Object); err != nil { if err := yaml.Unmarshal([]byte(pruningFooInstance), &foo.Object); err != nil {
t.Fatal(err) t.Fatal(err)
} }
foo, err = fooClient.Create(foo, metav1.CreateOptions{}) foo, err = fooClient.Create(context.TODO(), foo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }
@ -267,7 +268,7 @@ func TestPruningStatus(t *testing.T) {
unstructured.SetNestedField(foo.Object, float64(42.0), "status", "beta") unstructured.SetNestedField(foo.Object, float64(42.0), "status", "beta")
unstructured.SetNestedField(foo.Object, "bar", "metadata", "unspecified") unstructured.SetNestedField(foo.Object, "bar", "metadata", "unspecified")
foo, err = fooClient.UpdateStatus(foo, metav1.UpdateOptions{}) foo, err = fooClient.UpdateStatus(context.TODO(), foo, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to update status: %v", err) t.Fatalf("Unable to update status: %v", err)
} }
@ -368,7 +369,7 @@ func TestPruningFromStorage(t *testing.T) {
t.Logf("Checking that CustomResource is pruned from unknown fields") t.Logf("Checking that CustomResource is pruned from unknown fields")
fooClient := dynamicClient.Resource(schema.GroupVersionResource{crd.Spec.Group, crd.Spec.Version, crd.Spec.Names.Plural}) fooClient := dynamicClient.Resource(schema.GroupVersionResource{crd.Spec.Group, crd.Spec.Version, crd.Spec.Names.Plural})
foo, err := fooClient.Get("foo", metav1.GetOptions{}) foo, err := fooClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -413,7 +414,7 @@ func TestPruningPatch(t *testing.T) {
if err := yaml.Unmarshal([]byte(pruningFooInstance), &foo.Object); err != nil { if err := yaml.Unmarshal([]byte(pruningFooInstance), &foo.Object); err != nil {
t.Fatal(err) t.Fatal(err)
} }
foo, err = fooClient.Create(foo, metav1.CreateOptions{}) foo, err = fooClient.Create(context.TODO(), foo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }
@ -421,7 +422,7 @@ func TestPruningPatch(t *testing.T) {
// a patch with a change // a patch with a change
patch := []byte(`{"alpha": "abc", "beta": 42.0, "unspecified": "bar", "metadata": {"unspecified": "bar", "labels":{"foo":"bar"}}}`) patch := []byte(`{"alpha": "abc", "beta": 42.0, "unspecified": "bar", "metadata": {"unspecified": "bar", "labels":{"foo":"bar"}}}`)
if foo, err = fooClient.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}); err != nil { if foo, err = fooClient.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{}); err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -484,7 +485,7 @@ func TestPruningCreatePreservingUnknownFields(t *testing.T) {
"preserving": map[string]interface{}{"unspecified": "bar"}, "preserving": map[string]interface{}{"unspecified": "bar"},
}, "preserving") }, "preserving")
foo, err = fooClient.Create(foo, metav1.CreateOptions{}) foo, err = fooClient.Create(context.TODO(), foo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }
@ -551,7 +552,7 @@ func TestPruningEmbeddedResources(t *testing.T) {
if err := yaml.Unmarshal([]byte(fooSchemaEmbeddedResourceInstance), &foo.Object); err != nil { if err := yaml.Unmarshal([]byte(fooSchemaEmbeddedResourceInstance), &foo.Object); err != nil {
t.Fatal(err) t.Fatal(err)
} }
foo, err = fooClient.Create(foo, metav1.CreateOptions{}) foo, err = fooClient.Create(context.TODO(), foo, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("Unable to create CR: %v", err) t.Fatalf("Unable to create CR: %v", err)
} }

View File

@ -53,7 +53,7 @@ func TestMultipleResourceInstances(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
noxuList, err := noxuNamespacedResourceClient.List(metav1.ListOptions{}) noxuList, err := noxuNamespacedResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -63,7 +63,7 @@ func TestMultipleResourceInstances(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
noxuNamespacedWatch, err := noxuNamespacedResourceClient.Watch(metav1.ListOptions{ResourceVersion: noxuListListMeta.GetResourceVersion()}) noxuNamespacedWatch, err := noxuNamespacedResourceClient.Watch(context.TODO(), metav1.ListOptions{ResourceVersion: noxuListListMeta.GetResourceVersion()})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -107,7 +107,7 @@ func TestMultipleResourceInstances(t *testing.T) {
} }
for key, val := range instances { for key, val := range instances {
gottenNoxuInstace, err := noxuNamespacedResourceClient.Get(key, metav1.GetOptions{}) gottenNoxuInstace, err := noxuNamespacedResourceClient.Get(context.TODO(), key, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -115,7 +115,7 @@ func TestMultipleResourceInstances(t *testing.T) {
t.Errorf("expected %v, got %v", e, a) t.Errorf("expected %v, got %v", e, a)
} }
} }
listWithItem, err := noxuNamespacedResourceClient.List(metav1.ListOptions{}) listWithItem, err := noxuNamespacedResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -128,11 +128,11 @@ func TestMultipleResourceInstances(t *testing.T) {
} }
} }
for key := range instances { for key := range instances {
if err := noxuNamespacedResourceClient.Delete(key, metav1.DeleteOptions{}); err != nil { if err := noxuNamespacedResourceClient.Delete(context.TODO(), key, metav1.DeleteOptions{}); err != nil {
t.Fatalf("unable to delete %s:%v", key, err) t.Fatalf("unable to delete %s:%v", key, err)
} }
} }
listWithoutItem, err := noxuNamespacedResourceClient.List(metav1.ListOptions{}) listWithoutItem, err := noxuNamespacedResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -183,7 +183,7 @@ func TestMultipleRegistration(t *testing.T) {
t.Fatalf("unable to create noxu Instance:%v", err) t.Fatalf("unable to create noxu Instance:%v", err)
} }
gottenNoxuInstance, err := noxuNamespacedResourceClient.Get(sameInstanceName, metav1.GetOptions{}) gottenNoxuInstance, err := noxuNamespacedResourceClient.Get(context.TODO(), sameInstanceName, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -201,7 +201,7 @@ func TestMultipleRegistration(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unable to create noxu Instance:%v", err) t.Fatalf("unable to create noxu Instance:%v", err)
} }
gottenCurletInstance, err := curletNamespacedResourceClient.Get(sameInstanceName, metav1.GetOptions{}) gottenCurletInstance, err := curletNamespacedResourceClient.Get(context.TODO(), sameInstanceName, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -210,7 +210,7 @@ func TestMultipleRegistration(t *testing.T) {
} }
// now re-GET noxu // now re-GET noxu
gottenNoxuInstance2, err := noxuNamespacedResourceClient.Get(sameInstanceName, metav1.GetOptions{}) gottenNoxuInstance2, err := noxuNamespacedResourceClient.Get(context.TODO(), sameInstanceName, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -243,10 +243,10 @@ func TestDeRegistrationAndReRegistration(t *testing.T) {
if _, err := apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), noxuDefinition.Name, metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) { if _, err := apiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), noxuDefinition.Name, metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) {
t.Fatalf("expected a NotFound error, got:%v", err) t.Fatalf("expected a NotFound error, got:%v", err)
} }
if _, err = noxuNamespacedResourceClient.List(metav1.ListOptions{}); err == nil || !errors.IsNotFound(err) { if _, err = noxuNamespacedResourceClient.List(context.TODO(), metav1.ListOptions{}); err == nil || !errors.IsNotFound(err) {
t.Fatalf("expected a NotFound error, got:%v", err) t.Fatalf("expected a NotFound error, got:%v", err)
} }
if _, err = noxuNamespacedResourceClient.Get("foo", metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) { if _, err = noxuNamespacedResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) {
t.Fatalf("expected a NotFound error, got:%v", err) t.Fatalf("expected a NotFound error, got:%v", err)
} }
}() }()
@ -260,11 +260,11 @@ func TestDeRegistrationAndReRegistration(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition)
initialList, err := noxuNamespacedResourceClient.List(metav1.ListOptions{}) initialList, err := noxuNamespacedResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if _, err = noxuNamespacedResourceClient.Get(sameInstanceName, metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) { if _, err = noxuNamespacedResourceClient.Get(context.TODO(), sameInstanceName, metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) {
t.Fatalf("expected a NotFound error, got:%v", err) t.Fatalf("expected a NotFound error, got:%v", err)
} }
if e, a := 0, len(initialList.Items); e != a { if e, a := 0, len(initialList.Items); e != a {
@ -274,14 +274,14 @@ func TestDeRegistrationAndReRegistration(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
gottenNoxuInstance, err := noxuNamespacedResourceClient.Get(sameInstanceName, metav1.GetOptions{}) gottenNoxuInstance, err := noxuNamespacedResourceClient.Get(context.TODO(), sameInstanceName, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if e, a := createdNoxuInstance, gottenNoxuInstance; !reflect.DeepEqual(e, a) { if e, a := createdNoxuInstance, gottenNoxuInstance; !reflect.DeepEqual(e, a) {
t.Fatalf("expected %v, got %v", e, a) t.Fatalf("expected %v, got %v", e, a)
} }
listWithItem, err := noxuNamespacedResourceClient.List(metav1.ListOptions{}) listWithItem, err := noxuNamespacedResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -292,13 +292,13 @@ func TestDeRegistrationAndReRegistration(t *testing.T) {
t.Fatalf("expected %v, got %v", e, a) t.Fatalf("expected %v, got %v", e, a)
} }
if err := noxuNamespacedResourceClient.Delete(sameInstanceName, metav1.DeleteOptions{}); err != nil { if err := noxuNamespacedResourceClient.Delete(context.TODO(), sameInstanceName, metav1.DeleteOptions{}); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if _, err = noxuNamespacedResourceClient.Get(sameInstanceName, metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) { if _, err = noxuNamespacedResourceClient.Get(context.TODO(), sameInstanceName, metav1.GetOptions{}); err == nil || !errors.IsNotFound(err) {
t.Fatalf("expected a NotFound error, got:%v", err) t.Fatalf("expected a NotFound error, got:%v", err)
} }
listWithoutItem, err := noxuNamespacedResourceClient.List(metav1.ListOptions{}) listWithoutItem, err := noxuNamespacedResourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -17,6 +17,7 @@ limitations under the License.
package integration package integration
import ( import (
"context"
"strings" "strings"
"testing" "testing"
@ -89,68 +90,68 @@ func TestHandlerScope(t *testing.T) {
}, },
} }
_, err := otherScopeClient.Create(cr, metav1.CreateOptions{}) _, err := otherScopeClient.Create(context.TODO(), cr, metav1.CreateOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Create(cr, metav1.CreateOptions{}, "status") _, err = otherScopeClient.Create(context.TODO(), cr, metav1.CreateOptions{}, "status")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Create(cr, metav1.CreateOptions{}, "scale") _, err = otherScopeClient.Create(context.TODO(), cr, metav1.CreateOptions{}, "scale")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = client.Create(cr, metav1.CreateOptions{}) _, err = client.Create(context.TODO(), cr, metav1.CreateOptions{})
assert.NoError(t, err) assert.NoError(t, err)
_, err = otherScopeClient.Get(name, metav1.GetOptions{}) _, err = otherScopeClient.Get(context.TODO(), name, metav1.GetOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Get(name, metav1.GetOptions{}, "status") _, err = otherScopeClient.Get(context.TODO(), name, metav1.GetOptions{}, "status")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Get(name, metav1.GetOptions{}, "scale") _, err = otherScopeClient.Get(context.TODO(), name, metav1.GetOptions{}, "scale")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Update(cr, metav1.UpdateOptions{}) _, err = otherScopeClient.Update(context.TODO(), cr, metav1.UpdateOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Update(cr, metav1.UpdateOptions{}, "status") _, err = otherScopeClient.Update(context.TODO(), cr, metav1.UpdateOptions{}, "status")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Update(cr, metav1.UpdateOptions{}, "scale") _, err = otherScopeClient.Update(context.TODO(), cr, metav1.UpdateOptions{}, "scale")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Patch(name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}) _, err = otherScopeClient.Patch(context.TODO(), name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Patch(name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}, "status") _, err = otherScopeClient.Patch(context.TODO(), name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}, "status")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Patch(name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}, "scale") _, err = otherScopeClient.Patch(context.TODO(), name, types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}, "scale")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
err = otherScopeClient.Delete(name, metav1.DeleteOptions{}) err = otherScopeClient.Delete(context.TODO(), name, metav1.DeleteOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
err = otherScopeClient.Delete(name, metav1.DeleteOptions{}, "status") err = otherScopeClient.Delete(context.TODO(), name, metav1.DeleteOptions{}, "status")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
err = otherScopeClient.Delete(name, metav1.DeleteOptions{}, "scale") err = otherScopeClient.Delete(context.TODO(), name, metav1.DeleteOptions{}, "scale")
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
err = otherScopeClient.DeleteCollection(metav1.DeleteOptions{}, metav1.ListOptions{}) err = otherScopeClient.DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
if scope == apiextensionsv1beta1.ClusterScoped { if scope == apiextensionsv1beta1.ClusterScoped {
_, err = otherScopeClient.List(metav1.ListOptions{}) _, err = otherScopeClient.List(context.TODO(), metav1.ListOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
_, err = otherScopeClient.Watch(metav1.ListOptions{}) _, err = otherScopeClient.Watch(context.TODO(), metav1.ListOptions{})
assert.True(t, apierrors.IsNotFound(err)) assert.True(t, apierrors.IsNotFound(err))
} else { } else {
_, err = otherScopeClient.List(metav1.ListOptions{}) _, err = otherScopeClient.List(context.TODO(), metav1.ListOptions{})
assert.NoError(t, err) assert.NoError(t, err)
w, err := otherScopeClient.Watch(metav1.ListOptions{}) w, err := otherScopeClient.Watch(context.TODO(), metav1.ListOptions{})
assert.NoError(t, err) assert.NoError(t, err)
if w != nil { if w != nil {
w.Stop() w.Stop()

View File

@ -17,6 +17,7 @@ limitations under the License.
package integration package integration
import ( import (
"context"
"fmt" "fmt"
"math" "math"
"reflect" "reflect"
@ -166,7 +167,7 @@ func TestStatusSubresource(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unable to create noxu instance: %v", err) t.Fatalf("unable to create noxu instance: %v", err)
} }
gottenNoxuInstance, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -189,7 +190,7 @@ func TestStatusSubresource(t *testing.T) {
// UpdateStatus should not update spec. // UpdateStatus should not update spec.
// Check that .spec.num = 10 and .status.num = 20 // Check that .spec.num = 10 and .status.num = 20
updatedStatusInstance, err := noxuResourceClient.UpdateStatus(gottenNoxuInstance, metav1.UpdateOptions{}) updatedStatusInstance, err := noxuResourceClient.UpdateStatus(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to update status: %v", err) t.Fatalf("unable to update status: %v", err)
} }
@ -210,7 +211,7 @@ func TestStatusSubresource(t *testing.T) {
t.Fatalf(".status.num: expected: %v, got: %v", int64(20), statusNum) t.Fatalf(".status.num: expected: %v, got: %v", int64(20), statusNum)
} }
gottenNoxuInstance, err = noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err = noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -229,7 +230,7 @@ func TestStatusSubresource(t *testing.T) {
// Update should not update status. // Update should not update status.
// Check that .spec.num = 40 and .status.num = 20 // Check that .spec.num = 40 and .status.num = 20
updatedInstance, err := noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) updatedInstance, err := noxuResourceClient.Update(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to update instance: %v", err) t.Fatalf("unable to update instance: %v", err)
} }
@ -249,7 +250,7 @@ func TestStatusSubresource(t *testing.T) {
if statusNum != int64(20) { if statusNum != int64(20) {
t.Fatalf(".status.num: expected: %v, got: %v", int64(20), statusNum) t.Fatalf(".status.num: expected: %v, got: %v", int64(20), statusNum)
} }
noxuResourceClient.Delete("foo", mmetav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
} }
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)
@ -314,7 +315,7 @@ func TestScaleSubresource(t *testing.T) {
} }
// set .status.labelSelector = bar // set .status.labelSelector = bar
gottenNoxuInstance, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -322,7 +323,7 @@ func TestScaleSubresource(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
_, err = noxuResourceClient.UpdateStatus(gottenNoxuInstance, metav1.UpdateOptions{}) _, err = noxuResourceClient.UpdateStatus(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to update status: %v", err) t.Fatalf("unable to update status: %v", err)
} }
@ -361,7 +362,7 @@ func TestScaleSubresource(t *testing.T) {
} }
// check that .spec.replicas = 5, but status is not updated // check that .spec.replicas = 5, but status is not updated
updatedNoxuInstance, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) updatedNoxuInstance, err := noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -382,7 +383,7 @@ func TestScaleSubresource(t *testing.T) {
// validate maximum value // validate maximum value
// set .spec.replicas = math.MaxInt64 // set .spec.replicas = math.MaxInt64
gottenNoxuInstance, err = noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err = noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -390,11 +391,11 @@ func TestScaleSubresource(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
_, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) _, err = noxuResourceClient.Update(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err == nil { if err == nil {
t.Fatalf("unexpected non-error: .spec.replicas should be less than 2147483647") t.Fatalf("unexpected non-error: .spec.replicas should be less than 2147483647")
} }
noxuResourceClient.Delete("foo", mmetav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -526,7 +527,7 @@ func TestValidateOnlyStatus(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error setting .spec.num: %v", err) t.Fatalf("unexpected error setting .spec.num: %v", err)
} }
createdNoxuInstance, err = noxuResourceClient.UpdateStatus(createdNoxuInstance, metav1.UpdateOptions{}) createdNoxuInstance, err = noxuResourceClient.UpdateStatus(context.TODO(), createdNoxuInstance, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -536,7 +537,7 @@ func TestValidateOnlyStatus(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unexpected error setting .status.num: %v", err) t.Fatalf("unexpected error setting .status.num: %v", err)
} }
_, err = noxuResourceClient.UpdateStatus(createdNoxuInstance, metav1.UpdateOptions{}) _, err = noxuResourceClient.UpdateStatus(context.TODO(), createdNoxuInstance, metav1.UpdateOptions{})
if err == nil { if err == nil {
t.Fatal("expected error, but got none") t.Fatal("expected error, but got none")
} }
@ -547,7 +548,7 @@ func TestValidateOnlyStatus(t *testing.T) {
if !strings.Contains(statusError.Error(), "Invalid value") { if !strings.Contains(statusError.Error(), "Invalid value") {
t.Fatalf("expected 'Invalid value' in error, got: %v", err) t.Fatalf("expected 'Invalid value' in error, got: %v", err)
} }
noxuResourceClient.Delete("foo", mmetav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
} }
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)
@ -669,7 +670,7 @@ func TestGeneration(t *testing.T) {
} }
// .metadata.generation = 1 // .metadata.generation = 1
gottenNoxuInstance, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -684,7 +685,7 @@ func TestGeneration(t *testing.T) {
} }
// UpdateStatus does not increment generation // UpdateStatus does not increment generation
updatedStatusInstance, err := noxuResourceClient.UpdateStatus(gottenNoxuInstance, metav1.UpdateOptions{}) updatedStatusInstance, err := noxuResourceClient.UpdateStatus(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to update status: %v", err) t.Fatalf("unable to update status: %v", err)
} }
@ -692,7 +693,7 @@ func TestGeneration(t *testing.T) {
t.Fatalf("updating status should not increment .metadata.generation: expected: %v, got: %v", 1, updatedStatusInstance.GetGeneration()) t.Fatalf("updating status should not increment .metadata.generation: expected: %v, got: %v", 1, updatedStatusInstance.GetGeneration())
} }
gottenNoxuInstance, err = noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err = noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -704,14 +705,14 @@ func TestGeneration(t *testing.T) {
} }
// Update increments generation // Update increments generation
updatedInstance, err := noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) updatedInstance, err := noxuResourceClient.Update(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to update instance: %v", err) t.Fatalf("unable to update instance: %v", err)
} }
if updatedInstance.GetGeneration() != 2 { if updatedInstance.GetGeneration() != 2 {
t.Fatalf("updating spec should increment .metadata.generation: expected: %v, got: %v", 2, updatedStatusInstance.GetGeneration()) t.Fatalf("updating spec should increment .metadata.generation: expected: %v, got: %v", 2, updatedStatusInstance.GetGeneration())
} }
noxuResourceClient.Delete("foo", metav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
} }
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)
@ -764,7 +765,7 @@ func TestSubresourcePatch(t *testing.T) {
t.Logf("Patching .status.num to 999") t.Logf("Patching .status.num to 999")
patch := []byte(`{"spec": {"num":999}, "status": {"num":999}}`) patch := []byte(`{"spec": {"num":999}, "status": {"num":999}}`)
patchedNoxuInstance, err := noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}, "status") patchedNoxuInstance, err := noxuResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{}, "status")
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -785,14 +786,14 @@ func TestSubresourcePatch(t *testing.T) {
// and then the updated object shows a conflicting diff, which permanently fails the patch. // and then the updated object shows a conflicting diff, which permanently fails the patch.
// This gives expected stability in the patch without retrying on an known number of conflicts below in the test. // This gives expected stability in the patch without retrying on an known number of conflicts below in the test.
// See https://issue.k8s.io/42644 // See https://issue.k8s.io/42644
_, err = noxuResourceClient.Get("foo", metav1.GetOptions{ResourceVersion: patchedNoxuInstance.GetResourceVersion()}) _, err = noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{ResourceVersion: patchedNoxuInstance.GetResourceVersion()})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
// no-op patch // no-op patch
t.Logf("Patching .status.num again to 999") t.Logf("Patching .status.num again to 999")
patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}, "status") patchedNoxuInstance, err = noxuResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{}, "status")
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -803,7 +804,7 @@ func TestSubresourcePatch(t *testing.T) {
// empty patch // empty patch
t.Logf("Applying empty patch") t.Logf("Applying empty patch")
patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), metav1.PatchOptions{}, "status") patchedNoxuInstance, err = noxuResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, []byte(`{}`), metav1.PatchOptions{}, "status")
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -815,7 +816,7 @@ func TestSubresourcePatch(t *testing.T) {
t.Logf("Patching .spec.replicas to 7") t.Logf("Patching .spec.replicas to 7")
patch = []byte(`{"spec": {"replicas":7}, "status": {"replicas":7}}`) patch = []byte(`{"spec": {"replicas":7}, "status": {"replicas":7}}`)
patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}, "scale") patchedNoxuInstance, err = noxuResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{}, "scale")
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -836,7 +837,7 @@ func TestSubresourcePatch(t *testing.T) {
// and then the updated object shows a conflicting diff, which permanently fails the patch. // and then the updated object shows a conflicting diff, which permanently fails the patch.
// This gives expected stability in the patch without retrying on an known number of conflicts below in the test. // This gives expected stability in the patch without retrying on an known number of conflicts below in the test.
// See https://issue.k8s.io/42644 // See https://issue.k8s.io/42644
_, err = noxuResourceClient.Get("foo", metav1.GetOptions{ResourceVersion: patchedNoxuInstance.GetResourceVersion()}) _, err = noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{ResourceVersion: patchedNoxuInstance.GetResourceVersion()})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -855,7 +856,7 @@ func TestSubresourcePatch(t *testing.T) {
// no-op patch // no-op patch
t.Logf("Patching .spec.replicas again to 7") t.Logf("Patching .spec.replicas again to 7")
patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}, "scale") patchedNoxuInstance, err = noxuResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{}, "scale")
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -866,7 +867,7 @@ func TestSubresourcePatch(t *testing.T) {
// empty patch // empty patch
t.Logf("Applying empty patch") t.Logf("Applying empty patch")
patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), metav1.PatchOptions{}, "scale") patchedNoxuInstance, err = noxuResourceClient.Patch(context.TODO(), "foo", types.MergePatchType, []byte(`{}`), metav1.PatchOptions{}, "scale")
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -876,16 +877,16 @@ func TestSubresourcePatch(t *testing.T) {
expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion") expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion")
// make sure strategic merge patch is not supported for both status and scale // make sure strategic merge patch is not supported for both status and scale
_, err = noxuResourceClient.Patch("foo", types.StrategicMergePatchType, patch, metav1.PatchOptions{}, "status") _, err = noxuResourceClient.Patch(context.TODO(), "foo", types.StrategicMergePatchType, patch, metav1.PatchOptions{}, "status")
if err == nil { if err == nil {
t.Fatalf("unexpected non-error: strategic merge patch is not supported for custom resources") t.Fatalf("unexpected non-error: strategic merge patch is not supported for custom resources")
} }
_, err = noxuResourceClient.Patch("foo", types.StrategicMergePatchType, patch, metav1.PatchOptions{}, "scale") _, err = noxuResourceClient.Patch(context.TODO(), "foo", types.StrategicMergePatchType, patch, metav1.PatchOptions{}, "scale")
if err == nil { if err == nil {
t.Fatalf("unexpected non-error: strategic merge patch is not supported for custom resources") t.Fatalf("unexpected non-error: strategic merge patch is not supported for custom resources")
} }
noxuResourceClient.Delete("foo", mmetav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
} }
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)

View File

@ -131,7 +131,7 @@ func TestTableGet(t *testing.T) {
t.Logf("table crd created: %#v", crd) t.Logf("table crd created: %#v", crd)
crClient := newNamespacedCustomResourceVersionedClient("", dynamicClient, crd, "v1") crClient := newNamespacedCustomResourceVersionedClient("", dynamicClient, crd, "v1")
foo, err := crClient.Create(newTableInstance("foo"), metav1.CreateOptions{}) foo, err := crClient.Create(context.TODO(), newTableInstance("foo"), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create noxu instance: %v", err) t.Fatalf("unable to create noxu instance: %v", err)
} }

View File

@ -77,7 +77,7 @@ func TestForProperValidationErrors(t *testing.T) {
} }
for _, tc := range tests { for _, tc := range tests {
_, err := noxuResourceClient.Create(tc.instanceFn(), metav1.CreateOptions{}) _, err := noxuResourceClient.Create(context.TODO(), tc.instanceFn(), metav1.CreateOptions{})
if err == nil { if err == nil {
t.Errorf("%v: expected %v", tc.name, tc.expectedError) t.Errorf("%v: expected %v", tc.name, tc.expectedError)
continue continue
@ -246,7 +246,7 @@ func TestCustomResourceValidation(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("unable to create noxu instance: %v", err) t.Fatalf("unable to create noxu instance: %v", err)
} }
noxuResourceClient.Delete("foo", metav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
} }
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)
@ -326,7 +326,7 @@ func TestCustomResourceItemsValidation(t *testing.T) {
}, },
}, },
}} }}
_, err = client.Resource(gvr).Create(&u, metav1.CreateOptions{}) _, err = client.Resource(gvr).Create(context.TODO(), &u, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error: %v", err) t.Fatalf("unexpected error: %v", err)
} }
@ -452,7 +452,7 @@ func TestCustomResourceUpdateValidation(t *testing.T) {
t.Fatalf("unable to create noxu instance: %v", err) t.Fatalf("unable to create noxu instance: %v", err)
} }
gottenNoxuInstance, err := noxuResourceClient.Get("foo", metav1.GetOptions{}) gottenNoxuInstance, err := noxuResourceClient.Get(context.TODO(), "foo", metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -469,11 +469,11 @@ func TestCustomResourceUpdateValidation(t *testing.T) {
"delta": "hello", "delta": "hello",
} }
_, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) _, err = noxuResourceClient.Update(context.TODO(), gottenNoxuInstance, metav1.UpdateOptions{})
if err == nil { if err == nil {
t.Fatalf("unexpected non-error: alpha and beta should be present while updating %v", gottenNoxuInstance) t.Fatalf("unexpected non-error: alpha and beta should be present while updating %v", gottenNoxuInstance)
} }
noxuResourceClient.Delete("foo", metav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
} }
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)
@ -566,7 +566,7 @@ func TestCustomResourceValidationErrors(t *testing.T) {
noxuResourceClient := newNamespacedCustomResourceVersionedClient(ns, dynamicClient, noxuDefinition, v.Name) noxuResourceClient := newNamespacedCustomResourceVersionedClient(ns, dynamicClient, noxuDefinition, v.Name)
instanceToCreate := tc.instanceFn() instanceToCreate := tc.instanceFn()
instanceToCreate.Object["apiVersion"] = fmt.Sprintf("%s/%s", noxuDefinition.Spec.Group, v.Name) instanceToCreate.Object["apiVersion"] = fmt.Sprintf("%s/%s", noxuDefinition.Spec.Group, v.Name)
_, err := noxuResourceClient.Create(instanceToCreate, metav1.CreateOptions{}) _, err := noxuResourceClient.Create(context.TODO(), instanceToCreate, metav1.CreateOptions{})
if err == nil { if err == nil {
t.Errorf("%v: expected %v", tc.name, tc.expectedErrors) t.Errorf("%v: expected %v", tc.name, tc.expectedErrors)
continue continue
@ -634,7 +634,7 @@ func TestCRValidationOnCRDUpdate(t *testing.T) {
// CR is now accepted // CR is now accepted
err = wait.Poll(500*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { err = wait.Poll(500*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) {
_, err := noxuResourceClient.Create(instanceToCreate, metav1.CreateOptions{}) _, err := noxuResourceClient.Create(context.TODO(), instanceToCreate, metav1.CreateOptions{})
if _, isStatus := err.(*apierrors.StatusError); isStatus { if _, isStatus := err.(*apierrors.StatusError); isStatus {
if apierrors.IsInvalid(err) { if apierrors.IsInvalid(err) {
return false, nil return false, nil
@ -648,7 +648,7 @@ func TestCRValidationOnCRDUpdate(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
noxuResourceClient.Delete("foo", metav1.DeleteOptions{}) noxuResourceClient.Delete(context.TODO(), "foo", metav1.DeleteOptions{})
if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil { if err := fixtures.DeleteCustomResourceDefinition(noxuDefinition, apiExtensionClient); err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -57,7 +57,7 @@ func TestInternalVersionIsHandlerVersion(t *testing.T) {
t.Logf("Creating foo") t.Logf("Creating foo")
noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo") noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo")
_, err = noxuNamespacedResourceClientV1beta1.Create(noxuInstanceToCreate, metav1.CreateOptions{}) _, err = noxuNamespacedResourceClientV1beta1.Create(context.TODO(), noxuInstanceToCreate, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -88,7 +88,7 @@ func TestInternalVersionIsHandlerVersion(t *testing.T) {
patch := []byte(fmt.Sprintf(`{"i": %d}`, i)) patch := []byte(fmt.Sprintf(`{"i": %d}`, i))
i++ i++
_, err := noxuNamespacedResourceClientV1beta1.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}) _, err := noxuNamespacedResourceClientV1beta1.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{})
if err != nil { if err != nil {
// work around "grpc: the client connection is closing" error // work around "grpc: the client connection is closing" error
// TODO: fix the grpc error // TODO: fix the grpc error
@ -111,7 +111,7 @@ func TestInternalVersionIsHandlerVersion(t *testing.T) {
patch := []byte(fmt.Sprintf(`{"i": %d}`, i)) patch := []byte(fmt.Sprintf(`{"i": %d}`, i))
i++ i++
_, err := noxuNamespacedResourceClientV1beta2.Patch("foo", types.MergePatchType, patch, metav1.PatchOptions{}) _, err := noxuNamespacedResourceClientV1beta2.Patch(context.TODO(), "foo", types.MergePatchType, patch, metav1.PatchOptions{})
assert.NotNil(t, err) assert.NotNil(t, err)
// work around "grpc: the client connection is closing" error // work around "grpc: the client connection is closing" error

View File

@ -17,6 +17,7 @@ limitations under the License.
package endpoints package endpoints
import ( import (
"context"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io" "io"
@ -781,7 +782,7 @@ func TestWatchHTTPDynamicClientErrors(t *testing.T) {
APIPath: "/" + prefix, APIPath: "/" + prefix,
}).Resource(newGroupVersion.WithResource("simple")) }).Resource(newGroupVersion.WithResource("simple"))
_, err := client.Watch(metav1.ListOptions{}) _, err := client.Watch(context.TODO(), metav1.ListOptions{})
if err == nil { if err == nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -17,6 +17,7 @@ limitations under the License.
package resource package resource
import ( import (
"context"
"fmt" "fmt"
"reflect" "reflect"
@ -36,7 +37,7 @@ func CRDFromDynamic(client dynamic.Interface) CRDGetter {
Group: "apiextensions.k8s.io", Group: "apiextensions.k8s.io",
Version: "v1beta1", Version: "v1beta1",
Resource: "customresourcedefinitions", Resource: "customresourcedefinitions",
}).List(metav1.ListOptions{}) }).List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to list CRDs: %v", err) return nil, fmt.Errorf("failed to list CRDs: %v", err)
} }

View File

@ -17,6 +17,7 @@ limitations under the License.
package apply package apply
import ( import (
"context"
"fmt" "fmt"
"io" "io"
"strings" "strings"
@ -97,7 +98,7 @@ func (p *pruner) pruneAll(o *ApplyOptions) error {
func (p *pruner) prune(namespace string, mapping *meta.RESTMapping) error { func (p *pruner) prune(namespace string, mapping *meta.RESTMapping) error {
objList, err := p.dynamicClient.Resource(mapping.Resource). objList, err := p.dynamicClient.Resource(mapping.Resource).
Namespace(namespace). Namespace(namespace).
List(metav1.ListOptions{ List(context.TODO(), metav1.ListOptions{
LabelSelector: p.labelSelector, LabelSelector: p.labelSelector,
FieldSelector: p.fieldSelector, FieldSelector: p.fieldSelector,
}) })
@ -157,7 +158,7 @@ func runDelete(namespace, name string, mapping *meta.RESTMapping, c dynamic.Inte
policy = metav1.DeletePropagationOrphan policy = metav1.DeletePropagationOrphan
} }
options.PropagationPolicy = &policy options.PropagationPolicy = &policy
return c.Resource(mapping.Resource).Namespace(namespace).Delete(name, options) return c.Resource(mapping.Resource).Namespace(namespace).Delete(context.TODO(), name, options)
} }
type pruneResource struct { type pruneResource struct {

View File

@ -17,6 +17,7 @@ limitations under the License.
package create package create
import ( import (
"context"
"fmt" "fmt"
"io" "io"
"net/url" "net/url"
@ -451,7 +452,7 @@ func (o *CreateSubcommandOptions) Run() error {
} }
createOptions.DryRun = []string{metav1.DryRunAll} createOptions.DryRun = []string{metav1.DryRunAll}
} }
actualObject, err := o.DynamicClient.Resource(mapping.Resource).Namespace(o.Namespace).Create(asUnstructured, createOptions) actualObject, err := o.DynamicClient.Resource(mapping.Resource).Namespace(o.Namespace).Create(context.TODO(), asUnstructured, createOptions)
if err != nil { if err != nil {
return err return err
} }

View File

@ -192,11 +192,11 @@ func (o *RolloutStatusOptions) Run() error {
lw := &cache.ListWatch{ lw := &cache.ListWatch{
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
options.FieldSelector = fieldSelector options.FieldSelector = fieldSelector
return o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).List(options) return o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).List(context.TODO(), options)
}, },
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
options.FieldSelector = fieldSelector options.FieldSelector = fieldSelector
return o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).Watch(options) return o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).Watch(context.TODO(), options)
}, },
} }

View File

@ -263,7 +263,7 @@ func IsDeleted(info *resource.Info, o *WaitOptions) (runtime.Object, bool, error
nameSelector := fields.OneTermEqualSelector("metadata.name", info.Name).String() nameSelector := fields.OneTermEqualSelector("metadata.name", info.Name).String()
// List with a name field selector to get the current resourceVersion to watch from (not the object's resourceVersion) // List with a name field selector to get the current resourceVersion to watch from (not the object's resourceVersion)
gottenObjList, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).List(metav1.ListOptions{FieldSelector: nameSelector}) gottenObjList, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).List(context.TODO(), metav1.ListOptions{FieldSelector: nameSelector})
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return info.Object, true, nil return info.Object, true, nil
} }
@ -289,7 +289,7 @@ func IsDeleted(info *resource.Info, o *WaitOptions) (runtime.Object, bool, error
watchOptions := metav1.ListOptions{} watchOptions := metav1.ListOptions{}
watchOptions.FieldSelector = nameSelector watchOptions.FieldSelector = nameSelector
watchOptions.ResourceVersion = gottenObjList.GetResourceVersion() watchOptions.ResourceVersion = gottenObjList.GetResourceVersion()
objWatch, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).Watch(watchOptions) objWatch, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).Watch(context.TODO(), watchOptions)
if err != nil { if err != nil {
return gottenObj, false, err return gottenObj, false, err
} }
@ -361,7 +361,7 @@ func (w ConditionalWait) IsConditionMet(info *resource.Info, o *WaitOptions) (ru
var gottenObj *unstructured.Unstructured var gottenObj *unstructured.Unstructured
// List with a name field selector to get the current resourceVersion to watch from (not the object's resourceVersion) // List with a name field selector to get the current resourceVersion to watch from (not the object's resourceVersion)
gottenObjList, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).List(metav1.ListOptions{FieldSelector: nameSelector}) gottenObjList, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).List(context.TODO(), metav1.ListOptions{FieldSelector: nameSelector})
resourceVersion := "" resourceVersion := ""
switch { switch {
@ -384,7 +384,7 @@ func (w ConditionalWait) IsConditionMet(info *resource.Info, o *WaitOptions) (ru
watchOptions := metav1.ListOptions{} watchOptions := metav1.ListOptions{}
watchOptions.FieldSelector = nameSelector watchOptions.FieldSelector = nameSelector
watchOptions.ResourceVersion = resourceVersion watchOptions.ResourceVersion = resourceVersion
objWatch, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).Watch(watchOptions) objWatch, err := o.DynamicClient.Resource(info.Mapping.Resource).Namespace(info.Namespace).Watch(context.TODO(), watchOptions)
if err != nil { if err != nil {
return gottenObj, false, err return gottenObj, false, err
} }

View File

@ -247,7 +247,7 @@ type genericDescriber struct {
} }
func (g *genericDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (output string, err error) { func (g *genericDescriber) Describe(namespace, name string, describerSettings DescriberSettings) (output string, err error) {
obj, err := g.dynamic.Resource(g.mapping.Resource).Namespace(namespace).Get(name, metav1.GetOptions{}) obj, err := g.dynamic.Resource(g.mapping.Resource).Namespace(namespace).Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
return "", err return "", err
} }

View File

@ -478,22 +478,22 @@ func TestSampleAPIServer(f *framework.Framework, aggrclient *aggregatorclient.Cl
unstruct := &unstructuredv1.Unstructured{} unstruct := &unstructuredv1.Unstructured{}
err = unstruct.UnmarshalJSON(jsonFlunder) err = unstruct.UnmarshalJSON(jsonFlunder)
framework.ExpectNoError(err, "unmarshalling test-flunder as unstructured for create using dynamic client") framework.ExpectNoError(err, "unmarshalling test-flunder as unstructured for create using dynamic client")
_, err = dynamicClient.Create(unstruct, metav1.CreateOptions{}) _, err = dynamicClient.Create(context.TODO(), unstruct, metav1.CreateOptions{})
framework.ExpectNoError(err, "listing flunders using dynamic client") framework.ExpectNoError(err, "listing flunders using dynamic client")
// kubectl get flunders // kubectl get flunders
unstructuredList, err := dynamicClient.List(metav1.ListOptions{}) unstructuredList, err := dynamicClient.List(context.TODO(), metav1.ListOptions{})
framework.ExpectNoError(err, "listing flunders using dynamic client") framework.ExpectNoError(err, "listing flunders using dynamic client")
if len(unstructuredList.Items) != 1 { if len(unstructuredList.Items) != 1 {
framework.Failf("failed to get back the correct flunders list %v from the dynamic client", unstructuredList) framework.Failf("failed to get back the correct flunders list %v from the dynamic client", unstructuredList)
} }
// kubectl delete flunder test-flunder // kubectl delete flunder test-flunder
err = dynamicClient.Delete(flunderName, metav1.DeleteOptions{}) err = dynamicClient.Delete(context.TODO(), flunderName, metav1.DeleteOptions{})
validateErrorWithDebugInfo(f, err, pods, "deleting flunders(%v) using dynamic client", unstructuredList.Items) validateErrorWithDebugInfo(f, err, pods, "deleting flunders(%v) using dynamic client", unstructuredList.Items)
// kubectl get flunders // kubectl get flunders
unstructuredList, err = dynamicClient.List(metav1.ListOptions{}) unstructuredList, err = dynamicClient.List(context.TODO(), metav1.ListOptions{})
framework.ExpectNoError(err, "listing flunders using dynamic client") framework.ExpectNoError(err, "listing flunders using dynamic client")
if len(unstructuredList.Items) != 0 { if len(unstructuredList.Items) != 0 {
framework.Failf("failed to get back the correct deleted flunders list %v from the dynamic client", unstructuredList) framework.Failf("failed to get back the correct deleted flunders list %v from the dynamic client", unstructuredList)

View File

@ -411,10 +411,10 @@ func testCustomResourceConversionWebhook(f *framework.Framework, crd *apiextensi
"hostPort": "localhost:8080", "hostPort": "localhost:8080",
}, },
} }
_, err := customResourceClients["v1"].Create(crInstance, metav1.CreateOptions{}) _, err := customResourceClients["v1"].Create(context.TODO(), crInstance, metav1.CreateOptions{})
gomega.Expect(err).To(gomega.BeNil()) gomega.Expect(err).To(gomega.BeNil())
ginkgo.By("v2 custom resource should be converted") ginkgo.By("v2 custom resource should be converted")
v2crd, err := customResourceClients["v2"].Get(name, metav1.GetOptions{}) v2crd, err := customResourceClients["v2"].Get(context.TODO(), name, metav1.GetOptions{})
framework.ExpectNoError(err, "Getting v2 of custom resource %s", name) framework.ExpectNoError(err, "Getting v2 of custom resource %s", name)
verifyV2Object(crd, v2crd) verifyV2Object(crd, v2crd)
} }
@ -436,7 +436,7 @@ func testCRListConversion(f *framework.Framework, testCrd *crd.TestCrd) {
"hostPort": "localhost:8080", "hostPort": "localhost:8080",
}, },
} }
_, err := customResourceClients["v1"].Create(crInstance, metav1.CreateOptions{}) _, err := customResourceClients["v1"].Create(context.TODO(), crInstance, metav1.CreateOptions{})
gomega.Expect(err).To(gomega.BeNil()) gomega.Expect(err).To(gomega.BeNil())
// Now cr-instance-1 is stored as v1. lets change storage version // Now cr-instance-1 is stored as v1. lets change storage version
@ -463,7 +463,7 @@ func testCRListConversion(f *framework.Framework, testCrd *crd.TestCrd) {
// //
// TODO: we have to wait for the storage version to become effective. Storage version changes are not instant. // TODO: we have to wait for the storage version to become effective. Storage version changes are not instant.
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
_, err = customResourceClients["v1"].Create(crInstance, metav1.CreateOptions{}) _, err = customResourceClients["v1"].Create(context.TODO(), crInstance, metav1.CreateOptions{})
if err == nil { if err == nil {
break break
} }
@ -473,7 +473,7 @@ func testCRListConversion(f *framework.Framework, testCrd *crd.TestCrd) {
// Now that we have a v1 and v2 object, both list operation in v1 and v2 should work as expected. // Now that we have a v1 and v2 object, both list operation in v1 and v2 should work as expected.
ginkgo.By("List CRs in v1") ginkgo.By("List CRs in v1")
list, err := customResourceClients["v1"].List(metav1.ListOptions{}) list, err := customResourceClients["v1"].List(context.TODO(), metav1.ListOptions{})
gomega.Expect(err).To(gomega.BeNil()) gomega.Expect(err).To(gomega.BeNil())
gomega.Expect(len(list.Items)).To(gomega.BeIdenticalTo(2)) gomega.Expect(len(list.Items)).To(gomega.BeIdenticalTo(2))
framework.ExpectEqual((list.Items[0].GetName() == name1 && list.Items[1].GetName() == name2) || framework.ExpectEqual((list.Items[0].GetName() == name1 && list.Items[1].GetName() == name2) ||
@ -482,7 +482,7 @@ func testCRListConversion(f *framework.Framework, testCrd *crd.TestCrd) {
verifyV1Object(crd, &list.Items[1]) verifyV1Object(crd, &list.Items[1])
ginkgo.By("List CRs in v2") ginkgo.By("List CRs in v2")
list, err = customResourceClients["v2"].List(metav1.ListOptions{}) list, err = customResourceClients["v2"].List(context.TODO(), metav1.ListOptions{})
gomega.Expect(err).To(gomega.BeNil()) gomega.Expect(err).To(gomega.BeNil())
gomega.Expect(len(list.Items)).To(gomega.BeIdenticalTo(2)) gomega.Expect(len(list.Items)).To(gomega.BeIdenticalTo(2))
framework.ExpectEqual((list.Items[0].GetName() == name1 && list.Items[1].GetName() == name2) || framework.ExpectEqual((list.Items[0].GetName() == name1 && list.Items[1].GetName() == name2) ||
@ -504,7 +504,7 @@ func waitWebhookConversionReady(f *framework.Framework, crd *apiextensionsv1.Cus
}, },
}, },
} }
_, err := customResourceClients[version].Create(crInstance, metav1.CreateOptions{}) _, err := customResourceClients[version].Create(context.TODO(), crInstance, metav1.CreateOptions{})
if err != nil { if err != nil {
// tolerate clusters that do not set --enable-aggregator-routing and have to wait for kube-proxy // tolerate clusters that do not set --enable-aggregator-routing and have to wait for kube-proxy
// to program the service network, during which conversion requests return errors // to program the service network, during which conversion requests return errors
@ -512,7 +512,7 @@ func waitWebhookConversionReady(f *framework.Framework, crd *apiextensionsv1.Cus
return false, nil return false, nil
} }
framework.ExpectNoError(customResourceClients[version].Delete(crInstance.GetName(), metav1.DeleteOptions{}), "cleaning up stub object") framework.ExpectNoError(customResourceClients[version].Delete(context.TODO(), crInstance.GetName(), metav1.DeleteOptions{}), "cleaning up stub object")
return true, nil return true, nil
})) }))
} }

View File

@ -17,6 +17,7 @@ limitations under the License.
package apimachinery package apimachinery
import ( import (
"context"
"fmt" "fmt"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
@ -129,6 +130,7 @@ var _ = SIGDescribe("CustomResourceDefinition Watch [Privileged:ClusterAdmin]",
func watchCRWithName(crdResourceClient dynamic.ResourceInterface, name string) (watch.Interface, error) { func watchCRWithName(crdResourceClient dynamic.ResourceInterface, name string) (watch.Interface, error) {
return crdResourceClient.Watch( return crdResourceClient.Watch(
context.TODO(),
metav1.ListOptions{ metav1.ListOptions{
FieldSelector: "metadata.name=" + name, FieldSelector: "metadata.name=" + name,
TimeoutSeconds: int64ptr(600), TimeoutSeconds: int64ptr(600),
@ -137,7 +139,7 @@ func watchCRWithName(crdResourceClient dynamic.ResourceInterface, name string) (
} }
func instantiateCustomResource(instanceToCreate *unstructured.Unstructured, client dynamic.ResourceInterface, definition *apiextensionsv1.CustomResourceDefinition) (*unstructured.Unstructured, error) { func instantiateCustomResource(instanceToCreate *unstructured.Unstructured, client dynamic.ResourceInterface, definition *apiextensionsv1.CustomResourceDefinition) (*unstructured.Unstructured, error) {
createdInstance, err := client.Create(instanceToCreate, metav1.CreateOptions{}) createdInstance, err := client.Create(context.TODO(), instanceToCreate, metav1.CreateOptions{})
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -167,6 +169,7 @@ func instantiateCustomResource(instanceToCreate *unstructured.Unstructured, clie
func patchCustomResource(client dynamic.ResourceInterface, name string) error { func patchCustomResource(client dynamic.ResourceInterface, name string) error {
_, err := client.Patch( _, err := client.Patch(
context.TODO(),
name, name,
types.JSONPatchType, types.JSONPatchType,
[]byte(`[{ "op": "add", "path": "/dummy", "value": "test" }]`), []byte(`[{ "op": "add", "path": "/dummy", "value": "test" }]`),
@ -175,7 +178,7 @@ func patchCustomResource(client dynamic.ResourceInterface, name string) error {
} }
func deleteCustomResource(client dynamic.ResourceInterface, name string) error { func deleteCustomResource(client dynamic.ResourceInterface, name string) error {
return client.Delete(name, metav1.DeleteOptions{}) return client.Delete(context.TODO(), name, metav1.DeleteOptions{})
} }
func newNamespacedCustomResourceClient(ns string, client dynamic.Interface, crd *apiextensionsv1.CustomResourceDefinition) (dynamic.ResourceInterface, error) { func newNamespacedCustomResourceClient(ns string, client dynamic.Interface, crd *apiextensionsv1.CustomResourceDefinition) (dynamic.ResourceInterface, error) {

View File

@ -163,7 +163,7 @@ var _ = SIGDescribe("CustomResourceDefinition resources [Privileged:ClusterAdmin
updateCondition := v1.CustomResourceDefinitionCondition{Message: "updated"} updateCondition := v1.CustomResourceDefinitionCondition{Message: "updated"}
err = retry.RetryOnConflict(retry.DefaultRetry, func() error { err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
// Use dynamic client to read the status sub-resource since typed client does not expose it. // Use dynamic client to read the status sub-resource since typed client does not expose it.
u, err := resourceClient.Get(crd.GetName(), metav1.GetOptions{}, "status") u, err := resourceClient.Get(context.TODO(), crd.GetName(), metav1.GetOptions{}, "status")
framework.ExpectNoError(err, "getting CustomResourceDefinition status") framework.ExpectNoError(err, "getting CustomResourceDefinition status")
status := unstructuredToCRD(u) status := unstructuredToCRD(u)
if !equality.Semantic.DeepEqual(status.Spec, crd.Spec) { if !equality.Semantic.DeepEqual(status.Spec, crd.Spec) {
@ -294,7 +294,7 @@ var _ = SIGDescribe("CustomResourceDefinition resources [Privileged:ClusterAdmin
Resource: crd.Spec.Names.Plural, Resource: crd.Spec.Names.Plural,
} }
crClient := dynamicClient.Resource(gvr) crClient := dynamicClient.Resource(gvr)
_, err = crClient.Create(&unstructured.Unstructured{Object: map[string]interface{}{ _, err = crClient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{
"apiVersion": gvr.Group + "/" + gvr.Version, "apiVersion": gvr.Group + "/" + gvr.Version,
"kind": crd.Spec.Names.Kind, "kind": crd.Spec.Names.Kind,
"metadata": map[string]interface{}{ "metadata": map[string]interface{}{
@ -310,7 +310,7 @@ var _ = SIGDescribe("CustomResourceDefinition resources [Privileged:ClusterAdmin
framework.ExpectNoError(err, "setting default for a to \"A\" in schema") framework.ExpectNoError(err, "setting default for a to \"A\" in schema")
err = wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) { err = wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) {
u1, err := crClient.Get(name1, metav1.GetOptions{}) u1, err := crClient.Get(context.TODO(), name1, metav1.GetOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -330,7 +330,7 @@ var _ = SIGDescribe("CustomResourceDefinition resources [Privileged:ClusterAdmin
// create CR with default in storage // create CR with default in storage
name2 := names.SimpleNameGenerator.GenerateName("cr-2") name2 := names.SimpleNameGenerator.GenerateName("cr-2")
u2, err := crClient.Create(&unstructured.Unstructured{Object: map[string]interface{}{ u2, err := crClient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{
"apiVersion": gvr.Group + "/" + gvr.Version, "apiVersion": gvr.Group + "/" + gvr.Version,
"kind": crd.Spec.Names.Kind, "kind": crd.Spec.Names.Kind,
"metadata": map[string]interface{}{ "metadata": map[string]interface{}{
@ -350,7 +350,7 @@ var _ = SIGDescribe("CustomResourceDefinition resources [Privileged:ClusterAdmin
framework.ExpectNoError(err, "setting default for b to \"B\" and remove default for a") framework.ExpectNoError(err, "setting default for b to \"B\" and remove default for a")
err = wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) { err = wait.PollImmediate(time.Millisecond*100, wait.ForeverTestTimeout, func() (bool, error) {
u2, err := crClient.Get(name2, metav1.GetOptions{}) u2, err := crClient.Get(context.TODO(), name2, metav1.GetOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }

View File

@ -935,7 +935,7 @@ var _ = SIGDescribe("Garbage collector", func() {
}, },
}, },
} }
persistedOwner, err := resourceClient.Create(owner, metav1.CreateOptions{}) persistedOwner, err := resourceClient.Create(context.TODO(), owner, metav1.CreateOptions{})
if err != nil { if err != nil {
framework.Failf("failed to create owner resource %q: %v", ownerName, err) framework.Failf("failed to create owner resource %q: %v", ownerName, err)
} }
@ -960,7 +960,7 @@ var _ = SIGDescribe("Garbage collector", func() {
}, },
}, },
} }
persistedDependent, err := resourceClient.Create(dependent, metav1.CreateOptions{}) persistedDependent, err := resourceClient.Create(context.TODO(), dependent, metav1.CreateOptions{})
if err != nil { if err != nil {
framework.Failf("failed to create dependent resource %q: %v", dependentName, err) framework.Failf("failed to create dependent resource %q: %v", dependentName, err)
} }
@ -968,7 +968,7 @@ var _ = SIGDescribe("Garbage collector", func() {
// Delete the owner. // Delete the owner.
background := metav1.DeletePropagationBackground background := metav1.DeletePropagationBackground
err = resourceClient.Delete(ownerName, metav1.DeleteOptions{PropagationPolicy: &background}) err = resourceClient.Delete(context.TODO(), ownerName, metav1.DeleteOptions{PropagationPolicy: &background})
if err != nil { if err != nil {
framework.Failf("failed to delete owner resource %q: %v", ownerName, err) framework.Failf("failed to delete owner resource %q: %v", ownerName, err)
} }
@ -982,20 +982,20 @@ var _ = SIGDescribe("Garbage collector", func() {
"kind": definition.Spec.Names.Kind, "kind": definition.Spec.Names.Kind,
"metadata": map[string]interface{}{"name": canaryName}}, "metadata": map[string]interface{}{"name": canaryName}},
} }
_, err = resourceClient.Create(canary, metav1.CreateOptions{}) _, err = resourceClient.Create(context.TODO(), canary, metav1.CreateOptions{})
if err != nil { if err != nil {
framework.Failf("failed to create canary resource %q: %v", canaryName, err) framework.Failf("failed to create canary resource %q: %v", canaryName, err)
} }
framework.Logf("created canary resource %q", canaryName) framework.Logf("created canary resource %q", canaryName)
foreground := metav1.DeletePropagationForeground foreground := metav1.DeletePropagationForeground
err = resourceClient.Delete(canaryName, metav1.DeleteOptions{PropagationPolicy: &foreground}) err = resourceClient.Delete(context.TODO(), canaryName, metav1.DeleteOptions{PropagationPolicy: &foreground})
if err != nil { if err != nil {
framework.Failf("failed to delete canary resource %q: %v", canaryName, err) framework.Failf("failed to delete canary resource %q: %v", canaryName, err)
} }
// Wait for the canary foreground finalization to complete, which means GC is aware of our new custom resource type // Wait for the canary foreground finalization to complete, which means GC is aware of our new custom resource type
var lastCanary *unstructured.Unstructured var lastCanary *unstructured.Unstructured
if err := wait.PollImmediate(5*time.Second, 3*time.Minute, func() (bool, error) { if err := wait.PollImmediate(5*time.Second, 3*time.Minute, func() (bool, error) {
lastCanary, err = resourceClient.Get(dependentName, metav1.GetOptions{}) lastCanary, err = resourceClient.Get(context.TODO(), dependentName, metav1.GetOptions{})
return apierrors.IsNotFound(err), nil return apierrors.IsNotFound(err), nil
}); err != nil { }); err != nil {
framework.Logf("canary last state: %#v", lastCanary) framework.Logf("canary last state: %#v", lastCanary)
@ -1006,7 +1006,7 @@ var _ = SIGDescribe("Garbage collector", func() {
var lastDependent *unstructured.Unstructured var lastDependent *unstructured.Unstructured
var err2 error var err2 error
if err := wait.Poll(5*time.Second, 60*time.Second, func() (bool, error) { if err := wait.Poll(5*time.Second, 60*time.Second, func() (bool, error) {
lastDependent, err2 = resourceClient.Get(dependentName, metav1.GetOptions{}) lastDependent, err2 = resourceClient.Get(context.TODO(), dependentName, metav1.GetOptions{})
return apierrors.IsNotFound(err2), nil return apierrors.IsNotFound(err2), nil
}); err != nil { }); err != nil {
framework.Logf("owner: %#v", persistedOwner) framework.Logf("owner: %#v", persistedOwner)
@ -1016,7 +1016,7 @@ var _ = SIGDescribe("Garbage collector", func() {
} }
// Ensure the owner is deleted. // Ensure the owner is deleted.
_, err = resourceClient.Get(ownerName, metav1.GetOptions{}) _, err = resourceClient.Get(context.TODO(), ownerName, metav1.GetOptions{})
if err == nil { if err == nil {
framework.Failf("expected owner resource %q to be deleted", ownerName) framework.Failf("expected owner resource %q to be deleted", ownerName)
} else { } else {
@ -1070,7 +1070,7 @@ var _ = SIGDescribe("Garbage collector", func() {
}, },
}, },
} }
persistedOwner, err := resourceClient.Create(owner, metav1.CreateOptions{}) persistedOwner, err := resourceClient.Create(context.TODO(), owner, metav1.CreateOptions{})
if err != nil { if err != nil {
framework.Failf("failed to create owner resource %q: %v", ownerName, err) framework.Failf("failed to create owner resource %q: %v", ownerName, err)
} }
@ -1095,21 +1095,21 @@ var _ = SIGDescribe("Garbage collector", func() {
}, },
}, },
} }
_, err = resourceClient.Create(dependent, metav1.CreateOptions{}) _, err = resourceClient.Create(context.TODO(), dependent, metav1.CreateOptions{})
if err != nil { if err != nil {
framework.Failf("failed to create dependent resource %q: %v", dependentName, err) framework.Failf("failed to create dependent resource %q: %v", dependentName, err)
} }
framework.Logf("created dependent resource %q", dependentName) framework.Logf("created dependent resource %q", dependentName)
// Delete the owner and orphan the dependent. // Delete the owner and orphan the dependent.
err = resourceClient.Delete(ownerName, getOrphanOptions()) err = resourceClient.Delete(context.TODO(), ownerName, getOrphanOptions())
if err != nil { if err != nil {
framework.Failf("failed to delete owner resource %q: %v", ownerName, err) framework.Failf("failed to delete owner resource %q: %v", ownerName, err)
} }
ginkgo.By("wait for the owner to be deleted") ginkgo.By("wait for the owner to be deleted")
if err := wait.Poll(5*time.Second, 120*time.Second, func() (bool, error) { if err := wait.Poll(5*time.Second, 120*time.Second, func() (bool, error) {
_, err = resourceClient.Get(ownerName, metav1.GetOptions{}) _, err = resourceClient.Get(context.TODO(), ownerName, metav1.GetOptions{})
if err == nil { if err == nil {
return false, nil return false, nil
} }
@ -1124,7 +1124,7 @@ var _ = SIGDescribe("Garbage collector", func() {
// Wait 30s and ensure the dependent is not deleted. // Wait 30s and ensure the dependent is not deleted.
ginkgo.By("wait for 30 seconds to see if the garbage collector mistakenly deletes the dependent crd") ginkgo.By("wait for 30 seconds to see if the garbage collector mistakenly deletes the dependent crd")
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) { if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
_, err := resourceClient.Get(dependentName, metav1.GetOptions{}) _, err := resourceClient.Get(context.TODO(), dependentName, metav1.GetOptions{})
return false, err return false, err
}); err != nil && err != wait.ErrWaitTimeout { }); err != nil && err != wait.ErrWaitTimeout {
framework.Failf("failed to ensure the dependent is not deleted: %v", err) framework.Failf("failed to ensure the dependent is not deleted: %v", err)

View File

@ -1678,11 +1678,11 @@ func updateCustomResource(c dynamic.ResourceInterface, ns, name string, update u
var cr *unstructured.Unstructured var cr *unstructured.Unstructured
pollErr := wait.PollImmediate(2*time.Second, 1*time.Minute, func() (bool, error) { pollErr := wait.PollImmediate(2*time.Second, 1*time.Minute, func() (bool, error) {
var err error var err error
if cr, err = c.Get(name, metav1.GetOptions{}); err != nil { if cr, err = c.Get(context.TODO(), name, metav1.GetOptions{}); err != nil {
return false, err return false, err
} }
update(cr) update(cr)
if cr, err = c.Update(cr, metav1.UpdateOptions{}); err == nil { if cr, err = c.Update(context.TODO(), cr, metav1.UpdateOptions{}); err == nil {
return true, nil return true, nil
} }
// Only retry update on conflict // Only retry update on conflict
@ -1846,7 +1846,7 @@ func testCustomResourceWebhook(f *framework.Framework, crd *apiextensionsv1.Cust
}, },
}, },
} }
_, err := customResourceClient.Create(crInstance, metav1.CreateOptions{}) _, err := customResourceClient.Create(context.TODO(), crInstance, metav1.CreateOptions{})
framework.ExpectError(err, "create custom resource %s in namespace %s should be denied by webhook", crInstanceName, f.Namespace.Name) framework.ExpectError(err, "create custom resource %s in namespace %s should be denied by webhook", crInstanceName, f.Namespace.Name)
expectedErrMsg := "the custom resource contains unwanted data" expectedErrMsg := "the custom resource contains unwanted data"
if !strings.Contains(err.Error(), expectedErrMsg) { if !strings.Contains(err.Error(), expectedErrMsg) {
@ -1870,7 +1870,7 @@ func testBlockingCustomResourceUpdateDeletion(f *framework.Framework, crd *apiex
}, },
}, },
} }
_, err := customResourceClient.Create(crInstance, metav1.CreateOptions{}) _, err := customResourceClient.Create(context.TODO(), crInstance, metav1.CreateOptions{})
framework.ExpectNoError(err, "failed to create custom resource %s in namespace: %s", crInstanceName, f.Namespace.Name) framework.ExpectNoError(err, "failed to create custom resource %s in namespace: %s", crInstanceName, f.Namespace.Name)
ginkgo.By("Updating the custom resource with disallowed data should be denied") ginkgo.By("Updating the custom resource with disallowed data should be denied")
@ -1890,7 +1890,7 @@ func testBlockingCustomResourceUpdateDeletion(f *framework.Framework, crd *apiex
} }
ginkgo.By("Deleting the custom resource should be denied") ginkgo.By("Deleting the custom resource should be denied")
err = customResourceClient.Delete(crInstanceName, metav1.DeleteOptions{}) err = customResourceClient.Delete(context.TODO(), crInstanceName, metav1.DeleteOptions{})
framework.ExpectError(err, "deleting custom resource %s in namespace: %s should be denied", crInstanceName, f.Namespace.Name) framework.ExpectError(err, "deleting custom resource %s in namespace: %s should be denied", crInstanceName, f.Namespace.Name)
expectedErrMsg1 := "the custom resource cannot be deleted because it contains unwanted key and value" expectedErrMsg1 := "the custom resource cannot be deleted because it contains unwanted key and value"
if !strings.Contains(err.Error(), expectedErrMsg1) { if !strings.Contains(err.Error(), expectedErrMsg1) {
@ -1909,7 +1909,7 @@ func testBlockingCustomResourceUpdateDeletion(f *framework.Framework, crd *apiex
framework.ExpectNoError(err, "failed to update custom resource %s in namespace: %s", crInstanceName, f.Namespace.Name) framework.ExpectNoError(err, "failed to update custom resource %s in namespace: %s", crInstanceName, f.Namespace.Name)
ginkgo.By("Deleting the updated custom resource should be successful") ginkgo.By("Deleting the updated custom resource should be successful")
err = customResourceClient.Delete(crInstanceName, metav1.DeleteOptions{}) err = customResourceClient.Delete(context.TODO(), crInstanceName, metav1.DeleteOptions{})
framework.ExpectNoError(err, "failed to delete custom resource %s in namespace: %s", crInstanceName, f.Namespace.Name) framework.ExpectNoError(err, "failed to delete custom resource %s in namespace: %s", crInstanceName, f.Namespace.Name)
} }
@ -1930,7 +1930,7 @@ func testMutatingCustomResourceWebhook(f *framework.Framework, crd *apiextension
}, },
}, },
} }
mutatedCR, err := customResourceClient.Create(cr, metav1.CreateOptions{}) mutatedCR, err := customResourceClient.Create(context.TODO(), cr, metav1.CreateOptions{})
framework.ExpectNoError(err, "failed to create custom resource %s in namespace: %s", crName, f.Namespace.Name) framework.ExpectNoError(err, "failed to create custom resource %s in namespace: %s", crName, f.Namespace.Name)
expectedCRData := map[string]interface{}{ expectedCRData := map[string]interface{}{
"mutation-start": "yes", "mutation-start": "yes",
@ -1961,7 +1961,7 @@ func testMultiVersionCustomResourceWebhook(f *framework.Framework, testcrd *crd.
}, },
}, },
} }
_, err := customResourceClient.Create(cr, metav1.CreateOptions{}) _, err := customResourceClient.Create(context.TODO(), cr, metav1.CreateOptions{})
framework.ExpectNoError(err, "failed to create custom resource %s in namespace: %s", crName, f.Namespace.Name) framework.ExpectNoError(err, "failed to create custom resource %s in namespace: %s", crName, f.Namespace.Name)
ginkgo.By("Patching Custom Resource Definition to set v2 as storage") ginkgo.By("Patching Custom Resource Definition to set v2 as storage")
@ -1992,7 +1992,7 @@ func testMultiVersionCustomResourceWebhook(f *framework.Framework, testcrd *crd.
ginkgo.By("Patching the custom resource while v2 is storage version") ginkgo.By("Patching the custom resource while v2 is storage version")
crDummyPatch := fmt.Sprint(`[{ "op": "add", "path": "/dummy", "value": "test" }]`) crDummyPatch := fmt.Sprint(`[{ "op": "add", "path": "/dummy", "value": "test" }]`)
mutatedCR, err := testcrd.DynamicClients["v2"].Patch(crName, types.JSONPatchType, []byte(crDummyPatch), metav1.PatchOptions{}) mutatedCR, err := testcrd.DynamicClients["v2"].Patch(context.TODO(), crName, types.JSONPatchType, []byte(crDummyPatch), metav1.PatchOptions{})
framework.ExpectNoError(err, "failed to patch custom resource %s in namespace: %s", crName, f.Namespace.Name) framework.ExpectNoError(err, "failed to patch custom resource %s in namespace: %s", crName, f.Namespace.Name)
expectedCRData := map[string]interface{}{ expectedCRData := map[string]interface{}{
"mutation-start": "yes", "mutation-start": "yes",

View File

@ -600,7 +600,7 @@ func waitForPdbToObserveHealthyPods(cs kubernetes.Interface, ns string, healthyC
func getPDBStatusOrDie(dc dynamic.Interface, ns string, name string) *policyv1beta1.PodDisruptionBudget { func getPDBStatusOrDie(dc dynamic.Interface, ns string, name string) *policyv1beta1.PodDisruptionBudget {
pdbStatusResource := policyv1beta1.SchemeGroupVersion.WithResource("poddisruptionbudgets") pdbStatusResource := policyv1beta1.SchemeGroupVersion.WithResource("poddisruptionbudgets")
unstruct, err := dc.Resource(pdbStatusResource).Namespace(ns).Get(name, metav1.GetOptions{}, "status") unstruct, err := dc.Resource(pdbStatusResource).Namespace(ns).Get(context.TODO(), name, metav1.GetOptions{}, "status")
pdb, err := unstructuredToPDB(unstruct) pdb, err := unstructuredToPDB(unstruct)
framework.ExpectNoError(err, "Getting the status of the pdb %s in namespace %s", name, ns) framework.ExpectNoError(err, "Getting the status of the pdb %s in namespace %s", name, ns)
return pdb return pdb

View File

@ -19,6 +19,7 @@ package skipper
import ( import (
"bufio" "bufio"
"bytes" "bytes"
"context"
"fmt" "fmt"
"regexp" "regexp"
"runtime" "runtime"
@ -137,7 +138,7 @@ func SkipUnlessLocalEphemeralStorageEnabled() {
// SkipIfMissingResource skips if the gvr resource is missing. // SkipIfMissingResource skips if the gvr resource is missing.
func SkipIfMissingResource(dynamicClient dynamic.Interface, gvr schema.GroupVersionResource, namespace string) { func SkipIfMissingResource(dynamicClient dynamic.Interface, gvr schema.GroupVersionResource, namespace string) {
resourceClient := dynamicClient.Resource(gvr).Namespace(namespace) resourceClient := dynamicClient.Resource(gvr).Namespace(namespace)
_, err := resourceClient.List(metav1.ListOptions{}) _, err := resourceClient.List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
// not all resources support list, so we ignore those // not all resources support list, so we ignore those
if apierrors.IsMethodNotSupported(err) || apierrors.IsNotFound(err) || apierrors.IsForbidden(err) { if apierrors.IsMethodNotSupported(err) || apierrors.IsNotFound(err) || apierrors.IsForbidden(err) {

View File

@ -2238,7 +2238,7 @@ func verbsContain(verbs metav1.Verbs, str string) bool {
// deleteObj deletes an Object with the provided client and name. // deleteObj deletes an Object with the provided client and name.
func deleteObj(client dynamic.ResourceInterface, name string) { func deleteObj(client dynamic.ResourceInterface, name string) {
err := client.Delete(name, metav1.DeleteOptions{}) err := client.Delete(context.TODO(), name, metav1.DeleteOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
} }
@ -2246,7 +2246,7 @@ func deleteObj(client dynamic.ResourceInterface, name string) {
// and then verifies that the kubectl get output provides custom columns. Once // and then verifies that the kubectl get output provides custom columns. Once
// the test has completed, it deletes the object. // the test has completed, it deletes the object.
func createObjValidateOutputAndCleanup(namespace string, client dynamic.ResourceInterface, obj *unstructured.Unstructured, resource metav1.APIResource) { func createObjValidateOutputAndCleanup(namespace string, client dynamic.ResourceInterface, obj *unstructured.Unstructured, resource metav1.APIResource) {
_, err := client.Create(obj, metav1.CreateOptions{}) _, err := client.Create(context.TODO(), obj, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
defer deleteObj(client, obj.GetName()) defer deleteObj(client, obj.GetName())

View File

@ -346,7 +346,7 @@ func (d *driverDefinition) GetSnapshotClass(config *testsuites.PerTestConfig) *u
case d.SnapshotClass.FromName: case d.SnapshotClass.FromName:
// Do nothing (just use empty parameters) // Do nothing (just use empty parameters)
case d.SnapshotClass.FromExistingClassName != "": case d.SnapshotClass.FromExistingClassName != "":
snapshotClass, err := f.DynamicClient.Resource(testsuites.SnapshotClassGVR).Get(d.SnapshotClass.FromExistingClassName, metav1.GetOptions{}) snapshotClass, err := f.DynamicClient.Resource(testsuites.SnapshotClassGVR).Get(context.TODO(), d.SnapshotClass.FromExistingClassName, metav1.GetOptions{})
framework.ExpectNoError(err, "getting snapshot class %s", d.SnapshotClass.FromExistingClassName) framework.ExpectNoError(err, "getting snapshot class %s", d.SnapshotClass.FromExistingClassName)
if params, ok := snapshotClass.Object["parameters"].(map[string]interface{}); ok { if params, ok := snapshotClass.Object["parameters"].(map[string]interface{}); ok {

View File

@ -740,12 +740,12 @@ func prepareSnapshotDataSourceForProvisioning(
volume.InjectContent(f, config, nil, "", tests) volume.InjectContent(f, config, nil, "", tests)
ginkgo.By("[Initialize dataSource]creating a SnapshotClass") ginkgo.By("[Initialize dataSource]creating a SnapshotClass")
snapshotClass, err = dynamicClient.Resource(SnapshotClassGVR).Create(snapshotClass, metav1.CreateOptions{}) snapshotClass, err = dynamicClient.Resource(SnapshotClassGVR).Create(context.TODO(), snapshotClass, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("[Initialize dataSource]creating a snapshot") ginkgo.By("[Initialize dataSource]creating a snapshot")
snapshot := getSnapshot(updatedClaim.Name, updatedClaim.Namespace, snapshotClass.GetName()) snapshot := getSnapshot(updatedClaim.Name, updatedClaim.Namespace, snapshotClass.GetName())
snapshot, err = dynamicClient.Resource(SnapshotGVR).Namespace(updatedClaim.Namespace).Create(snapshot, metav1.CreateOptions{}) snapshot, err = dynamicClient.Resource(SnapshotGVR).Namespace(updatedClaim.Namespace).Create(context.TODO(), snapshot, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
WaitForSnapshotReady(dynamicClient, snapshot.GetNamespace(), snapshot.GetName(), framework.Poll, framework.SnapshotCreateTimeout) WaitForSnapshotReady(dynamicClient, snapshot.GetNamespace(), snapshot.GetName(), framework.Poll, framework.SnapshotCreateTimeout)
@ -753,7 +753,7 @@ func prepareSnapshotDataSourceForProvisioning(
ginkgo.By("[Initialize dataSource]checking the snapshot") ginkgo.By("[Initialize dataSource]checking the snapshot")
// Get new copy of the snapshot // Get new copy of the snapshot
snapshot, err = dynamicClient.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Get(snapshot.GetName(), metav1.GetOptions{}) snapshot, err = dynamicClient.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Get(context.TODO(), snapshot.GetName(), metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
group := "snapshot.storage.k8s.io" group := "snapshot.storage.k8s.io"
dataSourceRef := &v1.TypedLocalObjectReference{ dataSourceRef := &v1.TypedLocalObjectReference{
@ -764,7 +764,7 @@ func prepareSnapshotDataSourceForProvisioning(
cleanupFunc := func() { cleanupFunc := func() {
framework.Logf("deleting snapshot %q/%q", snapshot.GetNamespace(), snapshot.GetName()) framework.Logf("deleting snapshot %q/%q", snapshot.GetNamespace(), snapshot.GetName())
err = dynamicClient.Resource(SnapshotGVR).Namespace(updatedClaim.Namespace).Delete(snapshot.GetName(), metav1.DeleteOptions{}) err = dynamicClient.Resource(SnapshotGVR).Namespace(updatedClaim.Namespace).Delete(context.TODO(), snapshot.GetName(), metav1.DeleteOptions{})
if err != nil && !apierrors.IsNotFound(err) { if err != nil && !apierrors.IsNotFound(err) {
framework.Failf("Error deleting snapshot %q. Error: %v", snapshot.GetName(), err) framework.Failf("Error deleting snapshot %q. Error: %v", snapshot.GetName(), err)
} }
@ -776,7 +776,7 @@ func prepareSnapshotDataSourceForProvisioning(
} }
framework.Logf("deleting SnapshotClass %s", snapshotClass.GetName()) framework.Logf("deleting SnapshotClass %s", snapshotClass.GetName())
framework.ExpectNoError(dynamicClient.Resource(SnapshotClassGVR).Delete(snapshotClass.GetName(), metav1.DeleteOptions{})) framework.ExpectNoError(dynamicClient.Resource(SnapshotClassGVR).Delete(context.TODO(), snapshotClass.GetName(), metav1.DeleteOptions{}))
} }
return dataSourceRef, cleanupFunc return dataSourceRef, cleanupFunc

View File

@ -170,22 +170,22 @@ func (s *snapshottableTestSuite) DefineTests(driver TestDriver, pattern testpatt
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("creating a SnapshotClass") ginkgo.By("creating a SnapshotClass")
vsc, err = dc.Resource(SnapshotClassGVR).Create(vsc, metav1.CreateOptions{}) vsc, err = dc.Resource(SnapshotClassGVR).Create(context.TODO(), vsc, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
defer func() { defer func() {
framework.Logf("deleting SnapshotClass %s", vsc.GetName()) framework.Logf("deleting SnapshotClass %s", vsc.GetName())
framework.ExpectNoError(dc.Resource(SnapshotClassGVR).Delete(vsc.GetName(), metav1.DeleteOptions{})) framework.ExpectNoError(dc.Resource(SnapshotClassGVR).Delete(context.TODO(), vsc.GetName(), metav1.DeleteOptions{}))
}() }()
ginkgo.By("creating a snapshot") ginkgo.By("creating a snapshot")
snapshot := getSnapshot(pvc.Name, pvc.Namespace, vsc.GetName()) snapshot := getSnapshot(pvc.Name, pvc.Namespace, vsc.GetName())
snapshot, err = dc.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Create(snapshot, metav1.CreateOptions{}) snapshot, err = dc.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Create(context.TODO(), snapshot, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
defer func() { defer func() {
framework.Logf("deleting snapshot %q/%q", snapshot.GetNamespace(), snapshot.GetName()) framework.Logf("deleting snapshot %q/%q", snapshot.GetNamespace(), snapshot.GetName())
// typically this snapshot has already been deleted // typically this snapshot has already been deleted
err = dc.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Delete(snapshot.GetName(), metav1.DeleteOptions{}) err = dc.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Delete(context.TODO(), snapshot.GetName(), metav1.DeleteOptions{})
if err != nil && !apierrors.IsNotFound(err) { if err != nil && !apierrors.IsNotFound(err) {
framework.Failf("Error deleting snapshot %q. Error: %v", pvc.Name, err) framework.Failf("Error deleting snapshot %q. Error: %v", pvc.Name, err)
} }
@ -195,13 +195,13 @@ func (s *snapshottableTestSuite) DefineTests(driver TestDriver, pattern testpatt
ginkgo.By("checking the snapshot") ginkgo.By("checking the snapshot")
// Get new copy of the snapshot // Get new copy of the snapshot
snapshot, err = dc.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Get(snapshot.GetName(), metav1.GetOptions{}) snapshot, err = dc.Resource(SnapshotGVR).Namespace(snapshot.GetNamespace()).Get(context.TODO(), snapshot.GetName(), metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
// Get the bound snapshotContent // Get the bound snapshotContent
snapshotStatus := snapshot.Object["status"].(map[string]interface{}) snapshotStatus := snapshot.Object["status"].(map[string]interface{})
snapshotContentName := snapshotStatus["boundVolumeSnapshotContentName"].(string) snapshotContentName := snapshotStatus["boundVolumeSnapshotContentName"].(string)
snapshotContent, err := dc.Resource(SnapshotContentGVR).Get(snapshotContentName, metav1.GetOptions{}) snapshotContent, err := dc.Resource(SnapshotContentGVR).Get(context.TODO(), snapshotContentName, metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
snapshotContentSpec := snapshotContent.Object["spec"].(map[string]interface{}) snapshotContentSpec := snapshotContent.Object["spec"].(map[string]interface{})
@ -219,7 +219,7 @@ func (s *snapshottableTestSuite) DefineTests(driver TestDriver, pattern testpatt
func WaitForSnapshotReady(c dynamic.Interface, ns string, snapshotName string, Poll, timeout time.Duration) error { func WaitForSnapshotReady(c dynamic.Interface, ns string, snapshotName string, Poll, timeout time.Duration) error {
framework.Logf("Waiting up to %v for VolumeSnapshot %s to become ready", timeout, snapshotName) framework.Logf("Waiting up to %v for VolumeSnapshot %s to become ready", timeout, snapshotName)
for start := time.Now(); time.Since(start) < timeout; time.Sleep(Poll) { for start := time.Now(); time.Since(start) < timeout; time.Sleep(Poll) {
snapshot, err := c.Resource(SnapshotGVR).Namespace(ns).Get(snapshotName, metav1.GetOptions{}) snapshot, err := c.Resource(SnapshotGVR).Namespace(ns).Get(context.TODO(), snapshotName, metav1.GetOptions{})
if err != nil { if err != nil {
framework.Logf("Failed to get claim %q, retrying in %v. Error: %v", snapshotName, Poll, err) framework.Logf("Failed to get claim %q, retrying in %v. Error: %v", snapshotName, Poll, err)
continue continue

View File

@ -618,7 +618,7 @@ func testResourceCreate(c *testContext) {
ns = testNamespace ns = testNamespace
} }
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkCreateOptions, v1beta1.Create, stubObj.GetName(), ns, true, false, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkCreateOptions, v1beta1.Create, stubObj.GetName(), ns, true, false, true)
_, err = c.client.Resource(c.gvr).Namespace(ns).Create(stubObj, metav1.CreateOptions{}) _, err = c.client.Resource(c.gvr).Namespace(ns).Create(context.TODO(), stubObj, metav1.CreateOptions{})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -633,7 +633,7 @@ func testResourceUpdate(c *testContext) {
} }
obj.SetAnnotations(map[string]string{"update": "true"}) obj.SetAnnotations(map[string]string{"update": "true"})
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true)
_, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Update(obj, metav1.UpdateOptions{}) _, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Update(context.TODO(), obj, metav1.UpdateOptions{})
return err return err
}); err != nil { }); err != nil {
c.t.Error(err) c.t.Error(err)
@ -649,6 +649,7 @@ func testResourcePatch(c *testContext) {
} }
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true)
_, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch( _, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch(
context.TODO(),
obj.GetName(), obj.GetName(),
types.MergePatchType, types.MergePatchType,
[]byte(`{"metadata":{"annotations":{"patch":"true"}}}`), []byte(`{"metadata":{"annotations":{"patch":"true"}}}`),
@ -669,7 +670,7 @@ func testResourceDelete(c *testContext) {
background := metav1.DeletePropagationBackground background := metav1.DeletePropagationBackground
zero := int64(0) zero := int64(0)
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, obj.GetName(), obj.GetNamespace(), false, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, obj.GetName(), obj.GetNamespace(), false, true, true)
err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Delete(obj.GetName(), metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background}) err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Delete(context.TODO(), obj.GetName(), metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -678,7 +679,7 @@ func testResourceDelete(c *testContext) {
// wait for the item to be gone // wait for the item to be gone
err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) { err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) {
obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(obj.GetName(), metav1.GetOptions{}) obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return true, nil return true, nil
} }
@ -704,6 +705,7 @@ func testResourceDelete(c *testContext) {
// because some resource (e.g., events) do not support garbage // because some resource (e.g., events) do not support garbage
// collector finalizers. // collector finalizers.
_, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch( _, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch(
context.TODO(),
obj.GetName(), obj.GetName(),
types.MergePatchType, types.MergePatchType,
[]byte(`{"metadata":{"finalizers":["test/k8s.io"]}}`), []byte(`{"metadata":{"finalizers":["test/k8s.io"]}}`),
@ -713,7 +715,7 @@ func testResourceDelete(c *testContext) {
return return
} }
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, obj.GetName(), obj.GetNamespace(), false, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, obj.GetName(), obj.GetNamespace(), false, true, true)
err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Delete(obj.GetName(), metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background}) err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Delete(context.TODO(), obj.GetName(), metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -722,7 +724,7 @@ func testResourceDelete(c *testContext) {
// wait other finalizers (e.g., crd's customresourcecleanup finalizer) to be removed. // wait other finalizers (e.g., crd's customresourcecleanup finalizer) to be removed.
err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) { err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) {
obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(obj.GetName(), metav1.GetOptions{}) obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -743,6 +745,7 @@ func testResourceDelete(c *testContext) {
// remove the finalizer // remove the finalizer
_, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch( _, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch(
context.TODO(),
obj.GetName(), obj.GetName(),
types.MergePatchType, types.MergePatchType,
[]byte(`{"metadata":{"finalizers":[]}}`), []byte(`{"metadata":{"finalizers":[]}}`),
@ -753,7 +756,7 @@ func testResourceDelete(c *testContext) {
} }
// wait for the item to be gone // wait for the item to be gone
err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) { err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) {
obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(obj.GetName(), metav1.GetOptions{}) obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return true, nil return true, nil
} }
@ -780,6 +783,7 @@ func testResourceDeletecollection(c *testContext) {
// update the object with a label that matches our selector // update the object with a label that matches our selector
_, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch( _, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Patch(
context.TODO(),
obj.GetName(), obj.GetName(),
types.MergePatchType, types.MergePatchType,
[]byte(`{"metadata":{"labels":{"webhooktest":"true"}}}`), []byte(`{"metadata":{"labels":{"webhooktest":"true"}}}`),
@ -793,7 +797,7 @@ func testResourceDeletecollection(c *testContext) {
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, "", obj.GetNamespace(), false, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, "", obj.GetNamespace(), false, true, true)
// delete // delete
err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).DeleteCollection(metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background}, metav1.ListOptions{LabelSelector: "webhooktest=true"}) err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).DeleteCollection(context.TODO(), metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background}, metav1.ListOptions{LabelSelector: "webhooktest=true"})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -801,7 +805,7 @@ func testResourceDeletecollection(c *testContext) {
// wait for the item to be gone // wait for the item to be gone
err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) { err = wait.PollImmediate(100*time.Millisecond, 10*time.Second, func() (bool, error) {
obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(obj.GetName(), metav1.GetOptions{}) obj, err := c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return true, nil return true, nil
} }
@ -845,7 +849,7 @@ func testSubresourceUpdate(c *testContext) {
// If the subresource supports get, fetch that as the object to submit (namespaces/finalize, */scale, etc) // If the subresource supports get, fetch that as the object to submit (namespaces/finalize, */scale, etc)
if sets.NewString(c.resource.Verbs...).Has("get") { if sets.NewString(c.resource.Verbs...).Has("get") {
submitObj, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Get(obj.GetName(), metav1.GetOptions{}, subresources...) submitObj, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Get(context.TODO(), obj.GetName(), metav1.GetOptions{}, subresources...)
if err != nil { if err != nil {
return err return err
} }
@ -858,6 +862,7 @@ func testSubresourceUpdate(c *testContext) {
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true)
_, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Update( _, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Update(
context.TODO(),
submitObj, submitObj,
metav1.UpdateOptions{}, metav1.UpdateOptions{},
subresources..., subresources...,
@ -885,6 +890,7 @@ func testSubresourcePatch(c *testContext) {
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkUpdateOptions, v1beta1.Update, obj.GetName(), obj.GetNamespace(), true, true, true)
_, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Patch( _, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Patch(
context.TODO(),
obj.GetName(), obj.GetName(),
types.MergePatchType, types.MergePatchType,
[]byte(`{"metadata":{"annotations":{"subresourcepatch":"true"}}}`), []byte(`{"metadata":{"annotations":{"subresourcepatch":"true"}}}`),
@ -919,7 +925,7 @@ func testNamespaceDelete(c *testContext) {
zero := int64(0) zero := int64(0)
c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, obj.GetName(), obj.GetNamespace(), false, true, true) c.admissionHolder.expect(c.gvr, gvk(c.resource.Group, c.resource.Version, c.resource.Kind), gvkDeleteOptions, v1beta1.Delete, obj.GetName(), obj.GetNamespace(), false, true, true)
err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Delete(obj.GetName(), metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background}) err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Delete(context.TODO(), obj.GetName(), metav1.DeleteOptions{GracePeriodSeconds: &zero, PropagationPolicy: &background})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -927,7 +933,7 @@ func testNamespaceDelete(c *testContext) {
c.admissionHolder.verify(c.t) c.admissionHolder.verify(c.t)
// do the finalization so the namespace can be deleted // do the finalization so the namespace can be deleted
obj, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(obj.GetName(), metav1.GetOptions{}) obj, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -937,13 +943,13 @@ func testNamespaceDelete(c *testContext) {
c.t.Error(err) c.t.Error(err)
return return
} }
_, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Update(obj, metav1.UpdateOptions{}, "finalize") _, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Update(context.TODO(), obj, metav1.UpdateOptions{}, "finalize")
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
} }
// verify namespace is gone // verify namespace is gone
obj, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(obj.GetName(), metav1.GetOptions{}) obj, err = c.client.Resource(c.gvr).Namespace(obj.GetNamespace()).Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if err == nil || !apierrors.IsNotFound(err) { if err == nil || !apierrors.IsNotFound(err) {
c.t.Errorf("expected namespace to be gone, got %#v, %v", obj, err) c.t.Errorf("expected namespace to be gone, got %#v, %v", obj, err)
} }
@ -993,7 +999,7 @@ func testDeploymentRollback(c *testContext) {
rollbackUnstructuredObj := &unstructured.Unstructured{Object: rollbackUnstructuredBody} rollbackUnstructuredObj := &unstructured.Unstructured{Object: rollbackUnstructuredBody}
rollbackUnstructuredObj.SetName(obj.GetName()) rollbackUnstructuredObj.SetName(obj.GetName())
_, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Create(rollbackUnstructuredObj, metav1.CreateOptions{}, subresources...) _, err = c.client.Resource(gvrWithoutSubresources).Namespace(obj.GetNamespace()).Create(context.TODO(), rollbackUnstructuredObj, metav1.CreateOptions{}, subresources...)
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -1137,7 +1143,7 @@ func testSubresourceProxy(c *testContext) {
func testPruningRandomNumbers(c *testContext) { func testPruningRandomNumbers(c *testContext) {
testResourceCreate(c) testResourceCreate(c)
cr2pant, err := c.client.Resource(c.gvr).Get("fortytwo", metav1.GetOptions{}) cr2pant, err := c.client.Resource(c.gvr).Get(context.TODO(), "fortytwo", metav1.GetOptions{})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -1156,7 +1162,7 @@ func testPruningRandomNumbers(c *testContext) {
func testNoPruningCustomFancy(c *testContext) { func testNoPruningCustomFancy(c *testContext) {
testResourceCreate(c) testResourceCreate(c)
cr2pant, err := c.client.Resource(c.gvr).Get("cr2pant", metav1.GetOptions{}) cr2pant, err := c.client.Resource(c.gvr).Get(context.TODO(), "cr2pant", metav1.GetOptions{})
if err != nil { if err != nil {
c.t.Error(err) c.t.Error(err)
return return
@ -1411,14 +1417,14 @@ func createOrGetResource(client dynamic.Interface, gvr schema.GroupVersionResour
if resource.Namespaced { if resource.Namespaced {
ns = testNamespace ns = testNamespace
} }
obj, err := client.Resource(gvr).Namespace(ns).Get(stubObj.GetName(), metav1.GetOptions{}) obj, err := client.Resource(gvr).Namespace(ns).Get(context.TODO(), stubObj.GetName(), metav1.GetOptions{})
if err == nil { if err == nil {
return obj, nil return obj, nil
} }
if !apierrors.IsNotFound(err) { if !apierrors.IsNotFound(err) {
return nil, err return nil, err
} }
return client.Resource(gvr).Namespace(ns).Create(stubObj, metav1.CreateOptions{}) return client.Resource(gvr).Namespace(ns).Create(context.TODO(), stubObj, metav1.CreateOptions{})
} }
func gvr(group, version, resource string) schema.GroupVersionResource { func gvr(group, version, resource string) schema.GroupVersionResource {

View File

@ -599,7 +599,7 @@ func TestMetadataClient(t *testing.T) {
want: func(t *testing.T) { want: func(t *testing.T) {
ns := "metadata-crd" ns := "metadata-crd"
crclient := dynamicClient.Resource(crdGVR).Namespace(ns) crclient := dynamicClient.Resource(crdGVR).Namespace(ns)
cr, err := crclient.Create(&unstructured.Unstructured{ cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{
Object: map[string]interface{}{ Object: map[string]interface{}{
"apiVersion": "cr.bar.com/v1", "apiVersion": "cr.bar.com/v1",
"kind": "Foo", "kind": "Foo",
@ -727,7 +727,7 @@ func TestMetadataClient(t *testing.T) {
want: func(t *testing.T) { want: func(t *testing.T) {
ns := "metadata-watch-crd" ns := "metadata-watch-crd"
crclient := dynamicClient.Resource(crdGVR).Namespace(ns) crclient := dynamicClient.Resource(crdGVR).Namespace(ns)
cr, err := crclient.Create(&unstructured.Unstructured{ cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{
Object: map[string]interface{}{ Object: map[string]interface{}{
"apiVersion": "cr.bar.com/v1", "apiVersion": "cr.bar.com/v1",
"kind": "Foo", "kind": "Foo",
@ -858,11 +858,11 @@ func TestAPICRDProtobuf(t *testing.T) {
name: "server returns 406 when asking for protobuf for CRDs, which dynamic client does not support", name: "server returns 406 when asking for protobuf for CRDs, which dynamic client does not support",
accept: "application/vnd.kubernetes.protobuf", accept: "application/vnd.kubernetes.protobuf",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-1"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-1"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-1", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-1", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -887,11 +887,11 @@ func TestAPICRDProtobuf(t *testing.T) {
name: "server returns JSON when asking for protobuf and json for CRDs", name: "server returns JSON when asking for protobuf and json for CRDs",
accept: "application/vnd.kubernetes.protobuf,application/json", accept: "application/vnd.kubernetes.protobuf,application/json",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "spec": map[string]interface{}{"field": 1}, "metadata": map[string]interface{}{"name": "test-2"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "spec": map[string]interface{}{"field": 1}, "metadata": map[string]interface{}{"name": "test-2"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-2", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-2", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -916,11 +916,11 @@ func TestAPICRDProtobuf(t *testing.T) {
accept: "application/vnd.kubernetes.protobuf", accept: "application/vnd.kubernetes.protobuf",
subresource: "status", subresource: "status",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-3"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-3"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-3", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"3"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-3", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"3"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -946,11 +946,11 @@ func TestAPICRDProtobuf(t *testing.T) {
accept: "application/vnd.kubernetes.protobuf,application/json", accept: "application/vnd.kubernetes.protobuf,application/json",
subresource: "status", subresource: "status",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "spec": map[string]interface{}{"field": 1}, "metadata": map[string]interface{}{"name": "test-4"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "spec": map[string]interface{}{"field": 1}, "metadata": map[string]interface{}{"name": "test-4"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-4", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"4"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-4", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"4"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1079,11 +1079,11 @@ func TestTransform(t *testing.T) {
name: "v1beta1 verify columns on CRDs in json", name: "v1beta1 verify columns on CRDs in json",
accept: "application/json;as=Table;g=meta.k8s.io;v=v1beta1", accept: "application/json;as=Table;g=meta.k8s.io;v=v1beta1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-1"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-1"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-1", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-1", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1096,11 +1096,11 @@ func TestTransform(t *testing.T) {
name: "v1beta1 verify columns on CRDs in json;stream=watch", name: "v1beta1 verify columns on CRDs in json;stream=watch",
accept: "application/json;stream=watch;as=Table;g=meta.k8s.io;v=v1beta1", accept: "application/json;stream=watch;as=Table;g=meta.k8s.io;v=v1beta1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-2"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-2"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-2", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-2", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1113,11 +1113,11 @@ func TestTransform(t *testing.T) {
name: "v1beta1 verify columns on CRDs in yaml", name: "v1beta1 verify columns on CRDs in yaml",
accept: "application/yaml;as=Table;g=meta.k8s.io;v=v1beta1", accept: "application/yaml;as=Table;g=meta.k8s.io;v=v1beta1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-3"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-3"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-3", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-3", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1230,11 +1230,11 @@ func TestTransform(t *testing.T) {
name: "v1beta1 verify partial metadata object on CRDs in protobuf", name: "v1beta1 verify partial metadata object on CRDs in protobuf",
accept: "application/vnd.kubernetes.protobuf;as=PartialObjectMetadata;g=meta.k8s.io;v=v1beta1", accept: "application/vnd.kubernetes.protobuf;as=PartialObjectMetadata;g=meta.k8s.io;v=v1beta1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-4", "annotations": map[string]string{"test": "0"}}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-4", "annotations": map[string]string{"test": "0"}}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-4", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-4", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1335,11 +1335,11 @@ func TestTransform(t *testing.T) {
name: "v1 verify columns on CRDs in json", name: "v1 verify columns on CRDs in json",
accept: "application/json;as=Table;g=meta.k8s.io;v=v1", accept: "application/json;as=Table;g=meta.k8s.io;v=v1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-5"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-5"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-5", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-5", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1352,11 +1352,11 @@ func TestTransform(t *testing.T) {
name: "v1 verify columns on CRDs in json;stream=watch", name: "v1 verify columns on CRDs in json;stream=watch",
accept: "application/json;stream=watch;as=Table;g=meta.k8s.io;v=v1", accept: "application/json;stream=watch;as=Table;g=meta.k8s.io;v=v1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-6"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-6"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-6", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-6", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1369,11 +1369,11 @@ func TestTransform(t *testing.T) {
name: "v1 verify columns on CRDs in yaml", name: "v1 verify columns on CRDs in yaml",
accept: "application/yaml;as=Table;g=meta.k8s.io;v=v1", accept: "application/yaml;as=Table;g=meta.k8s.io;v=v1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-7"}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-7"}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch("test-7", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), "test-7", types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"
@ -1486,11 +1486,11 @@ func TestTransform(t *testing.T) {
name: "v1 verify partial metadata object on CRDs in protobuf", name: "v1 verify partial metadata object on CRDs in protobuf",
accept: "application/vnd.kubernetes.protobuf;as=PartialObjectMetadata;g=meta.k8s.io;v=v1", accept: "application/vnd.kubernetes.protobuf;as=PartialObjectMetadata;g=meta.k8s.io;v=v1",
object: func(t *testing.T) (metav1.Object, string, string) { object: func(t *testing.T) (metav1.Object, string, string) {
cr, err := crclient.Create(&unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-8", "annotations": map[string]string{"test": "0"}}}}, metav1.CreateOptions{}) cr, err := crclient.Create(context.TODO(), &unstructured.Unstructured{Object: map[string]interface{}{"apiVersion": "cr.bar.com/v1", "kind": "Foo", "metadata": map[string]interface{}{"name": "test-8", "annotations": map[string]string{"test": "0"}}}}, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("unable to create cr: %v", err) t.Fatalf("unable to create cr: %v", err)
} }
if _, err := crclient.Patch(cr.GetName(), types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil { if _, err := crclient.Patch(context.TODO(), cr.GetName(), types.MergePatchType, []byte(`{"metadata":{"annotations":{"test":"1"}}}`), metav1.PatchOptions{}); err != nil {
t.Fatalf("unable to patch cr: %v", err) t.Fatalf("unable to patch cr: %v", err)
} }
return cr, crdGVR.Group, "foos" return cr, crdGVR.Group, "foos"

View File

@ -23,7 +23,7 @@ import (
"testing" "testing"
"time" "time"
"k8s.io/api/core/v1" v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/fields"
@ -71,7 +71,7 @@ func TestDynamicClient(t *testing.T) {
} }
// check dynamic list // check dynamic list
unstructuredList, err := dynamicClient.Resource(resource).Namespace("default").List(metav1.ListOptions{}) unstructuredList, err := dynamicClient.Resource(resource).Namespace("default").List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error when listing pods: %v", err) t.Fatalf("unexpected error when listing pods: %v", err)
} }
@ -90,7 +90,7 @@ func TestDynamicClient(t *testing.T) {
} }
// check dynamic get // check dynamic get
unstruct, err := dynamicClient.Resource(resource).Namespace("default").Get(actual.Name, metav1.GetOptions{}) unstruct, err := dynamicClient.Resource(resource).Namespace("default").Get(context.TODO(), actual.Name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error when getting pod %q: %v", actual.Name, err) t.Fatalf("unexpected error when getting pod %q: %v", actual.Name, err)
} }
@ -105,7 +105,7 @@ func TestDynamicClient(t *testing.T) {
} }
// delete the pod dynamically // delete the pod dynamically
err = dynamicClient.Resource(resource).Namespace("default").Delete(actual.Name, metav1.DeleteOptions{}) err = dynamicClient.Resource(resource).Namespace("default").Delete(context.TODO(), actual.Name, metav1.DeleteOptions{})
if err != nil { if err != nil {
t.Fatalf("unexpected error when deleting pod: %v", err) t.Fatalf("unexpected error when deleting pod: %v", err)
} }
@ -163,7 +163,7 @@ func TestDynamicClientWatch(t *testing.T) {
t.Logf("Created event %#v", got.ObjectMeta) t.Logf("Created event %#v", got.ObjectMeta)
} }
w, err := dynamicClient.Resource(resource).Namespace("default").Watch(metav1.ListOptions{ w, err := dynamicClient.Resource(resource).Namespace("default").Watch(context.TODO(), metav1.ListOptions{
ResourceVersion: rv1, ResourceVersion: rv1,
Watch: true, Watch: true,
FieldSelector: fields.OneTermEqualSelector("metadata.name", "event-9").String(), FieldSelector: fields.OneTermEqualSelector("metadata.name", "event-9").String(),

View File

@ -124,7 +124,7 @@ func TestPDBWithScaleSubresource(t *testing.T) {
}, },
}, },
} }
createdResource, err := resourceClient.Create(resource, metav1.CreateOptions{}) createdResource, err := resourceClient.Create(context.TODO(), resource, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Error(err) t.Error(err)
} }

View File

@ -46,7 +46,7 @@ var kindWhiteList = sets.NewString()
const testNamespace = "dryrunnamespace" const testNamespace = "dryrunnamespace"
func DryRunCreateTest(t *testing.T, rsc dynamic.ResourceInterface, obj *unstructured.Unstructured, gvResource schema.GroupVersionResource) { func DryRunCreateTest(t *testing.T, rsc dynamic.ResourceInterface, obj *unstructured.Unstructured, gvResource schema.GroupVersionResource) {
createdObj, err := rsc.Create(obj, metav1.CreateOptions{DryRun: []string{metav1.DryRunAll}}) createdObj, err := rsc.Create(context.TODO(), obj, metav1.CreateOptions{DryRun: []string{metav1.DryRunAll}})
if err != nil { if err != nil {
t.Fatalf("failed to dry-run create stub for %s: %#v", gvResource, err) t.Fatalf("failed to dry-run create stub for %s: %#v", gvResource, err)
} }
@ -56,21 +56,21 @@ func DryRunCreateTest(t *testing.T, rsc dynamic.ResourceInterface, obj *unstruct
obj.GroupVersionKind()) obj.GroupVersionKind())
} }
if _, err := rsc.Get(obj.GetName(), metav1.GetOptions{}); !apierrors.IsNotFound(err) { if _, err := rsc.Get(context.TODO(), obj.GetName(), metav1.GetOptions{}); !apierrors.IsNotFound(err) {
t.Fatalf("object shouldn't exist: %v", err) t.Fatalf("object shouldn't exist: %v", err)
} }
} }
func DryRunPatchTest(t *testing.T, rsc dynamic.ResourceInterface, name string) { func DryRunPatchTest(t *testing.T, rsc dynamic.ResourceInterface, name string) {
patch := []byte(`{"metadata":{"annotations":{"patch": "true"}}}`) patch := []byte(`{"metadata":{"annotations":{"patch": "true"}}}`)
obj, err := rsc.Patch(name, types.MergePatchType, patch, metav1.PatchOptions{DryRun: []string{metav1.DryRunAll}}) obj, err := rsc.Patch(context.TODO(), name, types.MergePatchType, patch, metav1.PatchOptions{DryRun: []string{metav1.DryRunAll}})
if err != nil { if err != nil {
t.Fatalf("failed to dry-run patch object: %v", err) t.Fatalf("failed to dry-run patch object: %v", err)
} }
if v := obj.GetAnnotations()["patch"]; v != "true" { if v := obj.GetAnnotations()["patch"]; v != "true" {
t.Fatalf("dry-run patched annotations should be returned, got: %v", obj.GetAnnotations()) t.Fatalf("dry-run patched annotations should be returned, got: %v", obj.GetAnnotations())
} }
obj, err = rsc.Get(obj.GetName(), metav1.GetOptions{}) obj, err = rsc.Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to get object: %v", err) t.Fatalf("failed to get object: %v", err)
} }
@ -92,7 +92,7 @@ func getReplicasOrFail(t *testing.T, obj *unstructured.Unstructured) int64 {
} }
func DryRunScalePatchTest(t *testing.T, rsc dynamic.ResourceInterface, name string) { func DryRunScalePatchTest(t *testing.T, rsc dynamic.ResourceInterface, name string) {
obj, err := rsc.Get(name, metav1.GetOptions{}, "scale") obj, err := rsc.Get(context.TODO(), name, metav1.GetOptions{}, "scale")
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return return
} }
@ -102,14 +102,14 @@ func DryRunScalePatchTest(t *testing.T, rsc dynamic.ResourceInterface, name stri
replicas := getReplicasOrFail(t, obj) replicas := getReplicasOrFail(t, obj)
patch := []byte(`{"spec":{"replicas":10}}`) patch := []byte(`{"spec":{"replicas":10}}`)
patchedObj, err := rsc.Patch(name, types.MergePatchType, patch, metav1.PatchOptions{DryRun: []string{metav1.DryRunAll}}, "scale") patchedObj, err := rsc.Patch(context.TODO(), name, types.MergePatchType, patch, metav1.PatchOptions{DryRun: []string{metav1.DryRunAll}}, "scale")
if err != nil { if err != nil {
t.Fatalf("failed to dry-run patch object: %v", err) t.Fatalf("failed to dry-run patch object: %v", err)
} }
if newReplicas := getReplicasOrFail(t, patchedObj); newReplicas != 10 { if newReplicas := getReplicasOrFail(t, patchedObj); newReplicas != 10 {
t.Fatalf("dry-run patch to replicas didn't return new value: %v", newReplicas) t.Fatalf("dry-run patch to replicas didn't return new value: %v", newReplicas)
} }
persistedObj, err := rsc.Get(name, metav1.GetOptions{}, "scale") persistedObj, err := rsc.Get(context.TODO(), name, metav1.GetOptions{}, "scale")
if err != nil { if err != nil {
t.Fatalf("failed to get scale sub-resource") t.Fatalf("failed to get scale sub-resource")
} }
@ -119,7 +119,7 @@ func DryRunScalePatchTest(t *testing.T, rsc dynamic.ResourceInterface, name stri
} }
func DryRunScaleUpdateTest(t *testing.T, rsc dynamic.ResourceInterface, name string) { func DryRunScaleUpdateTest(t *testing.T, rsc dynamic.ResourceInterface, name string) {
obj, err := rsc.Get(name, metav1.GetOptions{}, "scale") obj, err := rsc.Get(context.TODO(), name, metav1.GetOptions{}, "scale")
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
return return
} }
@ -131,14 +131,14 @@ func DryRunScaleUpdateTest(t *testing.T, rsc dynamic.ResourceInterface, name str
if err := unstructured.SetNestedField(obj.Object, int64(10), "spec", "replicas"); err != nil { if err := unstructured.SetNestedField(obj.Object, int64(10), "spec", "replicas"); err != nil {
t.Fatalf("failed to set spec.replicas: %v", err) t.Fatalf("failed to set spec.replicas: %v", err)
} }
updatedObj, err := rsc.Update(obj, metav1.UpdateOptions{DryRun: []string{metav1.DryRunAll}}, "scale") updatedObj, err := rsc.Update(context.TODO(), obj, metav1.UpdateOptions{DryRun: []string{metav1.DryRunAll}}, "scale")
if err != nil { if err != nil {
t.Fatalf("failed to dry-run update scale sub-resource: %v", err) t.Fatalf("failed to dry-run update scale sub-resource: %v", err)
} }
if newReplicas := getReplicasOrFail(t, updatedObj); newReplicas != 10 { if newReplicas := getReplicasOrFail(t, updatedObj); newReplicas != 10 {
t.Fatalf("dry-run update to replicas didn't return new value: %v", newReplicas) t.Fatalf("dry-run update to replicas didn't return new value: %v", newReplicas)
} }
persistedObj, err := rsc.Get(name, metav1.GetOptions{}, "scale") persistedObj, err := rsc.Get(context.TODO(), name, metav1.GetOptions{}, "scale")
if err != nil { if err != nil {
t.Fatalf("failed to get scale sub-resource") t.Fatalf("failed to get scale sub-resource")
} }
@ -151,12 +151,12 @@ func DryRunUpdateTest(t *testing.T, rsc dynamic.ResourceInterface, name string)
var err error var err error
var obj *unstructured.Unstructured var obj *unstructured.Unstructured
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
obj, err = rsc.Get(name, metav1.GetOptions{}) obj, err = rsc.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to retrieve object: %v", err) t.Fatalf("failed to retrieve object: %v", err)
} }
obj.SetAnnotations(map[string]string{"update": "true"}) obj.SetAnnotations(map[string]string{"update": "true"})
obj, err = rsc.Update(obj, metav1.UpdateOptions{DryRun: []string{metav1.DryRunAll}}) obj, err = rsc.Update(context.TODO(), obj, metav1.UpdateOptions{DryRun: []string{metav1.DryRunAll}})
if err == nil || !apierrors.IsConflict(err) { if err == nil || !apierrors.IsConflict(err) {
break break
} }
@ -168,7 +168,7 @@ func DryRunUpdateTest(t *testing.T, rsc dynamic.ResourceInterface, name string)
t.Fatalf("dry-run updated annotations should be returned, got: %v", obj.GetAnnotations()) t.Fatalf("dry-run updated annotations should be returned, got: %v", obj.GetAnnotations())
} }
obj, err = rsc.Get(obj.GetName(), metav1.GetOptions{}) obj, err = rsc.Get(context.TODO(), obj.GetName(), metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to get object: %v", err) t.Fatalf("failed to get object: %v", err)
} }
@ -178,11 +178,11 @@ func DryRunUpdateTest(t *testing.T, rsc dynamic.ResourceInterface, name string)
} }
func DryRunDeleteCollectionTest(t *testing.T, rsc dynamic.ResourceInterface, name string) { func DryRunDeleteCollectionTest(t *testing.T, rsc dynamic.ResourceInterface, name string) {
err := rsc.DeleteCollection(metav1.DeleteOptions{DryRun: []string{metav1.DryRunAll}}, metav1.ListOptions{}) err := rsc.DeleteCollection(context.TODO(), metav1.DeleteOptions{DryRun: []string{metav1.DryRunAll}}, metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatalf("dry-run delete collection failed: %v", err) t.Fatalf("dry-run delete collection failed: %v", err)
} }
obj, err := rsc.Get(name, metav1.GetOptions{}) obj, err := rsc.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to get object: %v", err) t.Fatalf("failed to get object: %v", err)
} }
@ -193,11 +193,11 @@ func DryRunDeleteCollectionTest(t *testing.T, rsc dynamic.ResourceInterface, nam
} }
func DryRunDeleteTest(t *testing.T, rsc dynamic.ResourceInterface, name string) { func DryRunDeleteTest(t *testing.T, rsc dynamic.ResourceInterface, name string) {
err := rsc.Delete(name, metav1.DeleteOptions{DryRun: []string{metav1.DryRunAll}}) err := rsc.Delete(context.TODO(), name, metav1.DeleteOptions{DryRun: []string{metav1.DryRunAll}})
if err != nil { if err != nil {
t.Fatalf("dry-run delete failed: %v", err) t.Fatalf("dry-run delete failed: %v", err)
} }
obj, err := rsc.Get(name, metav1.GetOptions{}) obj, err := rsc.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to get object: %v", err) t.Fatalf("failed to get object: %v", err)
} }
@ -281,7 +281,7 @@ func TestDryRun(t *testing.T) {
DryRunCreateTest(t, rsc, obj, gvResource) DryRunCreateTest(t, rsc, obj, gvResource)
if _, err := rsc.Create(obj, metav1.CreateOptions{}); err != nil { if _, err := rsc.Create(context.TODO(), obj, metav1.CreateOptions{}); err != nil {
t.Fatalf("failed to create stub for %s: %#v", gvResource, err) t.Fatalf("failed to create stub for %s: %#v", gvResource, err)
} }
@ -294,7 +294,7 @@ func TestDryRun(t *testing.T) {
} }
DryRunDeleteTest(t, rsc, name) DryRunDeleteTest(t, rsc, name)
if err = rsc.Delete(obj.GetName(), *metav1.NewDeleteOptions(0)); err != nil { if err = rsc.Delete(context.TODO(), obj.GetName(), *metav1.NewDeleteOptions(0)); err != nil {
t.Fatalf("deleting final object failed: %v", err) t.Fatalf("deleting final object failed: %v", err)
} }
}) })

View File

@ -152,7 +152,7 @@ func TestOverlappingCustomResourceAPIService(t *testing.T) {
// Make sure API requests are still handled by the built-in handler (and return built-in kinds) // Make sure API requests are still handled by the built-in handler (and return built-in kinds)
// Listing v1 succeeds // Listing v1 succeeds
v1DynamicList, err := dynamicClient.Resource(schema.GroupVersionResource{Group: "apiregistration.k8s.io", Version: "v1", Resource: "apiservices"}).List(metav1.ListOptions{}) v1DynamicList, err := dynamicClient.Resource(schema.GroupVersionResource{Group: "apiregistration.k8s.io", Version: "v1", Resource: "apiservices"}).List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -315,7 +315,7 @@ func TestOverlappingCustomResourceCustomResourceDefinition(t *testing.T) {
// Make sure API requests are still handled by the built-in handler (and return built-in kinds) // Make sure API requests are still handled by the built-in handler (and return built-in kinds)
// Listing v1 succeeds // Listing v1 succeeds
v1DynamicList, err := dynamicClient.Resource(schema.GroupVersionResource{Group: "apiextensions.k8s.io", Version: "v1", Resource: "customresourcedefinitions"}).List(metav1.ListOptions{}) v1DynamicList, err := dynamicClient.Resource(schema.GroupVersionResource{Group: "apiextensions.k8s.io", Version: "v1", Resource: "customresourcedefinitions"}).List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -94,7 +94,7 @@ func TestCrossGroupStorage(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
actual, err := resourceClient.Create(obj, metav1.CreateOptions{}) actual, err := resourceClient.Create(context.TODO(), obj, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -108,11 +108,11 @@ func TestCrossGroupStorage(t *testing.T) {
) )
for _, resource := range resources { for _, resource := range resources {
clients[resource.Mapping.Resource] = master.Dynamic.Resource(resource.Mapping.Resource).Namespace(ns) clients[resource.Mapping.Resource] = master.Dynamic.Resource(resource.Mapping.Resource).Namespace(ns)
versionedData[resource.Mapping.Resource], err = clients[resource.Mapping.Resource].Get(name, metav1.GetOptions{}) versionedData[resource.Mapping.Resource], err = clients[resource.Mapping.Resource].Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Fatalf("error finding resource via %s: %v", resource.Mapping.Resource.GroupVersion().String(), err) t.Fatalf("error finding resource via %s: %v", resource.Mapping.Resource.GroupVersion().String(), err)
} }
watches[resource.Mapping.Resource], err = clients[resource.Mapping.Resource].Watch(metav1.ListOptions{ResourceVersion: actual.GetResourceVersion()}) watches[resource.Mapping.Resource], err = clients[resource.Mapping.Resource].Watch(context.TODO(), metav1.ListOptions{ResourceVersion: actual.GetResourceVersion()})
if err != nil { if err != nil {
t.Fatalf("error opening watch via %s: %v", resource.Mapping.Resource.GroupVersion().String(), err) t.Fatalf("error opening watch via %s: %v", resource.Mapping.Resource.GroupVersion().String(), err)
} }
@ -161,7 +161,7 @@ func TestCrossGroupStorage(t *testing.T) {
// Ensure everyone can do a direct get and gets the right version // Ensure everyone can do a direct get and gets the right version
for clientResource, client := range clients { for clientResource, client := range clients {
obj, err := client.Get(name, metav1.GetOptions{}) obj, err := client.Get(context.TODO(), name, metav1.GetOptions{})
if err != nil { if err != nil {
t.Errorf("error looking up %s after persisting %s", clientResource.GroupVersion().String(), resource.Mapping.Resource.GroupVersion().String()) t.Errorf("error looking up %s after persisting %s", clientResource.GroupVersion().String(), resource.Mapping.Resource.GroupVersion().String())
continue continue

View File

@ -276,7 +276,7 @@ func (c *allClient) create(stub, ns string, mapping *meta.RESTMapping, all *[]cl
return err return err
} }
actual, err := resourceClient.Create(obj, metav1.CreateOptions{}) actual, err := resourceClient.Create(context.TODO(), obj, metav1.CreateOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -291,7 +291,7 @@ func (c *allClient) cleanup(all *[]cleanupData) error {
obj := (*all)[i].obj obj := (*all)[i].obj
gvr := (*all)[i].resource gvr := (*all)[i].resource
if err := c.dynamicClient.Resource(gvr).Namespace(obj.GetNamespace()).Delete(obj.GetName(), metav1.DeleteOptions{}); err != nil { if err := c.dynamicClient.Resource(gvr).Namespace(obj.GetNamespace()).Delete(context.TODO(), obj.GetName(), metav1.DeleteOptions{}); err != nil {
return err return err
} }
} }

View File

@ -922,7 +922,7 @@ func TestCustomResourceCascadingDeletion(t *testing.T) {
// Create a custom owner resource. // Create a custom owner resource.
owner := newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("owner")) owner := newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("owner"))
owner, err := resourceClient.Create(owner, metav1.CreateOptions{}) owner, err := resourceClient.Create(context.TODO(), owner, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to create owner resource %q: %v", owner.GetName(), err) t.Fatalf("failed to create owner resource %q: %v", owner.GetName(), err)
} }
@ -932,7 +932,7 @@ func TestCustomResourceCascadingDeletion(t *testing.T) {
dependent := newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("dependent")) dependent := newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("dependent"))
link(t, owner, dependent) link(t, owner, dependent)
dependent, err = resourceClient.Create(dependent, metav1.CreateOptions{}) dependent, err = resourceClient.Create(context.TODO(), dependent, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to create dependent resource %q: %v", dependent.GetName(), err) t.Fatalf("failed to create dependent resource %q: %v", dependent.GetName(), err)
} }
@ -940,21 +940,21 @@ func TestCustomResourceCascadingDeletion(t *testing.T) {
// Delete the owner. // Delete the owner.
foreground := metav1.DeletePropagationForeground foreground := metav1.DeletePropagationForeground
err = resourceClient.Delete(owner.GetName(), metav1.DeleteOptions{PropagationPolicy: &foreground}) err = resourceClient.Delete(context.TODO(), owner.GetName(), metav1.DeleteOptions{PropagationPolicy: &foreground})
if err != nil { if err != nil {
t.Fatalf("failed to delete owner resource %q: %v", owner.GetName(), err) t.Fatalf("failed to delete owner resource %q: %v", owner.GetName(), err)
} }
// Ensure the owner is deleted. // Ensure the owner is deleted.
if err := wait.Poll(1*time.Second, 60*time.Second, func() (bool, error) { if err := wait.Poll(1*time.Second, 60*time.Second, func() (bool, error) {
_, err := resourceClient.Get(owner.GetName(), metav1.GetOptions{}) _, err := resourceClient.Get(context.TODO(), owner.GetName(), metav1.GetOptions{})
return apierrors.IsNotFound(err), nil return apierrors.IsNotFound(err), nil
}); err != nil { }); err != nil {
t.Fatalf("failed waiting for owner resource %q to be deleted", owner.GetName()) t.Fatalf("failed waiting for owner resource %q to be deleted", owner.GetName())
} }
// Ensure the dependent is deleted. // Ensure the dependent is deleted.
_, err = resourceClient.Get(dependent.GetName(), metav1.GetOptions{}) _, err = resourceClient.Get(context.TODO(), dependent.GetName(), metav1.GetOptions{})
if err == nil { if err == nil {
t.Fatalf("expected dependent %q to be deleted", dependent.GetName()) t.Fatalf("expected dependent %q to be deleted", dependent.GetName())
} else { } else {
@ -983,7 +983,7 @@ func TestMixedRelationships(t *testing.T) {
definition, resourceClient := createRandomCustomResourceDefinition(t, apiExtensionClient, dynamicClient, ns.Name) definition, resourceClient := createRandomCustomResourceDefinition(t, apiExtensionClient, dynamicClient, ns.Name)
// Create a custom owner resource. // Create a custom owner resource.
customOwner, err := resourceClient.Create(newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("owner")), metav1.CreateOptions{}) customOwner, err := resourceClient.Create(context.TODO(), newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("owner")), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to create owner: %v", err) t.Fatalf("failed to create owner: %v", err)
} }
@ -1010,7 +1010,7 @@ func TestMixedRelationships(t *testing.T) {
coreOwner.TypeMeta.Kind = "ConfigMap" coreOwner.TypeMeta.Kind = "ConfigMap"
coreOwner.TypeMeta.APIVersion = "v1" coreOwner.TypeMeta.APIVersion = "v1"
link(t, coreOwner, customDependent) link(t, coreOwner, customDependent)
customDependent, err = resourceClient.Create(customDependent, metav1.CreateOptions{}) customDependent, err = resourceClient.Create(context.TODO(), customDependent, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to create dependent: %v", err) t.Fatalf("failed to create dependent: %v", err)
} }
@ -1018,21 +1018,21 @@ func TestMixedRelationships(t *testing.T) {
// Delete the custom owner. // Delete the custom owner.
foreground := metav1.DeletePropagationForeground foreground := metav1.DeletePropagationForeground
err = resourceClient.Delete(customOwner.GetName(), metav1.DeleteOptions{PropagationPolicy: &foreground}) err = resourceClient.Delete(context.TODO(), customOwner.GetName(), metav1.DeleteOptions{PropagationPolicy: &foreground})
if err != nil { if err != nil {
t.Fatalf("failed to delete owner resource %q: %v", customOwner.GetName(), err) t.Fatalf("failed to delete owner resource %q: %v", customOwner.GetName(), err)
} }
// Ensure the owner is deleted. // Ensure the owner is deleted.
if err := wait.Poll(1*time.Second, 60*time.Second, func() (bool, error) { if err := wait.Poll(1*time.Second, 60*time.Second, func() (bool, error) {
_, err := resourceClient.Get(customOwner.GetName(), metav1.GetOptions{}) _, err := resourceClient.Get(context.TODO(), customOwner.GetName(), metav1.GetOptions{})
return apierrors.IsNotFound(err), nil return apierrors.IsNotFound(err), nil
}); err != nil { }); err != nil {
t.Fatalf("failed waiting for owner resource %q to be deleted", customOwner.GetName()) t.Fatalf("failed waiting for owner resource %q to be deleted", customOwner.GetName())
} }
// Ensure the dependent is deleted. // Ensure the dependent is deleted.
_, err = resourceClient.Get(coreDependent.GetName(), metav1.GetOptions{}) _, err = resourceClient.Get(context.TODO(), coreDependent.GetName(), metav1.GetOptions{})
if err == nil { if err == nil {
t.Fatalf("expected dependent %q to be deleted", coreDependent.GetName()) t.Fatalf("expected dependent %q to be deleted", coreDependent.GetName())
} else { } else {
@ -1056,7 +1056,7 @@ func TestMixedRelationships(t *testing.T) {
} }
// Ensure the dependent is deleted. // Ensure the dependent is deleted.
_, err = resourceClient.Get(customDependent.GetName(), metav1.GetOptions{}) _, err = resourceClient.Get(context.TODO(), customDependent.GetName(), metav1.GetOptions{})
if err == nil { if err == nil {
t.Fatalf("expected dependent %q to be deleted", customDependent.GetName()) t.Fatalf("expected dependent %q to be deleted", customDependent.GetName())
} else { } else {
@ -1096,7 +1096,7 @@ func testCRDDeletion(t *testing.T, ctx *testContext, ns *v1.Namespace, definitio
configMapClient := clientSet.CoreV1().ConfigMaps(ns.Name) configMapClient := clientSet.CoreV1().ConfigMaps(ns.Name)
// Create a custom owner resource. // Create a custom owner resource.
owner, err := resourceClient.Create(newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("owner")), metav1.CreateOptions{}) owner, err := resourceClient.Create(context.TODO(), newCRDInstance(definition, ns.Name, names.SimpleNameGenerator.GenerateName("owner")), metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatalf("failed to create owner: %v", err) t.Fatalf("failed to create owner: %v", err)
} }
@ -1120,7 +1120,7 @@ func testCRDDeletion(t *testing.T, ctx *testContext, ns *v1.Namespace, definitio
// Ensure the owner is deleted. // Ensure the owner is deleted.
if err := wait.Poll(1*time.Second, 60*time.Second, func() (bool, error) { if err := wait.Poll(1*time.Second, 60*time.Second, func() (bool, error) {
_, err := resourceClient.Get(owner.GetName(), metav1.GetOptions{}) _, err := resourceClient.Get(context.TODO(), owner.GetName(), metav1.GetOptions{})
return apierrors.IsNotFound(err), nil return apierrors.IsNotFound(err), nil
}); err != nil { }); err != nil {
t.Fatalf("failed waiting for owner %q to be deleted", owner.GetName()) t.Fatalf("failed waiting for owner %q to be deleted", owner.GetName())

View File

@ -144,7 +144,7 @@ func TestCRD(t *testing.T) {
t.Fatalf("Unexpected error: %v", err) t.Fatalf("Unexpected error: %v", err)
} }
fooResource := schema.GroupVersionResource{Group: "cr.bar.com", Version: "v1", Resource: "foos"} fooResource := schema.GroupVersionResource{Group: "cr.bar.com", Version: "v1", Resource: "foos"}
_, err = dynamicClient.Resource(fooResource).Namespace(testNamespace).List(metav1.ListOptions{}) _, err = dynamicClient.Resource(fooResource).Namespace(testNamespace).List(context.TODO(), metav1.ListOptions{})
if err != nil { if err != nil {
t.Errorf("Failed to list foos.cr.bar.com instances: %v", err) t.Errorf("Failed to list foos.cr.bar.com instances: %v", err)
} }

View File

@ -63,7 +63,7 @@ func TestNamespaceCondition(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
_, err = dynamicClient.Resource(corev1.SchemeGroupVersion.WithResource("pods")).Namespace(nsName).Create(podJSON, metav1.CreateOptions{}) _, err = dynamicClient.Resource(corev1.SchemeGroupVersion.WithResource("pods")).Namespace(nsName).Create(context.TODO(), podJSON, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -73,7 +73,7 @@ func TestNamespaceCondition(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
deploymentJSON.SetFinalizers([]string{"custom.io/finalizer"}) deploymentJSON.SetFinalizers([]string{"custom.io/finalizer"})
_, err = dynamicClient.Resource(appsv1.SchemeGroupVersion.WithResource("deployments")).Namespace(nsName).Create(deploymentJSON, metav1.CreateOptions{}) _, err = dynamicClient.Resource(appsv1.SchemeGroupVersion.WithResource("deployments")).Namespace(nsName).Create(context.TODO(), deploymentJSON, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@ -88,7 +88,7 @@ func TestVolumeTemplateNoopUpdate(t *testing.T) {
stsClient := c.Resource(appsv1.SchemeGroupVersion.WithResource("statefulsets")).Namespace("default") stsClient := c.Resource(appsv1.SchemeGroupVersion.WithResource("statefulsets")).Namespace("default")
// Create the statefulset // Create the statefulset
persistedSTS, err := stsClient.Create(sts, metav1.CreateOptions{}) persistedSTS, err := stsClient.Create(context.TODO(), sts, metav1.CreateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -102,7 +102,7 @@ func TestVolumeTemplateNoopUpdate(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
_, err = stsClient.Update(persistedSTS, metav1.UpdateOptions{}) _, err = stsClient.Update(context.TODO(), persistedSTS, metav1.UpdateOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }