1
0
mirror of https://github.com/rancher/os.git synced 2025-06-25 14:31:33 +00:00
os/cmd/control/reload.go

54 lines
1.1 KiB
Go
Raw Normal View History

2015-02-23 03:56:25 +00:00
package control
import (
log "github.com/Sirupsen/logrus"
"github.com/codegangsta/cli"
"github.com/rancherio/os/config"
"github.com/rancherio/os/docker"
)
func parseContainers(cfg *config.Config) map[string]*docker.Container {
result := map[string]*docker.Container{}
for _, containerConfig := range cfg.SystemContainers {
container := docker.NewContainer(config.DOCKER_SYSTEM_HOST, &containerConfig)
if containerConfig.Id != "" {
result[containerConfig.Id] = container
}
}
return result
}
func reload(c *cli.Context) {
cfg, err := config.LoadConfig()
if err != nil {
log.Fatal(err)
}
containers := parseContainers(cfg)
toStart := make([]*docker.Container, 0, len(c.Args()))
for _, id := range c.Args() {
if container, ok := containers[id]; ok {
toStart = append(toStart, container.Stage())
}
}
var firstErr error
for _, c := range toStart {
err := c.Start().Err
if err != nil {
log.Errorf("Failed to start %s : %v", c.ContainerCfg.Id, err)
if firstErr != nil {
firstErr = err
}
}
}
if firstErr != nil {
log.Fatal(firstErr)
}
}