mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
add apply cmd tests for TPR
This commit is contained in:
parent
ad7ffd79c3
commit
710d904998
@ -1259,17 +1259,7 @@ __EOF__
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
# Test that we can create a new resource of type Foo
|
||||
kubectl "${kube_flags[@]}" create -f - "${kube_flags[@]}" << __EOF__
|
||||
{
|
||||
"kind": "Foo",
|
||||
"apiVersion": "company.com/v1",
|
||||
"metadata": {
|
||||
"name": "test"
|
||||
},
|
||||
"some-field": "field1",
|
||||
"other-field": "field2"
|
||||
}
|
||||
__EOF__
|
||||
kubectl "${kube_flags[@]}" create -f hack/testdata/TPR/foo.yaml "${kube_flags[@]}"
|
||||
|
||||
# Test that we can list this new third party resource
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test:'
|
||||
@ -1291,10 +1281,10 @@ __EOF__
|
||||
kubectl "${kube_flags[@]}" get foos/test -o json
|
||||
kubectl "${kube_flags[@]}" get foos -o yaml
|
||||
kubectl "${kube_flags[@]}" get foos/test -o yaml
|
||||
kubectl "${kube_flags[@]}" get foos -o "jsonpath={.items[*].some-field}" --allow-missing-template-keys=false
|
||||
kubectl "${kube_flags[@]}" get foos/test -o "jsonpath={.some-field}" --allow-missing-template-keys=false
|
||||
kubectl "${kube_flags[@]}" get foos -o "go-template={{range .items}}{{index . \"some-field\"}}{{end}}" --allow-missing-template-keys=false
|
||||
kubectl "${kube_flags[@]}" get foos/test -o "go-template={{index . \"some-field\"}}" --allow-missing-template-keys=false
|
||||
kubectl "${kube_flags[@]}" get foos -o "jsonpath={.items[*].someField}" --allow-missing-template-keys=false
|
||||
kubectl "${kube_flags[@]}" get foos/test -o "jsonpath={.someField}" --allow-missing-template-keys=false
|
||||
kubectl "${kube_flags[@]}" get foos -o "go-template={{range .items}}{{.someField}}{{end}}" --allow-missing-template-keys=false
|
||||
kubectl "${kube_flags[@]}" get foos/test -o "go-template={{.someField}}" --allow-missing-template-keys=false
|
||||
|
||||
# Test patching
|
||||
kube::log::status "Testing ThirdPartyResource patching"
|
||||
@ -1348,17 +1338,7 @@ __EOF__
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
# Test that we can create a new resource of type Bar
|
||||
kubectl "${kube_flags[@]}" create -f - "${kube_flags[@]}" << __EOF__
|
||||
{
|
||||
"kind": "Bar",
|
||||
"apiVersion": "company.com/v1",
|
||||
"metadata": {
|
||||
"name": "test"
|
||||
},
|
||||
"some-field": "field1",
|
||||
"other-field": "field2"
|
||||
}
|
||||
__EOF__
|
||||
kubectl "${kube_flags[@]}" create -f hack/testdata/TPR/bar.yaml "${kube_flags[@]}"
|
||||
|
||||
# Test that we can list this new third party resource
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" 'test:'
|
||||
@ -1369,6 +1349,136 @@ __EOF__
|
||||
# Make sure it's gone
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
# Test that we can create single item via apply
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo.yaml
|
||||
|
||||
# Test that we have create a foo named test
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test:'
|
||||
|
||||
# Test that the field has the expected value
|
||||
kube::test::get_object_assert foos/test '{{.someField}}' 'field1'
|
||||
|
||||
# Test that apply an empty patch doesn't change fields
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo.yaml
|
||||
|
||||
# Test that the field has the same value after re-apply
|
||||
kube::test::get_object_assert foos/test '{{.someField}}' 'field1'
|
||||
|
||||
# Test that apply has updated the subfield
|
||||
kube::test::get_object_assert foos/test '{{.nestedField.someSubfield}}' 'subfield1'
|
||||
|
||||
# Update a subfield and then apply the change
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo-updated-subfield.yaml
|
||||
|
||||
# Test that apply has updated the subfield
|
||||
kube::test::get_object_assert foos/test '{{.nestedField.someSubfield}}' 'modifiedSubfield'
|
||||
|
||||
# Test that the field has the expected value
|
||||
kube::test::get_object_assert foos/test '{{.nestedField.otherSubfield}}' 'subfield2'
|
||||
|
||||
# Delete a subfield and then apply the change
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo-deleted-subfield.yaml
|
||||
|
||||
# Test that apply has deleted the field
|
||||
kube::test::get_object_assert foos/test '{{.nestedField.otherSubfield}}' '<no value>'
|
||||
|
||||
# Test that the field does not exist
|
||||
kube::test::get_object_assert foos/test '{{.nestedField.newSubfield}}' '<no value>'
|
||||
|
||||
# Add a field and then apply the change
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/foo-added-subfield.yaml
|
||||
|
||||
# Test that apply has added the field
|
||||
kube::test::get_object_assert foos/test '{{.nestedField.newSubfield}}' 'subfield3'
|
||||
|
||||
# Delete the resource
|
||||
kubectl "${kube_flags[@]}" delete -f hack/testdata/TPR/foo.yaml
|
||||
|
||||
# Make sure it's gone
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
# Test that we can create list via apply
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list.yaml
|
||||
|
||||
# Test that we have create a foo and a bar from a list
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test-list:'
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" 'test-list:'
|
||||
|
||||
# Test that the field has the expected value
|
||||
kube::test::get_object_assert foos/test-list '{{.someField}}' 'field1'
|
||||
kube::test::get_object_assert bars/test-list '{{.someField}}' 'field1'
|
||||
|
||||
# Test that re-apply an list doesn't change anything
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list.yaml
|
||||
|
||||
# Test that the field has the same value after re-apply
|
||||
kube::test::get_object_assert foos/test-list '{{.someField}}' 'field1'
|
||||
kube::test::get_object_assert bars/test-list '{{.someField}}' 'field1'
|
||||
|
||||
# Test that the fields have the expected value
|
||||
kube::test::get_object_assert foos/test-list '{{.someField}}' 'field1'
|
||||
kube::test::get_object_assert bars/test-list '{{.someField}}' 'field1'
|
||||
|
||||
# Update fields and then apply the change
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list-updated-field.yaml
|
||||
|
||||
# Test that apply has updated the fields
|
||||
kube::test::get_object_assert foos/test-list '{{.someField}}' 'modifiedField'
|
||||
kube::test::get_object_assert bars/test-list '{{.someField}}' 'modifiedField'
|
||||
|
||||
# Test that the field has the expected value
|
||||
kube::test::get_object_assert foos/test-list '{{.otherField}}' 'field2'
|
||||
kube::test::get_object_assert bars/test-list '{{.otherField}}' 'field2'
|
||||
|
||||
# Delete fields and then apply the change
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list-deleted-field.yaml
|
||||
|
||||
# Test that apply has deleted the fields
|
||||
kube::test::get_object_assert foos/test-list '{{.otherField}}' '<no value>'
|
||||
kube::test::get_object_assert bars/test-list '{{.otherField}}' '<no value>'
|
||||
|
||||
# Test that the fields does not exist
|
||||
kube::test::get_object_assert foos/test-list '{{.newField}}' '<no value>'
|
||||
kube::test::get_object_assert bars/test-list '{{.newField}}' '<no value>'
|
||||
|
||||
# Add a field and then apply the change
|
||||
kubectl "${kube_flags[@]}" apply -f hack/testdata/TPR/multi-tpr-list-added-field.yaml
|
||||
|
||||
# Test that apply has added the field
|
||||
kube::test::get_object_assert foos/test-list '{{.newField}}' 'field3'
|
||||
kube::test::get_object_assert bars/test-list '{{.newField}}' 'field3'
|
||||
|
||||
# Delete the resource
|
||||
kubectl "${kube_flags[@]}" delete -f hack/testdata/TPR/multi-tpr-list.yaml
|
||||
|
||||
# Make sure it's gone
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
## kubectl apply --prune
|
||||
# Test that no foo or bar exist
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
# apply --prune on foo.yaml that has foo/test
|
||||
kubectl apply --prune -l pruneGroup=true -f hack/testdata/TPR/foo.yaml "${kube_flags[@]}" --prune-whitelist=company.com/v1/Foo --prune-whitelist=company.com/v1/Bar
|
||||
# check right tprs exist
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" 'test:'
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
# apply --prune on bar.yaml that has bar/test
|
||||
kubectl apply --prune -l pruneGroup=true -f hack/testdata/TPR/bar.yaml "${kube_flags[@]}" --prune-whitelist=company.com/v1/Foo --prune-whitelist=company.com/v1/Bar
|
||||
# check right tprs exist
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" 'test:'
|
||||
|
||||
# Delete the resource
|
||||
kubectl "${kube_flags[@]}" delete -f hack/testdata/TPR/bar.yaml
|
||||
|
||||
# Make sure it's gone
|
||||
kube::test::get_object_assert foos "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
kube::test::get_object_assert bars "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
|
||||
# teardown
|
||||
kubectl delete thirdpartyresources foo.company.com "${kube_flags[@]}"
|
||||
kubectl delete thirdpartyresources bar.company.com "${kube_flags[@]}"
|
||||
|
8
hack/testdata/TPR/bar.yaml
vendored
Normal file
8
hack/testdata/TPR/bar.yaml
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
kind: Bar
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: field1
|
||||
otherField: field2
|
11
hack/testdata/TPR/foo-added-subfield.yaml
vendored
Normal file
11
hack/testdata/TPR/foo-added-subfield.yaml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: field1
|
||||
otherField: field2
|
||||
nestedField:
|
||||
someSubfield: modifiedSubfield
|
||||
newSubfield: subfield3
|
10
hack/testdata/TPR/foo-deleted-subfield.yaml
vendored
Normal file
10
hack/testdata/TPR/foo-deleted-subfield.yaml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: field1
|
||||
otherField: field2
|
||||
nestedField:
|
||||
someSubfield: modifiedSubfield
|
11
hack/testdata/TPR/foo-updated-subfield.yaml
vendored
Normal file
11
hack/testdata/TPR/foo-updated-subfield.yaml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: field1
|
||||
otherField: field2
|
||||
nestedField:
|
||||
someSubfield: modifiedSubfield
|
||||
otherSubfield: subfield2
|
11
hack/testdata/TPR/foo.yaml
vendored
Normal file
11
hack/testdata/TPR/foo.yaml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: field1
|
||||
otherField: field2
|
||||
nestedField:
|
||||
someSubfield: subfield1
|
||||
otherSubfield: subfield2
|
19
hack/testdata/TPR/multi-tpr-list-added-field.yaml
vendored
Normal file
19
hack/testdata/TPR/multi-tpr-list-added-field.yaml
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: List
|
||||
items:
|
||||
- kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: modifiedField
|
||||
newField: field3
|
||||
- kind: Bar
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: modifiedField
|
||||
newField: field3
|
17
hack/testdata/TPR/multi-tpr-list-deleted-field.yaml
vendored
Normal file
17
hack/testdata/TPR/multi-tpr-list-deleted-field.yaml
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
apiVersion: v1
|
||||
kind: List
|
||||
items:
|
||||
- kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: modifiedField
|
||||
- kind: Bar
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: modifiedField
|
19
hack/testdata/TPR/multi-tpr-list-updated-field.yaml
vendored
Normal file
19
hack/testdata/TPR/multi-tpr-list-updated-field.yaml
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: List
|
||||
items:
|
||||
- kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: modifiedField
|
||||
otherField: field2
|
||||
- kind: Bar
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: modifiedField
|
||||
otherField: field2
|
19
hack/testdata/TPR/multi-tpr-list.yaml
vendored
Normal file
19
hack/testdata/TPR/multi-tpr-list.yaml
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: List
|
||||
items:
|
||||
- kind: Foo
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: field1
|
||||
otherField: field2
|
||||
- kind: Bar
|
||||
apiVersion: company.com/v1
|
||||
metadata:
|
||||
name: test-list
|
||||
labels:
|
||||
pruneGroup: "true"
|
||||
someField: field1
|
||||
otherField: field2
|
Loading…
Reference in New Issue
Block a user