-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
list_event_for_all_namespaces_with_http_info raises ValueError due to None value for event_time if there are events #1616
Comments
/assign |
This is likely similar to kubernetes-client/gen#52. EventTime is marked as required in the openapi spec but kube-apiserver doesn't always set/validate it. The fix is to mark the field as optional in https://github.com/kubernetes/kubernetes/blob/ae550b62da15ca5fe4983c79aaa6b2a39e3e711a/staging/src/k8s.io/api/events/v1/types.go#L41-L42 /unassign |
@roycaihw: GuidelinesPlease ensure that the issue body includes answers to the following questions:
For more details on the requirements of such an issue, please see here and ensure that they are met. If this request no longer meets these requirements, the label can be removed In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
If this gets marked as optional will this then propagate to the swagger? And when does that happen; will there be a patch release? How does that address the issue I found of default configs not being applied when no configuration object is supplied to a constructor? Isn't that incorrect? Or else how are we to use the default config? |
Yes, the Go type is the source of truth for the swagger in k/k
Let's fix the issue at HEAD first. Then we can do a patch in this client
It was a typo in the upstream generator: OpenAPITools/openapi-generator#6850
Not sure I follow. The default config is being used here (and used by EventsV1Api here). You can set the default config using |
I am also encountering this issue. One note on this comment by @roycaihw :
@roycaihw the default config is not being used on the models. For example:
When this code is changed to |
@benholtzmansmith Ah that makes sense. @haxsaw Sorry I thought the models would use the config from the API client and misread your comment. Unable to disable client side validation is a regression. It has been fixed in upstream code generator: OpenAPITools/openapi-generator#8500. We should upgrade the generator version we use to pick up the fix. |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
I have implemented this workaound while finxing this issue in our project for those who are interested: def _workaround_client_validation_side():
# Unable to disable client side validation is a regression.
# Kubernetes considers this fields required, but it is not
# implemented yet for any controller.
# It has been fixed in upstream code generator by the PR:
# https://github.com/OpenAPITools/openapi-generator/pull/8500 .
# The issue is not processed yet:
# https://github.com/kubernetes-client/python/issues/1616
# We hack his value and let our event class to get the
# good value.
if "event_time" in EventsV1Event.attribute_map:
EventsV1Event.attribute_map["event_time"] = "deprecatedLastTimestamp" |
…eper WIP Add a route /events/<context> to get all the events generated by Gatekeeper in its namespace. This is useful to get in realtime violatoins to constraints for requests that get rejected and won't appear in the audit logs. This depends on an alpha feature of Gatekeeper: https://open-policy-agent.github.io/gatekeeper/website/docs/customize-startup/#alpha-emit-admission-and-audit-events Note that this is blocked by an issue in the Kubernetes client libray that explodes when the event_time is null: kubernetes-client/python#1616
Is there any plan to fix this? Is there anything I can do to get this fixed? |
What happened (please include outputs or screenshots):
If you try to fetch events when there aren't any, the above mentioned method returns just fine. But if there are events, then an exception is raised in the internal setter for the 'event_time' property as the value being read in from K8s is None:
or, as it happens:
It may be the case that turning off client_side_validation will fix this, however there seem to be problems in this regard as well. In issue #1353 there was a mention of a breaking change (in release 1.12?) that involved setting up default config where client_side_validation can supposedly be turned off, but setting default configs don't seem to have any effect. Here's the code inside of the
__init__()
of EventsV1Api (local_vars_configuration is a parameter):So if you don't pass in a value of local_vars_configuration, you get a brand-new Configuration object in which client_side_validation is True. One would have thought that the assignment to local_vars_configuration should have been:
which would have kind of lined up with the notes for release 12.0.1. More curiously, if you have a look into the
__init__()
for Configuration itself, you find this comment before setting client_side_validation:So the comment implies that there shouldn't be any client side validation by default, but the code does the opposite.
This is kind of feeling like a regression.
What you expected to happen:
I was expecting that default behaviour wouldn't raise an exception for fetching regular event data from K8s (or in my case, k3s). My tests don't cover every resource type that could be fetched, so there may be other similar fields lurking within the library.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
In my dev environment I use k3s, which may be the source for the empty event_time (versions below). Nonetheless, there's clearly something wrong in how default Configurations are being handled.
As this is impacting objects that are being built inside of the K8s Python client itself, it isn't clear that there's a feasible workaround that could involve the user supplying the config object since it appears the default config isn't used and there's no way to pass in a config into list_event_for_all_namespaces_with_http_info().
Environment:
kubectl version
): Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.8", GitCommit:"9f2892aab98fe339f3bd70e3c470144299398ace", GitTreeState:"clean", BuildDate:"2020-08-13T16:12:48Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.5+k3s1", GitCommit:"355fff3017b06cde44dbd879408a3a6826fa7125", GitTreeState:"clean", BuildDate:"2021-03-31T06:21:52Z", GoVersion:"go1.15.10", Compiler:"gc", Platform:"linux/amd64"}
python --version
): 3.810pip list | grep kubernetes
): 19.15.0The text was updated successfully, but these errors were encountered: