Skip to content

Commit

Permalink
feat(cli): add time range flags to events list cmd
Browse files Browse the repository at this point in the history
We are adding two flags to the `events list` command to provide a custom
time range:
```
$ lacework event list --end "2020-06-19T00:00:00Z" --start "2020-06-13T00:00:00Z"
```

If either a start or an end time is provided, both flags are required.

Signed-off-by: Salim Afiune Maya <[email protected]>
  • Loading branch information
afiune committed Jun 25, 2020
1 parent 2b0d6f5 commit e68dd4c
Showing 1 changed file with 63 additions and 2 deletions.
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, err := parseStartAndEndTime()
if err != nil {
return errors.Wrap(err, "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
}

0 comments on commit e68dd4c

Please sign in to comment.