github.com/djenriquez/nomad-1@v0.8.1/command/commands.go (about) 1 package command 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/hashicorp/nomad/command/agent" 8 "github.com/hashicorp/nomad/version" 9 "github.com/mitchellh/cli" 10 ) 11 12 const ( 13 // EnvNomadCLINoColor is an env var that toggles colored UI output. 14 EnvNomadCLINoColor = `NOMAD_CLI_NO_COLOR` 15 ) 16 17 // DeprecatedCommand is a command that wraps an existing command and prints a 18 // deprecation notice and points the user to the new command. Deprecated 19 // commands are always hidden from help output. 20 type DeprecatedCommand struct { 21 cli.Command 22 Meta 23 24 // Old is the old command name, New is the new command name. 25 Old, New string 26 } 27 28 // Help wraps the embedded Help command and prints a warning about deprecations. 29 func (c *DeprecatedCommand) Help() string { 30 c.warn() 31 return c.Command.Help() 32 } 33 34 // Run wraps the embedded Run command and prints a warning about deprecation. 35 func (c *DeprecatedCommand) Run(args []string) int { 36 c.warn() 37 return c.Command.Run(args) 38 } 39 40 func (c *DeprecatedCommand) warn() { 41 c.Ui.Warn(wrapAtLength(fmt.Sprintf( 42 "WARNING! The \"nomad %s\" command is deprecated. Please use \"nomad %s\" "+ 43 "instead. This command will be removed in Nomad 0.10 (or later).", 44 c.Old, 45 c.New))) 46 c.Ui.Warn("") 47 } 48 49 // Commands returns the mapping of CLI commands for Nomad. The meta 50 // parameter lets you set meta options for all commands. 51 func Commands(metaPtr *Meta, agentUi cli.Ui) map[string]cli.CommandFactory { 52 if metaPtr == nil { 53 metaPtr = new(Meta) 54 } 55 56 meta := *metaPtr 57 if meta.Ui == nil { 58 meta.Ui = &cli.BasicUi{ 59 Reader: os.Stdin, 60 Writer: os.Stdout, 61 ErrorWriter: os.Stderr, 62 } 63 } 64 65 all := map[string]cli.CommandFactory{ 66 "acl": func() (cli.Command, error) { 67 return &ACLCommand{ 68 Meta: meta, 69 }, nil 70 }, 71 "acl bootstrap": func() (cli.Command, error) { 72 return &ACLBootstrapCommand{ 73 Meta: meta, 74 }, nil 75 }, 76 "acl policy": func() (cli.Command, error) { 77 return &ACLPolicyCommand{ 78 Meta: meta, 79 }, nil 80 }, 81 "acl policy apply": func() (cli.Command, error) { 82 return &ACLPolicyApplyCommand{ 83 Meta: meta, 84 }, nil 85 }, 86 "acl policy delete": func() (cli.Command, error) { 87 return &ACLPolicyDeleteCommand{ 88 Meta: meta, 89 }, nil 90 }, 91 "acl policy info": func() (cli.Command, error) { 92 return &ACLPolicyInfoCommand{ 93 Meta: meta, 94 }, nil 95 }, 96 "acl policy list": func() (cli.Command, error) { 97 return &ACLPolicyListCommand{ 98 Meta: meta, 99 }, nil 100 }, 101 "acl token": func() (cli.Command, error) { 102 return &ACLTokenCommand{ 103 Meta: meta, 104 }, nil 105 }, 106 "acl token create": func() (cli.Command, error) { 107 return &ACLTokenCreateCommand{ 108 Meta: meta, 109 }, nil 110 }, 111 "acl token update": func() (cli.Command, error) { 112 return &ACLTokenUpdateCommand{ 113 Meta: meta, 114 }, nil 115 }, 116 "acl token delete": func() (cli.Command, error) { 117 return &ACLTokenDeleteCommand{ 118 Meta: meta, 119 }, nil 120 }, 121 "acl token info": func() (cli.Command, error) { 122 return &ACLTokenInfoCommand{ 123 Meta: meta, 124 }, nil 125 }, 126 "acl token self": func() (cli.Command, error) { 127 return &ACLTokenSelfCommand{ 128 Meta: meta, 129 }, nil 130 }, 131 "alloc": func() (cli.Command, error) { 132 return &AllocCommand{ 133 Meta: meta, 134 }, nil 135 }, 136 "alloc fs": func() (cli.Command, error) { 137 return &AllocFSCommand{ 138 Meta: meta, 139 }, nil 140 }, 141 "alloc logs": func() (cli.Command, error) { 142 return &AllocLogsCommand{ 143 Meta: meta, 144 }, nil 145 }, 146 "alloc status": func() (cli.Command, error) { 147 return &AllocStatusCommand{ 148 Meta: meta, 149 }, nil 150 }, 151 "alloc-status": func() (cli.Command, error) { 152 return &AllocStatusCommand{ 153 Meta: meta, 154 }, nil 155 }, 156 "agent": func() (cli.Command, error) { 157 return &agent.Command{ 158 Version: version.GetVersion(), 159 Ui: agentUi, 160 ShutdownCh: make(chan struct{}), 161 }, nil 162 }, 163 "agent-info": func() (cli.Command, error) { 164 return &AgentInfoCommand{ 165 Meta: meta, 166 }, nil 167 }, 168 "check": func() (cli.Command, error) { 169 return &AgentCheckCommand{ 170 Meta: meta, 171 }, nil 172 }, 173 "deployment": func() (cli.Command, error) { 174 return &DeploymentCommand{ 175 Meta: meta, 176 }, nil 177 }, 178 "deployment fail": func() (cli.Command, error) { 179 return &DeploymentFailCommand{ 180 Meta: meta, 181 }, nil 182 }, 183 "deployment list": func() (cli.Command, error) { 184 return &DeploymentListCommand{ 185 Meta: meta, 186 }, nil 187 }, 188 "deployment pause": func() (cli.Command, error) { 189 return &DeploymentPauseCommand{ 190 Meta: meta, 191 }, nil 192 }, 193 "deployment promote": func() (cli.Command, error) { 194 return &DeploymentPromoteCommand{ 195 Meta: meta, 196 }, nil 197 }, 198 "deployment resume": func() (cli.Command, error) { 199 return &DeploymentResumeCommand{ 200 Meta: meta, 201 }, nil 202 }, 203 "deployment status": func() (cli.Command, error) { 204 return &DeploymentStatusCommand{ 205 Meta: meta, 206 }, nil 207 }, 208 "eval": func() (cli.Command, error) { 209 return &EvalCommand{ 210 Meta: meta, 211 }, nil 212 }, 213 "eval status": func() (cli.Command, error) { 214 return &EvalStatusCommand{ 215 Meta: meta, 216 }, nil 217 }, 218 "eval-status": func() (cli.Command, error) { 219 return &EvalStatusCommand{ 220 Meta: meta, 221 }, nil 222 }, 223 "executor": func() (cli.Command, error) { 224 return &ExecutorPluginCommand{ 225 Meta: meta, 226 }, nil 227 }, 228 "fs": func() (cli.Command, error) { 229 return &AllocFSCommand{ 230 Meta: meta, 231 }, nil 232 }, 233 "init": func() (cli.Command, error) { 234 return &JobInitCommand{ 235 Meta: meta, 236 }, nil 237 }, 238 "inspect": func() (cli.Command, error) { 239 return &JobInspectCommand{ 240 Meta: meta, 241 }, nil 242 }, 243 "keygen": func() (cli.Command, error) { 244 return &OperatorKeygenCommand{ 245 Meta: meta, 246 }, nil 247 }, 248 "keyring": func() (cli.Command, error) { 249 return &OperatorKeyringCommand{ 250 Meta: meta, 251 }, nil 252 }, 253 "job": func() (cli.Command, error) { 254 return &JobCommand{ 255 Meta: meta, 256 }, nil 257 }, 258 "job deployments": func() (cli.Command, error) { 259 return &JobDeploymentsCommand{ 260 Meta: meta, 261 }, nil 262 }, 263 "job dispatch": func() (cli.Command, error) { 264 return &JobDispatchCommand{ 265 Meta: meta, 266 }, nil 267 }, 268 "job history": func() (cli.Command, error) { 269 return &JobHistoryCommand{ 270 Meta: meta, 271 }, nil 272 }, 273 "job init": func() (cli.Command, error) { 274 return &JobInitCommand{ 275 Meta: meta, 276 }, nil 277 }, 278 "job inspect": func() (cli.Command, error) { 279 return &JobInspectCommand{ 280 Meta: meta, 281 }, nil 282 }, 283 "job plan": func() (cli.Command, error) { 284 return &JobPlanCommand{ 285 Meta: meta, 286 }, nil 287 }, 288 "job promote": func() (cli.Command, error) { 289 return &JobPromoteCommand{ 290 Meta: meta, 291 }, nil 292 }, 293 "job revert": func() (cli.Command, error) { 294 return &JobRevertCommand{ 295 Meta: meta, 296 }, nil 297 }, 298 "job run": func() (cli.Command, error) { 299 return &JobRunCommand{ 300 Meta: meta, 301 }, nil 302 }, 303 "job status": func() (cli.Command, error) { 304 return &JobStatusCommand{ 305 Meta: meta, 306 }, nil 307 }, 308 "job stop": func() (cli.Command, error) { 309 return &JobStopCommand{ 310 Meta: meta, 311 }, nil 312 }, 313 "job validate": func() (cli.Command, error) { 314 return &JobValidateCommand{ 315 Meta: meta, 316 }, nil 317 }, 318 "logs": func() (cli.Command, error) { 319 return &AllocLogsCommand{ 320 Meta: meta, 321 }, nil 322 }, 323 "namespace": func() (cli.Command, error) { 324 return &NamespaceCommand{ 325 Meta: meta, 326 }, nil 327 }, 328 "namespace apply": func() (cli.Command, error) { 329 return &NamespaceApplyCommand{ 330 Meta: meta, 331 }, nil 332 }, 333 "namespace delete": func() (cli.Command, error) { 334 return &NamespaceDeleteCommand{ 335 Meta: meta, 336 }, nil 337 }, 338 "namespace inspect": func() (cli.Command, error) { 339 return &NamespaceInspectCommand{ 340 Meta: meta, 341 }, nil 342 }, 343 "namespace list": func() (cli.Command, error) { 344 return &NamespaceListCommand{ 345 Meta: meta, 346 }, nil 347 }, 348 "namespace status": func() (cli.Command, error) { 349 return &NamespaceStatusCommand{ 350 Meta: meta, 351 }, nil 352 }, 353 "node": func() (cli.Command, error) { 354 return &NodeCommand{ 355 Meta: meta, 356 }, nil 357 }, 358 "node config": func() (cli.Command, error) { 359 return &NodeConfigCommand{ 360 Meta: meta, 361 }, nil 362 }, 363 "node-drain": func() (cli.Command, error) { 364 return &NodeDrainCommand{ 365 Meta: meta, 366 }, nil 367 }, 368 "node drain": func() (cli.Command, error) { 369 return &NodeDrainCommand{ 370 Meta: meta, 371 }, nil 372 }, 373 "node eligibility": func() (cli.Command, error) { 374 return &NodeEligibilityCommand{ 375 Meta: meta, 376 }, nil 377 }, 378 "node-status": func() (cli.Command, error) { 379 return &NodeStatusCommand{ 380 Meta: meta, 381 }, nil 382 }, 383 "node status": func() (cli.Command, error) { 384 return &NodeStatusCommand{ 385 Meta: meta, 386 }, nil 387 }, 388 "operator": func() (cli.Command, error) { 389 return &OperatorCommand{ 390 Meta: meta, 391 }, nil 392 }, 393 394 "operator autopilot": func() (cli.Command, error) { 395 return &OperatorAutopilotCommand{ 396 Meta: meta, 397 }, nil 398 }, 399 400 "operator autopilot get-config": func() (cli.Command, error) { 401 return &OperatorAutopilotGetCommand{ 402 Meta: meta, 403 }, nil 404 }, 405 406 "operator autopilot set-config": func() (cli.Command, error) { 407 return &OperatorAutopilotSetCommand{ 408 Meta: meta, 409 }, nil 410 }, 411 "operator keygen": func() (cli.Command, error) { 412 return &OperatorKeygenCommand{ 413 Meta: meta, 414 }, nil 415 }, 416 "operator keyring": func() (cli.Command, error) { 417 return &OperatorKeyringCommand{ 418 Meta: meta, 419 }, nil 420 }, 421 "operator raft": func() (cli.Command, error) { 422 return &OperatorRaftCommand{ 423 Meta: meta, 424 }, nil 425 }, 426 427 "operator raft list-peers": func() (cli.Command, error) { 428 return &OperatorRaftListCommand{ 429 Meta: meta, 430 }, nil 431 }, 432 433 "operator raft remove-peer": func() (cli.Command, error) { 434 return &OperatorRaftRemoveCommand{ 435 Meta: meta, 436 }, nil 437 }, 438 439 "plan": func() (cli.Command, error) { 440 return &JobPlanCommand{ 441 Meta: meta, 442 }, nil 443 }, 444 445 "quota": func() (cli.Command, error) { 446 return &QuotaCommand{ 447 Meta: meta, 448 }, nil 449 }, 450 451 "quota apply": func() (cli.Command, error) { 452 return &QuotaApplyCommand{ 453 Meta: meta, 454 }, nil 455 }, 456 457 "quota delete": func() (cli.Command, error) { 458 return &QuotaDeleteCommand{ 459 Meta: meta, 460 }, nil 461 }, 462 463 "quota init": func() (cli.Command, error) { 464 return &QuotaInitCommand{ 465 Meta: meta, 466 }, nil 467 }, 468 469 "quota inspect": func() (cli.Command, error) { 470 return &QuotaInspectCommand{ 471 Meta: meta, 472 }, nil 473 }, 474 475 "quota list": func() (cli.Command, error) { 476 return &QuotaListCommand{ 477 Meta: meta, 478 }, nil 479 }, 480 481 "quota status": func() (cli.Command, error) { 482 return &QuotaStatusCommand{ 483 Meta: meta, 484 }, nil 485 }, 486 487 "run": func() (cli.Command, error) { 488 return &JobRunCommand{ 489 Meta: meta, 490 }, nil 491 }, 492 "sentinel": func() (cli.Command, error) { 493 return &SentinelCommand{ 494 Meta: meta, 495 }, nil 496 }, 497 "sentinel list": func() (cli.Command, error) { 498 return &SentinelListCommand{ 499 Meta: meta, 500 }, nil 501 }, 502 "sentinel apply": func() (cli.Command, error) { 503 return &SentinelApplyCommand{ 504 Meta: meta, 505 }, nil 506 }, 507 "sentinel delete": func() (cli.Command, error) { 508 return &SentinelDeleteCommand{ 509 Meta: meta, 510 }, nil 511 }, 512 "sentinel read": func() (cli.Command, error) { 513 return &SentinelReadCommand{ 514 Meta: meta, 515 }, nil 516 }, 517 "server": func() (cli.Command, error) { 518 return &ServerCommand{ 519 Meta: meta, 520 }, nil 521 }, 522 "server force-leave": func() (cli.Command, error) { 523 return &ServerForceLeaveCommand{ 524 Meta: meta, 525 }, nil 526 }, 527 "server join": func() (cli.Command, error) { 528 return &ServerJoinCommand{ 529 Meta: meta, 530 }, nil 531 }, 532 "server members": func() (cli.Command, error) { 533 return &ServerMembersCommand{ 534 Meta: meta, 535 }, nil 536 }, 537 "server-force-leave": func() (cli.Command, error) { 538 return &ServerForceLeaveCommand{ 539 Meta: meta, 540 }, nil 541 }, 542 "server-join": func() (cli.Command, error) { 543 return &ServerJoinCommand{ 544 Meta: meta, 545 }, nil 546 }, 547 "server-members": func() (cli.Command, error) { 548 return &ServerMembersCommand{ 549 Meta: meta, 550 }, nil 551 }, 552 "status": func() (cli.Command, error) { 553 return &StatusCommand{ 554 Meta: meta, 555 }, nil 556 }, 557 "stop": func() (cli.Command, error) { 558 return &JobStopCommand{ 559 Meta: meta, 560 }, nil 561 }, 562 "ui": func() (cli.Command, error) { 563 return &UiCommand{ 564 Meta: meta, 565 }, nil 566 }, 567 "validate": func() (cli.Command, error) { 568 return &JobValidateCommand{ 569 Meta: meta, 570 }, nil 571 }, 572 "version": func() (cli.Command, error) { 573 return &VersionCommand{ 574 Version: version.GetVersion(), 575 Ui: meta.Ui, 576 }, nil 577 }, 578 } 579 580 deprecated := map[string]cli.CommandFactory{ 581 "client-config": func() (cli.Command, error) { 582 return &DeprecatedCommand{ 583 Old: "client-config", 584 New: "node config", 585 Meta: meta, 586 Command: &NodeConfigCommand{ 587 Meta: meta, 588 }, 589 }, nil 590 }, 591 592 "keygen": func() (cli.Command, error) { 593 return &DeprecatedCommand{ 594 Old: "keygen", 595 New: "operator keygen", 596 Meta: meta, 597 Command: &OperatorKeygenCommand{ 598 Meta: meta, 599 }, 600 }, nil 601 }, 602 603 "keyring": func() (cli.Command, error) { 604 return &DeprecatedCommand{ 605 Old: "keyring", 606 New: "operator keyring", 607 Meta: meta, 608 Command: &OperatorKeyringCommand{ 609 Meta: meta, 610 }, 611 }, nil 612 }, 613 614 "server-force-leave": func() (cli.Command, error) { 615 return &DeprecatedCommand{ 616 Old: "server-force-leave", 617 New: "server force-leave", 618 Meta: meta, 619 Command: &ServerForceLeaveCommand{ 620 Meta: meta, 621 }, 622 }, nil 623 }, 624 625 "server-join": func() (cli.Command, error) { 626 return &DeprecatedCommand{ 627 Old: "server-join", 628 New: "server join", 629 Meta: meta, 630 Command: &ServerJoinCommand{ 631 Meta: meta, 632 }, 633 }, nil 634 }, 635 636 "server-members": func() (cli.Command, error) { 637 return &DeprecatedCommand{ 638 Old: "server-members", 639 New: "server members", 640 Meta: meta, 641 Command: &ServerMembersCommand{ 642 Meta: meta, 643 }, 644 }, nil 645 }, 646 } 647 648 for k, v := range deprecated { 649 all[k] = v 650 } 651 return all 652 }