diff --git a/cmd/compose/events.go b/cmd/compose/events.go index 09e27b10b..181048c40 100644 --- a/cmd/compose/events.go +++ b/cmd/compose/events.go @@ -29,7 +29,9 @@ import ( type eventsOpts struct { *composeOptions - json bool + json bool + since string + until string } func eventsCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service) *cobra.Command { @@ -48,6 +50,8 @@ func eventsCommand(p *ProjectOptions, dockerCli command.Cli, backend api.Service } cmd.Flags().BoolVar(&opts.json, "json", false, "Output events as a stream of json objects") + cmd.Flags().StringVar(&opts.since, "since", "", "Show all events created since timestamp") + cmd.Flags().StringVar(&opts.until, "until", "", "Stream events until this timestamp") return cmd } @@ -59,6 +63,8 @@ func runEvents(ctx context.Context, dockerCli command.Cli, backend api.Service, return backend.Events(ctx, name, api.EventsOptions{ Services: services, + Since: opts.since, + Until: opts.until, Consumer: func(event api.Event) error { if opts.json { marshal, err := json.Marshal(map[string]interface{}{ diff --git a/docs/reference/compose_events.md b/docs/reference/compose_events.md index b71f4c993..066b5cf38 100644 --- a/docs/reference/compose_events.md +++ b/docs/reference/compose_events.md @@ -23,10 +23,12 @@ The events that can be received using this can be seen [here](/reference/cli/doc ### Options -| Name | Type | Default | Description | -|:------------|:-------|:--------|:------------------------------------------| -| `--dry-run` | `bool` | | Execute command in dry run mode | -| `--json` | `bool` | | Output events as a stream of json objects | +| Name | Type | Default | Description | +|:------------|:---------|:--------|:------------------------------------------| +| `--dry-run` | `bool` | | Execute command in dry run mode | +| `--json` | `bool` | | Output events as a stream of json objects | +| `--since` | `string` | | Show all events created since timestamp | +| `--until` | `string` | | Stream events until this timestamp | diff --git a/docs/reference/docker_compose_events.yaml b/docs/reference/docker_compose_events.yaml index fe6d4216c..7c4cb4297 100644 --- a/docs/reference/docker_compose_events.yaml +++ b/docs/reference/docker_compose_events.yaml @@ -34,6 +34,24 @@ options: experimentalcli: false kubernetes: false swarm: false + - option: since + value_type: string + description: Show all events created since timestamp + deprecated: false + hidden: false + experimental: false + experimentalcli: false + kubernetes: false + swarm: false + - option: until + value_type: string + description: Stream events until this timestamp + deprecated: false + hidden: false + experimental: false + experimentalcli: false + kubernetes: false + swarm: false inherited_options: - option: dry-run value_type: bool diff --git a/pkg/api/api.go b/pkg/api/api.go index d3e8f0e9f..359893bb3 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -398,6 +398,8 @@ type AttachOptions struct { type EventsOptions struct { Services []string Consumer func(event Event) error + Since string + Until string } // Event is a container runtime event served by Events API diff --git a/pkg/compose/events.go b/pkg/compose/events.go index 4d6b913c4..7ea8dc326 100644 --- a/pkg/compose/events.go +++ b/pkg/compose/events.go @@ -32,6 +32,8 @@ func (s *composeService) Events(ctx context.Context, projectName string, options projectName = strings.ToLower(projectName) evts, errors := s.apiClient().Events(ctx, events.ListOptions{ Filters: filters.NewArgs(projectFilter(projectName)), + Since: options.Since, + Until: options.Until, }) for { select {