github.com/secure-build/gitlab-runner@v12.5.0+incompatible/commands/unregister.go (about) 1 package commands 2 3 import ( 4 "github.com/sirupsen/logrus" 5 "github.com/urfave/cli" 6 7 "gitlab.com/gitlab-org/gitlab-runner/common" 8 "gitlab.com/gitlab-org/gitlab-runner/network" 9 ) 10 11 type UnregisterCommand struct { 12 configOptions 13 common.RunnerCredentials 14 network common.Network 15 Name string `toml:"name" json:"name" short:"n" long:"name" description:"Name of the runner you wish to unregister"` 16 AllRunners bool `toml:"all_runners" json:"all-runners" long:"all-runners" description:"Unregister all runners"` 17 } 18 19 func (c *UnregisterCommand) unregisterAllRunners() (runners []*common.RunnerConfig) { 20 logrus.Warningln("Unregistering all runners") 21 for _, r := range c.config.Runners { 22 if !c.network.UnregisterRunner(r.RunnerCredentials) { 23 logrus.Errorln("Failed to unregister runner", r.Name) 24 //If unregister fails, leave the runner in the config 25 runners = append(runners, r) 26 } 27 } 28 return 29 } 30 31 func (c *UnregisterCommand) unregisterSingleRunner() (runners []*common.RunnerConfig) { 32 if len(c.Name) > 0 { // Unregister when given a name 33 runnerConfig, err := c.RunnerByName(c.Name) 34 if err != nil { 35 logrus.Fatalln(err) 36 } 37 c.RunnerCredentials = runnerConfig.RunnerCredentials 38 } 39 40 // Unregister given Token and URL of the runner 41 if !c.network.UnregisterRunner(c.RunnerCredentials) { 42 logrus.Fatalln("Failed to unregister runner", c.Name) 43 } 44 45 for _, otherRunner := range c.config.Runners { 46 if otherRunner.RunnerCredentials == c.RunnerCredentials { 47 continue 48 } 49 runners = append(runners, otherRunner) 50 } 51 return 52 } 53 54 func (c *UnregisterCommand) Execute(context *cli.Context) { 55 userModeWarning(false) 56 57 err := c.loadConfig() 58 if err != nil { 59 logrus.Fatalln(err) 60 return 61 } 62 63 var runners []*common.RunnerConfig 64 if c.AllRunners { 65 runners = c.unregisterAllRunners() 66 } else { 67 runners = c.unregisterSingleRunner() 68 } 69 70 // check if anything changed 71 if len(c.config.Runners) == len(runners) { 72 return 73 } 74 75 c.config.Runners = runners 76 77 // save config file 78 err = c.saveConfig() 79 if err != nil { 80 logrus.Fatalln("Failed to update", c.ConfigFile, err) 81 } 82 logrus.Println("Updated", c.ConfigFile) 83 } 84 85 func init() { 86 common.RegisterCommand2("unregister", "unregister specific runner", &UnregisterCommand{ 87 network: network.NewGitLabClient(), 88 }) 89 }