fix: deduplicate container ports by (port, protocol)
Compose files with both "8001" (TCP) and "8001/udp" produce separate V1ContainerPort entries that k8s rejects as duplicates. Deduplicate after parsing by (container_port, protocol) key. This was blocking biscayne's agave deployment — the spec has both TCP 8001 (ip_echo) and UDP 8001 (gossip), which generated two UDP 8001 entries. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>pull/740/head
parent
ae1eae5b9b
commit
63325f68a7
|
|
@ -563,6 +563,17 @@ class ClusterInfo:
|
|||
container_port=port, protocol=protocol
|
||||
)
|
||||
)
|
||||
# Deduplicate by (port, protocol) — compose files with
|
||||
# both "8001" and "8001/udp" produce separate entries
|
||||
# that k8s rejects as duplicates.
|
||||
seen = set()
|
||||
deduped = []
|
||||
for cp in container_ports:
|
||||
key = (cp.container_port, cp.protocol)
|
||||
if key not in seen:
|
||||
seen.add(key)
|
||||
deduped.append(cp)
|
||||
container_ports = deduped
|
||||
if opts.o.debug:
|
||||
print(f"image: {image}")
|
||||
print(f"service ports: {container_ports}")
|
||||
|
|
|
|||
Loading…
Reference in New Issue