func initializeResourceManager()

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
}