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