in pkg/argocd/argoapplicationset_manager.go [319:353]
func (c *ArgoApplicationSetManager) getGitOpsRepoUrl(ctx context.Context, ns string) (string, error) {
codebaseList := &codebaseApi.CodebaseList{}
if err := c.client.List(ctx, codebaseList, client.InNamespace(ns), client.MatchingLabels(gitOpsCodebaseLabels)); err != nil {
return "", fmt.Errorf("failed to list codebases: %w", err)
}
if len(codebaseList.Items) == 0 {
return "", fmt.Errorf("no GitOps codebases found")
}
if len(codebaseList.Items) > 1 {
return "", fmt.Errorf("found more than one GitOps codebase")
}
gitOpsCodebase := &codebaseList.Items[0]
if gitOpsCodebase.Spec.Type != codebaseTypeSystem {
return "", fmt.Errorf("gitOps codebase does not have %q type", codebaseTypeSystem)
}
gitServer := &codebaseApi.GitServer{}
if err := c.client.Get(ctx, client.ObjectKey{
Namespace: ns,
Name: gitOpsCodebase.Spec.GitServer,
}, gitServer); err != nil {
return "", fmt.Errorf("failed to get gitops GitServer: %w", err)
}
return fmt.Sprintf(
"ssh://%s@%s:%d%s",
gitServer.Spec.GitUser,
gitServer.Spec.GitHost,
gitServer.Spec.SshPort,
gitOpsCodebase.Spec.GitUrlPath,
), nil
}