1
0
mirror of https://github.com/rancher/os.git synced 2025-09-01 14:48:55 +00:00

Support legacy Docker Compose labels

This commit is contained in:
Josh Curl
2016-06-13 17:53:36 -07:00
parent 10a179cbbd
commit 313cdb7e24
6 changed files with 38 additions and 6 deletions

View File

@@ -134,6 +134,11 @@ func (c *Container) Recreate(ctx context.Context, imageName string) (*types.Cont
}
hash := container.Config.Labels[labels.HASH.Str()]
legacyHash := container.Config.Labels[labels.HASH_LEGACY.Str()]
if hash == "" && legacyHash != "" {
hash = legacyHash
}
if hash == "" {
return nil, fmt.Errorf("Failed to find hash on old container: %s", container.Name)
}

View File

@@ -63,7 +63,12 @@ func NewNamer(ctx context.Context, client client.APIClient, project, service str
maxNumber := 0
for _, container := range containers {
number, err := strconv.Atoi(container.Labels[labels.NUMBER.Str()])
numberLabel := container.Labels[labels.NUMBER.Str()]
if numberLabel == "" {
namer.currentNumber = 1
return namer, nil
}
number, err := strconv.Atoi(numberLabel)
if err != nil {
return nil, err
}

View File

@@ -79,15 +79,29 @@ func (s *Service) collectContainers(ctx context.Context) ([]*Container, error) {
return nil, err
}
legacyContainers, err := GetContainersByFilter(ctx, client, labels.SERVICE_LEGACY.Eq(s.name), labels.PROJECT_LEGACY.Eq(s.context.Project.Name))
if err != nil {
return nil, err
}
if len(containers) == 0 && len(legacyContainers) > 0 {
containers = legacyContainers
}
result := []*Container{}
for _, container := range containers {
containerNumber, err := strconv.Atoi(container.Labels[labels.NUMBER.Str()])
numberLabel := container.Labels[labels.NUMBER.Str()]
name := strings.SplitAfter(container.Names[0], "/")
if numberLabel == "" {
result = append(result, NewContainer(client, name[1], 1, s))
return result, nil
}
containerNumber, err := strconv.Atoi(numberLabel)
if err != nil {
return nil, err
}
// Compose add "/" before name, so Name[1] will store actaul name.
name := strings.SplitAfter(container.Names[0], "/")
result = append(result, NewContainer(client, name[1], containerNumber, s))
}

View File

@@ -18,6 +18,10 @@ const (
SERVICE = Label("com.docker.compose.service")
HASH = Label("com.docker.compose.config-hash")
VERSION = Label("com.docker.compose.version")
PROJECT_LEGACY = Label("io.docker.compose.project")
SERVICE_LEGACY = Label("io.docker.compose.service")
HASH_LEGACY = Label("io.docker.compose.config-hash")
)
// EqString returns a label json string representation with the specified value.