fix: improve provisioner key cli usability (#14834)

What this changes:
- Unhides the `--key` flag on provisioner start
- Deprecates and hides `provisionerd` command group in favor of
`provisioner(s)`
- Removes org id from `coder provisioner keys list`
This commit is contained in:
Garrett Delfosse
2024-09-27 10:34:41 -05:00
committed by GitHub
parent 62047e5f68
commit 5cc5bbea04
30 changed files with 329 additions and 131 deletions
+20 -2
View File
@@ -4,12 +4,12 @@ import "github.com/coder/serpent"
func (r *RootCmd) provisionerDaemons() *serpent.Command {
cmd := &serpent.Command{
Use: "provisionerd",
Use: "provisioner",
Short: "Manage provisioner daemons",
Handler: func(inv *serpent.Invocation) error {
return inv.Command.HelpHandler(inv)
},
Aliases: []string{"provisioner"},
Aliases: []string{"provisioners"},
Children: []*serpent.Command{
r.provisionerDaemonStart(),
r.provisionerKeys(),
@@ -18,3 +18,21 @@ func (r *RootCmd) provisionerDaemons() *serpent.Command {
return cmd
}
// The provisionerd command group is deprecated and hidden but kept around
// for backwards compatibility with the start command.
func (r *RootCmd) provisionerd() *serpent.Command {
cmd := &serpent.Command{
Use: "provisionerd",
Short: "Manage provisioner daemons",
Handler: func(inv *serpent.Invocation) error {
return inv.Command.HelpHandler(inv)
},
Children: []*serpent.Command{
r.provisionerDaemonStart(),
},
Hidden: true,
}
return cmd
}
-1
View File
@@ -270,7 +270,6 @@ func (r *RootCmd) provisionerDaemonStart() *serpent.Command {
Env: "CODER_PROVISIONER_DAEMON_KEY",
Description: "Provisioner key to authenticate with Coder server.",
Value: serpent.StringOf(&provisionerKey),
Hidden: true,
}
cmd.Options = serpent.OptionSet{
{
+1 -1
View File
@@ -95,7 +95,7 @@ func (r *RootCmd) provisionerKeysList() *serpent.Command {
var (
orgContext = agpl.NewOrganizationContext()
formatter = cliui.NewOutputFormatter(
cliui.TableFormat([]codersdk.ProvisionerKey{}, nil),
cliui.TableFormat([]codersdk.ProvisionerKey{}, []string{"created at", "name", "tags"}),
cliui.JSONFormat(),
)
)
+2 -3
View File
@@ -41,7 +41,7 @@ func TestProvisionerKeys(t *testing.T) {
ctx := testutil.Context(t, testutil.WaitMedium)
inv, conf := newCLI(
t,
"provisioner", "keys", "create", name, "--tag", "foo=bar",
"provisioner", "keys", "create", name, "--tag", "foo=bar", "--tag", "my=way",
)
pty := ptytest.New(t)
@@ -73,11 +73,10 @@ func TestProvisionerKeys(t *testing.T) {
line = pty.ReadLine(ctx)
require.Contains(t, line, "NAME")
require.Contains(t, line, "CREATED AT")
require.Contains(t, line, "ORGANIZATION ID")
require.Contains(t, line, "TAGS")
line = pty.ReadLine(ctx)
require.Contains(t, line, strings.ToLower(name))
require.Contains(t, line, "map[foo:bar]")
require.Contains(t, line, "foo=bar my=way")
inv, conf = newCLI(
t,
+1
View File
@@ -17,6 +17,7 @@ func (r *RootCmd) enterpriseOnly() []*serpent.Command {
r.licenses(),
r.groups(),
r.provisionerDaemons(),
r.provisionerd(),
}
}
+1 -1
View File
@@ -17,7 +17,7 @@ SUBCOMMANDS:
features List Enterprise features
groups Manage groups
licenses Add, delete, and list licenses
provisionerd Manage provisioner daemons
provisioner Manage provisioner daemons
server Start a Coder server
GLOBAL OPTIONS:
+15
View File
@@ -0,0 +1,15 @@
coder v0.0.0-devel
USAGE:
coder provisioner
Manage provisioner daemons
Aliases: provisioners
SUBCOMMANDS:
keys Manage provisioner keys
start Run a provisioner daemon
———
Run `coder --help` for a list of global options.
@@ -0,0 +1,16 @@
coder v0.0.0-devel
USAGE:
coder provisioner keys
Manage provisioner keys
Aliases: key
SUBCOMMANDS:
create Create a new provisioner key
delete Delete a provisioner key
list List provisioner keys in an organization
———
Run `coder --help` for a list of global options.
@@ -0,0 +1,16 @@
coder v0.0.0-devel
USAGE:
coder provisioner keys create [flags] <name>
Create a new provisioner key
OPTIONS:
-O, --org string, $CODER_ORGANIZATION
Select which organization (uuid or name) to use.
-t, --tag string-array, $CODER_PROVISIONERD_TAGS
Tags to filter provisioner jobs by.
———
Run `coder --help` for a list of global options.
@@ -0,0 +1,18 @@
coder v0.0.0-devel
USAGE:
coder provisioner keys delete [flags] <name>
Delete a provisioner key
Aliases: rm
OPTIONS:
-O, --org string, $CODER_ORGANIZATION
Select which organization (uuid or name) to use.
-y, --yes bool
Bypass prompts.
———
Run `coder --help` for a list of global options.
@@ -0,0 +1,15 @@
coder v0.0.0-devel
USAGE:
coder provisioner keys list [flags]
List provisioner keys in an organization
Aliases: ls
OPTIONS:
-O, --org string, $CODER_ORGANIZATION
Select which organization (uuid or name) to use.
———
Run `coder --help` for a list of global options.
@@ -0,0 +1,58 @@
coder v0.0.0-devel
USAGE:
coder provisioner start [flags]
Run a provisioner daemon
OPTIONS:
-O, --org string, $CODER_ORGANIZATION
Select which organization (uuid or name) to use.
-c, --cache-dir string, $CODER_CACHE_DIRECTORY (default: [cache dir])
Directory to store cached data.
--key string, $CODER_PROVISIONER_DAEMON_KEY
Provisioner key to authenticate with Coder server.
--log-filter string-array, $CODER_PROVISIONER_DAEMON_LOG_FILTER
Filter debug logs by matching against a given regex. Use .* to match
all debug logs.
--log-human string, $CODER_PROVISIONER_DAEMON_LOGGING_HUMAN (default: /dev/stderr)
Output human-readable logs to a given file.
--log-json string, $CODER_PROVISIONER_DAEMON_LOGGING_JSON
Output JSON logs to a given file.
--log-stackdriver string, $CODER_PROVISIONER_DAEMON_LOGGING_STACKDRIVER
Output Stackdriver compatible logs to a given file.
--name string, $CODER_PROVISIONER_DAEMON_NAME
Name of this provisioner daemon. Defaults to the current hostname
without FQDN.
--poll-interval duration, $CODER_PROVISIONERD_POLL_INTERVAL (default: 1s)
Deprecated and ignored.
--poll-jitter duration, $CODER_PROVISIONERD_POLL_JITTER (default: 100ms)
Deprecated and ignored.
--prometheus-address string, $CODER_PROMETHEUS_ADDRESS (default: 127.0.0.1:2112)
The bind address to serve prometheus metrics.
--prometheus-enable bool, $CODER_PROMETHEUS_ENABLE (default: false)
Serve prometheus metrics on the address defined by prometheus address.
--psk string, $CODER_PROVISIONER_DAEMON_PSK
Pre-shared key to authenticate with Coder server.
DEPRECATED: Use --key instead.
-t, --tag string-array, $CODER_PROVISIONERD_TAGS
Tags to filter provisioner jobs by.
--verbose bool, $CODER_PROVISIONER_DAEMON_VERBOSE (default: false)
Output debug-level logs.
———
Run `coder --help` for a list of global options.
+1 -1
View File
@@ -204,7 +204,7 @@ func convertProvisionerKeys(dbKeys []database.ProvisionerKey) []codersdk.Provisi
CreatedAt: dbKey.CreatedAt,
OrganizationID: dbKey.OrganizationID,
Name: dbKey.Name,
Tags: dbKey.Tags,
Tags: codersdk.ProvisionerKeyTags(dbKey.Tags),
// HashedSecret - never include the access token in the API response
})
}