in pkg/core/bootstrap/bootstrap.go [345:450]
func initializeResourceManager(cfg dubbo_cp.Config, builder *core_runtime.Builder) error {
defaultManager := core_manager.NewResourceManager(builder.ResourceStore())
customizableManager := core_manager.NewCustomizableResourceManager(defaultManager, nil)
var (
manager kube_ctrl.Manager
ok bool
)
deployMode := builder.GetDeployMode()
if deployMode != config_core.UniversalMode {
manager, ok = k8s_extensions.FromManagerContext(builder.Extensions())
if !ok {
return errors.New("get kube manager err")
}
}
dataplaneManager, err := dataplane_managers.NewDataplaneManager(
builder.ResourceStore(),
cfg.Multizone.Zone.Name,
manager,
deployMode,
)
if err != nil {
return fmt.Errorf("initializing datalane manager error: %w", err)
}
customizableManager.Customize(
mesh.DataplaneType,
dataplaneManager,
)
customizableManager.Customize(
mesh.MappingType,
mapping_managers.NewMappingManager(
builder.ResourceStore(),
manager,
deployMode,
))
customizableManager.Customize(
mesh.MetaDataType,
metadata_managers.NewMetadataManager(
builder.ResourceStore(),
manager,
deployMode,
))
customizableManager.Customize(
mesh.ConditionRouteType,
condition_route.NewConditionRouteManager(
builder.ResourceStore(),
manager,
deployMode,
))
customizableManager.Customize(
mesh.TagRouteType,
tag_route.NewTagRouteManager(
builder.ResourceStore(),
manager,
deployMode,
))
customizableManager.Customize(
mesh.DynamicConfigType,
dynamic_config.NewDynamicConfigManager(
builder.ResourceStore(),
manager,
deployMode,
))
customizableManager.Customize(
mesh.MeshType,
mesh_managers.NewMeshManager(
builder.ResourceStore(),
customizableManager,
registry.Global(),
builder.ResourceValidators().Mesh,
builder.Extensions(),
cfg,
manager,
deployMode,
),
)
customizableManager.Customize(
system.ZoneType,
zone.NewZoneManager(builder.ResourceStore(),
zone.Validator{Store: builder.ResourceStore()},
builder.Config().Store.UnsafeDelete,
))
builder.WithResourceManager(customizableManager)
if builder.Config().Store.Cache.Enabled {
cachedManager, err := core_manager.NewCachedManager(
customizableManager,
builder.Config().Store.Cache.ExpirationTime.Duration,
)
if err != nil {
return err
}
builder.WithReadOnlyResourceManager(cachedManager)
} else {
builder.WithReadOnlyResourceManager(customizableManager)
}
return nil
}