mirror of
https://github.com/rancher/os.git
synced 2025-09-01 14:48:55 +00:00
Add addon to rancherctl
This commit is contained in:
53
cmd/control/reload.go
Normal file
53
cmd/control/reload.go
Normal file
@@ -0,0 +1,53 @@
|
||||
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)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user