Skip to content

Commit d4fe858

Browse files
Merge pull request #1482 from Bowenislandsong/bug/updateDisplayName
Bug 1823714: Update PkgManifest upon catsrc update
2 parents 374016f + 156f12b commit d4fe858

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)