Add port protocol handing for docker-compose.

This commit is contained in:
Tomas Kral 2016-09-19 14:19:42 +02:00
parent 1e581355c7
commit ed711804fe
No known key found for this signature in database
GPG Key ID: E690DA7E4F291FA6

View File

@ -52,15 +52,26 @@ func loadPorts(composePorts []string) ([]kobject.Ports, error) {
ports := []kobject.Ports{} ports := []kobject.Ports{}
character := ":" character := ":"
for _, port := range composePorts { for _, port := range composePorts {
p := api.ProtocolTCP proto := api.ProtocolTCP
if strings.Contains(port, character) { // get protocol
hostPort := port[0:strings.Index(port, character)] p := strings.Split(port, "/")
if len(p) == 2 {
if strings.EqualFold("tcp", p[1]) {
proto = api.ProtocolTCP
} else if strings.EqualFold("udp", p[1]) {
proto = api.ProtocolUDP
}
}
// port mappings without protocol part
portNoProto := p[0]
if strings.Contains(portNoProto, character) {
hostPort := portNoProto[0:strings.Index(portNoProto, character)]
hostPort = strings.TrimSpace(hostPort) hostPort = strings.TrimSpace(hostPort)
hostPortInt, err := strconv.Atoi(hostPort) hostPortInt, err := strconv.Atoi(hostPort)
if err != nil { if err != nil {
return nil, fmt.Errorf("invalid host port %q", port) return nil, fmt.Errorf("invalid host port %q", port)
} }
containerPort := port[strings.Index(port, character)+1:] containerPort := portNoProto[strings.Index(portNoProto, character)+1:]
containerPort = strings.TrimSpace(containerPort) containerPort = strings.TrimSpace(containerPort)
containerPortInt, err := strconv.Atoi(containerPort) containerPortInt, err := strconv.Atoi(containerPort)
if err != nil { if err != nil {
@ -69,16 +80,16 @@ func loadPorts(composePorts []string) ([]kobject.Ports, error) {
ports = append(ports, kobject.Ports{ ports = append(ports, kobject.Ports{
HostPort: int32(hostPortInt), HostPort: int32(hostPortInt),
ContainerPort: int32(containerPortInt), ContainerPort: int32(containerPortInt),
Protocol: p, Protocol: proto,
}) })
} else { } else {
containerPortInt, err := strconv.Atoi(port) containerPortInt, err := strconv.Atoi(portNoProto)
if err != nil { if err != nil {
return nil, fmt.Errorf("invalid container port %q", port) return nil, fmt.Errorf("invalid container port %q", port)
} }
ports = append(ports, kobject.Ports{ ports = append(ports, kobject.Ports{
ContainerPort: int32(containerPortInt), ContainerPort: int32(containerPortInt),
Protocol: p, Protocol: proto,
}) })
} }