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:
@@ -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
|
||||
|
Reference in New Issue
Block a user