func CreateChain()

in controllers/stage/chain/factory.go [21:63]


func CreateChain(ctx context.Context, c client.Client, stage *cdPipeApi.Stage) (handler.CdStageHandler, error) {
	multiClusterCl, err := multiclusterclient.NewClientProvider(c).GetClusterClient(ctx, stage.Namespace, stage.Spec.ClusterName, client.Options{})
	if err != nil {
		return nil, fmt.Errorf("failed to get cluster internalClient: %w", err)
	}

	rbacManager := rbac.NewRbacManager(multiClusterCl, ctrl.Log.WithName("rbac-manager"))

	ch := &chain{}
	ch.Use(
		PutCodebaseImageStream{
			client: c,
		},
		DelegateNamespaceCreation{
			client: multiClusterCl,
		},
		RemoveLabelsFromCodebaseDockerStreamsAfterCdPipelineUpdate{
			client: c,
		},
		DeleteEnvironmentLabelFromCodebaseImageStreams{
			client: c,
		},
		PutEnvironmentLabelToCodebaseImageStreams{
			client: c,
		},
		ConfigureRegistryViewerRbac{
			rbac: rbacManager,
		},
		ConfigureTenantAdminRbac{
			rbac: rbacManager,
		},
		ConfigureSecretManager{
			multiClusterClient: multiClusterCl,
			internalClient:     c,
		},
		AddApplicationSetGenerators{
			applicationSetManager: argocd.NewArgoApplicationSetManager(c),
		},
		NewPutConfigMap(c),
	)

	return ch, nil
}