client-go dynamic client: add context to callers
This commit is contained in:
parent
6fa54d715f
commit
b7c2faf26c
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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",
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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())
|
||||||
|
|
||||||
|
2
test/e2e/storage/external/external.go
vendored
2
test/e2e/storage/external/external.go
vendored
@ -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 {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 {
|
||||||
|
@ -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"
|
||||||
|
@ -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(),
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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())
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user