From 2d6d49e9de8f3a31f9d3216e80e706da285381f7 Mon Sep 17 00:00:00 2001 From: John Belamaric Date: Thu, 30 Nov 2023 11:29:32 -0800 Subject: [PATCH] Fix packagerevisions for repos with subdirs (#4097) * Fix packagerevisions for repos with subdirs Signed-off-by: John Belamaric * Update key used during deletion and close Signed-off-by: John Belamaric * Fix erroneous and extraneous log message Signed-off-by: John Belamaric --------- Signed-off-by: John Belamaric --- porch/pkg/cache/cache.go | 4 ++-- porch/pkg/cache/repository.go | 4 +++- porch/pkg/git/git.go | 8 ++++++-- porch/pkg/registry/porch/background.go | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/porch/pkg/cache/cache.go b/porch/pkg/cache/cache.go index 0221d8b43..21d3a46a3 100644 --- a/porch/pkg/cache/cache.go +++ b/porch/pkg/cache/cache.go @@ -119,7 +119,7 @@ func (c *Cache) OpenRepository(ctx context.Context, repositorySpec *configapi.Re if !isPackageContent(repositorySpec.Spec.Content) { return nil, fmt.Errorf("git repository supports Package content only; got %q", string(repositorySpec.Spec.Content)) } - key := "git://" + gitSpec.Repo + key := "git://" + gitSpec.Repo + gitSpec.Directory c.mutex.Lock() defer c.mutex.Unlock() @@ -175,7 +175,7 @@ func (c *Cache) CloseRepository(repositorySpec *configapi.Repository) error { if git == nil { return fmt.Errorf("git not configured for %s:%s", repositorySpec.ObjectMeta.Namespace, repositorySpec.ObjectMeta.Name) } - key = "git://" + git.Repo + key = "git://" + git.Repo + git.Directory default: return fmt.Errorf("unknown repository type: %q", repositorySpec.Spec.Type) diff --git a/porch/pkg/cache/repository.go b/porch/pkg/cache/repository.go index 45b771388..f09ea310d 100644 --- a/porch/pkg/cache/repository.go +++ b/porch/pkg/cache/repository.go @@ -309,7 +309,9 @@ func (r *cachedRepository) Close() error { // There isn't much use in returning an error here, so we just log it // and create a PackageRevisionMeta with just name and namespace. This // makes sure that the Delete event is sent. - klog.Warningf("Error looking up PackageRev CR for %s: %v") + if !apierrors.IsNotFound(err) { + klog.Warningf("Error deleting PackageRev CR %s/%s: %s", nn.Namespace, nn.Name, err) + } pkgRevMeta = meta.PackageRevisionMeta{ Name: nn.Name, Namespace: nn.Namespace, diff --git a/porch/pkg/git/git.go b/porch/pkg/git/git.go index 50b5c650b..3842fa8d6 100644 --- a/porch/pkg/git/git.go +++ b/porch/pkg/git/git.go @@ -316,7 +316,9 @@ func (r *gitRepository) listPackageRevisions(ctx context.Context, filter reposit if err != nil { return nil, fmt.Errorf("failed to load package draft %q: %w", name.String(), err) } - draftLoaded += 1 + if draft != nil { + draftLoaded += 1 + } } if draft != nil { drafts = append(drafts, draft) @@ -342,7 +344,9 @@ func (r *gitRepository) listPackageRevisions(ctx context.Context, filter reposit // this tag is not associated with any package (e.g. could be a release tag) continue } - tagLoaded += 1 + if tagged != nil { + tagLoaded += 1 + } } if tagged != nil && filter.Matches(tagged) { result = append(result, tagged) diff --git a/porch/pkg/registry/porch/background.go b/porch/pkg/registry/porch/background.go index ea2175316..642725593 100644 --- a/porch/pkg/registry/porch/background.go +++ b/porch/pkg/registry/porch/background.go @@ -174,7 +174,7 @@ func (b *background) isSharedRepository(ctx context.Context, repo *configapi.Rep return true, nil } case configapi.RepositoryTypeGit: - if r.Spec.Git.Repo == repo.Spec.Git.Repo { + if r.Spec.Git.Repo == repo.Spec.Git.Repo && r.Spec.Git.Directory == repo.Spec.Git.Directory { return true, nil } default: