From 504f35db1a8ffcc0a4a5e93702adf94d886de987 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Thu, 27 Aug 2015 12:17:04 -0700 Subject: [PATCH] Godep bump for libcompose --- Godeps/Godeps.json | 18 ++--- .../docker/libcompose/docker/container.go | 30 ++++---- .../docker/libcompose/docker/service.go | 73 +++++++++++-------- 3 files changed, 65 insertions(+), 56 deletions(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 17824ac6..d3fd19f5 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -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", diff --git a/Godeps/_workspace/src/github.com/docker/libcompose/docker/container.go b/Godeps/_workspace/src/github.com/docker/libcompose/docker/container.go index 3e03b1f8..0fce2abb 100644 --- a/Godeps/_workspace/src/github.com/docker/libcompose/docker/container.go +++ b/Godeps/_workspace/src/github.com/docker/libcompose/docker/container.go @@ -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(), diff --git a/Godeps/_workspace/src/github.com/docker/libcompose/docker/service.go b/Godeps/_workspace/src/github.com/docker/libcompose/docker/service.go index 1d60ead8..38b73b6d 100644 --- a/Godeps/_workspace/src/github.com/docker/libcompose/docker/service.go +++ b/Godeps/_workspace/src/github.com/docker/libcompose/docker/service.go @@ -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 {