| diff --git a/pkg/registry/core/service/portallocator/controller/repair.go b/pkg/registry/core/service/portallocator/controller/repair.go |
| --- a/pkg/registry/core/service/portallocator/controller/repair.go (revision f66044f4361b9f1f96f0053dd46cb7dce5e990a8) |
| +++ b/pkg/registry/core/service/portallocator/controller/repair.go (revision bdd789d982712179c6a849ceed7f12e063b3fce3) |
| @@ -21,6 +21,8 @@ |
| "fmt" |
| "time" |
| |
| + "source.monogon.dev/metropolis/node" |
| + |
| corev1 "k8s.io/api/core/v1" |
| "k8s.io/apimachinery/pkg/api/errors" |
| metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
| @@ -123,6 +126,18 @@ |
| return fmt.Errorf("unable to refresh the port block: %v", err) |
| } |
| |
| + // pretend that metropolis system ports are in use by an actual service |
| + var metropolisService corev1.Service |
| + for _, p := range node.SystemPorts { |
| + metropolisService.Spec.Ports = append(metropolisService.Spec.Ports, corev1.ServicePort{ |
| + Name: p.String(), |
| + Protocol: corev1.ProtocolTCP, |
| + Port: int32(p), |
| + NodePort: int32(p), |
| + }) |
| + } |
| + list.Items = append(list.Items, metropolisService) |
| + |
| rebuilt, err := portallocator.NewInMemory(c.portRange) |
| if err != nil { |
| return fmt.Errorf("unable to create port allocator: %v", err) |