1
0
mirror of https://github.com/rancher/os.git synced 2025-07-06 19:38:37 +00:00

Merge pull request #535 from ibuildthecloud/godep

Godep bump for libcompose
This commit is contained in:
Darren Shepherd 2015-08-27 12:18:29 -07:00
commit eed4057f5f
3 changed files with 65 additions and 56 deletions

18
Godeps/Godeps.json generated
View File

@ -250,33 +250,27 @@
},
{
"ImportPath": "github.com/docker/libcompose/cli/logger",
"Comment": "v0.0.2-ros-1-g6815465",
"Rev": "68154659ac7ebd81f0e61b14750393f2fbc0eca4"
"Rev": "a8ac0a68c0552afe4ddb01c4ba3184e574ac416e"
},
{
"ImportPath": "github.com/docker/libcompose/docker",
"Comment": "v0.0.2-ros-1-g6815465",
"Rev": "68154659ac7ebd81f0e61b14750393f2fbc0eca4"
"Rev": "a8ac0a68c0552afe4ddb01c4ba3184e574ac416e"
},
{
"ImportPath": "github.com/docker/libcompose/logger",
"Comment": "v0.0.2-ros-1-g6815465",
"Rev": "68154659ac7ebd81f0e61b14750393f2fbc0eca4"
"Rev": "a8ac0a68c0552afe4ddb01c4ba3184e574ac416e"
},
{
"ImportPath": "github.com/docker/libcompose/lookup",
"Comment": "v0.0.2-ros-1-g6815465",
"Rev": "68154659ac7ebd81f0e61b14750393f2fbc0eca4"
"Rev": "a8ac0a68c0552afe4ddb01c4ba3184e574ac416e"
},
{
"ImportPath": "github.com/docker/libcompose/project",
"Comment": "v0.0.2-ros-1-g6815465",
"Rev": "68154659ac7ebd81f0e61b14750393f2fbc0eca4"
"Rev": "a8ac0a68c0552afe4ddb01c4ba3184e574ac416e"
},
{
"ImportPath": "github.com/docker/libcompose/utils",
"Comment": "v0.0.2-ros-1-g6815465",
"Rev": "68154659ac7ebd81f0e61b14750393f2fbc0eca4"
"Rev": "a8ac0a68c0552afe4ddb01c4ba3184e574ac416e"
},
{
"ImportPath": "github.com/docker/libcontainer/netlink",

View File

@ -106,9 +106,14 @@ func (c *Container) Rebuild(imageName string) (*dockerclient.Container, error) {
name := info.Name[1:]
new_name := fmt.Sprintf("%s_%s", name, info.Id[:12])
deleted := false
logrus.Debugf("Renaming %s => %s", name, new_name)
if err := c.client.RenameContainer(name, new_name); err != nil {
return nil, err
logrus.Errorf("Rename failed, deleting %s", name)
if err := c.client.RemoveContainer(info.Id, true, false); err != nil {
return nil, err
}
deleted = true
}
newContainer, err := c.createContainer(imageName, info.Id)
@ -117,13 +122,14 @@ func (c *Container) Rebuild(imageName string) (*dockerclient.Container, error) {
}
logrus.Debugf("Created replacement container %s", newContainer.Id)
if err := c.client.RemoveContainer(info.Id, true, false); err != nil {
logrus.Errorf("Failed to remove old container %s", c.name)
return nil, err
if !deleted {
if err := c.client.RemoveContainer(info.Id, true, false); err != nil {
logrus.Errorf("Failed to remove old container %s", c.name)
return nil, err
}
logrus.Debugf("Removed old container %s %s", c.name, info.Id)
}
logrus.Debugf("Removed old container %s %s", c.name, info.Id)
return newContainer, nil
}
@ -199,15 +205,9 @@ func (c *Container) Up(imageName string) error {
}
if !info.State.Running {
logrus.Debugf("Starting container: %s: %#v", container.Id, info.HostConfig)
err = c.populateAdditionalHostConfig(info.HostConfig)
if err != nil {
return err
}
if err := c.client.StartContainer(container.Id, nil); err != nil {
return err
}
logrus.Debugf("Starting container: %s", container.Id)
err := c.client.StartContainer(container.Id, nil)
return err
c.service.context.Project.Notify(project.CONTAINER_STARTED, c.service.Name(), map[string]string{
"name": c.Name(),

View File

@ -51,37 +51,9 @@ func (s *Service) collectContainers() ([]*Container, error) {
return result, nil
}
imageName, err := s.build()
if err != nil {
return nil, err
}
for _, container := range containers {
name := container.Labels[NAME.Str()]
c := NewContainer(client, name, s)
if s.context.Rebuild {
outOfSync, err := c.OutOfSync(imageName)
if err != nil {
return nil, err
}
origRebuildLabel := container.Labels[REBUILD.Str()]
newRebuildLabel := s.Config().Labels.MapParts()[REBUILD.Str()]
rebuildLabelChanged := newRebuildLabel != origRebuildLabel
logrus.WithFields(logrus.Fields{
"origRebuildLabel": origRebuildLabel,
"newRebuildLabel": newRebuildLabel,
"rebuildLabelChanged": rebuildLabelChanged}).Debug("Rebuild values")
if origRebuildLabel == "always" || rebuildLabelChanged || origRebuildLabel != "false" && outOfSync {
logrus.Infof("Rebuilding %s", name)
if _, err := c.Rebuild(imageName); err != nil {
return nil, err
}
} else if outOfSync {
logrus.Warnf("%s needs rebuilding", name)
}
}
result = append(result, c)
result = append(result, NewContainer(client, name, s))
}
return result, nil
@ -203,10 +175,53 @@ func (s *Service) up(imageName string, create bool) error {
}
return s.eachContainer(func(c *Container) error {
if s.context.Rebuild && create {
if err := s.rebuildIfNeeded(c); err != nil {
return err
}
}
return c.Up(imageName)
})
}
func (s *Service) rebuildIfNeeded(c *Container) error {
imageName, err := s.build()
if err != nil {
return err
}
outOfSync, err := c.OutOfSync(imageName)
if err != nil {
return err
}
containerInfo, err := c.findInfo()
if containerInfo == nil || err != nil {
return err
}
name := containerInfo.Name[1:]
origRebuildLabel := containerInfo.Config.Labels[REBUILD.Str()]
newRebuildLabel := s.Config().Labels.MapParts()[REBUILD.Str()]
rebuildLabelChanged := newRebuildLabel != origRebuildLabel
logrus.WithFields(logrus.Fields{
"origRebuildLabel": origRebuildLabel,
"newRebuildLabel": newRebuildLabel,
"rebuildLabelChanged": rebuildLabelChanged}).Debug("Rebuild values")
if origRebuildLabel == "always" || rebuildLabelChanged || origRebuildLabel != "false" && outOfSync {
logrus.Infof("Rebuilding %s", name)
if _, err := c.Rebuild(imageName); err != nil {
return err
}
} else if outOfSync {
logrus.Warnf("%s needs rebuilding", name)
}
return nil
}
func (s *Service) eachContainer(action func(*Container) error) error {
containers, err := s.collectContainers()
if err != nil {