diff --git a/pkg/kubectl/cmd/util/crdfinder.go b/pkg/kubectl/cmd/util/crdfinder.go index d3674ae160..aaf309dca4 100644 --- a/pkg/kubectl/cmd/util/crdfinder.go +++ b/pkg/kubectl/cmd/util/crdfinder.go @@ -17,6 +17,7 @@ limitations under the License. package util import ( + "fmt" "reflect" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -34,10 +35,10 @@ func CRDFromDynamic(client dynamic.Interface) CRDGetter { list, err := client.Resource(schema.GroupVersionResource{ Group: "apiextensions.k8s.io", Version: "v1beta1", - Resource: "curstomresourcedefinitions", + Resource: "customresourcedefinitions", }).List(metav1.ListOptions{}) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to list CRDs: %v", err) } if list == nil { return nil, nil diff --git a/test/cmd/apply.sh b/test/cmd/apply.sh index 58c90902c6..dabc0ff66f 100755 --- a/test/cmd/apply.sh +++ b/test/cmd/apply.sh @@ -93,6 +93,37 @@ run_kubectl_apply_tests() { # clean-up kubectl delete -f hack/testdata/pod.yaml "${kube_flags[@]}" + ## kubectl apply dry-run on CR + # Create CRD + kubectl "${kube_flags_with_token[@]}" create -f - << __EOF__ +{ + "kind": "CustomResourceDefinition", + "apiVersion": "apiextensions.k8s.io/v1beta1", + "metadata": { + "name": "resources.mygroup.example.com" + }, + "spec": { + "group": "mygroup.example.com", + "version": "v1alpha1", + "scope": "Namespaced", + "names": { + "plural": "resources", + "singular": "resource", + "kind": "Kind", + "listKind": "KindList" + } + } +} +__EOF__ + + # Dry-run create the CR + kubectl "${kube_flags[@]}" apply --server-dry-run -f hack/testdata/CRD/resource.yaml "${kube_flags[@]}" + # Make sure that the CR doesn't exist + ! kubectl "${kube_flags[@]}" get resource/myobj + + # clean-up + kubectl "${kube_flags[@]}" delete customresourcedefinition resources.mygroup.example.com + ## kubectl apply --prune # Pre-Condition: no POD exists kube::test::get_object_assert pods "{{range.items}}{{$id_field}}:{{end}}" ''