1
0
mirror of https://github.com/rancher/os.git synced 2025-09-01 06:40:31 +00:00

Support reloading config during system containers start up

This commit is contained in:
Darren Shepherd
2015-02-22 20:57:09 -07:00
parent b0046e8e08
commit 3620db959f
4 changed files with 135 additions and 31 deletions

View File

@@ -115,12 +115,8 @@ func loadImages(cfg *config.Config) error {
return nil
}
func runContainers(cfg *config.Config) error {
containerConfigs := cfg.SystemContainers
if cfg.Rescue {
log.Debug("Running rescue container")
containerConfigs = []config.ContainerConfig{*cfg.RescueContainer}
}
func runContainersFrom(startFrom string, cfg *config.Config, containerConfigs []config.ContainerConfig) error {
foundStart := false
for i, containerConfig := range containerConfigs {
container := docker.NewContainer(config.DOCKER_SYSTEM_HOST, &containerConfig)
@@ -130,26 +126,50 @@ func runContainers(cfg *config.Config) error {
continue
}
if containerConfig.Id == config.CONSOLE_CONTAINER {
if util.IsRunningInTty() {
container.Config.Tty = true
container.Config.AttachStdin = true
container.Config.AttachStdout = true
container.Config.AttachStderr = true
//if containerConfig.Id == config.CONSOLE_CONTAINER {
// if util.IsRunningInTty() {
// container.Config.Tty = true
// container.Config.AttachStdin = true
// container.Config.AttachStdout = true
// container.Config.AttachStderr = true
// }
//}
if foundStart || startFrom == "" {
log.Infof("Running [%d/%d] %s", i+1, len(containerConfigs), containerConfig.Id)
container.StartAndWait()
if container.Err != nil {
log.Errorf("Failed to run %v: %v", containerConfig.Id, container.Err)
}
}
log.Infof("Running [%d/%d] %s", i+1, len(containerConfigs), containerConfig.Id)
container.StartAndWait()
if containerConfig.ReloadConfig {
log.Info("Reloading configuration")
err := cfg.Reload()
if err != nil {
return err
}
if container.Err != nil {
log.Errorf("Failed to run %v: %v", containerConfig.Id, container.Err)
return runContainersFrom(containerConfig.Id, cfg, cfg.SystemContainers)
}
} else if startFrom == containerConfig.Id {
foundStart = true
}
}
return nil
}
func runContainers(cfg *config.Config) error {
containerConfigs := cfg.SystemContainers
if cfg.Rescue {
log.Debug("Running rescue container")
containerConfigs = []config.ContainerConfig{*cfg.RescueContainer}
}
return runContainersFrom("", cfg, containerConfigs)
}
func launchConsole(cfg *config.Config) error {
if !util.IsRunningInTty() {
return nil