mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Merge pull request #120119 from Ithrael/fix/kubectl-events-doesnt-filter-events-by-GroupVersion-for-resource-with-full-name
fix(kubectl): kubectl events doesn't filter events by GroupVersion fo…
This commit is contained in:
		@@ -229,6 +229,7 @@ func (o *EventsOptions) Run() error {
 | 
				
			|||||||
	if o.forName != "" {
 | 
						if o.forName != "" {
 | 
				
			||||||
		listOptions.FieldSelector = fields.AndSelectors(
 | 
							listOptions.FieldSelector = fields.AndSelectors(
 | 
				
			||||||
			fields.OneTermEqualSelector("involvedObject.kind", o.forGVK.Kind),
 | 
								fields.OneTermEqualSelector("involvedObject.kind", o.forGVK.Kind),
 | 
				
			||||||
 | 
								fields.OneTermEqualSelector("involvedObject.apiVersion", o.forGVK.GroupVersion().String()),
 | 
				
			||||||
			fields.OneTermEqualSelector("involvedObject.name", o.forName)).String()
 | 
								fields.OneTermEqualSelector("involvedObject.name", o.forName)).String()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if o.Watch {
 | 
						if o.Watch {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,61 @@ run_kubectl_events_tests() {
 | 
				
			|||||||
    kube::test::get_object_assert 'cronjob --namespace=test-events' "{{range.items}}{{ if eq $id_field \"pi\" }}found{{end}}{{end}}:" ':'
 | 
					    kube::test::get_object_assert 'cronjob --namespace=test-events' "{{range.items}}{{ if eq $id_field \"pi\" }}found{{end}}{{end}}:" ':'
 | 
				
			||||||
    ### Create a cronjob in a specific namespace
 | 
					    ### Create a cronjob in a specific namespace
 | 
				
			||||||
    kubectl create cronjob pi --schedule="59 23 31 2 *" --namespace=test-events "--image=$IMAGE_PERL" -- perl -Mbignum=bpi -wle 'print bpi(20)' "${kube_flags[@]:?}"
 | 
					    kubectl create cronjob pi --schedule="59 23 31 2 *" --namespace=test-events "--image=$IMAGE_PERL" -- perl -Mbignum=bpi -wle 'print bpi(20)' "${kube_flags[@]:?}"
 | 
				
			||||||
 | 
					    ### Create a crd
 | 
				
			||||||
 | 
					    kubectl create -f - << __EOF__
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "kind": "CustomResourceDefinition",
 | 
				
			||||||
 | 
					  "apiVersion": "apiextensions.k8s.io/v1",
 | 
				
			||||||
 | 
					  "metadata": {
 | 
				
			||||||
 | 
					    "name": "cronjobs.example.com"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "spec": {
 | 
				
			||||||
 | 
					    "group": "example.com",
 | 
				
			||||||
 | 
					    "scope": "Namespaced",
 | 
				
			||||||
 | 
					    "names": {
 | 
				
			||||||
 | 
					      "plural": "cronjobs",
 | 
				
			||||||
 | 
					      "singular": "cronjob",
 | 
				
			||||||
 | 
					      "kind": "Cronjob"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "versions": [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "name": "v1",
 | 
				
			||||||
 | 
					        "served": true,
 | 
				
			||||||
 | 
					        "storage": true,
 | 
				
			||||||
 | 
					        "schema": {
 | 
				
			||||||
 | 
					          "openAPIV3Schema": {
 | 
				
			||||||
 | 
					            "type": "object",
 | 
				
			||||||
 | 
					            "properties": {
 | 
				
			||||||
 | 
					              "spec": {
 | 
				
			||||||
 | 
					                "type": "object",
 | 
				
			||||||
 | 
					                "properties": {
 | 
				
			||||||
 | 
					                  "image": {"type": "string"}
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					__EOF__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ### Create a example.com/v1 Cronjob in a specific namespace
 | 
				
			||||||
 | 
					    kubectl create -f - << __EOF__
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "kind": "Cronjob",
 | 
				
			||||||
 | 
					  "apiVersion": "example.com/v1",
 | 
				
			||||||
 | 
					  "metadata": {
 | 
				
			||||||
 | 
					    "name": "pi",
 | 
				
			||||||
 | 
					    "namespace": "test-events"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "spec": {
 | 
				
			||||||
 | 
					    "image": "test"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					__EOF__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Post-Condition: assertion object exists
 | 
					    # Post-Condition: assertion object exists
 | 
				
			||||||
    kube::test::get_object_assert 'cronjob/pi --namespace=test-events' "{{$id_field}}" 'pi'
 | 
					    kube::test::get_object_assert 'cronjob/pi --namespace=test-events' "{{$id_field}}" 'pi'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -61,6 +116,10 @@ run_kubectl_events_tests() {
 | 
				
			|||||||
    output_message=$(kubectl events -n test-events --for Cronjob.v1.batch/pi "${kube_flags[@]:?}" 2>&1)
 | 
					    output_message=$(kubectl events -n test-events --for Cronjob.v1.batch/pi "${kube_flags[@]:?}" 2>&1)
 | 
				
			||||||
    kube::test::if_has_string "${output_message}" "Warning" "InvalidSchedule" "Cronjob/pi"
 | 
					    kube::test::if_has_string "${output_message}" "Warning" "InvalidSchedule" "Cronjob/pi"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Post-Condition: events not returns event for fully qualified Cronjob.v1.example.com/pi when --for flag is used
 | 
				
			||||||
 | 
					    output_message=$(kubectl events -n test-events --for Cronjob.v1.example.com/pi "${kube_flags[@]:?}" 2>&1)
 | 
				
			||||||
 | 
					    kube::test::if_has_not_string "${output_message}" "Warning" "InvalidSchedule" "Cronjob/pi"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Post-Condition: events returns event for fully qualified without version Cronjob.batch/pi when --for flag is used
 | 
					    # Post-Condition: events returns event for fully qualified without version Cronjob.batch/pi when --for flag is used
 | 
				
			||||||
    output_message=$(kubectl events -n test-events --for=Cronjob.batch/pi "${kube_flags[@]:?}" 2>&1)
 | 
					    output_message=$(kubectl events -n test-events --for=Cronjob.batch/pi "${kube_flags[@]:?}" 2>&1)
 | 
				
			||||||
    kube::test::if_has_string "${output_message}" "Warning" "InvalidSchedule" "Cronjob/pi"
 | 
					    kube::test::if_has_string "${output_message}" "Warning" "InvalidSchedule" "Cronjob/pi"
 | 
				
			||||||
@@ -92,6 +151,8 @@ run_kubectl_events_tests() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    #Clean up
 | 
					    #Clean up
 | 
				
			||||||
    kubectl delete cronjob pi --namespace=test-events
 | 
					    kubectl delete cronjob pi --namespace=test-events
 | 
				
			||||||
 | 
					    kubectl delete cronjobs.v1.example.com pi --namespace=test-events
 | 
				
			||||||
 | 
					    kubectl delete crd cronjobs.example.com
 | 
				
			||||||
    kubectl delete namespace test-events
 | 
					    kubectl delete namespace test-events
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    set +o nounset
 | 
					    set +o nounset
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user