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

feat: convert rest of CLI to clibase#6491

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
ammario merged 192 commits intomainfromclibase-all
Mar 23, 2023
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
Show all changes
192 commits
Select commitHold shift + click to select a range
0dbcd12
Build out basic command scaffold
ammarioMar 6, 2023
18d31bf
Fixup middleware
ammarioMar 6, 2023
ec8e626
Support global flags
ammarioMar 6, 2023
e54d393
Make progress...
ammarioMar 7, 2023
518b51d
486 problems left
ammarioMar 7, 2023
c9820fb
go mod tidy
ammarioMar 7, 2023
32a1759
330 problems left...
ammarioMar 7, 2023
5af1142
208 problems left...
ammarioMar 7, 2023
5613d3b
185 problems left...
ammarioMar 7, 2023
b713372
359 problems left...
ammarioMar 7, 2023
7884f32
354 problems left...
ammarioMar 7, 2023
a58d15e
434 problems left...
ammarioMar 7, 2023
c8c9e51
511 problems left...
ammarioMar 7, 2023
274c84d
Assorted changes
ammarioMar 7, 2023
6fb72b5
621 problems remaining...
ammarioMar 7, 2023
eeb9500
576 problems remaining...
ammarioMar 8, 2023
e8959cf
500 problems remaining...
ammarioMar 8, 2023
799ace7
425 problems remaining...
ammarioMar 8, 2023
25682f6
417 problems left...
ammarioMar 8, 2023
88a64fc
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 8, 2023
c0a77cc
396 problems left...
ammarioMar 8, 2023
6757d66
330 problems left...
ammarioMar 8, 2023
6c0b64a
248 problems left...
ammarioMar 9, 2023
d028e1e
162 problems left...
ammarioMar 9, 2023
a678576
102 problems left...
ammarioMar 9, 2023
c4e8925
44 problems left...
ammarioMar 9, 2023
46f0339
0 (compilation) problems left...
ammarioMar 9, 2023
d242a84
Get stuck on git askpass
ammarioMar 9, 2023
0706c19
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 9, 2023
6757d84
deployment values
ammarioMar 9, 2023
113ad13
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 9, 2023
855e97d
Fix GitAskPass tests
ammarioMar 9, 2023
04977de
Fix Dotfiles tests
ammarioMar 9, 2023
d183ce3
Fix ResetPassword test
ammarioMar 9, 2023
ee6b65b
help wip
ammarioMar 9, 2023
d19cae5
chore: move over some of the clibase changes
ammarioMar 9, 2023
a57639b
Port over some of clibase
ammarioMar 9, 2023
a571e0c
Simplify Invoke calls
ammarioMar 9, 2023
2b02e65
grr fmt.Errorf
ammarioMar 9, 2023
2884aa6
fix: treat empty env as defaults (#6538)
ammarioMar 9, 2023
71f2c32
Reduce indirection in clibasetest.IO
ammarioMar 9, 2023
c6621bb
Cancel context when command finishes
ammarioMar 9, 2023
be7f957
oops typo
ammarioMar 9, 2023
2f99f87
Merge branch 'some-clibase' into clibase-all
ammarioMar 9, 2023
aac0fc0
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 11, 2023
bfbd0f5
Test Help
ammarioMar 11, 2023
7d12d64
Regen golden files!
ammarioMar 11, 2023
d5228c3
Sanity-check command options
ammarioMar 11, 2023
6f3575e
Progress
ammarioMar 11, 2023
029bd27
Limit newlines!
ammarioMar 11, 2023
74e5819
identation
ammarioMar 11, 2023
42d8011
Fix schedule test
ammarioMar 11, 2023
781d700
Fix CreateAdminUser
ammarioMar 11, 2023
94823df
Pass Rename + SSH
ammarioMar 12, 2023
c2fdc2c
Fix a bunch of server tests
ammarioMar 12, 2023
aee0627
Agent tests pass!
ammarioMar 12, 2023
f1d9c22
fixup! Agent tests pass!
ammarioMar 12, 2023
eca5625
Get in insecure reader
ammarioMar 13, 2023
be8dcc8
Speed up SSH keygen
ammarioMar 13, 2023
2500af8
Fix all tests in ./cli
ammarioMar 13, 2023
e776504
Enterprise cli tests pass
ammarioMar 13, 2023
d6adedf
Start working on clidocsgen
ammarioMar 13, 2023
4f21d52
Hmm
ammarioMar 13, 2023
1e5d223
docs v1
ammarioMar 14, 2023
ad810f6
docs skeleton done
ammarioMar 14, 2023
4f52669
It's done!
ammarioMar 14, 2023
303f0ab
fmt
ammarioMar 14, 2023
51c132e
fixup! fmt
ammarioMar 14, 2023
6c697f6
Remove remaining call to cobra
ammarioMar 14, 2023
7ab0710
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 14, 2023
fc4342b
fix clitest
ammarioMar 14, 2023
0b1ed6f
Fix server tests
ammarioMar 14, 2023
b759071
Upgrade slog
ammarioMar 14, 2023
412f054
go mod tidy
ammarioMar 14, 2023
466c3dc
Erase cobra from memory
ammarioMar 14, 2023
d3dab44
Pass linter
ammarioMar 14, 2023
bf93f2b
Pass lint/gen
ammarioMar 14, 2023
f5e2611
Improve error presentation
ammarioMar 14, 2023
64a28b8
config dir
ammarioMar 14, 2023
3292af9
Refine error printing some more
ammarioMar 14, 2023
039ef66
Fix flake
ammarioMar 14, 2023
df1e20a
sed: simplify tty attaches
ammarioMar 14, 2023
746f27d
fix compilation bugs
ammarioMar 14, 2023
e8d6a47
Improve error formatting
ammarioMar 14, 2023
9852f0b
Hmm testutil
ammarioMar 14, 2023
36212f7
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 14, 2023
1cd34ef
Minor code style
ammarioMar 14, 2023
8216640
fix lint
ammarioMar 14, 2023
6dc4578
fixup! fix lint
ammarioMar 14, 2023
97233c2
rng
ammarioMar 14, 2023
2065ddc
Get rid of suspect fastrand
ammarioMar 14, 2023
f9cd94e
Restore long timeout in Server/Postgres test
ammarioMar 14, 2023
8f0b0fa
Increase default command timeout
ammarioMar 14, 2023
65e9dc3
minor cleanup
ammarioMar 14, 2023
527e7ef
Windows?
ammarioMar 14, 2023
6ec84aa
WINDOWS
ammarioMar 14, 2023
95508bd
Big man on campus
ammarioMar 14, 2023
695b56d
WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
980768b
fixup! WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
452ffdf
fixup! WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
371e34d
fixup! WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
888292c
fixup! WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
f5fcc2c
fixup! WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
8e04d8b
fixup! WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
1b6062b
fixup! WINDNDDODODODOOOOWWS
ammarioMar 14, 2023
71e5700
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 14, 2023
59a53b4
WIN WIN WIN DOWS
ammarioMar 14, 2023
2acc7f0
fixup! WIN WIN WIN DOWS
ammarioMar 14, 2023
faa3515
Address review comments
ammarioMar 14, 2023
1b281af
Add "unknown command" error
ammarioMar 14, 2023
1cba181
Reject args to coder server
ammarioMar 14, 2023
1e29b7a
Update cli/cliui/log.go
ammarioMar 16, 2023
ba9443a
Start addressing mathias feedback
ammarioMar 16, 2023
981bf55
Hit a couple more problems
ammarioMar 16, 2023
e7d7d8a
fix: slim
ammarioMar 16, 2023
8da9ed3
Update cli/cliui/log.go
ammarioMar 16, 2023
e176250
Remove all redundant Name fields
ammarioMar 16, 2023
813a30e
Address more comments
ammarioMar 16, 2023
b74c576
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 16, 2023
17cdcfc
WIP debug Create
ammarioMar 16, 2023
9958d26
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 16, 2023
4f4c66c
Improve errors
ammarioMar 16, 2023
ff3b858
found it!
ammarioMar 16, 2023
1f7eef1
Fix descriptions in entcli
ammarioMar 16, 2023
79a66c5
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 17, 2023
2781b7c
type out CODER_ prefix
ammarioMar 17, 2023
dc60ac8
fix root usage
ammarioMar 17, 2023
e21d488
Fix test hang
ammarioMar 20, 2023
4e6e434
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 20, 2023
22a6978
Fix goroutine link in cliui
ammarioMar 20, 2023
d4ae272
Show subcommands first in help
ammarioMar 20, 2023
7bf9b21
Fix wrapping in subcommands
ammarioMar 20, 2023
3611907
Call out global options in each command's help
ammarioMar 20, 2023
ed700b8
Address some more comments
ammarioMar 20, 2023
0671e00
SCALETEST
ammarioMar 20, 2023
7d03079
Improve error formatting
ammarioMar 21, 2023
218f57e
Improve error style even more!
ammarioMar 21, 2023
c075ee2
Remove `coder ssh --shuffle`, amongst other improvements
ammarioMar 21, 2023
c6e7689
docs: align markdown names
ammarioMar 21, 2023
4435212
docs: show full use line!
ammarioMar 21, 2023
79d4130
docs: don't show empty tables
ammarioMar 21, 2023
dcf5b50
fix lint
ammarioMar 21, 2023
03d8a19
Update golden files
ammarioMar 21, 2023
e122a9c
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 21, 2023
c72050b
Fix help whitespace issues
mafredriMar 21, 2023
c33954c
Sort flags
mafredriMar 21, 2023
a774c0e
Sort commands
mafredriMar 21, 2023
3cb50b3
Run make gen and update-golden-files
mafredriMar 21, 2023
e33da7a
Show shorthand flag first
mafredriMar 21, 2023
1b81037
Run make gen and update-golden-files
mafredriMar 21, 2023
e96d155
Fix prepare all after options
mafredriMar 21, 2023
81c4543
Address review comments
ammarioMar 21, 2023
4338598
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 21, 2023
359923b
Remove periods from examples
ammarioMar 21, 2023
8e420dd
Fix list outputs in golden files!
ammarioMar 21, 2023
bbdcb7e
fixup! Fix list outputs in golden files!
ammarioMar 21, 2023
cc0a998
Fix scaletest descriptions
ammarioMar 21, 2023
8dbf57c
Fix remaining issues!
ammarioMar 21, 2023
3495efc
Remove cache directory
ammarioMar 21, 2023
de08cde
Fix cache dir?
ammarioMar 21, 2023
0544597
Add ErrorWaiter to clitest
ammarioMar 21, 2023
7bc2f82
Print aliases
ammarioMar 22, 2023
7c1acbf
Remove "t" alias
ammarioMar 22, 2023
796b527
Fix up more of the diff... through scaletest
ammarioMar 22, 2023
2413718
Add missing [flags]
ammarioMar 22, 2023
da716cf
make update-golden-files
ammarioMar 22, 2023
ca9ccba
Fix some more duplication + migration issues
ammarioMar 22, 2023
9865ba8
make gen + messed up a bullet
ammarioMar 22, 2023
38110ba
Fix dotfiles description
ammarioMar 22, 2023
0cf7654
Fix scaletest wording
ammarioMar 22, 2023
0bfcbee
Put aliases in docs too
ammarioMar 22, 2023
ac60ecb
Fix typo in scaletest
ammarioMar 22, 2023
6255ddd
Remove excess whitespace from error
ammarioMar 22, 2023
9ebd6e9
Remove (default: false) spam
ammarioMar 22, 2023
85e252b
tangent: [flags] in usage linting
ammarioMar 22, 2023
40a6914
Automatically add [flags]
ammarioMar 22, 2023
5f1e374
Remove remaining ".:"
ammarioMar 22, 2023
3a01d94
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 22, 2023
fb4eb88
Tests pass post merge
ammarioMar 22, 2023
6cb6ef6
fmt & lint
ammarioMar 22, 2023
919f768
Hide support links since it's flagless
ammarioMar 22, 2023
e6fa741
Automatically insert "rm" alias
ammarioMar 23, 2023
44fcba5
Remove description wrapping
ammarioMar 23, 2023
dcc5943
Add back consistent type helpers
ammarioMar 23, 2023
ed49ce5
Revert remaining bad descriptions
ammarioMar 23, 2023
d5af663
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 23, 2023
cdda9fe
Fix output array formatting
ammarioMar 23, 2023
0c5a778
Only show subcommand error when command doesn't take arguments
ammarioMar 23, 2023
f9679b8
Merge remote-tracking branch 'origin/main' into clibase-all
ammarioMar 23, 2023
9b798ed
Fix compilation errors introduced by merge
ammarioMar 23, 2023
907e26e
Use correct timeouts in agent tests
ammarioMar 23, 2023
9dca6f2
Bump up test timeout
ammarioMar 23, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion.github/workflows/ci.yaml
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -302,7 +302,7 @@ jobs:
echo "cover=false" >> $GITHUB_OUTPUT
fi

gotestsum --junitfile="gotests.xml" --packages="./..." -- -parallel=8 -timeout=5m -short -failfast $COVERAGE_FLAGS
gotestsum --junitfile="gotests.xml" --packages="./..." -- -parallel=8 -timeout=7m -short -failfast $COVERAGE_FLAGS

- uses: actions/upload-artifact@v3
if: success() || failure()
Expand Down
4 changes: 1 addition & 3 deletionsMakefile
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -501,8 +501,6 @@ docs/admin/prometheus.md: scripts/metricsdocgen/main.go scripts/metricsdocgen/me
yarn run format:write:only ../docs/admin/prometheus.md

docs/cli.md: scripts/clidocgen/main.go $(GO_SRC_FILES) docs/manifest.json
# TODO(@ammario): re-enable server.md once we finish clibase migration.
ls ./docs/cli/*.md | grep -vP "\/coder_server" | xargs rm
BASE_PATH="." go run ./scripts/clidocgen
cd site
yarn run format:write:only ../docs/cli.md ../docs/cli/*.md ../docs/manifest.json
Expand All@@ -519,7 +517,7 @@ coderd/apidoc/swagger.json: $(shell find ./scripts/apidocgen $(FIND_EXCLUSIONS)
update-golden-files: cli/testdata/.gen-golden helm/tests/testdata/.gen-golden
.PHONY: update-golden-files

cli/testdata/.gen-golden: $(wildcard cli/testdata/*.golden) $(GO_SRC_FILES)
cli/testdata/.gen-golden: $(wildcard cli/testdata/*.golden) $(wildcard cli/*.tpl) $(GO_SRC_FILES)
go test ./cli -run=TestCommandHelp -update
touch "$@"

Expand Down
75 changes: 50 additions & 25 deletionscli/agent.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,6 @@ import (
"time"

"cloud.google.com/go/compute/metadata"
"github.com/spf13/cobra"
"golang.org/x/xerrors"
"gopkg.in/natefinch/lumberjack.v2"

Expand All@@ -25,34 +24,27 @@ import (
"github.com/coder/coder/agent"
"github.com/coder/coder/agent/reaper"
"github.com/coder/coder/buildinfo"
"github.com/coder/coder/cli/cliflag"
"github.com/coder/coder/cli/clibase"
"github.com/coder/coder/codersdk/agentsdk"
)

func workspaceAgent() *cobra.Command {
func(r *RootCmd)workspaceAgent() *clibase.Cmd {
var (
auth string
logDir string
pprofAddress string
noReap bool
sshMaxTimeout time.Duration
)
cmd := &cobra.Command{
Use: "agent",
cmd := &clibase.Cmd{
Use: "agent",
Short: `Starts the Coder workspace agent.`,
// This command isn't useful to manually execute.
Hidden: true,
RunE: func(cmd *cobra.Command, _ []string) error {
ctx, cancel := context.WithCancel(cmd.Context())
Handler: func(inv *clibase.Invocation) error {
ctx, cancel := context.WithCancel(inv.Context())
defer cancel()

rawURL, err := cmd.Flags().GetString(varAgentURL)
if err != nil {
return xerrors.Errorf("CODER_AGENT_URL must be set: %w", err)
}
coderURL, err := url.Parse(rawURL)
if err != nil {
return xerrors.Errorf("parse %q: %w", rawURL, err)
}
agentPorts := map[int]string{}

isLinux := runtime.GOOS == "linux"
Expand All@@ -65,7 +57,7 @@ func workspaceAgent() *cobra.Command {
MaxSize: 5, // MB
}
defer logWriter.Close()
logger := slog.Make(sloghuman.Sink(cmd.ErrOrStderr()), sloghuman.Sink(logWriter)).Leveled(slog.LevelDebug)
logger := slog.Make(sloghuman.Sink(inv.Stderr), sloghuman.Sink(logWriter)).Leveled(slog.LevelDebug)

logger.Info(ctx, "spawning reaper process")
// Do not start a reaper on the child process. It's important
Expand DownExpand Up@@ -107,15 +99,15 @@ func workspaceAgent() *cobra.Command {
logWriter := &closeWriter{w: ljLogger}
defer logWriter.Close()

logger := slog.Make(sloghuman.Sink(cmd.ErrOrStderr()), sloghuman.Sink(logWriter)).Leveled(slog.LevelDebug)
logger := slog.Make(sloghuman.Sink(inv.Stderr), sloghuman.Sink(logWriter)).Leveled(slog.LevelDebug)

version := buildinfo.Version()
logger.Info(ctx, "starting agent",
slog.F("url",coderURL),
slog.F("url",r.agentURL),
slog.F("auth", auth),
slog.F("version", version),
)
client := agentsdk.New(coderURL)
client := agentsdk.New(r.agentURL)
client.SDK.Logger = logger
// Set a reasonable timeout so requests can't hang forever!
// The timeout needs to be reasonably long, because requests
Expand All@@ -139,7 +131,7 @@ func workspaceAgent() *cobra.Command {
var exchangeToken func(context.Context) (agentsdk.AuthenticateResponse, error)
switch auth {
case "token":
token, err :=cmd.Flags().GetString(varAgentToken)
token, err :=inv.ParsedFlags().GetString(varAgentToken)
if err != nil {
return xerrors.Errorf("CODER_AGENT_TOKEN must be set for token auth: %w", err)
}
Expand DownExpand Up@@ -220,11 +212,44 @@ func workspaceAgent() *cobra.Command {
},
}

cliflag.StringVarP(cmd.Flags(), &auth, "auth", "", "CODER_AGENT_AUTH", "token", "Specify the authentication type to use for the agent")
cliflag.StringVarP(cmd.Flags(), &logDir, "log-dir", "", "CODER_AGENT_LOG_DIR", os.TempDir(), "Specify the location for the agent log files")
cliflag.StringVarP(cmd.Flags(), &pprofAddress, "pprof-address", "", "CODER_AGENT_PPROF_ADDRESS", "127.0.0.1:6060", "The address to serve pprof.")
cliflag.BoolVarP(cmd.Flags(), &noReap, "no-reap", "", "", false, "Do not start a process reaper.")
cliflag.DurationVarP(cmd.Flags(), &sshMaxTimeout, "ssh-max-timeout", "", "CODER_AGENT_SSH_MAX_TIMEOUT", time.Duration(0), "Specify the max timeout for a SSH connection")
cmd.Options = clibase.OptionSet{
{
Flag: "auth",
Default: "token",
Description: "Specify the authentication type to use for the agent.",
Env: "CODER_AGENT_AUTH",
Value: clibase.StringOf(&auth),
},
{
Flag: "log-dir",
Default: os.TempDir(),
Description: "Specify the location for the agent log files.",
Env: "CODER_AGENT_LOG_DIR",
Value: clibase.StringOf(&logDir),
},
{
Flag: "pprof-address",
Default: "127.0.0.1:6060",
Env: "CODER_AGENT_PPROF_ADDRESS",
Value: clibase.StringOf(&pprofAddress),
Description: "The address to serve pprof.",
},
{
Flag: "no-reap",

Env: "",
Description: "Do not start a process reaper.",
Value: clibase.BoolOf(&noReap),
},
{
Flag: "ssh-max-timeout",
Default: "0",
Env: "CODER_AGENT_SSH_MAX_TIMEOUT",
Description: "Specify the max timeout for a SSH connection.",
Value: clibase.DurationOf(&sshMaxTimeout),
},
}

return cmd
}

Expand Down
88 changes: 35 additions & 53 deletionscli/agent_test.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,7 +16,7 @@ import (
"github.com/coder/coder/coderd/coderdtest"
"github.com/coder/coder/provisioner/echo"
"github.com/coder/coder/provisionersdk/proto"
"github.com/coder/coder/testutil"
"github.com/coder/coder/pty/ptytest"
)

func TestWorkspaceAgent(t *testing.T) {
Expand All@@ -40,24 +40,20 @@ func TestWorkspaceAgent(t *testing.T) {
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)

logDir := t.TempDir()
cmd, _ := clitest.New(t,
inv, _ := clitest.New(t,
"agent",
"--auth", "token",
"--agent-token", authToken,
"--agent-url", client.URL.String(),
"--log-dir", logDir,
)
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium)
defer cancel()
errC := make(chan error, 1)
go func() {
errC <- cmd.ExecuteContext(ctx)
}()
coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)

cancel()
err := <-errC
require.NoError(t, err)
pty := ptytest.New(t).Attach(inv)

clitest.Start(t, inv)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

This is a bit of a lossy migration. We used to wait for the command to exit before checking the logs. In theory there's a chance the logs haven't been flushed to disk yet when we check their size. In practice I doubt it will happen here, but this is a use-case we'll need to support going forward.

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

True. Fixed with an ExpectMatch.

pty.ExpectMatch("starting agent")

coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)

info, err := os.Stat(filepath.Join(logDir, "coder-agent.log"))
require.NoError(t, err)
Expand DownExpand Up@@ -96,16 +92,14 @@ func TestWorkspaceAgent(t *testing.T) {
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)

cmd, _ := clitest.New(t, "agent", "--auth", "azure-instance-identity", "--agent-url", client.URL.String())
inv, _ := clitest.New(t, "agent", "--auth", "azure-instance-identity", "--agent-url", client.URL.String())
inv = inv.WithContext(
//nolint:revive,staticcheck
context.WithValue(inv.Context(), "azure-client", metadataClient),
)
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
errC := make(chan error)
go func() {
// A linting error occurs for weakly typing the context value here.
//nolint // The above seems reasonable for a one-off test.
ctx := context.WithValue(ctx, "azure-client", metadataClient)
errC <- cmd.ExecuteContext(ctx)
}()
clitest.Start(t, inv)
coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)
workspace, err := client.Workspace(ctx, workspace.ID)
require.NoError(t, err)
Expand All@@ -117,9 +111,6 @@ func TestWorkspaceAgent(t *testing.T) {
require.NoError(t, err)
defer dialer.Close()
require.True(t, dialer.AwaitReachable(context.Background()))
cancelFunc()
err = <-errC
require.NoError(t, err)
})

t.Run("AWS", func(t *testing.T) {
Expand DownExpand Up@@ -154,36 +145,29 @@ func TestWorkspaceAgent(t *testing.T) {
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)

cmd, _ := clitest.New(t, "agent", "--auth", "aws-instance-identity", "--agent-url", client.URL.String())
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
errC := make(chan error)
go func() {
// A linting error occurs for weakly typing the context value here.
//nolint // The above seems reasonable for a one-off test.
ctx := context.WithValue(ctx, "aws-client", metadataClient)
errC <- cmd.ExecuteContext(ctx)
}()
inv, _ := clitest.New(t, "agent", "--auth", "aws-instance-identity", "--agent-url", client.URL.String())
inv = inv.WithContext(
//nolint:revive,staticcheck
context.WithValue(inv.Context(), "aws-client", metadataClient),
)
clitest.Start(t, inv)
coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)
workspace, err := client.Workspace(ctx, workspace.ID)
workspace, err := client.Workspace(inv.Context(), workspace.ID)
require.NoError(t, err)
resources := workspace.LatestBuild.Resources
if assert.NotEmpty(t, resources) && assert.NotEmpty(t, resources[0].Agents) {
assert.NotEmpty(t, resources[0].Agents[0].Version)
}
dialer, err := client.DialWorkspaceAgent(ctx, resources[0].Agents[0].ID, nil)
dialer, err := client.DialWorkspaceAgent(inv.Context(), resources[0].Agents[0].ID, nil)
require.NoError(t, err)
defer dialer.Close()
require.True(t, dialer.AwaitReachable(context.Background()))
cancelFunc()
err = <-errC
require.NoError(t, err)
})

t.Run("GoogleCloud", func(t *testing.T) {
t.Parallel()
instanceID := "instanceidentifier"
validator,metadata := coderdtest.NewGoogleInstanceIdentity(t, instanceID, false)
validator,metadataClient := coderdtest.NewGoogleInstanceIdentity(t, instanceID, false)
client := coderdtest.New(t, &coderdtest.Options{
GoogleTokenValidator: validator,
IncludeProvisionerDaemon: true,
Expand DownExpand Up@@ -212,16 +196,18 @@ func TestWorkspaceAgent(t *testing.T) {
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)

cmd, _ := clitest.New(t, "agent", "--auth", "google-instance-identity", "--agent-url", client.URL.String())
ctx, cancelFunc := context.WithCancel(context.Background())
defer cancelFunc()
errC := make(chan error)
go func() {
// A linting error occurs for weakly typing the context value here.
//nolint // The above seems reasonable for a one-off test.
ctx := context.WithValue(ctx, "gcp-client", metadata)
errC <- cmd.ExecuteContext(ctx)
}()
inv, cfg := clitest.New(t, "agent", "--auth", "google-instance-identity", "--agent-url", client.URL.String())
ptytest.New(t).Attach(inv)
clitest.SetupConfig(t, client, cfg)
clitest.Start(t,
inv.WithContext(
//nolint:revive,staticcheck
context.WithValue(context.Background(), "gcp-client", metadataClient),
),
)

ctx := inv.Context()

coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)
workspace, err := client.Workspace(ctx, workspace.ID)
require.NoError(t, err)
Expand All@@ -248,9 +234,5 @@ func TestWorkspaceAgent(t *testing.T) {
require.NoError(t, err)
_, err = uuid.Parse(strings.TrimSpace(string(token)))
require.NoError(t, err)

cancelFunc()
err = <-errC
require.NoError(t, err)
})
}
8 changes: 2 additions & 6 deletionscli/clibase/clibase.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
// Package clibase offers an all-in-one solution for a highly configurable CLI
// application. Within Coder, we use it for our `server` subcommand, which
// demands more functionality than cobra/viper can offer.
//
// We will extend its usage to the rest of our application, completely replacing
// cobra/viper. It's also a candidate to be broken out into its own open-source
// library, so we avoid deep coupling with Coder concepts.
// application. Within Coder, we use it for all of our subcommands, which
// demands more functionality than cobra/viber offers.
//
// The Command interface is loosely based on the chi middleware pattern and
// http.Handler/HandlerFunc.
Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp