func()

in pkg/argocd/argoapplicationset_manager.go [49:92]


func (c *ArgoApplicationSetManager) CreateApplicationSet(ctx context.Context, pipeline *cdPipeApi.CDPipeline) error {
	log := ctrl.LoggerFrom(ctx)

	log.Info("Creating ArgoApplicationSet")

	appset := &argoApi.ApplicationSet{}

	err := c.client.Get(ctx, client.ObjectKey{
		Namespace: pipeline.Namespace,
		Name:      pipeline.Name,
	}, appset)
	if client.IgnoreNotFound(err) != nil {
		return fmt.Errorf("failed to get ArgoApplicationSet: %w", err)
	}

	if err == nil {
		log.Info("ArgoApplicationSet already exists. Skip creating")
		return nil
	}

	if len(pipeline.Spec.Applications) == 0 {
		log.Info("No applications specified. Skip creating ArgoApplicationSet")
		return nil
	}

	gitopsUrl, err := c.getGitOpsRepoUrl(ctx, pipeline.Namespace)
	if err != nil {
		return err
	}

	appset = generateApplicationSet(pipeline, gitopsUrl)

	if err = controllerutil.SetOwnerReference(pipeline, appset, c.client.Scheme()); err != nil {
		return fmt.Errorf("failed to set ApplicationSet owner reference: %w", err)
	}

	if err = c.client.Create(ctx, appset); err != nil {
		return fmt.Errorf("failed to create ArgoApplicationSet: %w", err)
	}

	log.Info("ArgoApplicationSet has been created")

	return nil
}