Support `one-offs` for firing events only once
- Dominant language
- Go
- Stars
- 1.6k
- Forks
- 631
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 6
Description
**Problem**
As a user I want to fire (schedule) an action (alarm/script) or event once at a particular time. This can be done by emitting an event "once" (ignoring distr. sys challenges for a second) with customizable `data` at a particular point in time.
cc/ @lionelvillard
Links:
- https://twitter.com/embano1/status/1511613644777439234?s=20&t=XN6gjYCX3lXsFWLAaKp-Hg
- https://knative.slack.com/archives/C9JP909F0/p1649248557443529?thread_ts=1649234703.449399&cid=C9JP909F0
**[Persona:](https://github.com/knative/eventing/blob/main/docs/personas.md)**
Developers, DevOps, operators
**Exit Criteria**
A Knative resource which lets a user fire an event once at a particular time.
- Specify `data` for event which should be fired
- Specify `start` (optionally `end`) timeframe for which the event should be valid (TTL?)
**Time Estimate (optional):**
1 week.
**Additional context (optional)**
Evaluated but not meeting exit criteria:
- Knative `PingSource`: follows `cron` pattern, i.e. recurring schedule and not "only once"
- Kubernetes `Job` with [`suspension`](https://kubernetes.io/docs/concepts/workloads/controllers/job/#suspending-a-job) which requires a custom controller (logic) and has not simple UX in my opinion (also is not event-oriented)
Contributor guide
Research direction
Start with docs/personas.md, then compare the existing Knative PingSource behavior with Kubernetes Job suspension and the stated event-oriented requirements. Define the resource and its scheduling semantics around one event, custom data, and optional start/end validity; done means a user can fire an event once at a particular time.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kubernetes
- Domain
- backend, cloud, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100