fix(loader): Allows multiple protocols on one port
Some checks failed
build / prepare (push) Has been cancelled
build / bin-image (push) Has been cancelled
build / prepare-plugins (push) Has been cancelled
codeql / codeql (push) Has been cancelled
e2e / tests (alpine, 25, connhelper-ssh) (push) Has been cancelled
e2e / tests (alpine, 25, local) (push) Has been cancelled
e2e / tests (alpine, 27, connhelper-ssh) (push) Has been cancelled
e2e / tests (alpine, 27, local) (push) Has been cancelled
e2e / tests (alpine, 28, connhelper-ssh) (push) Has been cancelled
e2e / tests (alpine, 28, local) (push) Has been cancelled
e2e / tests (debian, 25, connhelper-ssh) (push) Has been cancelled
e2e / tests (debian, 25, local) (push) Has been cancelled
e2e / tests (debian, 27, connhelper-ssh) (push) Has been cancelled
e2e / tests (debian, 27, local) (push) Has been cancelled
e2e / tests (debian, 28, connhelper-ssh) (push) Has been cancelled
e2e / tests (debian, 28, local) (push) Has been cancelled
test / ctn (push) Has been cancelled
test / host (macos-14) (push) Has been cancelled
test / host (macos-15) (push) Has been cancelled
test / host (macos-15-intel) (push) Has been cancelled
validate / validate (lint) (push) Has been cancelled
validate / validate (shellcheck) (push) Has been cancelled
validate / validate (update-authors) (push) Has been cancelled
validate / validate (validate-vendor) (push) Has been cancelled
validate / validate-md (push) Has been cancelled
validate / validate-make (manpages) (push) Has been cancelled
validate / validate-make (yamldocs) (push) Has been cancelled
build / build (push) Has been cancelled
build / plugins (push) Has been cancelled

This commit is contained in:
2025-12-26 11:05:12 +01:00
parent ecc694264d
commit 30df2d0b3a
2 changed files with 20 additions and 1 deletions

View File

@ -4,6 +4,7 @@
package loader
import (
"fmt"
"reflect"
"sort"
@ -116,7 +117,11 @@ func toServicePortConfigsMap(s any) (map[any]any, error) {
}
m := map[any]any{}
for _, p := range ports {
m[p.Published] = p
protocol := "tcp"
if p.Protocol != "" {
protocol = p.Protocol
}
m[fmt.Sprintf("%d%s", p.Published, protocol)] = p
}
return m, nil
}

View File

@ -848,6 +848,8 @@ func TestLoadMultipleConfigs(t *testing.T) {
"ports": []any{
"8080:80",
"9090:90",
"53:53/tcp",
"53:53/udp",
},
"labels": []any{
"foo=bar",
@ -925,6 +927,18 @@ func TestLoadMultipleConfigs(t *testing.T) {
},
},
Ports: []types.ServicePortConfig{
{
Mode: "ingress",
Target: 53,
Published: 53,
Protocol: "tcp",
},
{
Mode: "ingress",
Target: 53,
Published: 53,
Protocol: "udp",
},
{
Target: 81,
Published: 8080,