Skip to content

Commit 156f12b

Browse files
author
bowenislandsong
committed
Update PkgManifest upon catsrc update
The catsrc update sync triggered by the informer does not update pkgmanifest. This commit adds an update mechanism.
1 parent 1849f65 commit 156f12b

File tree

2 files changed

+49
-9
lines changed

2 files changed

+49
-9
lines changed

pkg/package-server/provider/registry.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import (
99
"sync"
1010
"time"
1111

12-
utillabels "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/kubernetes/pkg/util/labels"
13-
"github.com/operator-framework/operator-registry/pkg/api"
1412
"github.com/sirupsen/logrus"
1513
"google.golang.org/grpc"
1614
"google.golang.org/grpc/connectivity"
@@ -26,9 +24,11 @@ import (
2624
operatorslisters "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1"
2725
registrygrpc "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc"
2826
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver"
27+
utillabels "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/kubernetes/pkg/util/labels"
2928
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/queueinformer"
3029
"github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/apis/operators"
3130
pkglisters "github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/client/listers/operators/internalversion"
31+
"github.com/operator-framework/operator-registry/pkg/api"
3232
)
3333

3434
const (
@@ -189,9 +189,17 @@ func (p *RegistryProvider) syncCatalogSource(obj interface{}) (syncError error)
189189
Namespace: source.GetNamespace(),
190190
Name: source.GetName(),
191191
}
192+
192193
if sourceMeta := p.sources.GetMeta(key); sourceMeta != nil && sourceMeta.Address == address {
193-
// If the address hasn't changed, don't bother creating a new source
194-
logger.Debug("catalog address unchanged, skipping source creation")
194+
logger.Infof("updating PackageManifest based on CatalogSource changes: %v", key)
195+
timeout, cancel := context.WithTimeout(context.Background(), cacheTimeout)
196+
defer cancel()
197+
var client *registryClient
198+
client, syncError = p.registryClient(key)
199+
if syncError != nil {
200+
return
201+
}
202+
syncError = p.refreshCache(timeout, client)
195203
return
196204
}
197205

test/e2e/packagemanifest_e2e_test.go

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package e2e
33
import (
44
"context"
55
"encoding/json"
6+
67
"github.com/blang/semver"
78
. "github.com/onsi/ginkgo"
89
. "github.com/onsi/gomega"
@@ -145,12 +146,13 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So
145146

146147
Context("Given a CatalogSource created using gRPC catalog source type", func() {
147148
var (
148-
packageName string
149-
catalogSource *v1alpha1.CatalogSource
149+
packageName, displayName string
150+
catalogSource *v1alpha1.CatalogSource
150151
)
151152
BeforeEach(func() {
152153
sourceName := genName("catalog-")
153154
packageName = "etcd-test"
155+
displayName = "etcd test catalog"
154156
image := "quay.io/olmtest/catsrc-update-test:related"
155157

156158
catalogSource = &v1alpha1.CatalogSource{
@@ -164,8 +166,9 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So
164166
Labels: map[string]string{"olm.catalogSource": sourceName},
165167
},
166168
Spec: v1alpha1.CatalogSourceSpec{
167-
SourceType: v1alpha1.SourceTypeGrpc,
168-
Image: image,
169+
SourceType: v1alpha1.SourceTypeGrpc,
170+
Image: image,
171+
DisplayName: displayName,
169172
},
170173
}
171174

@@ -195,6 +198,36 @@ var _ = Describe("Package Manifest API lists available Operators from Catalog So
195198
"quay.io/coreos/etcd-operator@sha256:c0301e4686c3ed4206e370b42de5a3bd2229b9fb4906cf85f3f30650424abec2",
196199
}), "Expected images to exist in the related images list\n")
197200
})
201+
202+
When("the display name for catalog source is updated", func() {
203+
204+
BeforeEach(func() {
205+
206+
pm, err := fetchPackageManifest(pmc, testNamespace, packageName, packageManifestHasStatus)
207+
Expect(err).NotTo(HaveOccurred(), "error getting package manifest")
208+
Expect(pm).ShouldNot(BeNil())
209+
Expect(pm.GetName()).Should(Equal(packageName))
210+
Expect(pm.Status.CatalogSourceDisplayName).Should(Equal(displayName))
211+
212+
catalogSource, err = crc.OperatorsV1alpha1().CatalogSources(testNamespace).Get(context.TODO(), catalogSource.GetName(), metav1.GetOptions{})
213+
Expect(err).NotTo(HaveOccurred(), "error getting catalogSource")
214+
215+
displayName = "updated Name"
216+
catalogSource.Spec.DisplayName = displayName
217+
catalogSource, err = crc.OperatorsV1alpha1().CatalogSources(testNamespace).Update(context.TODO(), catalogSource, metav1.UpdateOptions{})
218+
Expect(err).NotTo(HaveOccurred(), "error updating catalogSource")
219+
Expect(catalogSource.Spec.DisplayName).Should(Equal(displayName))
220+
})
221+
It("should successfully update the CatalogSource field", func() {
222+
223+
Eventually(func() string {
224+
pm, err := fetchPackageManifest(pmc, testNamespace, packageName,
225+
packageManifestHasStatus)
226+
Expect(err).NotTo(HaveOccurred(), "error getting package manifest after updating catsrc")
227+
return pm.Status.CatalogSourceDisplayName
228+
}).Should(Equal(displayName))
229+
})
230+
})
198231
})
199232
})
200233

@@ -203,7 +236,6 @@ type packageManifestCheckFunc func(*packagev1.PackageManifest) bool
203236
func packageManifestHasStatus(pm *packagev1.PackageManifest) bool {
204237
// as long as it has a package name we consider the status non-empty
205238
return pm != nil && pm.Status.PackageName != ""
206-
207239
}
208240

209241
func fetchPackageManifest(pmc pmversioned.Interface, namespace, name string, check packageManifestCheckFunc) (*packagev1.PackageManifest, error) {

0 commit comments

Comments
 (0)