diff --git a/applicationset/controllers/requeue_after_test.go b/applicationset/controllers/requeue_after_test.go index 360861ff3ad5c..93a3207f735df 100644 --- a/applicationset/controllers/requeue_after_test.go +++ b/applicationset/controllers/requeue_after_test.go @@ -60,7 +60,7 @@ func TestRequeueAfter(t *testing.T) { terminalGenerators := map[string]generators.Generator{ "List": generators.NewListGenerator(), "Clusters": generators.NewClusterGenerator(k8sClient, ctx, appClientset, "argocd"), - "Git": generators.NewGitGenerator(mockServer), + "Git": generators.NewGitGenerator(mockServer, "namespace"), "SCMProvider": generators.NewSCMProviderGenerator(fake.NewClientBuilder().WithObjects(&corev1.Secret{}).Build(), scmConfig), "ClusterDecisionResource": generators.NewDuckTypeGenerator(ctx, fakeDynClient, appClientset, "argocd"), "PullRequest": generators.NewPullRequestGenerator(k8sClient, scmConfig), diff --git a/applicationset/generators/generator_spec_processor_test.go b/applicationset/generators/generator_spec_processor_test.go index dfa89782f9a1f..a02ea5e3312c1 100644 --- a/applicationset/generators/generator_spec_processor_test.go +++ b/applicationset/generators/generator_spec_processor_test.go @@ -346,7 +346,7 @@ func getMockClusterGenerator() Generator { func getMockGitGenerator() Generator { argoCDServiceMock := mocks.Repos{} argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything).Return([]string{"app1", "app2", "app_3", "p1/app4"}, nil) - gitGenerator := NewGitGenerator(&argoCDServiceMock) + gitGenerator := NewGitGenerator(&argoCDServiceMock, "namespace") return gitGenerator } diff --git a/applicationset/generators/git.go b/applicationset/generators/git.go index de070758912ed..312924bbb415c 100644 --- a/applicationset/generators/git.go +++ b/applicationset/generators/git.go @@ -24,13 +24,16 @@ import ( var _ Generator = (*GitGenerator)(nil) type GitGenerator struct { - repos services.Repos + repos services.Repos + namespace string } -func NewGitGenerator(repos services.Repos) Generator { +func NewGitGenerator(repos services.Repos, namespace string) Generator { g := &GitGenerator{ - repos: repos, + repos: repos, + namespace: namespace, } + return g } @@ -67,7 +70,11 @@ func (g *GitGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha1.Applic if !strings.Contains(appSet.Spec.Template.Spec.Project, "{{") { project := appSet.Spec.Template.Spec.Project appProject := &argoprojiov1alpha1.AppProject{} - if err := client.Get(context.TODO(), types.NamespacedName{Name: project, Namespace: appSet.Namespace}, appProject); err != nil { + namespace := g.namespace + if namespace == "" { + namespace = appSet.Namespace + } + if err := client.Get(context.TODO(), types.NamespacedName{Name: project, Namespace: namespace}, appProject); err != nil { return nil, fmt.Errorf("error getting project %s: %w", project, err) } // we need to verify the signature on the Git revision if GPG is enabled diff --git a/applicationset/generators/git_test.go b/applicationset/generators/git_test.go index 44278cc059990..cd0c14d8443f0 100644 --- a/applicationset/generators/git_test.go +++ b/applicationset/generators/git_test.go @@ -323,7 +323,7 @@ func TestGitGenerateParamsFromDirectories(t *testing.T) { argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError) - gitGenerator := NewGitGenerator(&argoCDServiceMock) + gitGenerator := NewGitGenerator(&argoCDServiceMock, "") applicationSetInfo := argoprojiov1alpha1.ApplicationSet{ ObjectMeta: metav1.ObjectMeta{ Name: "set", @@ -624,7 +624,7 @@ func TestGitGenerateParamsFromDirectoriesGoTemplate(t *testing.T) { argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCaseCopy.repoApps, testCaseCopy.repoError) - gitGenerator := NewGitGenerator(&argoCDServiceMock) + gitGenerator := NewGitGenerator(&argoCDServiceMock, "") applicationSetInfo := argoprojiov1alpha1.ApplicationSet{ ObjectMeta: metav1.ObjectMeta{ Name: "set", @@ -989,7 +989,7 @@ cluster: argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything). Return(testCaseCopy.repoFileContents, testCaseCopy.repoPathsError) - gitGenerator := NewGitGenerator(&argoCDServiceMock) + gitGenerator := NewGitGenerator(&argoCDServiceMock, "") applicationSetInfo := argoprojiov1alpha1.ApplicationSet{ ObjectMeta: metav1.ObjectMeta{ Name: "set", @@ -1345,7 +1345,7 @@ cluster: argoCDServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything). Return(testCaseCopy.repoFileContents, testCaseCopy.repoPathsError) - gitGenerator := NewGitGenerator(&argoCDServiceMock) + gitGenerator := NewGitGenerator(&argoCDServiceMock, "") applicationSetInfo := argoprojiov1alpha1.ApplicationSet{ ObjectMeta: metav1.ObjectMeta{ Name: "set", @@ -1406,7 +1406,8 @@ func TestGitGenerator_GenerateParams(t *testing.T) { repoPathsError: nil, appset: argoprojiov1alpha1.ApplicationSet{ ObjectMeta: metav1.ObjectMeta{ - Name: "set", + Name: "set", + Namespace: "namespace", }, Spec: argoprojiov1alpha1.ApplicationSetSpec{ Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{ @@ -1439,7 +1440,8 @@ func TestGitGenerator_GenerateParams(t *testing.T) { repoPathsError: nil, appset: argoprojiov1alpha1.ApplicationSet{ ObjectMeta: metav1.ObjectMeta{ - Name: "set", + Name: "set", + Namespace: "namespace", }, Spec: argoprojiov1alpha1.ApplicationSetSpec{ Generators: []argoprojiov1alpha1.ApplicationSetGenerator{{ @@ -1471,7 +1473,7 @@ func TestGitGenerator_GenerateParams(t *testing.T) { if testCase.callGetDirectories { argoCDServiceMock.On("GetDirectories", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(testCase.repoApps, testCase.repoPathsError) } - gitGenerator := NewGitGenerator(&argoCDServiceMock) + gitGenerator := NewGitGenerator(&argoCDServiceMock, "namespace") scheme := runtime.NewScheme() err := v1alpha1.AddToScheme(scheme) diff --git a/applicationset/generators/matrix_test.go b/applicationset/generators/matrix_test.go index 0e37f01ff06d3..3a961bb0fe877 100644 --- a/applicationset/generators/matrix_test.go +++ b/applicationset/generators/matrix_test.go @@ -1089,7 +1089,7 @@ func TestGitGenerator_GenerateParams_list_x_git_matrix_generator(t *testing.T) { repoServiceMock.On("GetFiles", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(map[string][]byte{ "some/path.json": []byte("test: content"), }, nil) - gitGenerator := NewGitGenerator(repoServiceMock) + gitGenerator := NewGitGenerator(repoServiceMock, "") matrixGenerator := NewMatrixGenerator(map[string]Generator{ "List": listGeneratorMock, diff --git a/applicationset/generators/utils.go b/applicationset/generators/utils.go index 3d106d0a79144..84bdda6101006 100644 --- a/applicationset/generators/utils.go +++ b/applicationset/generators/utils.go @@ -14,7 +14,7 @@ func GetGenerators(ctx context.Context, c client.Client, k8sClient kubernetes.In terminalGenerators := map[string]Generator{ "List": NewListGenerator(), "Clusters": NewClusterGenerator(c, ctx, k8sClient, namespace), - "Git": NewGitGenerator(argoCDService), + "Git": NewGitGenerator(argoCDService, namespace), "SCMProvider": NewSCMProviderGenerator(c, scmConfig), "ClusterDecisionResource": NewDuckTypeGenerator(ctx, dynamicClient, k8sClient, namespace), "PullRequest": NewPullRequestGenerator(c, scmConfig),