mirror of
https://github.com/kubernetes/kubectl.git
synced 2026-04-13 21:06:37 -04:00
* 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> Kubernetes-commit: a988182f595af64bc007ba9162509e089c36fd89
50 lines
1.8 KiB
Go
50 lines
1.8 KiB
Go
/*
|
|
Copyright 2017 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"github.com/spf13/cobra"
|
|
|
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
|
"k8s.io/kubectl/pkg/cmd/events"
|
|
cmdutil "k8s.io/kubectl/pkg/cmd/util"
|
|
"k8s.io/kubectl/pkg/util/i18n"
|
|
"k8s.io/kubectl/pkg/util/templates"
|
|
)
|
|
|
|
// NewCmdAlpha creates a command that acts as an alternate root command for features in alpha
|
|
func NewCmdAlpha(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "alpha",
|
|
Short: i18n.T("Commands for features in alpha"),
|
|
Long: templates.LongDesc(i18n.T("These commands correspond to alpha features that are not enabled in Kubernetes clusters by default.")),
|
|
}
|
|
|
|
// Alpha commands should be added here. As features graduate from alpha they should move
|
|
// from here to the CommandGroups defined by NewKubeletCommand() in cmd.go.
|
|
cmd.AddCommand(events.NewCmdEvents(f, streams))
|
|
|
|
// NewKubeletCommand() will hide the alpha command if it has no subcommands. Overriding
|
|
// the help function ensures a reasonable message if someone types the hidden command anyway.
|
|
if !cmd.HasAvailableSubCommands() {
|
|
cmd.SetHelpFunc(func(*cobra.Command, []string) {
|
|
cmd.Println(i18n.T("No alpha commands are available in this version of kubectl"))
|
|
})
|
|
}
|
|
|
|
return cmd
|
|
}
|