From 544cd03f9d0abac70423db231397c2f4188b8cf8 Mon Sep 17 00:00:00 2001 From: James Peach Date: Mon, 12 Jul 2021 11:19:23 +1000 Subject: [PATCH] chore(*) improve resource manager initialization readability (#2316) Signed-off-by: James Peach --- pkg/core/bootstrap/bootstrap.go | 47 ++++++++++++------- .../resources/manager/customizable_manager.go | 5 ++ 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/pkg/core/bootstrap/bootstrap.go b/pkg/core/bootstrap/bootstrap.go index a937e1ac2442..eae60718318d 100644 --- a/pkg/core/bootstrap/bootstrap.go +++ b/pkg/core/bootstrap/bootstrap.go @@ -287,28 +287,36 @@ func initializeCaManagers(builder *core_runtime.Builder) error { func initializeResourceManager(cfg kuma_cp.Config, builder *core_runtime.Builder) error { defaultManager := core_manager.NewResourceManager(builder.ResourceStore()) - customManagers := map[core_model.ResourceType]core_manager.ResourceManager{} - customizableManager := core_manager.NewCustomizableResourceManager(defaultManager, customManagers) + customizableManager := core_manager.NewCustomizableResourceManager(defaultManager, nil) meshValidator := mesh_managers.MeshValidator{ CaManagers: builder.CaManagers(), Store: builder.ResourceStore(), } - meshManager := mesh_managers.NewMeshManager(builder.ResourceStore(), customizableManager, builder.CaManagers(), registry.Global(), meshValidator) - customManagers[mesh.MeshType] = meshManager + customizableManager.Customize( + mesh.MeshType, + mesh_managers.NewMeshManager(builder.ResourceStore(), customizableManager, builder.CaManagers(), registry.Global(), meshValidator), + ) - dpManager := dataplane.NewDataplaneManager(builder.ResourceStore(), builder.Config().Multizone.Zone.Name) - customManagers[mesh.DataplaneType] = dpManager + customizableManager.Customize( + mesh.DataplaneType, + dataplane.NewDataplaneManager(builder.ResourceStore(), builder.Config().Multizone.Zone.Name), + ) - dpInsightManager := dataplaneinsight.NewDataplaneInsightManager(builder.ResourceStore(), builder.Config().Metrics.Dataplane) - customManagers[mesh.DataplaneInsightType] = dpInsightManager + customizableManager.Customize( + mesh.DataplaneInsightType, + dataplaneinsight.NewDataplaneInsightManager(builder.ResourceStore(), builder.Config().Metrics.Dataplane), + ) - zoneValidator := zone.Validator{Store: builder.ResourceStore()} - zoneManager := zone.NewZoneManager(builder.ResourceStore(), zoneValidator) - customManagers[system.ZoneType] = zoneManager + customizableManager.Customize( + system.ZoneType, + zone.NewZoneManager(builder.ResourceStore(), zone.Validator{Store: builder.ResourceStore()}), + ) - zoneInsightManager := zoneinsight.NewZoneInsightManager(builder.ResourceStore(), builder.Config().Metrics.Zone) - customManagers[system.ZoneInsightType] = zoneInsightManager + customizableManager.Customize( + system.ZoneInsightType, + zoneinsight.NewZoneInsightManager(builder.ResourceStore(), builder.Config().Metrics.Zone), + ) var cipher secret_cipher.Cipher switch cfg.Store.Type { @@ -326,9 +334,16 @@ func initializeResourceManager(cfg kuma_cp.Config, builder *core_runtime.Builder default: secretValidator = secret_manager.NewSecretValidator(builder.CaManagers(), builder.ResourceStore()) } - secretManager := secret_manager.NewSecretManager(builder.SecretStore(), cipher, secretValidator) - customManagers[system.SecretType] = secretManager - customManagers[system.GlobalSecretType] = secret_manager.NewGlobalSecretManager(builder.SecretStore(), cipher) + + customizableManager.Customize( + system.SecretType, + secret_manager.NewSecretManager(builder.SecretStore(), cipher, secretValidator), + ) + + customizableManager.Customize( + system.GlobalSecretType, + secret_manager.NewGlobalSecretManager(builder.SecretStore(), cipher), + ) builder.WithResourceManager(customizableManager) diff --git a/pkg/core/resources/manager/customizable_manager.go b/pkg/core/resources/manager/customizable_manager.go index 6f9ce0a584df..60ac8c3b473b 100644 --- a/pkg/core/resources/manager/customizable_manager.go +++ b/pkg/core/resources/manager/customizable_manager.go @@ -14,6 +14,9 @@ type CustomizableResourceManager interface { } func NewCustomizableResourceManager(defaultManager ResourceManager, customManagers map[model.ResourceType]ResourceManager) CustomizableResourceManager { + if customManagers == nil { + customManagers = map[model.ResourceType]ResourceManager{} + } return &customizableResourceManager{ defaultManager: defaultManager, customManagers: customManagers, @@ -27,6 +30,8 @@ type customizableResourceManager struct { customManagers map[model.ResourceType]ResourceManager } +// Customize installs a new manager for the given type, overwriting any +// existing manager for that type. func (m *customizableResourceManager) Customize(resourceType model.ResourceType, manager ResourceManager) { m.customManagers[resourceType] = manager }