forked from LaconicNetwork/kompose
Fix misuse in struct kobject.ServiceConfig.Port (#1423)
This commit is contained in:
@@ -156,20 +156,15 @@ func loadEnvVars(service Service) ([]kobject.EnvVar, error) {
|
||||
func loadPorts(service Service) ([]kobject.Ports, error) {
|
||||
ports := []kobject.Ports{}
|
||||
for _, port := range service.Ports {
|
||||
var p api.Protocol
|
||||
switch port.Protocol {
|
||||
default:
|
||||
p = api.ProtocolTCP
|
||||
case "TCP":
|
||||
p = api.ProtocolTCP
|
||||
case "UDP":
|
||||
p = api.ProtocolUDP
|
||||
}
|
||||
ports = append(ports, kobject.Ports{
|
||||
komposePorts := kobject.Ports{
|
||||
HostPort: int32(port.Port),
|
||||
ContainerPort: int32(port.Port),
|
||||
Protocol: p,
|
||||
})
|
||||
Protocol: port.Protocol,
|
||||
}
|
||||
if protocol := api.Protocol(port.Protocol); protocol != api.ProtocolTCP && protocol != api.ProtocolUDP {
|
||||
komposePorts.Protocol = string(api.ProtocolTCP)
|
||||
}
|
||||
ports = append(ports, komposePorts)
|
||||
}
|
||||
return ports, nil
|
||||
}
|
||||
|
||||
@@ -124,20 +124,20 @@ func TestLoadV3Ports(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
desc: "ports with expose",
|
||||
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: "TCP"}},
|
||||
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: string(api.ProtocolTCP)}},
|
||||
expose: []string{"80", "8080"},
|
||||
want: []kobject.Ports{
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: api.Protocol("TCP")},
|
||||
{HostPort: 8080, ContainerPort: 8080, Protocol: api.Protocol("TCP")},
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 8080, ContainerPort: 8080, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "exposed port including /protocol",
|
||||
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: "TCP"}},
|
||||
ports: []types.ServicePortConfig{{Target: 80, Published: 80, Protocol: string(api.ProtocolTCP)}},
|
||||
expose: []string{"80/udp"},
|
||||
want: []kobject.Ports{
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: api.Protocol("TCP")},
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: api.Protocol("UDP")},
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolUDP)},
|
||||
},
|
||||
},
|
||||
} {
|
||||
@@ -187,74 +187,74 @@ func TestLoadPorts(t *testing.T) {
|
||||
{
|
||||
ports: []string{"127.0.0.1:80:80/tcp"},
|
||||
want: []kobject.Ports{
|
||||
{HostIP: "127.0.0.1", HostPort: 80, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
||||
{HostIP: "127.0.0.1", HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"80:80/tcp"},
|
||||
want: []kobject.Ports{
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"80:80"},
|
||||
want: []kobject.Ports{
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 80, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"80"},
|
||||
want: []kobject.Ports{
|
||||
{ContainerPort: 80, Protocol: api.ProtocolTCP},
|
||||
{ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"3000-3005"},
|
||||
want: []kobject.Ports{
|
||||
{ContainerPort: 3000, Protocol: api.ProtocolTCP},
|
||||
{ContainerPort: 3001, Protocol: api.ProtocolTCP},
|
||||
{ContainerPort: 3002, Protocol: api.ProtocolTCP},
|
||||
{ContainerPort: 3003, Protocol: api.ProtocolTCP},
|
||||
{ContainerPort: 3004, Protocol: api.ProtocolTCP},
|
||||
{ContainerPort: 3005, Protocol: api.ProtocolTCP},
|
||||
{ContainerPort: 3000, Protocol: string(api.ProtocolTCP)},
|
||||
{ContainerPort: 3001, Protocol: string(api.ProtocolTCP)},
|
||||
{ContainerPort: 3002, Protocol: string(api.ProtocolTCP)},
|
||||
{ContainerPort: 3003, Protocol: string(api.ProtocolTCP)},
|
||||
{ContainerPort: 3004, Protocol: string(api.ProtocolTCP)},
|
||||
{ContainerPort: 3005, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"3000-3005:5000-5005"},
|
||||
want: []kobject.Ports{
|
||||
{HostPort: 3000, ContainerPort: 5000, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 3001, ContainerPort: 5001, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 3002, ContainerPort: 5002, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 3003, ContainerPort: 5003, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 3004, ContainerPort: 5004, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 3005, ContainerPort: 5005, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 3000, ContainerPort: 5000, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 3001, ContainerPort: 5001, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 3002, ContainerPort: 5002, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 3003, ContainerPort: 5003, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 3004, ContainerPort: 5004, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 3005, ContainerPort: 5005, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"127.0.0.1:3000-3005:5000-5005"},
|
||||
want: []kobject.Ports{
|
||||
{HostIP: "127.0.0.1", HostPort: 3000, ContainerPort: 5000, Protocol: api.ProtocolTCP},
|
||||
{HostIP: "127.0.0.1", HostPort: 3001, ContainerPort: 5001, Protocol: api.ProtocolTCP},
|
||||
{HostIP: "127.0.0.1", HostPort: 3002, ContainerPort: 5002, Protocol: api.ProtocolTCP},
|
||||
{HostIP: "127.0.0.1", HostPort: 3003, ContainerPort: 5003, Protocol: api.ProtocolTCP},
|
||||
{HostIP: "127.0.0.1", HostPort: 3004, ContainerPort: 5004, Protocol: api.ProtocolTCP},
|
||||
{HostIP: "127.0.0.1", HostPort: 3005, ContainerPort: 5005, Protocol: api.ProtocolTCP},
|
||||
{HostIP: "127.0.0.1", HostPort: 3000, ContainerPort: 5000, Protocol: string(api.ProtocolTCP)},
|
||||
{HostIP: "127.0.0.1", HostPort: 3001, ContainerPort: 5001, Protocol: string(api.ProtocolTCP)},
|
||||
{HostIP: "127.0.0.1", HostPort: 3002, ContainerPort: 5002, Protocol: string(api.ProtocolTCP)},
|
||||
{HostIP: "127.0.0.1", HostPort: 3003, ContainerPort: 5003, Protocol: string(api.ProtocolTCP)},
|
||||
{HostIP: "127.0.0.1", HostPort: 3004, ContainerPort: 5004, Protocol: string(api.ProtocolTCP)},
|
||||
{HostIP: "127.0.0.1", HostPort: 3005, ContainerPort: 5005, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"80", "3000"},
|
||||
want: []kobject.Ports{
|
||||
{HostPort: 0, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 0, ContainerPort: 3000, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 0, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 0, ContainerPort: 3000, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
{
|
||||
ports: []string{"80", "3000"},
|
||||
expose: []string{"80", "8080"},
|
||||
want: []kobject.Ports{
|
||||
{HostPort: 0, ContainerPort: 80, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 0, ContainerPort: 3000, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 0, ContainerPort: 8080, Protocol: api.ProtocolTCP},
|
||||
{HostPort: 0, ContainerPort: 80, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 0, ContainerPort: 3000, Protocol: string(api.ProtocolTCP)},
|
||||
{HostPort: 0, ContainerPort: 8080, Protocol: string(api.ProtocolTCP)},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ func loadPorts(composePorts []string, expose []string) ([]kobject.Ports, error)
|
||||
HostPort: int32(cfg.PublishedPort),
|
||||
ContainerPort: int32(cfg.TargetPort),
|
||||
HostIP: hostIP,
|
||||
Protocol: api.Protocol(strings.ToUpper(string(cfg.Protocol))),
|
||||
Protocol: strings.ToUpper(string(cfg.Protocol)),
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -141,23 +141,23 @@ func loadPorts(composePorts []string, expose []string) ([]kobject.Ports, error)
|
||||
// load remain expose ports
|
||||
for _, p := range kp {
|
||||
// must use cast...
|
||||
exist[cast.ToString(p.ContainerPort)+string(p.Protocol)] = true
|
||||
exist[cast.ToString(p.ContainerPort)+p.Protocol] = true
|
||||
}
|
||||
|
||||
if expose != nil {
|
||||
for _, port := range expose {
|
||||
portValue := port
|
||||
protocol := api.ProtocolTCP
|
||||
protocol := string(api.ProtocolTCP)
|
||||
if strings.Contains(portValue, "/") {
|
||||
splits := strings.Split(port, "/")
|
||||
portValue = splits[0]
|
||||
protocol = api.Protocol(strings.ToUpper(splits[1]))
|
||||
protocol = splits[1]
|
||||
}
|
||||
|
||||
if !exist[portValue+string(protocol)] {
|
||||
if !exist[portValue+protocol] {
|
||||
kp = append(kp, kobject.Ports{
|
||||
ContainerPort: cast.ToInt32(portValue),
|
||||
Protocol: protocol,
|
||||
Protocol: strings.ToUpper(protocol),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,30 +210,30 @@ func loadV3Ports(ports []types.ServicePortConfig, expose []string) []kobject.Por
|
||||
HostPort: int32(port.Published),
|
||||
ContainerPort: int32(port.Target),
|
||||
HostIP: "",
|
||||
Protocol: api.Protocol(strings.ToUpper(port.Protocol)),
|
||||
Protocol: strings.ToUpper(port.Protocol),
|
||||
})
|
||||
|
||||
exist[cast.ToString(port.Target)+strings.ToUpper(port.Protocol)] = true
|
||||
exist[cast.ToString(port.Target)+port.Protocol] = true
|
||||
}
|
||||
|
||||
if expose != nil {
|
||||
for _, port := range expose {
|
||||
portValue := port
|
||||
protocol := api.ProtocolTCP
|
||||
protocol := string(api.ProtocolTCP)
|
||||
if strings.Contains(portValue, "/") {
|
||||
splits := strings.Split(port, "/")
|
||||
portValue = splits[0]
|
||||
protocol = api.Protocol(strings.ToUpper(splits[1]))
|
||||
protocol = splits[1]
|
||||
}
|
||||
|
||||
if exist[portValue+string(protocol)] {
|
||||
if exist[portValue+protocol] {
|
||||
continue
|
||||
}
|
||||
komposePorts = append(komposePorts, kobject.Ports{
|
||||
HostPort: cast.ToInt32(portValue),
|
||||
ContainerPort: cast.ToInt32(portValue),
|
||||
HostIP: "",
|
||||
Protocol: protocol,
|
||||
Protocol: strings.ToUpper(protocol),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user