in pkg/argocd/argoapplicationset_manager.go [94:148]
func (c *ArgoApplicationSetManager) CreateApplicationSetGenerators(ctx context.Context, stage *cdPipeApi.Stage) error {
log := ctrl.LoggerFrom(ctx)
log.Info("Creating ArgoApplicationSetGenerator")
pipeline := &cdPipeApi.CDPipeline{}
if err := c.client.Get(ctx, client.ObjectKey{
Namespace: stage.Namespace,
Name: stage.Spec.CdPipeline,
}, pipeline); err != nil {
return fmt.Errorf("failed to get CDPipeline: %w", err)
}
appset := &argoApi.ApplicationSet{}
if err := c.client.Get(ctx, client.ObjectKey{
Namespace: stage.Namespace,
Name: pipeline.Name,
}, appset); err != nil {
return fmt.Errorf("failed to get ArgoApplicationSet: %w", err)
}
codebases, err := c.getPipelinesCodebasesMap(ctx, stage.Namespace, pipeline.Spec.Applications)
if err != nil {
return err
}
gitServers, err := c.getGitServers(ctx, stage.Namespace, codebases)
if err != nil {
return err
}
stageGenerators, err := c.makeStageGenerators(ctx, stage, codebases, gitServers)
if err != nil {
return err
}
changed, err := setGenerators(stage.Spec.Name, appset, stageGenerators)
if err != nil {
return err
}
if changed {
if err = c.client.Update(ctx, appset); err != nil {
return fmt.Errorf("failed to update ArgoApplicationSet: %w", err)
}
log.Info("ArgoApplicationSet has been updated")
return nil
}
log.Info("ArgoApplicationSet generators are already set")
return nil
}