From 540626bca2aa779f9e167b8bb03093b43d6c722d Mon Sep 17 00:00:00 2001 From: gfichtenholt Date: Tue, 12 Jul 2022 23:00:31 -0700 Subject: [PATCH] incremental --- .../v1alpha1/docker_reg_v2_repo_lister.go | 36 ++++++++++--------- .../fluxv2/packages/v1alpha1/oci_repo.go | 2 +- go.mod | 7 ++-- go.sum | 6 ++++ 4 files changed, 32 insertions(+), 19 deletions(-) diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/docker_reg_v2_repo_lister.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/docker_reg_v2_repo_lister.go index 3bc279fbd04..afe42b9711f 100644 --- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/docker_reg_v2_repo_lister.go +++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/docker_reg_v2_repo_lister.go @@ -13,6 +13,8 @@ import ( "helm.sh/helm/v3/pkg/registry" // ORAS => OCI Registry AS Storage + // project home page: https://oras.land/ + // releases: https://github.com/oras-project/oras-go/releases orasregistryv2 "oras.land/oras-go/v2/registry" orasregistryremotev2 "oras.land/oras-go/v2/registry/remote" orasregistryauthv2 "oras.land/oras-go/v2/registry/remote/auth" @@ -58,35 +60,37 @@ func (l *dockerRegistryApiV2RepositoryLister) ListRepositoryNames(ociRegistry *O if err != nil { return nil, err } else { - // this is the way to stop the loop in - // https://github.com/oras-project/oras-go/blob/14422086e41897a44cb706726e687d39dc728805/registry/remote/registry.go#L112 + // this is where we will start, e.g. "stefanprodan/charts" + startAt := strings.Trim(ociRegistry.url.Path, "/") + + repositoryList := []string{} + done := errors.New("(done) backstop") fn := func(repos []string) error { log.Infof("orasRegistry.Repositories fn: %s", repos) - return done + for _, r := range repos { + if strings.HasPrefix(r, startAt+"/") { + repositoryList = append(repositoryList, r) + } else { + // this is the way to stop the loop in + // https://github.com/oras-project/oras-go/blob/14422086e41897a44cb706726e687d39dc728805/registry/remote/registry.go#L112 + return done + } + } + return nil } - // see https://github.com/vmware-tanzu/kubeapps/pull/4932#issuecomment-1164004999 - // and https://github.com/oras-project/oras-go/issues/196 - // TODO (gfichtenholt) need to append - // "?last=" + orasRegistry.Reference.Repository - // to req.Query so we don't start at the beggining of the alphabet - // impl refs: - // 1. https://github.com/oras-project/oras-go/blob/14422086e41897a44cb706726e687d39dc728805/registry/remote/registry.go#L105 + // 1. https://github.com/oras-project/oras-go/blob/4660638096b4b4b5c368ce98cd7040485b5ad776/registry/remote/registry.go#L105 // 2. https://github.com/oras-project/oras-go/blob/14422086e41897a44cb706726e687d39dc728805/registry/remote/url.go#L43 - err = orasRegistry.Repositories(context.Background(), fn) + err = orasRegistry.Repositories(context.Background(), startAt, fn) log.Infof("ORAS Repositories returned: %v", err) if err != nil && err != done { return nil, err } - //repositoryList := []string{} - //return repositoryList, nil + return repositoryList, nil } - - // OLD - return []string{"stefanprodan/charts/podinfo"}, nil } func newRemoteOrasRegistry(ociRegistry *OCIRegistry) (*orasregistryremotev2.Registry, error) { diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go index 1ee17c6fc66..d400ebf0031 100644 --- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go +++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go @@ -179,7 +179,7 @@ func (r *OCIRegistry) listRepositoryNames() ([]string, error) { r.repositoryLister = lister break } else { - log.Infof("Lister [%v] not applicable for registry for URL: [%s] [%v]", reflect.TypeOf(lister), &r.url, err) + log.Infof("Lister [%v] not applicable for registry for URL: [%s] [%v]", reflect.TypeOf(lister), r.url.String(), err) } } diff --git a/go.mod b/go.mod index b99cb8ad109..a392673be5e 100644 --- a/go.mod +++ b/go.mod @@ -94,12 +94,15 @@ require ( k8s.io/kubernetes v1.22.10 k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 oras.land/oras-go v1.2.0 - oras.land/oras-go/v2 v2.0.0-alpha + oras.land/oras-go/v2 v2.0.0-rc.1 sigs.k8s.io/controller-runtime v0.11.2 sigs.k8s.io/yaml v1.3.0 ) -require github.com/oras-project/artifacts-spec v1.0.0-draft.1.1 // indirect +require ( + github.com/opencontainers/distribution-spec/specs-go v0.0.0-20220620172159-4ab4752c3b86 // indirect + github.com/oras-project/artifacts-spec v1.0.0-rc.1.0.20220707054150-eddd1d8790c9 // indirect +) require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect diff --git a/go.sum b/go.sum index 451f98c3993..5e94f4d18bb 100644 --- a/go.sum +++ b/go.sum @@ -1092,6 +1092,8 @@ github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7 github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/distribution-spec/specs-go v0.0.0-20220620172159-4ab4752c3b86 h1:Oumw+lPnO8qNLTY2mrqPJZMoGExLi/0h/DdikoLTXVU= +github.com/opencontainers/distribution-spec/specs-go v0.0.0-20220620172159-4ab4752c3b86/go.mod h1:aA4vdXRS8E1TG7pLZOz85InHi3BiPdErh8IpJN6E0x4= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1133,6 +1135,8 @@ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnh github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oras-project/artifacts-spec v1.0.0-draft.1.1 h1:2YMUDyDH0glYA4gNG/zEg9HNVzgGX8kr/NBLR9AQkLQ= github.com/oras-project/artifacts-spec v1.0.0-draft.1.1/go.mod h1:Xch2aLzSwtkhbFFN6LUzTfLtukYvMMdXJ4oZ8O7BOdc= +github.com/oras-project/artifacts-spec v1.0.0-rc.1.0.20220707054150-eddd1d8790c9 h1:VucBcP8TBtYhqrquIcloJe7hUE+f6NumYEA7bzmJ5sc= +github.com/oras-project/artifacts-spec v1.0.0-rc.1.0.20220707054150-eddd1d8790c9/go.mod h1:Xch2aLzSwtkhbFFN6LUzTfLtukYvMMdXJ4oZ8O7BOdc= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -2215,6 +2219,8 @@ oras.land/oras-go v1.2.0 h1:yoKosVIbsPoFMqAIFHTnrmOuafHal+J/r+I5bdbVWu4= oras.land/oras-go v1.2.0/go.mod h1:pFNs7oHp2dYsYMSS82HaX5l4mpnGO7hbpPN6EWH2ltc= oras.land/oras-go/v2 v2.0.0-alpha h1:Uwso3p1KMTmm7YheWBkGNjf8xqXZ2AYxMfxu1DoQiH0= oras.land/oras-go/v2 v2.0.0-alpha/go.mod h1:0IQiLwHUJuMs0+QYGavaeQWw5FD4ABD/RP5YamXT/sc= +oras.land/oras-go/v2 v2.0.0-rc.1 h1:PtQ+/mCiumx7IwT9EIuirQWtGRWBJQR/gjQMu9uY/pk= +oras.land/oras-go/v2 v2.0.0-rc.1/go.mod h1:L0vZVPSGR2a8i6+tIiva8HGLroO4JF2ifeaBMy6dYa8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=