github.com/chenbh/concourse/v6@v6.4.2/fly/commands/prune_worker.go (about) 1 package commands 2 3 import ( 4 "fmt" 5 6 "github.com/chenbh/concourse/v6/fly/commands/internal/displayhelpers" 7 "github.com/chenbh/concourse/v6/fly/commands/internal/flaghelpers" 8 "github.com/chenbh/concourse/v6/fly/rc" 9 "github.com/chenbh/concourse/v6/fly/ui" 10 ) 11 12 type PruneWorkerCommand struct { 13 Worker flaghelpers.WorkerFlag `short:"w" long:"worker" description:"Worker to prune"` 14 AllStalled bool `short:"a" long:"all-stalled" description:"Prune all stalled workers"` 15 } 16 17 func (command *PruneWorkerCommand) Execute(args []string) error { 18 if command.Worker == "" && !command.AllStalled { 19 displayhelpers.Failf("Either a worker name or --all-stalled are required") 20 } 21 22 workerName := command.Worker.Name() 23 var workersNames []string 24 25 if command.Worker != "" { 26 workersNames = append(workersNames, workerName) 27 } 28 29 target, err := rc.LoadTarget(Fly.Target, Fly.Verbose) 30 if err != nil { 31 return err 32 } 33 34 err = target.Validate() 35 if err != nil { 36 return err 37 } 38 39 if command.AllStalled { 40 workers, err := target.Client().ListWorkers() 41 if err != nil { 42 return err 43 } 44 for _, worker := range workers { 45 if worker.State == "stalled" { 46 workersNames = append(workersNames, worker.Name) 47 } 48 } 49 if workersNames == nil { 50 fmt.Printf(ui.WarningColor("WARNING: No stalled workers found.\n")) 51 } 52 } 53 54 for _, workerName := range workersNames { 55 err = target.Client().PruneWorker(workerName) 56 if err != nil { 57 return err 58 } 59 60 fmt.Printf("pruned '%s'\n", workerName) 61 } 62 return nil 63 }