blob: 1756d7b6398c956ff8d1dd340c4c6ff262ea34e6 [file] [log] [blame]
Tim Windelschmidte95007b2023-07-17 19:05:30 +02001diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go
2--- a/pkg/registry/core/service/portallocator/controller/repair.go (revision f66044f4361b9f1f96f0053dd46cb7dce5e990a8)
3+++ b/pkg/registry/core/service/portallocator/controller/repair.go (revision bdd789d982712179c6a849ceed7f12e063b3fce3)
4@@ -21,6 +21,8 @@
5 "fmt"
6 "time"
7
8+ "source.monogon.dev/metropolis/node"
9+
10 corev1 "k8s.io/api/core/v1"
11 "k8s.io/apimachinery/pkg/api/errors"
12 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13@@ -123,6 +126,18 @@
14 return fmt.Errorf("unable to refresh the port block: %v", err)
15 }
16
17+ // pretend that metropolis system ports are in use by an actual service
18+ var metropolisService corev1.Service
19+ for _, p := range node.SystemPorts {
20+ metropolisService.Spec.Ports = append(metropolisService.Spec.Ports, corev1.ServicePort{
21+ Name: p.String(),
22+ Protocol: corev1.ProtocolTCP,
23+ Port: int32(p),
24+ NodePort: int32(p),
25+ })
26+ }
27+ list.Items = append(list.Items, metropolisService)
28+
29 rebuilt, err := portallocator.NewInMemory(c.portRange)
30 if err != nil {
31 return fmt.Errorf("unable to create port allocator: %v", err)