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
}