Skip to content
This repository has been archived by the owner on Mar 22, 2022. It is now read-only.

Commit

Permalink
Move Labels to a dedicated file into internal directory
Browse files Browse the repository at this point in the history
Signed-off-by: Guillaume Lours <[email protected]>
  • Loading branch information
glours authored and ndeloof committed Feb 12, 2020
1 parent f91c91a commit 88eb980
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 24 deletions.
10 changes: 10 additions & 0 deletions internal/labels.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package internal

const (
labelNamespace = "io.compose-spec"
LabelService = labelNamespace + ".service"
LabelNetwork = labelNamespace + ".network"
LabelVolume = labelNamespace + ".volume"
LabelProject = labelNamespace + ".project"
LabelConfig = labelNamespace + ".config"
)
40 changes: 16 additions & 24 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"path/filepath"
"strings"

"github.com/compose-spec/compose-ref/internal"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/api/types/mount"
"github.com/docker/docker/errdefs"
Expand Down Expand Up @@ -167,7 +168,7 @@ func doUp(project string, config *compose.Config) error {

diverged := false
for _, cntr := range containers {
config := cntr.Labels[labelConfig]
config := cntr.Labels[internal.LabelConfig]
if config != expected {
diverged = true
break
Expand Down Expand Up @@ -204,7 +205,7 @@ func doUp(project string, config *compose.Config) error {
func removeContainers(cli *client.Client, containers []types.Container) error {
ctx := context.Background()
for _, c := range containers {
if serviceName, ok := c.Labels[labelService]; ok {
if serviceName, ok := c.Labels[internal.LabelService]; ok {
fmt.Printf("Stopping containers for service %s ... ", serviceName)
}
err := cli.ContainerStop(ctx, c.ID, nil)
Expand Down Expand Up @@ -236,14 +237,14 @@ func createService(cli *client.Client, project string, prjDir string, s compose.
for k, v := range s.Labels {
labels[k] = v
}
labels[labelProject] = project
labels[labelService] = s.Name
labels[internal.LabelProject] = project
labels[internal.LabelService] = s.Name

b, err := yaml.Marshal(s)
if err != nil {
return err
}
labels[labelConfig] = string(b)
labels[internal.LabelConfig] = string(b)

fmt.Printf("Creating container for service %s ... ", s.Name)
networkMode := networkMode(s, networks)
Expand Down Expand Up @@ -330,8 +331,8 @@ func createNetwork(cli *client.Client, project string, networkDefaultName string
if createOptions.Labels == nil {
createOptions.Labels = map[string]string{}
}
createOptions.Labels[labelProject] = project
createOptions.Labels[labelNetwork] = name
createOptions.Labels[internal.LabelProject] = project
createOptions.Labels[internal.LabelNetwork] = name

if netConfig.External.External {
_, err := cli.NetworkInspect(context.Background(), name, types.NetworkInspectOptions{})
Expand Down Expand Up @@ -409,8 +410,8 @@ func createVolume(cli *client.Client, project string, volumeDefaultName string,
Driver: volumeConfig.Driver,
DriverOpts: volumeConfig.DriverOpts,
Labels: map[string]string{
labelProject: project,
labelVolume: name,
internal.LabelProject: project,
internal.LabelVolume: name,
},
})

Expand Down Expand Up @@ -468,14 +469,14 @@ func buildTmpfsOptions(tmpfs *compose.ServiceVolumeTmpfs) *mount.TmpfsOptions {
func collectContainers(cli *client.Client, project string) (map[string][]types.Container, error) {
containerList, err := cli.ContainerList(context.Background(), types.ContainerListOptions{
All: true,
Filters: filters.NewArgs(filters.Arg("label", labelProject+"="+project)),
Filters: filters.NewArgs(filters.Arg("label", internal.LabelProject+"="+project)),
})
if err != nil {
return nil, err
}
containers := map[string][]types.Container{}
for _, c := range containerList {
service := c.Labels[labelService]
service := c.Labels[internal.LabelService]
l, ok := containers[service]
if !ok {
l = []types.Container{c}
Expand All @@ -489,14 +490,14 @@ func collectContainers(cli *client.Client, project string) (map[string][]types.C

func collectNetworks(cli *client.Client, project string) (map[string][]types.NetworkResource, error) {
networkList, err := cli.NetworkList(context.Background(), types.NetworkListOptions{
Filters: filters.NewArgs(filters.Arg("label", labelProject+"="+project)),
Filters: filters.NewArgs(filters.Arg("label", internal.LabelProject+"="+project)),
})
if err != nil {
return nil, err
}
networks := map[string][]types.NetworkResource{}
for _, r := range networkList {
resource := r.Labels[labelNetwork]
resource := r.Labels[internal.LabelNetwork]
l, ok := networks[resource]
if !ok {
l = []types.NetworkResource{r}
Expand All @@ -510,14 +511,14 @@ func collectNetworks(cli *client.Client, project string) (map[string][]types.Net
}

func collectVolumes(cli *client.Client, project string) (map[string][]types.Volume, error) {
filter := filters.NewArgs(filters.Arg("label", labelProject+"="+project))
filter := filters.NewArgs(filters.Arg("label", internal.LabelProject+"="+project))
list, err := cli.VolumeList(context.Background(), filter)
if err != nil {
return nil, err
}
volumes := map[string][]types.Volume{}
for _, v := range list.Volumes {
resource := v.Labels[labelVolume]
resource := v.Labels[internal.LabelVolume]
l, ok := volumes[resource]
if !ok {
l = []types.Volume{*v}
Expand Down Expand Up @@ -699,12 +700,3 @@ func buildContainerBindingOptions(serviceConfig compose.ServiceConfig) nat.PortM
}
return bindings
}

const (
labelNamespace = "io.compose-spec"
labelService = labelNamespace + ".service"
labelNetwork = labelNamespace + ".network"
labelVolume = labelNamespace + ".volume"
labelProject = labelNamespace + ".project"
labelConfig = labelNamespace + ".config"
)

0 comments on commit 88eb980

Please sign in to comment.