Skip to content

Commit ca61215

Browse files
fix(repo-server): fixed repeated resource generation for source directory type (#356)
* reposerver(repository): fixed repeated resources generation for ApplicationSourceTypeDirectory * reposerver(repository): fixed unit tests after fix of repeated resources generation for ApplicationSourceTypeDirectory
1 parent 5af7ecc commit ca61215

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

changelog/CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
### Fixed
2-
- fix: failures in update revision for path should not affect sync
1+
### Changes
2+
- fix(repo-server): fixed repeated resources generation for ApplicationSourceTypeDirectory

reposerver/repository/repository.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1812,21 +1812,18 @@ var manifestFile = regexp.MustCompile(`^.*\.(yaml|yml|json|jsonnet)$`)
18121812

18131813
// findManifests looks at all yaml files in a directory and unmarshals them into a list of unstructured objects
18141814
func findManifests(logCtx *log.Entry, appPath string, repoRoot string, env *v1alpha1.Env, directory v1alpha1.ApplicationSourceDirectory, enabledManifestGeneration map[string]bool, maxCombinedManifestQuantity resource.Quantity) ([]manifest, error) {
1815-
absRepoRoot, err := filepath.Abs(repoRoot)
1816-
if err != nil {
1817-
return nil, err
1818-
}
1819-
1820-
var manifests []manifest
1821-
18221815
// Validate the directory before loading any manifests to save memory.
18231816
potentiallyValidManifests, err := getPotentiallyValidManifests(logCtx, appPath, repoRoot, directory.Recurse, directory.Include, directory.Exclude, maxCombinedManifestQuantity)
18241817
if err != nil {
18251818
logCtx.Errorf("failed to get potentially valid manifests: %s", err)
18261819
return nil, fmt.Errorf("failed to get potentially valid manifests: %w", err)
18271820
}
18281821

1829-
var objs []*unstructured.Unstructured
1822+
absRepoRoot, err := filepath.Abs(repoRoot)
1823+
if err != nil {
1824+
return nil, err
1825+
}
1826+
var manifests []manifest
18301827
for _, potentiallyValidManifest := range potentiallyValidManifests {
18311828
manifestPath := potentiallyValidManifest.path
18321829
manifestFileInfo := potentiallyValidManifest.fileInfo
@@ -1836,6 +1833,7 @@ func findManifests(logCtx *log.Entry, appPath string, repoRoot string, env *v1al
18361833
repoRelPath, _ := filepath.Rel(absRepoRoot, absPath)
18371834

18381835
if strings.HasSuffix(manifestFileInfo.Name(), ".jsonnet") {
1836+
var objs []*unstructured.Unstructured
18391837
if !discovery.IsManifestGenerationEnabled(v1alpha1.ApplicationSourceTypeDirectory, enabledManifestGeneration) {
18401838
continue
18411839
}
@@ -1875,6 +1873,7 @@ func findManifests(logCtx *log.Entry, appPath string, repoRoot string, env *v1al
18751873
})
18761874
}
18771875
} else {
1876+
var objs []*unstructured.Unstructured
18781877
err := getObjsFromYAMLOrJson(logCtx, manifestPath, manifestFileInfo.Name(), &objs)
18791878
if err != nil {
18801879
return nil, err

reposerver/repository/repository_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ func TestGenerateManifestsUseExactRevision(t *testing.T) {
661661

662662
res1, err := service.GenerateManifest(context.Background(), &q)
663663
require.NoError(t, err)
664-
assert.Len(t, res1.Manifests, 6)
664+
assert.Len(t, res1.Manifests, 4)
665665
assert.Equal(t, "abc", gitClient.Calls[0].Arguments[0])
666666
}
667667

@@ -677,7 +677,7 @@ func TestRecurseManifestsInDir(t *testing.T) {
677677

678678
res1, err := service.GenerateManifest(context.Background(), &q)
679679
require.NoError(t, err)
680-
assert.Len(t, res1.Manifests, 6)
680+
assert.Len(t, res1.Manifests, 4)
681681
}
682682

683683
func TestInvalidManifestsInDir(t *testing.T) {
@@ -2199,7 +2199,7 @@ func TestFindResources(t *testing.T) {
21992199
}, {
22002200
name: "Include Everything",
22012201
include: "*.yaml",
2202-
expectedNames: []string{"nginx-deployment", "nginx-deployment", "nginx-deployment-sub"},
2202+
expectedNames: []string{"nginx-deployment", "nginx-deployment-sub"},
22032203
}, {
22042204
name: "Include Subdirectory",
22052205
include: "**/*.yaml",
@@ -2254,10 +2254,10 @@ func TestFindManifests_Exclude_NothingMatches(t *testing.T) {
22542254
}, map[string]bool{}, resource.MustParse("0"))
22552255

22562256
require.NoError(t, err)
2257-
require.Len(t, objs, 3)
2257+
require.Len(t, objs, 2)
22582258

22592259
assert.ElementsMatch(t,
2260-
[]string{"nginx-deployment", "nginx-deployment-sub"}, []string{objs[0].obj.GetName(), objs[2].obj.GetName()})
2260+
[]string{"nginx-deployment", "nginx-deployment-sub"}, []string{objs[0].obj.GetName(), objs[1].obj.GetName()})
22612261
}
22622262

22632263
func tempDir(t *testing.T) string {
@@ -2606,7 +2606,7 @@ func Test_findManifests(t *testing.T) {
26062606
t.Run("recursion when recursion is enabled", func(t *testing.T) {
26072607
recurse := argoappv1.ApplicationSourceDirectory{Recurse: true}
26082608
manifests, err := findManifests(logCtx, "./testdata/recurse", "./testdata/recurse", nil, recurse, nil, resource.MustParse("0"))
2609-
assert.Len(t, manifests, 6)
2609+
assert.Len(t, manifests, 4)
26102610
require.NoError(t, err)
26112611
})
26122612

@@ -2665,7 +2665,7 @@ func Test_findManifests(t *testing.T) {
26652665
t.Run("group of files should be limited at precisely the sum of their size", func(t *testing.T) {
26662666
// There is a total of 10 files, each file being 10 bytes.
26672667
manifests, err := findManifests(logCtx, "./testdata/several-files", "./testdata/several-files", nil, noRecurse, nil, resource.MustParse("365"))
2668-
assert.Len(t, manifests, 55)
2668+
assert.Len(t, manifests, 10)
26692669
require.NoError(t, err)
26702670

26712671
manifests, err = findManifests(logCtx, "./testdata/several-files", "./testdata/several-files", nil, noRecurse, nil, resource.MustParse("364"))
@@ -2676,7 +2676,7 @@ func Test_findManifests(t *testing.T) {
26762676
t.Run("jsonnet isn't counted against size limit", func(t *testing.T) {
26772677
// Each file is 36 bytes. Only the 36-byte json file should be counted against the limit.
26782678
manifests, err := findManifests(logCtx, "./testdata/jsonnet-and-json", "./testdata/jsonnet-and-json", nil, noRecurse, nil, resource.MustParse("36"))
2679-
assert.Len(t, manifests, 3)
2679+
assert.Len(t, manifests, 2)
26802680
require.NoError(t, err)
26812681

26822682
manifests, err = findManifests(logCtx, "./testdata/jsonnet-and-json", "./testdata/jsonnet-and-json", nil, noRecurse, nil, resource.MustParse("35"))

0 commit comments

Comments
 (0)