-
Notifications
You must be signed in to change notification settings - Fork 943
feat: add default autostart and ttl for new workspaces #1632
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
Changes from 1 commit
5c092be
391f527
98561bf
0169315
dea541f
d621272
2f7b939
813a64f
1fbc0f2
142ad37
0f348cd
32a86f1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -10,14 +10,20 @@ import ( | |||||
|
||||||
"github.com/coder/coder/cli/cliflag" | ||||||
"github.com/coder/coder/cli/cliui" | ||||||
"github.com/coder/coder/coderd/autobuild/schedule" | ||||||
"github.com/coder/coder/codersdk" | ||||||
) | ||||||
|
||||||
func create() *cobra.Command { | ||||||
var ( | ||||||
workspaceName string | ||||||
templateName string | ||||||
parameterFile string | ||||||
autostartMinute string | ||||||
autostartHour string | ||||||
autostartDow string | ||||||
parameterFile string | ||||||
templateName string | ||||||
ttl time.Duration | ||||||
tzName string | ||||||
workspaceName string | ||||||
) | ||||||
cmd := &cobra.Command{ | ||||||
Annotations: workspaceCommand, | ||||||
|
@@ -54,6 +60,20 @@ func create() *cobra.Command { | |||||
} | ||||||
} | ||||||
|
||||||
tz, err := time.LoadLocation(tzName) | ||||||
if err != nil { | ||||||
return xerrors.Errorf("Invalid workspace autostart timezone: %w", err) | ||||||
} | ||||||
schedSpec := fmt.Sprintf("CRON_TZ=%s %s %s * * %s", tz.String(), autostartMinute, autostartHour, autostartDow) | ||||||
_, err = schedule.Weekly(schedSpec) | ||||||
if err != nil { | ||||||
return xerrors.Errorf("Invalid workspace autostart schedule: %w", err) | ||||||
} | ||||||
|
||||||
if ttl == 0 { | ||||||
return xerrors.Errorf("TTL must be at least 1 minute") | ||||||
} | ||||||
|
||||||
_, err = client.WorkspaceByOwnerAndName(cmd.Context(), organization.ID, codersdk.Me, workspaceName) | ||||||
if err == nil { | ||||||
return xerrors.Errorf("A workspace already exists named %q!", workspaceName) | ||||||
|
@@ -174,9 +194,11 @@ func create() *cobra.Command { | |||||
|
||||||
before := time.Now() | ||||||
workspace, err := client.CreateWorkspace(cmd.Context(), organization.ID, codersdk.CreateWorkspaceRequest{ | ||||||
Templa 8000 teID: template.ID, | ||||||
Name: workspaceName, | ||||||
ParameterValues: parameters, | ||||||
TemplateID: template.ID, | ||||||
Name: workspaceName, | ||||||
AutostartSchedule: &schedSpec, | ||||||
TTL: &ttl, | ||||||
ParameterValues: parameters, | ||||||
}) | ||||||
if err != nil { | ||||||
return err | ||||||
|
@@ -207,5 +229,10 @@ func create() *cobra.Command { | |||||
cliui.AllowSkipPrompt(cmd) | ||||||
cliflag.StringVarP(cmd.Flags(), &templateName, "template", "t", "CODER_TEMPLATE_NAME", "", "Specify a template name.") | ||||||
cliflag.StringVarP(cmd.Flags(), ¶meterFile, "parameter-file", "", "CODER_PARAMETER_FILE", "", "Specify a file path with parameter values.") | ||||||
cliflag.StringVarP(cmd.Flags(), &autostartMinute, "autostart-minute", "", "CODER_WORKSPACE_AUTOSTART", "0", "Specify the minute(s) at which the workspace should autostart.") | ||||||
cliflag.StringVarP(cmd.Flags(), &autostartHour, "autostart-hour", "", "CODER_WORKSPACE_AUTOSTART", "9", "Specify the hour(s) at which the workspace should autostart.") | ||||||
cliflag.StringVarP(cmd.Flags(), &autostartDow, "autostart-day-of-week", "", "CODER_WORKSPACE_AUTOSTART", "MON-FRI", "Specify the days(s) on which the workspace should autostart.") | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A user might wonder how this should look if they want Monday, Wednesday and Friday (e.g. |
||||||
cliflag.StringVarP(cmd.Flags(), &tzName, "tz", "", "TZ", "", "Specify your timezone location for workspace autostart.") | ||||||
cliflag.DurationVarP(cmd.Flags(), &ttl, "ttl", "", "CODER_WORKSPACE_TTL", 8*time.Hour, "Specify a TTL for the workspace.") | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
return cmd | ||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: Error strings should not be capitalized: https://github.com/golang/go/wiki/CodeReviewComments#error-strings