* De-share the Handler struct in core API
An upcoming PR adds a handler that only applies on one of these paths.
Having fields that don't work seems bad.
This never should have been shared. Lifecycle hooks are like a "write"
while probes are more like a "read". HTTPGet and TCPSocket don't really
make sense as lifecycle hooks (but I can't take that back). When we add
gRPC, it is EXPLICITLY a health check (defined by gRPC) not an arbitrary
RPC - so a probe makes sense but a hook does not.
In the future I can also see adding lifecycle hooks that don't make
sense as probes. E.g. 'sleep' is a common lifecycle request. The only
option is `exec`, which requires having a sleep binary in your image.
* Run update scripts
* Basic scaffolding for kubectl events command
* Simple implementation of 'kubectl events'
* Print event fields
Borrowing code from 'kubectl describe'
* Sort events before printing
* Make output more like 'kubectl get events'
Print namespace if fetching from all
* Refactor: extract print functions
To make it easier to add watch function next.
* Implement watch for new events
Run the list function same as before, so those events come out in order,
then watch from the ResourceVersion after the last event.
* Clear up some lint warnings
* Update description and example text
* refactor: introduce a listOptions variable
* Implement --for option
splitResourceTypeName() function borrowed from cli-runtime because we
need similar behaviour to Builder.ResourceNames(), but applying to
Event.InvolvedObject.
* Add kubectl/pkg/cmd/events to vendor/modules.txt
* Add back cmdutil.Factory
Needed in NewCmdAlpha to construct the 'events' command
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Fix lint
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Make package alias go-cromulent
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Use genericclioptions.RESTClientGetter instead of cmdutil.Factory
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Decode object parameter to GroupVersionKind and name
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Merge two files into one
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Include example for --for option
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Fix inconsistent option name in error message
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Remove unnecessary Validate call
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Use fields from event series
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Support chunking of list of events
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Use watchtools utility to receive watch events
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Split struct into flags and options
Flags represents the inputs from the CLI; options are what the running
command needs. This structure parallels the 'wait' command, and should
be easier to write tests for.
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Add some parameters to usage string
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Do only one of list or watch
We tried to print the list first then start a watch after the last
event, but sometimes the server will return "watch is too old" on that
ResourceVersion.
Instead, if we need to watch just start it from the beginning.
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
* Print message if no events found
Also, if watching, don't print the headings until the first event
arrives.
Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
Split process() function into processEvents() and process().
This is done in anticipation of GetAllEventsSinceThreadUnsafe()
returning an entity using which events can be constructed and
not the events itself.
Subsequently, this commit also moves updating resource version
for initEvents from Watch() to the processEvents() func.
Signed-off-by: Madhav Jivrajani <madhav.jiv@gmail.com>