Skip to content

Commit

Permalink
chore: punt the crd changes for now
Browse files Browse the repository at this point in the history
For now, let's focus on unblocking users which have issues using git
generators. There is a provision to easily extend this by adding a
project field to the Git Generator, but this needs more discussion.

Signed-off-by: Blake Pettersson <blake.pettersson@gmail.com>
  • Loading branch information
blakepettersson committed Dec 16, 2024
1 parent 63c7a0f commit 7598d73
Show file tree
Hide file tree
Showing 10 changed files with 658 additions and 716 deletions.
4 changes: 2 additions & 2 deletions applicationset/generators/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Applic

func (g *GitGenerator) generateParamsForGitDirectories(appSetGenerator *argoprojiov1alpha1.ApplicationSetGenerator, noRevisionCache, verifyCommit bool, useGoTemplate bool, goTemplateOptions []string) ([]map[string]interface{}, error) {
// Directories, not files
allPaths, err := g.repos.GetDirectories(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, appSetGenerator.Git.Project, noRevisionCache, verifyCommit)
allPaths, err := g.repos.GetDirectories(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, "", noRevisionCache, verifyCommit)
if err != nil {
return nil, fmt.Errorf("error getting directories from repo: %w", err)
}
Expand All @@ -126,7 +126,7 @@ func (g *GitGenerator) generateParamsForGitFiles(appSetGenerator *argoprojiov1al
// Get all files that match the requested path string, removing duplicates
allFiles := make(map[string][]byte)
for _, requestedPath := range appSetGenerator.Git.Files {
files, err := g.repos.GetFiles(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, appSetGenerator.Git.Project, requestedPath.Path, noRevisionCache, verifyCommit)
files, err := g.repos.GetFiles(context.TODO(), appSetGenerator.Git.RepoURL, appSetGenerator.Git.Revision, "", requestedPath.Path, noRevisionCache, verifyCommit)
if err != nil {
return nil, err
}
Expand Down
36 changes: 24 additions & 12 deletions applicationset/services/repo_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,9 @@ func (a *argoCDService) GetFiles(ctx context.Context, repoURL, revision, project
return nil, fmt.Errorf("error in ListRepositories: %w", err)
}

repo, err := repository.FilterRepositoryByProjectAndURL(repos, repoURL, project)
repo, err := getRepo(repos, repoURL, project)
if err != nil {
if errors.Is(err, status.Error(codes.PermissionDenied, "permission denied")) {
repo = &v1alpha1.Repository{Repo: repoURL}
} else {
return nil, fmt.Errorf("error retrieving Git files: %w", err)
}
return nil, fmt.Errorf("error retrieving Git files: %w", err)
}

fileRequest := &apiclient.GitFilesRequest{
Expand Down Expand Up @@ -83,13 +79,9 @@ func (a *argoCDService) GetDirectories(ctx context.Context, repoURL, revision, p
return nil, fmt.Errorf("error in ListRepositories: %w", err)
}

repo, err := repository.FilterRepositoryByProjectAndURL(repos, repoURL, project)
repo, err := getRepo(repos, repoURL, project)
if err != nil {
if errors.Is(err, status.Error(codes.PermissionDenied, "permission denied")) {
repo = &v1alpha1.Repository{Repo: repoURL}
} else {
return nil, fmt.Errorf("error retrieving Git files: %w", err)
}
return nil, fmt.Errorf("error retrieving Git Directories: %w", err)
}

dirRequest := &apiclient.GitDirectoriesRequest{
Expand All @@ -112,3 +104,23 @@ func (a *argoCDService) GetDirectories(ctx context.Context, repoURL, revision, p
}
return dirResponse.GetPaths(), nil
}

func getRepo(repos []*v1alpha1.Repository, repoURL string, project string) (*v1alpha1.Repository, error) {
repo, err := repository.FilterRepositoryByProjectAndURL(repos, repoURL, project)
if err != nil {
if errors.Is(err, status.Error(codes.PermissionDenied, "permission denied")) {
// No repo found with a matching URL - attempt fallback without any actual credentials
repo = &v1alpha1.Repository{Repo: repoURL}
} else {
// This is the final fallback - ensure that at least one repo cred with an unset project is present.
for _, repo = range repos {
if git.SameURL(repo.Repo, repoURL) && repo.Project == "" {
return repo, nil
}
}

return nil, fmt.Errorf("no matching repository found for url %s, ensure that you have a repo credential with an unset project", repoURL)
}
}
return repo, nil
}
3 changes: 0 additions & 3 deletions assets/swagger.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 0 additions & 6 deletions manifests/core-install.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 0 additions & 6 deletions manifests/crds/applicationset-crd.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 0 additions & 6 deletions manifests/ha/install.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 0 additions & 6 deletions manifests/install.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions pkg/apis/application/v1alpha1/applicationset_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -410,8 +410,7 @@ type GitGenerator struct {
PathParamPrefix string `json:"pathParamPrefix,omitempty" protobuf:"bytes,7,name=pathParamPrefix"`

// Values contains key/value pairs which are passed directly as parameters to the template
Values map[string]string `json:"values,omitempty" protobuf:"bytes,8,name=values"`
Project string `json:"project,omitempty" protobuf:"bytes,9,name=project"`
Values map[string]string `json:"values,omitempty" protobuf:"bytes,8,name=values"`
}

type GitDirectoryGeneratorItem struct {
Expand Down
Loading

0 comments on commit 7598d73

Please sign in to comment.