open-nomad/command/commands.go

983 lines
21 KiB
Go
Raw Normal View History

2018-03-21 17:16:13 +00:00
package command
2015-06-01 11:46:21 +00:00
import (
2018-03-21 17:16:13 +00:00
"fmt"
2015-06-01 11:46:21 +00:00
"os"
2015-08-16 01:34:47 +00:00
"github.com/hashicorp/nomad/command/agent"
"github.com/hashicorp/nomad/version"
colorable "github.com/mattn/go-colorable"
2015-06-01 11:46:21 +00:00
"github.com/mitchellh/cli"
)
2018-03-21 18:18:26 +00:00
const (
// EnvNomadCLINoColor is an env var that toggles colored UI output.
EnvNomadCLINoColor = `NOMAD_CLI_NO_COLOR`
// EnvNomadCLIForceColor is an env var that forces colored UI output.
EnvNomadCLIForceColor = `NOMAD_CLI_FORCE_COLOR`
2018-03-21 18:18:26 +00:00
)
2018-03-21 17:16:13 +00:00
// DeprecatedCommand is a command that wraps an existing command and prints a
// deprecation notice and points the user to the new command. Deprecated
// commands are always hidden from help output.
type DeprecatedCommand struct {
cli.Command
Meta
// Old is the old command name, New is the new command name.
Old, New string
}
// Help wraps the embedded Help command and prints a warning about deprecations.
func (c *DeprecatedCommand) Help() string {
c.warn()
return c.Command.Help()
}
// Run wraps the embedded Run command and prints a warning about deprecation.
func (c *DeprecatedCommand) Run(args []string) int {
c.warn()
return c.Command.Run(args)
}
func (c *DeprecatedCommand) warn() {
c.Ui.Warn(wrapAtLength(fmt.Sprintf(
"WARNING! The \"nomad %s\" command is deprecated. Please use \"nomad %s\" "+
"instead. This command will be removed in Nomad 0.10 (or later).",
c.Old,
c.New)))
c.Ui.Warn("")
}
// NamedCommand is a interface to denote a commmand's name.
type NamedCommand interface {
Name() string
}
2015-09-20 20:37:11 +00:00
// Commands returns the mapping of CLI commands for Nomad. The meta
2015-06-01 11:46:21 +00:00
// parameter lets you set meta options for all commands.
func Commands(metaPtr *Meta, agentUi cli.Ui) map[string]cli.CommandFactory {
2015-06-01 11:46:21 +00:00
if metaPtr == nil {
2018-03-21 17:16:13 +00:00
metaPtr = new(Meta)
2015-06-01 11:46:21 +00:00
}
meta := *metaPtr
if meta.Ui == nil {
meta.Ui = &cli.BasicUi{
2016-03-24 21:43:20 +00:00
Reader: os.Stdin,
Writer: colorable.NewColorableStdout(),
ErrorWriter: colorable.NewColorableStderr(),
2015-06-01 11:46:21 +00:00
}
}
2018-03-21 17:16:13 +00:00
all := map[string]cli.CommandFactory{
2017-09-11 17:46:17 +00:00
"acl": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLCommand{
2017-09-11 17:46:17 +00:00
Meta: meta,
}, nil
},
"acl bootstrap": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLBootstrapCommand{
2017-09-11 17:46:17 +00:00
Meta: meta,
}, nil
},
"acl policy": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLPolicyCommand{
Meta: meta,
}, nil
},
"acl policy apply": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLPolicyApplyCommand{
Meta: meta,
}, nil
},
2017-09-17 18:22:07 +00:00
"acl policy delete": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLPolicyDeleteCommand{
2017-09-17 18:22:07 +00:00
Meta: meta,
}, nil
},
"acl policy info": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLPolicyInfoCommand{
Meta: meta,
}, nil
},
2017-10-13 20:45:10 +00:00
"acl policy list": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLPolicyListCommand{
2017-10-13 20:45:10 +00:00
Meta: meta,
}, nil
},
2017-09-15 04:55:25 +00:00
"acl token": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLTokenCommand{
2017-09-15 04:55:25 +00:00
Meta: meta,
}, nil
},
"acl token create": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLTokenCreateCommand{
2017-09-15 04:55:25 +00:00
Meta: meta,
}, nil
},
2017-09-15 23:54:41 +00:00
"acl token update": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLTokenUpdateCommand{
2017-09-15 23:54:41 +00:00
Meta: meta,
}, nil
},
2017-09-15 16:29:46 +00:00
"acl token delete": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLTokenDeleteCommand{
2017-09-15 16:29:46 +00:00
Meta: meta,
}, nil
},
"acl token info": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLTokenInfoCommand{
Meta: meta,
}, nil
},
"acl token list": func() (cli.Command, error) {
return &ACLTokenListCommand{
Meta: meta,
}, nil
},
2017-10-13 20:45:10 +00:00
"acl token self": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ACLTokenSelfCommand{
2017-10-13 20:45:10 +00:00
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"alloc": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AllocCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
2019-04-28 21:35:17 +00:00
"alloc exec": func() (cli.Command, error) {
return &AllocExecCommand{
Meta: meta,
}, nil
},
"alloc signal": func() (cli.Command, error) {
return &AllocSignalCommand{
Meta: meta,
}, nil
},
"alloc stop": func() (cli.Command, error) {
return &AllocStopCommand{
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"alloc fs": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AllocFSCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"alloc logs": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AllocLogsCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"alloc restart": func() (cli.Command, error) {
return &AllocRestartCommand{
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"alloc status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AllocStatusCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"alloc-status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AllocStatusCommand{
Meta: meta,
}, nil
},
2015-08-16 01:34:47 +00:00
"agent": func() (cli.Command, error) {
return &agent.Command{
Version: version.GetVersion(),
Ui: agentUi,
ShutdownCh: make(chan struct{}),
2015-08-16 01:34:47 +00:00
}, nil
},
"agent-info": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AgentInfoCommand{
Meta: meta,
2015-09-11 19:31:13 +00:00
}, nil
},
2016-04-10 08:13:25 +00:00
"check": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AgentCheckCommand{
2015-09-25 04:31:15 +00:00
Meta: meta,
}, nil
},
"config": func() (cli.Command, error) {
return &ConfigCommand{
Meta: meta,
}, nil
},
"config validate": func() (cli.Command, error) {
return &ConfigValidateCommand{
Meta: meta,
}, nil
},
// operator debug was released in 0.12 as debug. This top-level alias preserves compatibility
"debug": func() (cli.Command, error) {
return &OperatorDebugCommand{
Meta: meta,
}, nil
},
2017-06-30 17:59:19 +00:00
"deployment": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &DeploymentCommand{
2017-06-30 17:59:19 +00:00
Meta: meta,
}, nil
},
2017-06-30 21:27:13 +00:00
"deployment fail": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &DeploymentFailCommand{
2017-06-30 21:27:13 +00:00
Meta: meta,
}, nil
},
2017-06-30 17:59:19 +00:00
"deployment list": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &DeploymentListCommand{
2017-06-30 17:59:19 +00:00
Meta: meta,
}, nil
},
2017-06-30 21:27:13 +00:00
"deployment pause": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &DeploymentPauseCommand{
2017-06-30 21:27:13 +00:00
Meta: meta,
}, nil
},
2017-06-30 23:22:06 +00:00
"deployment promote": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &DeploymentPromoteCommand{
2017-06-30 23:22:06 +00:00
Meta: meta,
}, nil
},
2017-06-30 21:27:13 +00:00
"deployment resume": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &DeploymentResumeCommand{
2017-06-30 21:27:13 +00:00
Meta: meta,
}, nil
},
2017-06-30 19:35:59 +00:00
"deployment status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &DeploymentStatusCommand{
2017-06-30 19:35:59 +00:00
Meta: meta,
}, nil
},
"deployment unblock": func() (cli.Command, error) {
return &DeploymentUnblockCommand{
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"eval": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &EvalCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"eval list": func() (cli.Command, error) {
return &EvalListCommand{
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"eval status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &EvalStatusCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"eval-status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &EvalStatusCommand{
Meta: meta,
2015-09-11 17:50:39 +00:00
}, nil
},
2019-04-28 21:35:17 +00:00
"exec": func() (cli.Command, error) {
return &AllocExecCommand{
Meta: meta,
}, nil
},
"fs": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AllocFSCommand{
2016-02-02 22:36:11 +00:00
Meta: meta,
}, nil
},
2015-09-21 00:06:02 +00:00
"init": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobInitCommand{
2015-09-21 00:06:02 +00:00
Meta: meta,
}, nil
},
2016-03-21 19:46:35 +00:00
"inspect": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobInspectCommand{
2016-03-21 19:46:35 +00:00
Meta: meta,
}, nil
},
"keygen": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorKeygenCommand{
Meta: meta,
}, nil
},
"keyring": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorKeyringCommand{
Meta: meta,
}, nil
},
2016-12-05 05:22:13 +00:00
"job": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobCommand{
2016-12-05 05:22:13 +00:00
Meta: meta,
}, nil
},
"job allocs": func() (cli.Command, error) {
return &JobAllocsCommand{
Meta: meta,
}, nil
},
2017-07-01 00:37:12 +00:00
"job deployments": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobDeploymentsCommand{
2017-07-01 00:37:12 +00:00
Meta: meta,
}, nil
},
2016-12-05 05:22:13 +00:00
"job dispatch": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobDispatchCommand{
2016-12-05 05:22:13 +00:00
Meta: meta,
}, nil
},
"job eval": func() (cli.Command, error) {
return &JobEvalCommand{
Meta: meta,
}, nil
},
"job history": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobHistoryCommand{
2017-07-19 22:39:32 +00:00
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"job init": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobInitCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"job inspect": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobInspectCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"job periodic": func() (cli.Command, error) {
return &JobPeriodicCommand{
Meta: meta,
}, nil
},
"job periodic force": func() (cli.Command, error) {
return &JobPeriodicForceCommand{
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"job plan": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobPlanCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
2017-07-19 22:39:32 +00:00
"job promote": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobPromoteCommand{
Meta: meta,
}, nil
},
2017-06-30 03:28:52 +00:00
"job revert": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobRevertCommand{
2017-06-30 03:28:52 +00:00
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"job run": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobRunCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"job scale": func() (cli.Command, error) {
return &JobScaleCommand{
Meta: meta,
}, nil
},
"job scaling-events": func() (cli.Command, error) {
return &JobScalingEventsCommand{
Meta: meta,
}, nil
},
"job status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobStatusCommand{
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"job stop": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobStopCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"job validate": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobValidateCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
2020-05-26 16:39:39 +00:00
"license": func() (cli.Command, error) {
return &LicenseCommand{
Meta: meta,
}, nil
},
"license get": func() (cli.Command, error) {
return &LicenseGetCommand{
Meta: meta,
}, nil
},
2016-07-18 18:39:38 +00:00
"logs": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &AllocLogsCommand{
2016-07-18 18:39:38 +00:00
Meta: meta,
}, nil
},
"monitor": func() (cli.Command, error) {
return &MonitorCommand{
Meta: meta,
}, nil
},
2017-09-07 23:56:15 +00:00
"namespace": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NamespaceCommand{
2017-09-07 23:56:15 +00:00
Meta: meta,
}, nil
},
"namespace apply": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NamespaceApplyCommand{
2017-09-07 23:56:15 +00:00
Meta: meta,
}, nil
},
"namespace delete": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NamespaceDeleteCommand{
2017-09-07 23:56:15 +00:00
Meta: meta,
}, nil
},
2017-10-13 21:36:02 +00:00
"namespace inspect": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NamespaceInspectCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
2017-09-07 23:56:15 +00:00
"namespace list": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NamespaceListCommand{
2017-09-07 23:56:15 +00:00
Meta: meta,
}, nil
},
2017-10-13 21:36:02 +00:00
"namespace status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NamespaceStatusCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
2018-02-23 23:56:36 +00:00
"node": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NodeCommand{
2018-02-23 23:56:36 +00:00
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"node config": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NodeConfigCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"node-drain": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NodeDrainCommand{
Meta: meta,
2015-09-11 22:48:36 +00:00
}, nil
},
2018-02-23 23:56:36 +00:00
"node drain": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NodeDrainCommand{
2018-02-23 23:56:36 +00:00
Meta: meta,
}, nil
},
2018-02-27 21:54:27 +00:00
"node eligibility": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NodeEligibilityCommand{
2018-02-27 21:54:27 +00:00
Meta: meta,
}, nil
},
"node-status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NodeStatusCommand{
Meta: meta,
2015-09-11 19:58:16 +00:00
}, nil
},
2018-02-23 23:56:36 +00:00
"node status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &NodeStatusCommand{
2018-02-23 23:56:36 +00:00
Meta: meta,
}, nil
},
"operator": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorCommand{
Meta: meta,
}, nil
},
"operator api": func() (cli.Command, error) {
return &OperatorAPICommand{
Meta: meta,
}, nil
},
"operator autopilot": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorAutopilotCommand{
Meta: meta,
}, nil
},
"operator autopilot get-config": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorAutopilotGetCommand{
Meta: meta,
}, nil
},
"operator autopilot set-config": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorAutopilotSetCommand{
Meta: meta,
}, nil
},
"operator debug": func() (cli.Command, error) {
return &OperatorDebugCommand{
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"operator keygen": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorKeygenCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"operator keyring": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorKeyringCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"operator metrics": func() (cli.Command, error) {
return &OperatorMetricsCommand{
Meta: meta,
}, nil
},
"operator raft": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorRaftCommand{
Meta: meta,
}, nil
},
"operator raft list-peers": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorRaftListCommand{
Meta: meta,
}, nil
},
"operator raft remove-peer": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &OperatorRaftRemoveCommand{
Meta: meta,
}, nil
},
"operator raft info": func() (cli.Command, error) {
return &OperatorRaftInfoCommand{
Meta: meta,
}, nil
},
"operator raft logs": func() (cli.Command, error) {
return &OperatorRaftLogsCommand{
Meta: meta,
}, nil
},
"operator raft state": func() (cli.Command, error) {
return &OperatorRaftStateCommand{
Meta: meta,
}, nil
},
2020-05-21 23:11:45 +00:00
"operator snapshot": func() (cli.Command, error) {
return &OperatorSnapshotCommand{
Meta: meta,
}, nil
},
"operator snapshot save": func() (cli.Command, error) {
return &OperatorSnapshotSaveCommand{
Meta: meta,
}, nil
},
2020-05-21 23:43:47 +00:00
"operator snapshot inspect": func() (cli.Command, error) {
return &OperatorSnapshotInspectCommand{
Meta: meta,
}, nil
},
"operator snapshot state": func() (cli.Command, error) {
2021-11-04 14:16:12 +00:00
return &OperatorSnapshotStateCommand{
Meta: meta,
}, nil
},
2020-06-06 13:16:58 +00:00
"operator snapshot restore": func() (cli.Command, error) {
return &OperatorSnapshotRestoreCommand{
Meta: meta,
}, nil
},
2020-05-21 23:11:45 +00:00
2016-05-13 00:17:02 +00:00
"plan": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobPlanCommand{
2016-05-13 00:17:02 +00:00
Meta: meta,
}, nil
},
csi: CLI for volume status, registration/deregistration and plugin status (#7193) * command/csi: csi, csi_plugin, csi_volume * helper/funcs: move ExtraKeys from parse_config to UnusedKeys * command/agent/config_parse: use helper.UnusedKeys * api/csi: annotate CSIVolumes with hcl fields * command/csi_plugin: add Synopsis * command/csi_volume_register: use hcl.Decode style parsing * command/csi_volume_list * command/csi_volume_status: list format, cleanup * command/csi_plugin_list * command/csi_plugin_status * command/csi_volume_deregister * command/csi_volume: add Synopsis * api/contexts/contexts: add csi search contexts to the constants * command/commands: register csi commands * api/csi: fix struct tag for linter * command/csi_plugin_list: unused struct vars * command/csi_plugin_status: unused struct vars * command/csi_volume_list: unused struct vars * api/csi: add allocs to CSIPlugin * command/csi_plugin_status: format the allocs * api/allocations: copy Allocation.Stub in from structs * nomad/client_rpc: add some error context with Errorf * api/csi: collapse read & write alloc maps to a stub list * command/csi_volume_status: cleanup allocation display * command/csi_volume_list: use Schedulable instead of Healthy * command/csi_volume_status: use Schedulable instead of Healthy * command/csi_volume_list: sprintf string * command/csi: delete csi.go, csi_plugin.go * command/plugin: refactor csi components to sub-command plugin status * command/plugin: remove csi * command/plugin_status: remove csi * command/volume: remove csi * command/volume_status: split out csi specific * helper/funcs: add RemoveEqualFold * command/agent/config_parse: use helper.RemoveEqualFold * api/csi: do ,unusedKeys right * command/volume: refactor csi components to `nomad volume` * command/volume_register: split out csi specific * command/commands: use the new top level commands * command/volume_deregister: hardwired type csi for now * command/volume_status: csiFormatVolumes rescued from volume_list * command/plugin_status: avoid a panic on no args * command/volume_status: avoid a panic on no args * command/plugin_status: predictVolumeType * command/volume_status: predictVolumeType * nomad/csi_endpoint_test: move CreateTestPlugin to testing * command/plugin_status_test: use CreateTestCSIPlugin * nomad/structs/structs: add CSIPlugins and CSIVolumes search consts * nomad/state/state_store: add CSIPlugins and CSIVolumesByIDPrefix * nomad/search_endpoint: add CSIPlugins and CSIVolumes * command/plugin_status: move the header to the csi specific * command/volume_status: move the header to the csi specific * nomad/state/state_store: CSIPluginByID prefix * command/status: rename the search context to just Plugins/Volumes * command/plugin,volume_status: test return ids now * command/status: rename the search context to just Plugins/Volumes * command/plugin_status: support -json and -t * command/volume_status: support -json and -t * command/plugin_status_csi: comments * command/*_status: clean up text * api/csi: fix stale comments * command/volume: make deregister sound less fearsome * command/plugin_status: set the id length * command/plugin_status_csi: more compact plugin health * command/volume: better error message, comment
2020-03-06 15:09:10 +00:00
"plugin": func() (cli.Command, error) {
return &PluginCommand{
Meta: meta,
}, nil
},
"plugin status": func() (cli.Command, error) {
return &PluginStatusCommand{
Meta: meta,
}, nil
},
2017-10-13 21:36:02 +00:00
"quota": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &QuotaCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
"quota apply": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &QuotaApplyCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
"quota delete": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &QuotaDeleteCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
"quota init": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &QuotaInitCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
"quota inspect": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &QuotaInspectCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
"quota list": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &QuotaListCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
"quota status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &QuotaStatusCommand{
2017-10-13 21:36:02 +00:00
Meta: meta,
}, nil
},
"recommendation": func() (cli.Command, error) {
return &RecommendationCommand{
Meta: meta,
}, nil
},
"recommendation apply": func() (cli.Command, error) {
return &RecommendationApplyCommand{
2020-11-11 20:52:57 +00:00
RecommendationAutocompleteCommand: RecommendationAutocompleteCommand{
Meta: meta,
},
}, nil
},
"recommendation dismiss": func() (cli.Command, error) {
return &RecommendationDismissCommand{
2020-11-11 20:52:57 +00:00
RecommendationAutocompleteCommand: RecommendationAutocompleteCommand{
Meta: meta,
},
}, nil
},
"recommendation info": func() (cli.Command, error) {
return &RecommendationInfoCommand{
2020-11-11 20:52:57 +00:00
RecommendationAutocompleteCommand: RecommendationAutocompleteCommand{
Meta: meta,
},
}, nil
},
"recommendation list": func() (cli.Command, error) {
return &RecommendationListCommand{
Meta: meta,
}, nil
},
"run": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobRunCommand{
Meta: meta,
}, nil
},
"scaling": func() (cli.Command, error) {
return &ScalingCommand{
Meta: meta,
}, nil
},
"scaling policy": func() (cli.Command, error) {
return &ScalingPolicyCommand{
Meta: meta,
}, nil
},
"scaling policy info": func() (cli.Command, error) {
return &ScalingPolicyInfoCommand{
Meta: meta,
}, nil
},
"scaling policy list": func() (cli.Command, error) {
return &ScalingPolicyListCommand{
Meta: meta,
}, nil
},
2017-09-19 14:47:10 +00:00
"sentinel": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &SentinelCommand{
2017-09-19 14:47:10 +00:00
Meta: meta,
}, nil
},
"sentinel list": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &SentinelListCommand{
2017-09-19 14:47:10 +00:00
Meta: meta,
}, nil
},
"sentinel apply": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &SentinelApplyCommand{
2017-09-19 14:47:10 +00:00
Meta: meta,
}, nil
},
"sentinel delete": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &SentinelDeleteCommand{
2017-09-19 14:47:10 +00:00
Meta: meta,
}, nil
},
"sentinel read": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &SentinelReadCommand{
2017-09-19 14:47:10 +00:00
Meta: meta,
}, nil
},
2018-03-21 00:37:28 +00:00
"server": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ServerCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"server force-leave": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ServerForceLeaveCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"server join": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ServerJoinCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"server members": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ServerMembersCommand{
2018-03-21 00:37:28 +00:00
Meta: meta,
}, nil
},
"server-force-leave": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ServerForceLeaveCommand{
Meta: meta,
2015-09-13 00:09:03 +00:00
}, nil
},
"server-join": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ServerJoinCommand{
Meta: meta,
2015-09-12 20:55:51 +00:00
}, nil
},
"server-members": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &ServerMembersCommand{
2015-09-16 01:22:51 +00:00
Meta: meta,
}, nil
},
"service": func() (cli.Command, error) {
return &ServiceCommand{
Meta: meta,
}, nil
},
"service list": func() (cli.Command, error) {
return &ServiceListCommand{
Meta: meta,
}, nil
},
"service info": func() (cli.Command, error) {
return &ServiceInfoCommand{
Meta: meta,
}, nil
},
"service delete": func() (cli.Command, error) {
return &ServiceDeleteCommand{
Meta: meta,
}, nil
},
"status": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &StatusCommand{
Meta: meta,
}, nil
},
2015-09-17 00:35:58 +00:00
"stop": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobStopCommand{
2015-09-17 00:35:58 +00:00
Meta: meta,
}, nil
},
"system": func() (cli.Command, error) {
return &SystemCommand{
Meta: meta,
}, nil
},
"system gc": func() (cli.Command, error) {
return &SystemGCCommand{
Meta: meta,
}, nil
},
"system reconcile": func() (cli.Command, error) {
return &SystemReconcileCommand{
Meta: meta,
}, nil
},
"system reconcile summaries": func() (cli.Command, error) {
return &SystemReconcileSummariesCommand{
Meta: meta,
}, nil
},
2017-10-10 06:01:55 +00:00
"ui": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &UiCommand{
2017-10-10 06:01:55 +00:00
Meta: meta,
}, nil
},
2015-09-25 01:29:46 +00:00
"validate": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &JobValidateCommand{
2015-09-25 01:29:46 +00:00
Meta: meta,
}, nil
},
2015-06-01 11:46:21 +00:00
"version": func() (cli.Command, error) {
2018-03-21 17:16:13 +00:00
return &VersionCommand{
Version: version.GetVersion(),
Ui: meta.Ui,
2015-06-01 11:46:21 +00:00
}, nil
},
csi: CLI for volume status, registration/deregistration and plugin status (#7193) * command/csi: csi, csi_plugin, csi_volume * helper/funcs: move ExtraKeys from parse_config to UnusedKeys * command/agent/config_parse: use helper.UnusedKeys * api/csi: annotate CSIVolumes with hcl fields * command/csi_plugin: add Synopsis * command/csi_volume_register: use hcl.Decode style parsing * command/csi_volume_list * command/csi_volume_status: list format, cleanup * command/csi_plugin_list * command/csi_plugin_status * command/csi_volume_deregister * command/csi_volume: add Synopsis * api/contexts/contexts: add csi search contexts to the constants * command/commands: register csi commands * api/csi: fix struct tag for linter * command/csi_plugin_list: unused struct vars * command/csi_plugin_status: unused struct vars * command/csi_volume_list: unused struct vars * api/csi: add allocs to CSIPlugin * command/csi_plugin_status: format the allocs * api/allocations: copy Allocation.Stub in from structs * nomad/client_rpc: add some error context with Errorf * api/csi: collapse read & write alloc maps to a stub list * command/csi_volume_status: cleanup allocation display * command/csi_volume_list: use Schedulable instead of Healthy * command/csi_volume_status: use Schedulable instead of Healthy * command/csi_volume_list: sprintf string * command/csi: delete csi.go, csi_plugin.go * command/plugin: refactor csi components to sub-command plugin status * command/plugin: remove csi * command/plugin_status: remove csi * command/volume: remove csi * command/volume_status: split out csi specific * helper/funcs: add RemoveEqualFold * command/agent/config_parse: use helper.RemoveEqualFold * api/csi: do ,unusedKeys right * command/volume: refactor csi components to `nomad volume` * command/volume_register: split out csi specific * command/commands: use the new top level commands * command/volume_deregister: hardwired type csi for now * command/volume_status: csiFormatVolumes rescued from volume_list * command/plugin_status: avoid a panic on no args * command/volume_status: avoid a panic on no args * command/plugin_status: predictVolumeType * command/volume_status: predictVolumeType * nomad/csi_endpoint_test: move CreateTestPlugin to testing * command/plugin_status_test: use CreateTestCSIPlugin * nomad/structs/structs: add CSIPlugins and CSIVolumes search consts * nomad/state/state_store: add CSIPlugins and CSIVolumesByIDPrefix * nomad/search_endpoint: add CSIPlugins and CSIVolumes * command/plugin_status: move the header to the csi specific * command/volume_status: move the header to the csi specific * nomad/state/state_store: CSIPluginByID prefix * command/status: rename the search context to just Plugins/Volumes * command/plugin,volume_status: test return ids now * command/status: rename the search context to just Plugins/Volumes * command/plugin_status: support -json and -t * command/volume_status: support -json and -t * command/plugin_status_csi: comments * command/*_status: clean up text * api/csi: fix stale comments * command/volume: make deregister sound less fearsome * command/plugin_status: set the id length * command/plugin_status_csi: more compact plugin health * command/volume: better error message, comment
2020-03-06 15:09:10 +00:00
"volume": func() (cli.Command, error) {
return &VolumeCommand{
Meta: meta,
}, nil
},
"volume init": func() (cli.Command, error) {
return &VolumeInitCommand{
Meta: meta,
}, nil
},
csi: CLI for volume status, registration/deregistration and plugin status (#7193) * command/csi: csi, csi_plugin, csi_volume * helper/funcs: move ExtraKeys from parse_config to UnusedKeys * command/agent/config_parse: use helper.UnusedKeys * api/csi: annotate CSIVolumes with hcl fields * command/csi_plugin: add Synopsis * command/csi_volume_register: use hcl.Decode style parsing * command/csi_volume_list * command/csi_volume_status: list format, cleanup * command/csi_plugin_list * command/csi_plugin_status * command/csi_volume_deregister * command/csi_volume: add Synopsis * api/contexts/contexts: add csi search contexts to the constants * command/commands: register csi commands * api/csi: fix struct tag for linter * command/csi_plugin_list: unused struct vars * command/csi_plugin_status: unused struct vars * command/csi_volume_list: unused struct vars * api/csi: add allocs to CSIPlugin * command/csi_plugin_status: format the allocs * api/allocations: copy Allocation.Stub in from structs * nomad/client_rpc: add some error context with Errorf * api/csi: collapse read & write alloc maps to a stub list * command/csi_volume_status: cleanup allocation display * command/csi_volume_list: use Schedulable instead of Healthy * command/csi_volume_status: use Schedulable instead of Healthy * command/csi_volume_list: sprintf string * command/csi: delete csi.go, csi_plugin.go * command/plugin: refactor csi components to sub-command plugin status * command/plugin: remove csi * command/plugin_status: remove csi * command/volume: remove csi * command/volume_status: split out csi specific * helper/funcs: add RemoveEqualFold * command/agent/config_parse: use helper.RemoveEqualFold * api/csi: do ,unusedKeys right * command/volume: refactor csi components to `nomad volume` * command/volume_register: split out csi specific * command/commands: use the new top level commands * command/volume_deregister: hardwired type csi for now * command/volume_status: csiFormatVolumes rescued from volume_list * command/plugin_status: avoid a panic on no args * command/volume_status: avoid a panic on no args * command/plugin_status: predictVolumeType * command/volume_status: predictVolumeType * nomad/csi_endpoint_test: move CreateTestPlugin to testing * command/plugin_status_test: use CreateTestCSIPlugin * nomad/structs/structs: add CSIPlugins and CSIVolumes search consts * nomad/state/state_store: add CSIPlugins and CSIVolumesByIDPrefix * nomad/search_endpoint: add CSIPlugins and CSIVolumes * command/plugin_status: move the header to the csi specific * command/volume_status: move the header to the csi specific * nomad/state/state_store: CSIPluginByID prefix * command/status: rename the search context to just Plugins/Volumes * command/plugin,volume_status: test return ids now * command/status: rename the search context to just Plugins/Volumes * command/plugin_status: support -json and -t * command/volume_status: support -json and -t * command/plugin_status_csi: comments * command/*_status: clean up text * api/csi: fix stale comments * command/volume: make deregister sound less fearsome * command/plugin_status: set the id length * command/plugin_status_csi: more compact plugin health * command/volume: better error message, comment
2020-03-06 15:09:10 +00:00
"volume status": func() (cli.Command, error) {
return &VolumeStatusCommand{
Meta: meta,
}, nil
},
"volume register": func() (cli.Command, error) {
return &VolumeRegisterCommand{
Meta: meta,
}, nil
},
"volume deregister": func() (cli.Command, error) {
return &VolumeDeregisterCommand{
Meta: meta,
}, nil
},
"volume detach": func() (cli.Command, error) {
return &VolumeDetachCommand{
Meta: meta,
}, nil
},
"volume create": func() (cli.Command, error) {
return &VolumeCreateCommand{
Meta: meta,
}, nil
},
"volume delete": func() (cli.Command, error) {
return &VolumeDeleteCommand{
Meta: meta,
}, nil
},
"volume snapshot": func() (cli.Command, error) {
return &VolumeSnapshotCommand{
Meta: meta,
}, nil
},
2021-04-01 15:16:52 +00:00
"volume snapshot create": func() (cli.Command, error) {
return &VolumeSnapshotCreateCommand{
Meta: meta,
}, nil
},
"volume snapshot delete": func() (cli.Command, error) {
return &VolumeSnapshotDeleteCommand{
Meta: meta,
}, nil
},
"volume snapshot list": func() (cli.Command, error) {
return &VolumeSnapshotListCommand{
Meta: meta,
}, nil
},
2015-06-01 11:46:21 +00:00
}
2018-03-21 17:16:13 +00:00
deprecated := map[string]cli.CommandFactory{
"client-config": func() (cli.Command, error) {
return &DeprecatedCommand{
Old: "client-config",
New: "node config",
Meta: meta,
Command: &NodeConfigCommand{
Meta: meta,
},
}, nil
},
"keygen": func() (cli.Command, error) {
return &DeprecatedCommand{
Old: "keygen",
New: "operator keygen",
Meta: meta,
Command: &OperatorKeygenCommand{
Meta: meta,
},
}, nil
},
"keyring": func() (cli.Command, error) {
return &DeprecatedCommand{
Old: "keyring",
New: "operator keyring",
Meta: meta,
Command: &OperatorKeyringCommand{
Meta: meta,
},
}, nil
},
"server-force-leave": func() (cli.Command, error) {
return &DeprecatedCommand{
Old: "server-force-leave",
New: "server force-leave",
Meta: meta,
Command: &ServerForceLeaveCommand{
Meta: meta,
},
}, nil
},
"server-join": func() (cli.Command, error) {
return &DeprecatedCommand{
Old: "server-join",
New: "server join",
Meta: meta,
Command: &ServerJoinCommand{
Meta: meta,
},
}, nil
},
"server-members": func() (cli.Command, error) {
return &DeprecatedCommand{
Old: "server-members",
New: "server members",
Meta: meta,
Command: &ServerMembersCommand{
Meta: meta,
},
}, nil
},
}
for k, v := range deprecated {
all[k] = v
}
for k, v := range EntCommands(metaPtr, agentUi) {
all[k] = v
}
2018-03-21 17:16:13 +00:00
return all
2015-06-01 11:46:21 +00:00
}