Adding new verbs and fleshing out the skeleton. Drain works while Kill has an error tha requires a deeper dive.

This commit is contained in:
Renan DelValle 2017-12-03 12:41:23 -08:00
parent 51ff20165e
commit 8e0988513a
7 changed files with 232 additions and 40 deletions

61
cmd/start.go Normal file
View file

@ -0,0 +1,61 @@
package cmd
import (
"fmt"
"os"
"github.com/paypal/gorealis/gen-go/apache/aurora"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(startCmd)
// Sub-commands
startCmd.AddCommand(startMaintCmd)
}
var startCmd = &cobra.Command{
Use: "start",
Short: "Start a service or maintenance on a host (DRAIN).",
}
var startMaintCmd = &cobra.Command{
Use: "drain [space separated host list]",
Short: "Place a list of space separated Mesos Agents into maintenance mode.",
Long: `Adds a Mesos Agent to Aurora's Drain list. Agents in this list
are not allowed to schedule new tasks and any tasks already running on this Agent
are killed and rescheduled in an Agent that is not in maintenance mode. Command
expects a space separated list of hosts to place into maintenance mode.`,
Args: cobra.MinimumNArgs(1),
Run: drain,
}
func drain(cmd *cobra.Command, args []string) {
fmt.Println("Setting hosts to DRAINING")
fmt.Println(args)
_, result, err := client.DrainHosts(args...)
if err != nil {
fmt.Printf("error: %+v\n", err.Error())
os.Exit(1)
}
// Monitor change to DRAINING and DRAINED mode
hostResult, err := monitor.HostMaintenance(
args,
[]aurora.MaintenanceMode{aurora.MaintenanceMode_DRAINED, aurora.MaintenanceMode_DRAINING},
5,
10)
if err != nil {
for host, ok := range hostResult {
if !ok {
fmt.Printf("Host %s did not transtion into desired mode(s)\n", host)
}
}
fmt.Printf("error: %+v\n", err.Error())
return
}
fmt.Print(result.String())
}