Skip to content

Commit

Permalink
chore(*) improve resource manager initialization readability (#2316) (#…
Browse files Browse the repository at this point in the history
…2348)

Signed-off-by: James Peach <james.peach@konghq.com>
(cherry picked from commit 544cd03)

Co-authored-by: James Peach <james.peach@konghq.com>
  • Loading branch information
mergify[bot] and jpeach authored Jul 12, 2021
1 parent f9f403c commit 38fdc1c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 16 deletions.
47 changes: 31 additions & 16 deletions pkg/core/bootstrap/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)

Expand Down
5 changes: 5 additions & 0 deletions pkg/core/resources/manager/customizable_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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
}
Expand Down

0 comments on commit 38fdc1c

Please sign in to comment.