Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit320cd3f

Browse files
authored
feat(cli): Addrestart subcommand (#5799)
Fixes#2464
1 parent8e5aefb commit320cd3f

File tree

5 files changed

+143
-0
lines changed

5 files changed

+143
-0
lines changed

‎cli/restart.go

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package cli
2+
3+
import (
4+
"fmt"
5+
"time"
6+
7+
"github.com/spf13/cobra"
8+
9+
"github.com/coder/coder/cli/cliui"
10+
"github.com/coder/coder/codersdk"
11+
)
12+
13+
funcrestart()*cobra.Command {
14+
cmd:=&cobra.Command{
15+
Annotations:workspaceCommand,
16+
Use:"restart <workspace>",
17+
Short:"Restart a workspace",
18+
Args:cobra.ExactArgs(1),
19+
RunE:func(cmd*cobra.Command,args []string)error {
20+
ctx:=cmd.Context()
21+
out:=cmd.OutOrStdout()
22+
23+
_,err:=cliui.Prompt(cmd, cliui.PromptOptions{
24+
Text:"Confirm restart workspace?",
25+
IsConfirm:true,
26+
})
27+
iferr!=nil {
28+
returnerr
29+
}
30+
31+
client,err:=CreateClient(cmd)
32+
iferr!=nil {
33+
returnerr
34+
}
35+
workspace,err:=namedWorkspace(cmd,client,args[0])
36+
iferr!=nil {
37+
returnerr
38+
}
39+
40+
build,err:=client.CreateWorkspaceBuild(ctx,workspace.ID, codersdk.CreateWorkspaceBuildRequest{
41+
Transition:codersdk.WorkspaceTransitionStop,
42+
})
43+
iferr!=nil {
44+
returnerr
45+
}
46+
err=cliui.WorkspaceBuild(ctx,out,client,build.ID)
47+
iferr!=nil {
48+
returnerr
49+
}
50+
51+
build,err=client.CreateWorkspaceBuild(ctx,workspace.ID, codersdk.CreateWorkspaceBuildRequest{
52+
Transition:codersdk.WorkspaceTransitionStart,
53+
})
54+
iferr!=nil {
55+
returnerr
56+
}
57+
err=cliui.WorkspaceBuild(ctx,out,client,build.ID)
58+
iferr!=nil {
59+
returnerr
60+
}
61+
62+
_,_=fmt.Fprintf(out,"\nThe %s workspace has been restarted at %s!\n",cliui.Styles.Keyword.Render(workspace.Name),cliui.Styles.DateTimeStamp.Render(time.Now().Format(time.Stamp)))
63+
returnnil
64+
},
65+
}
66+
cliui.AllowSkipPrompt(cmd)
67+
returncmd
68+
}

‎cli/restart_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package cli_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
8+
"github.com/coder/coder/cli/clitest"
9+
"github.com/coder/coder/coderd/coderdtest"
10+
"github.com/coder/coder/pty/ptytest"
11+
"github.com/coder/coder/testutil"
12+
)
13+
14+
funcTestRestart(t*testing.T) {
15+
t.Parallel()
16+
17+
t.Run("OK",func(t*testing.T) {
18+
t.Parallel()
19+
20+
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
21+
user:=coderdtest.CreateFirstUser(t,client)
22+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
23+
coderdtest.AwaitTemplateVersionJob(t,client,version.ID)
24+
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
25+
workspace:=coderdtest.CreateWorkspace(t,client,user.OrganizationID,template.ID)
26+
coderdtest.AwaitWorkspaceBuildJob(t,client,workspace.LatestBuild.ID)
27+
28+
ctx,_:=testutil.Context(t)
29+
30+
cmd,root:=clitest.New(t,"restart",workspace.Name,"--yes")
31+
clitest.SetupConfig(t,client,root)
32+
33+
pty:=ptytest.New(t)
34+
cmd.SetIn(pty.Input())
35+
cmd.SetOut(pty.Output())
36+
37+
done:=make(chanerror,1)
38+
gofunc() {
39+
done<-cmd.ExecuteContext(ctx)
40+
}()
41+
pty.ExpectMatch("Stopping workspace")
42+
pty.ExpectMatch("Starting workspace")
43+
pty.ExpectMatch("workspace has been restarted")
44+
45+
err:=<-done
46+
require.NoError(t,err,"execute failed")
47+
})
48+
}

‎cli/root.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ func Core() []*cobra.Command {
9595
start(),
9696
state(),
9797
stop(),
98+
restart(),
9899
templates(),
99100
tokens(),
100101
update(),

‎cli/testdata/coder_--help.golden

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ Workspace Commands:
3737
delete Delete a workspace
3838
list List workspaces
3939
rename Rename a workspace
40+
restart Restart a workspace
4041
schedule Schedule automated start and stop times for workspaces
4142
show Display details of a workspace's resources and agents
4243
speedtest Run upload and download tests from your machine to a workspace
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Restart a workspace
2+
3+
Usage:
4+
coder restart <workspace> [flags]
5+
6+
Flags:
7+
-h, --help help for restart
8+
-y, --yes Bypass prompts
9+
10+
Global Flags:
11+
--global-config coder Path to the global coder config directory.
12+
Consumes $CODER_CONFIG_DIR (default "/tmp/coder-cli-test-config")
13+
--header stringArray HTTP headers added to all requests. Provide as "Key=Value".
14+
Consumes $CODER_HEADER
15+
--no-feature-warning Suppress warnings about unlicensed features.
16+
Consumes $CODER_NO_FEATURE_WARNING
17+
--no-version-warning Suppress warning when client and server versions do not match.
18+
Consumes $CODER_NO_VERSION_WARNING
19+
--token string Specify an authentication token. For security reasons setting
20+
CODER_SESSION_TOKEN is preferred.
21+
Consumes $CODER_SESSION_TOKEN
22+
--url string URL to a deployment.
23+
Consumes $CODER_URL
24+
-v, --verbose Enable verbose output.
25+
Consumes $CODER_VERBOSE

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp