func()

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
}