Skip to content

Commit 97c2555

Browse files
mhofstettertklauser
authored andcommitted
endpoint: remove endpointregenerator from InitRestore method
This commit removes need to pass the `EndpointRegenerator` dependency to the method `InitRestore` by adding it as Hive dependency to the new `endpointRestorer`. Signed-off-by: Marco Hofstetter <marco.hofstetter@isovalent.com>
1 parent 8de7785 commit 97c2555

File tree

2 files changed

+57
-56
lines changed

2 files changed

+57
-56
lines changed

daemon/cmd/daemon_main.go

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import (
3939
datapathTables "github.com/cilium/cilium/pkg/datapath/tables"
4040
datapath "github.com/cilium/cilium/pkg/datapath/types"
4141
"github.com/cilium/cilium/pkg/defaults"
42-
"github.com/cilium/cilium/pkg/endpoint"
4342
endpointcreator "github.com/cilium/cilium/pkg/endpoint/creator"
4443
"github.com/cilium/cilium/pkg/endpointmanager"
4544
"github.com/cilium/cilium/pkg/endpointstate"
@@ -1279,26 +1278,25 @@ type daemonParams struct {
12791278
// Grab the GC object so that we can start the CT/NAT map garbage collection.
12801279
// This is currently necessary because these maps have not yet been modularized,
12811280
// and because it depends on parameters which are not provided through hive.
1282-
CTNATMapGC ctmap.GCRunner
1283-
IPIdentityWatcher *ipcache.LocalIPIdentityWatcher
1284-
EndpointRegenerator *endpoint.Regenerator
1285-
ClusterInfo cmtypes.ClusterInfo
1286-
BandwidthManager datapath.BandwidthManager
1287-
IPsecAgent datapath.IPsecAgent
1288-
MTU mtu.MTU
1289-
SyncHostIPs *syncHostIPs
1290-
NodeDiscovery *nodediscovery.NodeDiscovery
1291-
IPAM *ipam.IPAM
1292-
CRDSyncPromise promise.Promise[k8sSynced.CRDSync]
1293-
IdentityManager identitymanager.IDManager
1294-
MaglevConfig maglev.Config
1295-
LBConfig loadbalancer.Config
1296-
DNSProxy bootstrap.FQDNProxyBootstrapper
1297-
DNSNameManager namemanager.NameManager
1298-
KPRConfig kpr.KPRConfig
1299-
KPRInitializer kprinitializer.KPRInitializer
1300-
IPSecConfig datapath.IPsecConfig
1301-
HealthConfig healthconfig.CiliumHealthConfig
1281+
CTNATMapGC ctmap.GCRunner
1282+
IPIdentityWatcher *ipcache.LocalIPIdentityWatcher
1283+
ClusterInfo cmtypes.ClusterInfo
1284+
BandwidthManager datapath.BandwidthManager
1285+
IPsecAgent datapath.IPsecAgent
1286+
MTU mtu.MTU
1287+
SyncHostIPs *syncHostIPs
1288+
NodeDiscovery *nodediscovery.NodeDiscovery
1289+
IPAM *ipam.IPAM
1290+
CRDSyncPromise promise.Promise[k8sSynced.CRDSync]
1291+
IdentityManager identitymanager.IDManager
1292+
MaglevConfig maglev.Config
1293+
LBConfig loadbalancer.Config
1294+
DNSProxy bootstrap.FQDNProxyBootstrapper
1295+
DNSNameManager namemanager.NameManager
1296+
KPRConfig kpr.KPRConfig
1297+
KPRInitializer kprinitializer.KPRInitializer
1298+
IPSecConfig datapath.IPsecConfig
1299+
HealthConfig healthconfig.CiliumHealthConfig
13021300
}
13031301

13041302
func newDaemonPromise(params daemonParams) (promise.Promise[*Daemon], legacy.DaemonInitialization) {
@@ -1408,7 +1406,7 @@ func startDaemon(ctx context.Context, d *Daemon, cleaner *daemonCleanup, params
14081406
params.Logger.Error("Failed to wait for initial IPCache revision", logfields.Error, err)
14091407
}
14101408

1411-
d.params.EndpointRestorer.InitRestore(params.EndpointRegenerator)
1409+
d.params.EndpointRestorer.InitRestore()
14121410

14131411
bootstrapStats.enableConntrack.Start()
14141412
params.Logger.Info("Starting connection tracking garbage collector")

daemon/cmd/endpoint_restore.go

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,29 @@ import (
4040
type endpointRestorerParams struct {
4141
cell.In
4242

43-
Logger *slog.Logger
44-
K8sWatcher *watchers.K8sWatcher
45-
Clientset k8sClient.Clientset
46-
EndpointCreator endpointcreator.EndpointCreator
47-
EndpointManager endpointmanager.EndpointManager
48-
EndpointMetadata endpointmetadata.EndpointMetadataFetcher
49-
EndpointAPIFence endpointapi.Fence
50-
IPSecAgent datapath.IPsecAgent
51-
IPAMManager *ipam.IPAM
43+
Logger *slog.Logger
44+
K8sWatcher *watchers.K8sWatcher
45+
Clientset k8sClient.Clientset
46+
EndpointCreator endpointcreator.EndpointCreator
47+
EndpointManager endpointmanager.EndpointManager
48+
EndpointRegenerator *endpoint.Regenerator
49+
EndpointMetadata endpointmetadata.EndpointMetadataFetcher
50+
EndpointAPIFence endpointapi.Fence
51+
IPSecAgent datapath.IPsecAgent
52+
IPAMManager *ipam.IPAM
5253
}
5354

5455
type endpointRestorer struct {
55-
logger *slog.Logger
56-
k8sWatcher *watchers.K8sWatcher
57-
clientset k8sClient.Clientset
58-
endpointCreator endpointcreator.EndpointCreator
59-
endpointManager endpointmanager.EndpointManager
60-
endpointMetadata endpointmetadata.EndpointMetadataFetcher
61-
endpointAPIFence endpointapi.Fence
62-
ipSecAgent datapath.IPsecAgent
63-
ipamManager *ipam.IPAM
56+
logger *slog.Logger
57+
k8sWatcher *watchers.K8sWatcher
58+
clientset k8sClient.Clientset
59+
endpointCreator endpointcreator.EndpointCreator
60+
endpointManager endpointmanager.EndpointManager
61+
endpointRegenerator *endpoint.Regenerator
62+
endpointMetadata endpointmetadata.EndpointMetadataFetcher
63+
endpointAPIFence endpointapi.Fence
64+
ipSecAgent datapath.IPsecAgent
65+
ipamManager *ipam.IPAM
6466

6567
restoreState *endpointRestoreState
6668
endpointRestoreComplete chan struct{}
@@ -69,15 +71,16 @@ type endpointRestorer struct {
6971

7072
func newEndpointRestorer(params endpointRestorerParams) *endpointRestorer {
7173
return &endpointRestorer{
72-
logger: params.Logger,
73-
k8sWatcher: params.K8sWatcher,
74-
clientset: params.Clientset,
75-
endpointCreator: params.EndpointCreator,
76-
endpointManager: params.EndpointManager,
77-
endpointMetadata: params.EndpointMetadata,
78-
endpointAPIFence: params.EndpointAPIFence,
79-
ipSecAgent: params.IPSecAgent,
80-
ipamManager: params.IPAMManager,
74+
logger: params.Logger,
75+
k8sWatcher: params.K8sWatcher,
76+
clientset: params.Clientset,
77+
endpointCreator: params.EndpointCreator,
78+
endpointManager: params.EndpointManager,
79+
endpointRegenerator: params.EndpointRegenerator,
80+
endpointMetadata: params.EndpointMetadata,
81+
endpointAPIFence: params.EndpointAPIFence,
82+
ipSecAgent: params.IPSecAgent,
83+
ipamManager: params.IPAMManager,
8184

8285
endpointRestoreComplete: make(chan struct{}),
8386
endpointInitialPolicyComplete: make(chan struct{}),
@@ -328,7 +331,7 @@ func (r *endpointRestorer) RestoreOldEndpoints() {
328331
}
329332
}
330333

331-
func (r *endpointRestorer) regenerateRestoredEndpoints(state *endpointRestoreState, endpointsRegenerator *endpoint.Regenerator) {
334+
func (r *endpointRestorer) regenerateRestoredEndpoints(state *endpointRestoreState) {
332335
r.logger.Info(
333336
"Regenerating restored endpoints",
334337
logfields.Restored, len(state.restored),
@@ -375,7 +378,7 @@ func (r *endpointRestorer) regenerateRestoredEndpoints(state *endpointRestoreSta
375378
//
376379
// This can be removed in v1.19.
377380
r.logger.Info("Successfully restored Host endpoint. Scheduling regeneration", logfields.EndpointID, ep.ID)
378-
if err := ep.RegenerateAfterRestore(endpointsRegenerator, r.endpointMetadata.FetchK8sMetadataForEndpoint); err != nil {
381+
if err := ep.RegenerateAfterRestore(r.endpointRegenerator, r.endpointMetadata.FetchK8sMetadataForEndpoint); err != nil {
379382
r.logger.Debug(
380383
"Error regenerating Host endpoint during restore",
381384
logfields.Error, err,
@@ -407,7 +410,7 @@ func (r *endpointRestorer) regenerateRestoredEndpoints(state *endpointRestoreSta
407410
endpointCleanupCompleted.Wait()
408411

409412
// Trigger regeneration for relevant restored endopints in a separate goroutine.
410-
go r.handleRestoredEndpointsRegeneration(endpointsToRegenerate, endpointsRegenerator)
413+
go r.handleRestoredEndpointsRegeneration(endpointsToRegenerate)
411414

412415
go func() {
413416
for _, ep := range state.restored {
@@ -424,7 +427,7 @@ func (r *endpointRestorer) regenerateRestoredEndpoints(state *endpointRestoreSta
424427
// before regenerating all remaining live endpoints.
425428
//
426429
// Once complete, this method closes the daemon 'endpointRestoreComplete' channel.
427-
func (r *endpointRestorer) handleRestoredEndpointsRegeneration(endpoints []*endpoint.Endpoint, endpointsRegenerator *endpoint.Regenerator) {
430+
func (r *endpointRestorer) handleRestoredEndpointsRegeneration(endpoints []*endpoint.Endpoint) {
428431
startTime := time.Now()
429432
// Wait for Endpoint DeletionQueue to be processed first so we can avoid
430433
// expensive regeneration for already deleted endpoints.
@@ -455,7 +458,7 @@ func (r *endpointRestorer) handleRestoredEndpointsRegeneration(endpoints []*endp
455458
go func(ep *endpoint.Endpoint, wg *sync.WaitGroup, endpointsRegenerated chan<- bool) {
456459
defer wg.Done()
457460

458-
if err := ep.RegenerateAfterRestore(endpointsRegenerator, r.endpointMetadata.FetchK8sMetadataForEndpoint); err != nil {
461+
if err := ep.RegenerateAfterRestore(r.endpointRegenerator, r.endpointMetadata.FetchK8sMetadataForEndpoint); err != nil {
459462
r.logger.Debug(
460463
"Error regenerating endpoint during restore",
461464
logfields.Error, err,
@@ -537,7 +540,7 @@ func (r *endpointRestorer) allocateIPsLocked(ep *endpoint.Endpoint) (err error)
537540
return nil
538541
}
539542

540-
func (r *endpointRestorer) InitRestore(endpointsRegenerator *endpoint.Regenerator) {
543+
func (r *endpointRestorer) InitRestore() {
541544
if !option.Config.RestoreState {
542545
r.logger.Info("State restore is disabled. Existing endpoints on node are ignored")
543546
return
@@ -549,5 +552,5 @@ func (r *endpointRestorer) InitRestore(endpointsRegenerator *endpoint.Regenerato
549552
// When we regenerate restored endpoints, it is guaranteed that we have
550553
// received the full list of policies present at the time the daemon
551554
// is bootstrapped.
552-
r.regenerateRestoredEndpoints(r.restoreState, endpointsRegenerator)
555+
r.regenerateRestoredEndpoints(r.restoreState)
553556
}

0 commit comments

Comments
 (0)