func (ms *MinionServer) launchHyperkubeServer(server string, args []string, logFileName string, options ...tasks.Option) { log.V(2).Infof("Spawning hyperkube %v with args '%+v'", server, args) kmArgs := append([]string{server}, args...) maxSize := ms.logMaxSize.Value() if maxSize > 0 { // convert to MB maxSize = maxSize / 1024 / 1024 if maxSize == 0 { log.Warning("maximal log file size is rounded to 1 MB") maxSize = 1 } } writerFunc := func() io.WriteCloser { return &lumberjack.Logger{ Filename: logFileName, MaxSize: int(maxSize), MaxBackups: ms.logMaxBackups, MaxAge: ms.logMaxAgeInDays, } } // prepend env, allow later options to customize further options = append([]tasks.Option{tasks.Environment(os.Environ()), ms.applyPathOverride()}, options...) t := tasks.New(server, ms.kmBinary, kmArgs, writerFunc, options...) go t.Start() ms.tasks = append(ms.tasks, t) }
func (ms *MinionServer) launchHyperkubeServer(server string, args []string, logFileName string, decorator func(*tasks.Task) *tasks.Task) { log.V(2).Infof("Spawning hyperkube %v with args '%+v'", server, args) kmArgs := append([]string{server}, args...) maxSize := ms.logMaxSize.Value() if maxSize > 0 { // convert to MB maxSize = maxSize / 1024 / 1024 if maxSize == 0 { log.Warning("maximal log file size is rounded to 1 MB") maxSize = 1 } } writerFunc := func() io.WriteCloser { return &lumberjack.Logger{ Filename: logFileName, MaxSize: int(maxSize), MaxBackups: ms.logMaxBackups, MaxAge: ms.logMaxAgeInDays, } } // use given environment, but add /usr/sbin and $SANDBOX/bin to the path for the iptables binary used in kube-proxy var kmEnv []string env := os.Environ() kmEnv = make([]string, 0, len(env)) for _, e := range env { if !strings.HasPrefix(e, "PATH=") { kmEnv = append(kmEnv, e) } else { if ms.pathOverride != "" { e = "PATH=" + ms.pathOverride } pwd, err := os.Getwd() if err != nil { panic(fmt.Errorf("Cannot get current directory: %v", err)) } kmEnv = append(kmEnv, fmt.Sprintf("%s:%s", e, path.Join(pwd, "bin"))) } } t := tasks.New(server, ms.kmBinary, kmArgs, kmEnv, writerFunc) if decorator != nil { t = decorator(t) } go t.Start() ms.tasks = append(ms.tasks, t) }