From b71b70e0d91578ef2df953e515b98d4f2d448a62 Mon Sep 17 00:00:00 2001 From: Janet Kuo Date: Wed, 3 Aug 2016 18:05:02 -0700 Subject: [PATCH] Converting compose labels to k8s annotations --- cli/app/app.go | 25 ++++++++++++------------- cli/app/types.go | 1 + examples/docker-voting.yml | 4 ++++ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/cli/app/app.go b/cli/app/app.go index c7471546..549bd16d 100644 --- a/cli/app/app.go +++ b/cli/app/app.go @@ -753,7 +753,8 @@ func loadBundlesFile(file string, opt convertOptions) KomposeObject { serviceConfig := ServiceConfig{} serviceConfig.Command = service.Command serviceConfig.Args = service.Args - serviceConfig.Labels = service.Labels + // convert bundle labels to annotations + serviceConfig.Annotations = service.Labels image, err := loadImage(service) if err != "" { @@ -844,14 +845,8 @@ func loadComposeFile(file string, opt convertOptions) KomposeObject { serviceConfig.WorkingDir = composeServiceConfig.WorkingDir serviceConfig.Volumes = composeServiceConfig.Volumes - // load labels - labels := composeServiceConfig.Labels - if labels != nil { - if err := labels.UnmarshalYAML("", labels); err != nil { - logrus.Fatalf("Failed to load labels from compose file: %v", err) - } - } - serviceConfig.Labels = labels + // convert compose labels to annotations + serviceConfig.Annotations = map[string]string(composeServiceConfig.Labels) serviceConfig.CPUSet = composeServiceConfig.CPUSet serviceConfig.CPUShares = composeServiceConfig.CPUShares @@ -922,12 +917,15 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) { servicePorts := configServicePorts(name, service) sc.Spec.Ports = servicePorts - // Configure label + // Configure labels labels := map[string]string{"service": name} - for key, value := range service.Labels { - labels[key] = value - } sc.ObjectMeta.Labels = labels + // Configure annotations + annotations := map[string]string{} + for key, value := range service.Annotations { + annotations[key] = value + } + sc.ObjectMeta.Annotations = annotations // fillTemplate fills the pod template with the value calculated from config fillTemplate := func(template *api.PodTemplateSpec) { @@ -960,6 +958,7 @@ func komposeConvert(komposeObject KomposeObject, opt convertOptions) { // fillObjectMeta fills the metadata with the value calculated from config fillObjectMeta := func(meta *api.ObjectMeta) { meta.Labels = labels + meta.Annotations = annotations } // Update each supported controllers diff --git a/cli/app/types.go b/cli/app/types.go index 0cb023ba..b5fe4176 100644 --- a/cli/app/types.go +++ b/cli/app/types.go @@ -33,6 +33,7 @@ type ServiceConfig struct { Volumes []string Network []string Labels map[string]string + Annotations map[string]string CPUSet string CPUShares int64 CPUQuota int64 diff --git a/examples/docker-voting.yml b/examples/docker-voting.yml index 289b9d24..b008102a 100644 --- a/examples/docker-voting.yml +++ b/examples/docker-voting.yml @@ -4,6 +4,8 @@ services: vote: build: ./vote command: python app.py + labels: + - "com.example.description=Vote" volumes: - ./vote:/app ports: @@ -18,6 +20,8 @@ services: db: image: postgres:9.4 + labels: + - "com.example.description=Postgres Database" result: build: ./result