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