diff --git a/applicationset/controllers/requeue_after_test.go b/applicationset/controllers/requeue_after_test.go index 10067c119b78d..21bc3dbefafb5 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(), generators.SCMAuthProviders{}, "", []string{""}, true), "ClusterDecisionResource": generators.NewDuckTypeGenerator(ctx, fakeDynClient, appClientset, "argocd"), "PullRequest": generators.NewPullRequestGenerator(k8sClient, generators.SCMAuthProviders{}, "", []string{""}, true), 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 440fafd3f3ad2..99834b72b7916 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/cmd/argocd-applicationset-controller/commands/applicationset_controller.go b/cmd/argocd-applicationset-controller/commands/applicationset_controller.go index b90bd7dbd1f65..81d26c983ff2a 100644 --- a/cmd/argocd-applicationset-controller/commands/applicationset_controller.go +++ b/cmd/argocd-applicationset-controller/commands/applicationset_controller.go @@ -177,7 +177,7 @@ func NewCommand() *cobra.Command { terminalGenerators := map[string]generators.Generator{ "List": generators.NewListGenerator(), "Clusters": generators.NewClusterGenerator(mgr.GetClient(), ctx, k8sClient, namespace), - "Git": generators.NewGitGenerator(argoCDService), + "Git": generators.NewGitGenerator(argoCDService, namespace), "SCMProvider": generators.NewSCMProviderGenerator(mgr.GetClient(), scmAuth, scmRootCAPath, allowedScmProviders, enableScmProviders), "ClusterDecisionResource": generators.NewDuckTypeGenerator(ctx, dynamicClient, k8sClient, namespace), "PullRequest": generators.NewPullRequestGenerator(mgr.GetClient(), scmAuth, scmRootCAPath, allowedScmProviders, enableScmProviders),