Skip to content
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

feat(cli): add time range flags to events list cmd #154

Merged
merged 2 commits into from
Jun 25, 2020
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 63 additions & 2 deletions cli/cmd/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ import (
)

var (
eventsCmdState = struct {
// start time for listing events
Start string

// end time for listing events
End string
}{}

// easily add or remove borders to all event details tables
eventDetailsBorder = true

Expand All @@ -54,8 +62,26 @@ events from the last 7 days, but it is possible to specify a different
time range.`,
Args: cobra.NoArgs,
RunE: func(_ *cobra.Command, _ []string) error {
cli.Log.Info("requesting list of events")
response, err := cli.LwApi.Events.List()

var (
response api.EventsResponse
err error
)
if eventsCmdState.Start != "" || eventsCmdState.End != "" {
start, end, errT := parseStartAndEndTime()
if errT != nil {
return errors.Wrap(errT, "unable to parse time range")
}

cli.Log.Infow("requesting list of events from custom time range",
"start_time", start, "end_time", end,
)
response, err = cli.LwApi.Events.ListRange(start, end)
} else {
cli.Log.Info("requesting list of events from the last 7 days")
response, err = cli.LwApi.Events.List()
}

if err != nil {
return errors.Wrap(err, "unable to get events")
}
Expand Down Expand Up @@ -117,6 +143,16 @@ func init() {

// add sub-commands to the event command
eventCmd.AddCommand(eventListCmd)

// add start flag to events list command
eventListCmd.Flags().StringVar(&eventsCmdState.Start,
"start", "", "start of the time range in UTC (format: yyyy-MM-ddTHH:mm:ssZ)",
)
// add end flag to events list command
eventListCmd.Flags().StringVar(&eventsCmdState.End,
"end", "", "end of the time range in UTC (format: yyyy-MM-ddTHH:mm:ssZ)",
)

eventCmd.AddCommand(eventShowCmd)
}

Expand Down Expand Up @@ -863,3 +899,28 @@ func eventMachineEntitiesTable(machines []api.EventMachineEntity) string {

return r.String()
}

// parse the start and end time provided by the user
func parseStartAndEndTime() (start time.Time, end time.Time, err error) {
if eventsCmdState.Start == "" {
err = errors.New("when providing an end time, start time should be provided (--start)")
return
}
start, err = time.Parse(time.RFC3339, eventsCmdState.Start)
if err != nil {
err = errors.Wrap(err, "unable to parse start time")
return
}

if eventsCmdState.End == "" {
err = errors.New("when providing a start time, end time should be provided (--end)")
return
}
end, err = time.Parse(time.RFC3339, eventsCmdState.End)
if err != nil {
err = errors.Wrap(err, "unable to parse end time")
return
}

return
}