kubermatic / kubermatic/dashboard
Expires field rejects retention periods longer than 99 hours### What happened
- Dominant language
- Go
- Stars
- 50
- Forks
- 73
- Avg merge
- 2d 22h
- Merged PRs (30d)
- 31
Description
### What happened
When creating a cluster backup or a cluster backup schedule, the "Expires In" field only accepts an hour component of at most two digits. Values such as `120h0m0s` or `168h0m0s` are rejected with a format error, while `99h0m0s` is accepted. The field hint documents the format as `HHhMMmSSs` without stating any upper bound, so the restriction is not discoverable before the error appears.
Root cause: the frontend format validation for this field caps the hour component at two digits, which implicitly caps the maximum retention at 99 hours.
### Expected behavior
The "Expires In" field should accept duration values with an hour component of any reasonable length, so retention periods spanning multiple days (for example 5 days or 7 days) can be configured. Whatever limit does apply should be stated in the field hint and enforced consistently with what the backend accepts.
### How to reproduce
1. Open a user cluster and navigate to the Cluster Backups section.
2. Start creating a backup schedule (the same dialog is used for one-off backups).
3. Fill in the required fields, and enter `99h0m0s` in "Expires In" — accepted.
4. Change "Expires In" to `120h0m0s` or `168h0m0s`.
5. The field is marked invalid with a format error and the form cannot be submitted.
### Sample payload (reproducer)
Values tested in the "Expires In" field:
- `99h0m0s` → accepted
- `120h0m0s` → rejected
- `168h0m0s` → rejected
### Relevant logs / error messages
Inline field error shown in the dialog:
> Time must be in the format HHhMMmSSs (e.g., 24h10m10s).
No backend request is issued — the form is blocked client-side.
### Environment
- UI Version: 2.31
### Current workaround
Set the retention to 99 hours or less, or leave the field empty to fall back to the default retention. Longer retention periods have to be configured outside the dashboard.
### Related issues
None
Contributor guide
Research direction
Start with the frontend format validation used by the "Expires In" field in the cluster backup and backup schedule dialog. Confirm how the hour component is constrained and compare the accepted duration range with the backend; done means values such as 120h0m0s and 168h0m0s are accepted, or any enforced limit is documented in the field hint.
Written by the indexing model from the issue text.
Assessment
- Domain
- frontend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 70/100