From dbe39ba1c231f1e371c79802ac106a682d0f0ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iago=20L=C3=B3pez=20Galeiras?= Date: Tue, 2 Jun 2015 16:17:15 +0200 Subject: [PATCH] Godeps: bump docker2aci It converts docker ports --- Godeps/Godeps.json | 4 +- .../appc/docker2aci/lib/common/common.go | 61 ++++++++++++++++++- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index bbe4c66..5266fec 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -57,11 +57,11 @@ }, { "ImportPath": "github.com/appc/docker2aci/lib", - "Rev": "52b5a4e299eb92c51c7b0e9596543b52e7540010" + "Rev": "06ed1491dee087e5a83984239e8e11577d8a6131" }, { "ImportPath": "github.com/appc/docker2aci/tarball", - "Rev": "52b5a4e299eb92c51c7b0e9596543b52e7540010" + "Rev": "06ed1491dee087e5a83984239e8e11577d8a6131" }, { "ImportPath": "github.com/appc/spec/aci", diff --git a/Godeps/_workspace/src/github.com/appc/docker2aci/lib/common/common.go b/Godeps/_workspace/src/github.com/appc/docker2aci/lib/common/common.go index 91d034f..239003b 100644 --- a/Godeps/_workspace/src/github.com/appc/docker2aci/lib/common/common.go +++ b/Godeps/_workspace/src/github.com/appc/docker2aci/lib/common/common.go @@ -9,13 +9,13 @@ import ( "os" "path" "path/filepath" - "time" - - "github.com/coreos/rkt/Godeps/_workspace/src/github.com/appc/docker2aci/tarball" + "strconv" "strings" + "time" "github.com/coreos/rkt/Godeps/_workspace/src/github.com/appc/docker2aci/lib/types" "github.com/coreos/rkt/Godeps/_workspace/src/github.com/appc/docker2aci/lib/util" + "github.com/coreos/rkt/Godeps/_workspace/src/github.com/appc/docker2aci/tarball" "github.com/coreos/rkt/Godeps/_workspace/src/github.com/appc/spec/aci" "github.com/coreos/rkt/Godeps/_workspace/src/github.com/appc/spec/schema" appctypes "github.com/coreos/rkt/Godeps/_workspace/src/github.com/appc/spec/schema/types" @@ -183,6 +183,11 @@ func GenerateManifest(layerData types.DockerImageData, dockerURL *types.ParsedDo return nil, err } + app.Ports, err = convertPorts(dockerConfig.ExposedPorts, dockerConfig.PortSpecs) + if err != nil { + return nil, err + } + genManifest.App = app } } @@ -201,6 +206,56 @@ func GenerateManifest(layerData types.DockerImageData, dockerURL *types.ParsedDo return genManifest, nil } +func convertPorts(dockerExposedPorts map[string]struct{}, dockerPortSpecs []string) ([]appctypes.Port, error) { + ports := []appctypes.Port{} + + for ep := range dockerExposedPorts { + appcPort, err := parseDockerPort(ep) + if err != nil { + return nil, err + } + ports = append(ports, *appcPort) + } + + if dockerExposedPorts == nil && dockerPortSpecs != nil { + util.Debug("warning: docker image uses deprecated PortSpecs field") + for _, ep := range dockerPortSpecs { + appcPort, err := parseDockerPort(ep) + if err != nil { + return nil, err + } + ports = append(ports, *appcPort) + } + } + + return ports, nil +} + +func parseDockerPort(dockerPort string) (*appctypes.Port, error) { + var portString string + proto := "tcp" + sp := strings.Split(dockerPort, "/") + if len(sp) < 2 { + portString = dockerPort + } else { + proto = sp[1] + portString = sp[0] + } + + port, err := strconv.ParseUint(portString, 10, 0) + if err != nil { + return nil, fmt.Errorf("error parsing port %q: %v", portString, err) + } + + appcPort := &appctypes.Port{ + Name: *appctypes.MustACName(dockerPort), + Protocol: proto, + Port: uint(port), + } + + return appcPort, nil +} + func convertVolumesToMPs(dockerVolumes map[string]struct{}) ([]appctypes.MountPoint, error) { mps := []appctypes.MountPoint{} dup := make(map[string]int)