Skip to content

Commit ffcee67

Browse files
committed
PackageManifests should include Keywords
Problem: Although CSVs allow users to define keywords for their operators, these keywords are not available in the PackageManifest created for the operator. Solution: Copy the keywords from the CSV to the PackageManifest.
1 parent b5f5dd6 commit ffcee67

File tree

9 files changed

+37
-0
lines changed

9 files changed

+37
-0
lines changed

pkg/package-server/apis/operators/packagemanifest.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion, csvJSON
3535
NativeAPIs: csv.Spec.NativeAPIs,
3636
MinKubeVersion: csv.Spec.MinKubeVersion,
3737
RelatedImages: GetImages(csvJSON),
38+
Keywords: csv.Spec.Keywords,
3839
}
3940

4041
icons := make([]Icon, len(csv.Spec.Icon))

pkg/package-server/apis/operators/packagemanifest_types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ type CSVDescription struct {
9898
// Provider is the CSV's provider
9999
Provider AppLink
100100
Annotations map[string]string
101+
Keywords []string
101102

102103
// LongDescription is the CSV's description
103104
LongDescription string

pkg/package-server/apis/operators/v1/packagemanifest.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion, csvJSON
2929
NativeAPIs: csv.Spec.NativeAPIs,
3030
MinKubeVersion: csv.Spec.MinKubeVersion,
3131
RelatedImages: GetImages(csvJSON),
32+
Keywords: csv.Spec.Keywords,
3233
}
3334

3435
icons := make([]Icon, len(csv.Spec.Icon))

pkg/package-server/apis/operators/v1/packagemanifest_types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ type CSVDescription struct {
9999
Provider AppLink `json:"provider,omitempty"`
100100
// +listType=map
101101
Annotations map[string]string `json:"annotations,omitempty"`
102+
// +listType=set
103+
Keywords []string `json:"keywords,omitempty"`
102104

103105
// LongDescription is the CSV's description
104106
LongDescription string `json:"description,omitempty"`

pkg/package-server/apis/operators/v1/zz_generated.conversion.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/package-server/apis/operators/v1/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/package-server/apis/operators/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/package-server/client/openapi/zz_generated.openapi.go

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/e2e/packagemanifest_e2e_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ var _ = Describe("Package Manifest", func() {
4646
namedStrategy := newNginxInstallStrategy(genName("dep-"), nil, nil)
4747
csv := newCSV(packageStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{crd}, nil, namedStrategy)
4848
csv.SetLabels(map[string]string{"projected": "label"})
49+
csv.Spec.Keywords = []string{"foo", "bar"}
4950
csv.Spec.NativeAPIs = []metav1.GroupVersionKind{{Group: "kubenative.io", Version: "v1", Kind: "Native"}}
5051
csvJSON, _ := json.Marshal(csv)
5152
c := newKubeClient(GinkgoT())
@@ -95,6 +96,7 @@ var _ = Describe("Package Manifest", func() {
9596
require.Equal(GinkgoT(), "label", pm.GetLabels()["projected"])
9697
require.Equal(GinkgoT(), "supported", pm.GetLabels()["operatorframework.io/arch.amd64"])
9798
require.Equal(GinkgoT(), "supported", pm.GetLabels()["operatorframework.io/os.linux"])
99+
require.Equal(GinkgoT(), []string{"foo", "bar"}, pm.Status.Channels[0].CurrentCSVDesc.Keywords)
98100

99101
// Get a PackageManifestList and ensure it has the correct items
100102
pmList, err := pmc.OperatorsV1().PackageManifests(testNamespace).List(context.TODO(), metav1.ListOptions{})

0 commit comments

Comments
 (0)