blob: 5ae68778b201fc5cb11e4142cebab7325f672679 [file] [log] [blame]
package roleserve
import (
"context"
"net"
"source.monogon.dev/metropolis/node/core/clusternet"
"source.monogon.dev/metropolis/node/core/localstorage"
"source.monogon.dev/metropolis/node/core/network"
"source.monogon.dev/metropolis/pkg/event/memory"
"source.monogon.dev/metropolis/pkg/supervisor"
ipb "source.monogon.dev/metropolis/node/core/curator/proto/api"
)
type workerClusternet struct {
storageRoot *localstorage.Root
// curatorConnection will be read
curatorConnection *memory.Value[*curatorConnection]
// podNetwork will be read.
podNetwork *memory.Value[*clusternet.Prefixes]
network *network.Service
}
func (s *workerClusternet) run(ctx context.Context) error {
w := s.curatorConnection.Watch()
defer w.Close()
supervisor.Logger(ctx).Infof("Waiting for curator connection...")
cc, err := w.Get(ctx)
if err != nil {
return err
}
supervisor.Logger(ctx).Infof("Got curator connection, starting...")
cur := ipb.NewCuratorClient(cc.conn)
svc := clusternet.Service{
Curator: cur,
ClusterNet: net.IPNet{
IP: []byte{10, 192, 0, 0},
Mask: net.IPMask{255, 224, 0, 0},
},
DataDirectory: &s.storageRoot.Data.Kubernetes.ClusterNetworking,
LocalKubernetesPodNetwork: s.podNetwork,
Network: s.network.Value(),
}
return svc.Run(ctx)
}