Skip to content

Commit

Permalink
Merge branch 'nephio-project:main' into pv-pipeline-readiness-gates
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesMcDermott authored Jan 21, 2025
2 parents ff91f1a + 8f4d314 commit 8252125
Show file tree
Hide file tree
Showing 39 changed files with 240 additions and 159 deletions.
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -172,12 +172,12 @@ require (
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/net v0.28.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.23.0 // indirect
golang.org/x/term v0.23.0 // indirect
golang.org/x/text v0.17.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/net v0.34.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/term v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
golang.org/x/time v0.6.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf // indirect
Expand Down
24 changes: 12 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -413,8 +413,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA=
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA=
Expand Down Expand Up @@ -445,8 +445,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
Expand All @@ -457,8 +457,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand All @@ -478,25 +478,25 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU=
golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk=
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=
golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand Down
16 changes: 8 additions & 8 deletions pkg/apiserver/apiserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,13 @@ func init() {

// ExtraConfig holds custom apiserver config
type ExtraConfig struct {
CoreAPIKubeconfigPath string
CacheDirectory string
FunctionRunnerAddress string
DefaultImagePrefix string
RepoSyncFrequency time.Duration
UseGitCaBundle bool
MaxGrpcMessageSize int
CoreAPIKubeconfigPath string
CacheDirectory string
FunctionRunnerAddress string
DefaultImagePrefix string
RepoSyncFrequency time.Duration
UseUserDefinedCaBundle bool
MaxGrpcMessageSize int
}

// Config defines the config for the apiserver
Expand Down Expand Up @@ -228,7 +228,7 @@ func (c completedConfig) New() (*PorchServer, error) {

watcherMgr := engine.NewWatcherManager()

memoryCache := memorycache.NewCache(c.ExtraConfig.CacheDirectory, c.ExtraConfig.RepoSyncFrequency, c.ExtraConfig.UseGitCaBundle, memorycache.CacheOptions{
memoryCache := memorycache.NewCache(c.ExtraConfig.CacheDirectory, c.ExtraConfig.RepoSyncFrequency, c.ExtraConfig.UseUserDefinedCaBundle, memorycache.CacheOptions{
CredentialResolver: credentialResolver,
UserInfoProvider: userInfoProvider,
MetadataStore: metadataStore,
Expand Down
46 changes: 23 additions & 23 deletions pkg/cache/memory/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,15 @@ import (
// * We Cache flattened tar files in <cacheDir>/oci/ (so we don't need to pull to read resources)
// * We poll the repositories (every minute) and Cache the discovered images in memory.
type Cache struct {
mutex sync.Mutex
repositories map[string]*cachedRepository
cacheDir string
credentialResolver repository.CredentialResolver
userInfoProvider repository.UserInfoProvider
metadataStore meta.MetadataStore
repoSyncFrequency time.Duration
objectNotifier objectNotifier
useGitCaBundle bool
mutex sync.Mutex
repositories map[string]*cachedRepository
cacheDir string
credentialResolver repository.CredentialResolver
userInfoProvider repository.UserInfoProvider
metadataStore meta.MetadataStore
repoSyncFrequency time.Duration
objectNotifier objectNotifier
useUserDefinedCaBundle bool
}

var _ cache.Cache = &Cache{}
Expand All @@ -68,16 +68,16 @@ type CacheOptions struct {
ObjectNotifier objectNotifier
}

func NewCache(cacheDir string, repoSyncFrequency time.Duration, useGitCaBundle bool, opts CacheOptions) *Cache {
func NewCache(cacheDir string, repoSyncFrequency time.Duration, useUserDefinedCaBundle bool, opts CacheOptions) *Cache {
return &Cache{
repositories: make(map[string]*cachedRepository),
cacheDir: cacheDir,
credentialResolver: opts.CredentialResolver,
userInfoProvider: opts.UserInfoProvider,
metadataStore: opts.MetadataStore,
objectNotifier: opts.ObjectNotifier,
repoSyncFrequency: repoSyncFrequency,
useGitCaBundle: useGitCaBundle,
repositories: make(map[string]*cachedRepository),
cacheDir: cacheDir,
credentialResolver: opts.CredentialResolver,
userInfoProvider: opts.UserInfoProvider,
metadataStore: opts.MetadataStore,
objectNotifier: opts.ObjectNotifier,
repoSyncFrequency: repoSyncFrequency,
useUserDefinedCaBundle: useUserDefinedCaBundle,
}
}

Expand Down Expand Up @@ -147,10 +147,10 @@ func (c *Cache) OpenRepository(ctx context.Context, repositorySpec *configapi.Re
}

r, err := git.OpenRepository(ctx, repositorySpec.Name, repositorySpec.Namespace, gitSpec, repositorySpec.Spec.Deployment, filepath.Join(c.cacheDir, "git"), git.GitRepositoryOptions{
CredentialResolver: c.credentialResolver,
UserInfoProvider: c.userInfoProvider,
MainBranchStrategy: mbs,
UseGitCaBundle: c.useGitCaBundle,
CredentialResolver: c.credentialResolver,
UserInfoProvider: c.userInfoProvider,
MainBranchStrategy: mbs,
UseUserDefinedCaBundle: c.useUserDefinedCaBundle,
})
if err != nil {
return nil, err
Expand All @@ -172,7 +172,7 @@ func (c *Cache) OpenRepository(ctx context.Context, repositorySpec *configapi.Re
}

func (c *Cache) CloseRepository(ctx context.Context, repositorySpec *configapi.Repository, allRepos []configapi.Repository) error {
_, span := tracer.Start(ctx, "Cache::OpenRepository", trace.WithAttributes())
_, span := tracer.Start(ctx, "Cache::CloseRepository", trace.WithAttributes())
defer span.End()

key, err := getCacheKey(repositorySpec)
Expand Down
6 changes: 3 additions & 3 deletions pkg/cache/memory/cache_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ func TestPublishedLatest(t *testing.T) {

bucket := revisions[0]
// Expect draft package
if got, want := bucket.Lifecycle(), api.PackageRevisionLifecycleDraft; got != want {
if got, want := bucket.Lifecycle(ctx), api.PackageRevisionLifecycleDraft; got != want {
t.Fatalf("Bucket package lifecycle: got %s, want %s", got, want)
}

Expand Down Expand Up @@ -147,7 +147,7 @@ func TestDeletePublishedMain(t *testing.T) {

bucket := revisions[0]
// Expect draft package
if got, want := bucket.Lifecycle(), api.PackageRevisionLifecycleDraft; got != want {
if got, want := bucket.Lifecycle(ctx), api.PackageRevisionLifecycleDraft; got != want {
t.Fatalf("Bucket package lifecycle: got %s, want %s", got, want)
}

Expand Down Expand Up @@ -184,7 +184,7 @@ func TestDeletePublishedMain(t *testing.T) {

approvedBucket := publishedRevisions[0]

if got, want := approvedBucket.Lifecycle(), api.PackageRevisionLifecyclePublished; got != want {
if got, want := approvedBucket.Lifecycle(ctx), api.PackageRevisionLifecyclePublished; got != want {
t.Fatalf("Approved Bucket package lifecycle: got %s, want %s", got, want)
}

Expand Down
4 changes: 4 additions & 0 deletions pkg/cache/memory/packagerevision.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (

api "github.com/nephio-project/porch/api/porch/v1alpha1"
"github.com/nephio-project/porch/pkg/repository"
"go.opentelemetry.io/otel/trace"
)

// We take advantage of the cache having a global view of all the packages
Expand All @@ -35,6 +36,9 @@ type cachedPackageRevision struct {
}

func (c *cachedPackageRevision) GetPackageRevision(ctx context.Context) (*api.PackageRevision, error) {
ctx, span := tracer.Start(ctx, "cachedPackageRevision::GetPackageRevision", trace.WithAttributes())
defer span.End()

apiPR, err := c.PackageRevision.GetPackageRevision(ctx)
if err != nil {
return nil, err
Expand Down
24 changes: 15 additions & 9 deletions pkg/cache/memory/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ func (r *cachedRepository) Refresh(ctx context.Context) error {
}

func (r *cachedRepository) Version(ctx context.Context) (string, error) {
ctx, span := tracer.Start(ctx, "cachedRepository::Version", trace.WithAttributes())
defer span.End()

return r.repo.Version(ctx)
}

Expand Down Expand Up @@ -122,7 +125,7 @@ func (r *cachedRepository) getPackageRevisions(ctx context.Context, filter repos
}
r.mutex.Lock()
defer r.mutex.Unlock()
return toPackageRevisionSlice(packageRevisions, filter), nil
return toPackageRevisionSlice(ctx, packageRevisions, filter), nil
}

func (r *cachedRepository) getPackages(ctx context.Context, filter repository.ListPackageFilter, forceRefresh bool) ([]repository.Package, error) {
Expand Down Expand Up @@ -196,12 +199,12 @@ func (r *cachedRepository) ClosePackageRevisionDraft(ctx context.Context, prd re

var publishedRevisions []string
for _, rev := range revisions {
if v1alpha1.LifecycleIsPublished(rev.Lifecycle()) {
if v1alpha1.LifecycleIsPublished(rev.Lifecycle(ctx)) {
publishedRevisions = append(publishedRevisions, rev.Key().Revision)
}
}

nextVersion, err := repository.NextRevisionNumber(publishedRevisions)
nextVersion, err := repository.NextRevisionNumber(ctx, publishedRevisions)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -234,7 +237,7 @@ func (r *cachedRepository) update(ctx context.Context, updated repository.Packag
k := updated.Key()
// previous := r.cachedPackageRevisions[k]

if v1alpha1.LifecycleIsPublished(updated.Lifecycle()) {
if v1alpha1.LifecycleIsPublished(updated.Lifecycle(ctx)) {
oldKey := repository.PackageRevisionKey{
Repository: k.Repository,
Package: k.Package,
Expand All @@ -247,10 +250,10 @@ func (r *cachedRepository) update(ctx context.Context, updated repository.Packag
r.cachedPackageRevisions[k] = cached

// Recompute latest package revisions.
identifyLatestRevisions(r.cachedPackageRevisions)
identifyLatestRevisions(ctx, r.cachedPackageRevisions)

// Create the main package revision
if v1alpha1.LifecycleIsPublished(updated.Lifecycle()) {
if v1alpha1.LifecycleIsPublished(updated.Lifecycle(ctx)) {
updatedMain := updated.ToMainPackageRevision()
err := r.createMainPackageRevision(ctx, updatedMain)
if err != nil {
Expand Down Expand Up @@ -325,7 +328,7 @@ func (r *cachedRepository) DeletePackageRevision(ctx context.Context, old reposi

// Recompute latest package revisions.
// TODO: Only for affected object / key?
identifyLatestRevisions(r.cachedPackageRevisions)
identifyLatestRevisions(ctx, r.cachedPackageRevisions)
}

r.mutex.Unlock()
Expand Down Expand Up @@ -408,7 +411,7 @@ func (r *cachedRepository) pollOnce(ctx context.Context) {
start := time.Now()
klog.Infof("repo %s: poll started", r.id)
defer func() { klog.Infof("repo %s: poll finished in %f secs", r.id, time.Since(start).Seconds()) }()
ctx, span := tracer.Start(ctx, "Repository::pollOnce", trace.WithAttributes())
ctx, span := tracer.Start(ctx, "[START]::Repository::pollOnce", trace.WithAttributes())
defer span.End()

if _, err := r.getPackageRevisions(ctx, repository.ListPackageRevisionFilter{}, true); err != nil {
Expand All @@ -432,6 +435,9 @@ func (r *cachedRepository) flush() {
// it also triggers notifications for all package changes.
// mutex must be held.
func (r *cachedRepository) refreshAllCachedPackages(ctx context.Context) (map[repository.PackageKey]*cachedPackage, map[repository.PackageRevisionKey]*cachedPackageRevision, error) {
ctx, span := tracer.Start(ctx, "cachedRepository::refreshAllCachedPackages", trace.WithAttributes())
defer span.End()

// TODO: Avoid simultaneous fetches?
// TODO: Push-down partial refresh?
r.mutex.Lock()
Expand Down Expand Up @@ -567,7 +573,7 @@ func (r *cachedRepository) refreshAllCachedPackages(ctx context.Context) (map[re
newPackageRevisionMap[k] = pkgRev
}

identifyLatestRevisions(newPackageRevisionMap)
identifyLatestRevisions(ctx, newPackageRevisionMap)

newPackageMap := make(map[repository.PackageKey]*cachedPackage)

Expand Down
12 changes: 7 additions & 5 deletions pkg/cache/memory/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package memory

import (
"context"
"sort"
"strings"

Expand All @@ -24,7 +25,7 @@ import (
"k8s.io/klog/v2"
)

func identifyLatestRevisions(result map[repository.PackageRevisionKey]*cachedPackageRevision) {
func identifyLatestRevisions(ctx context.Context, result map[repository.PackageRevisionKey]*cachedPackageRevision) {
// Compute the latest among the different revisions of the same package.
// The map is keyed by the package name; Values are the latest revision found so far.

Expand All @@ -35,7 +36,7 @@ func identifyLatestRevisions(result map[repository.PackageRevisionKey]*cachedPac

// Check if the current package revision is more recent than the one seen so far.
// Only consider Published packages
if !v1alpha1.LifecycleIsPublished(current.Lifecycle()) {
if !v1alpha1.LifecycleIsPublished(current.Lifecycle(ctx)) {
continue
}

Expand Down Expand Up @@ -64,10 +65,11 @@ func identifyLatestRevisions(result map[repository.PackageRevisionKey]*cachedPac
}
}

func toPackageRevisionSlice(cached map[repository.PackageRevisionKey]*cachedPackageRevision, filter repository.ListPackageRevisionFilter) []repository.PackageRevision {
func toPackageRevisionSlice(
ctx context.Context, cached map[repository.PackageRevisionKey]*cachedPackageRevision, filter repository.ListPackageRevisionFilter) []repository.PackageRevision {
result := make([]repository.PackageRevision, 0, len(cached))
for _, p := range cached {
if filter.Matches(p) {
if filter.Matches(ctx, p) {
result = append(result, p)
}
}
Expand All @@ -89,7 +91,7 @@ func toPackageRevisionSlice(cached map[repository.PackageRevisionKey]*cachedPack
default:
// Equal. Compare next element
}
switch res := strings.Compare(string(result[i].Lifecycle()), string(result[j].Lifecycle())); {
switch res := strings.Compare(string(result[i].Lifecycle(ctx)), string(result[j].Lifecycle(ctx))); {
case res < 0:
return true
case res > 0:
Expand Down
Loading

0 comments on commit 8252125

Please sign in to comment.