Skip to content

Commit 9dc7a79

Browse files
committed
PackageManifests should include CSV Metadata
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, links, maintainers, and maturity from the CSV to the PackageManifest.
1 parent f8ef76c commit 9dc7a79

File tree

9 files changed

+264
-1
lines changed

9 files changed

+264
-1
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescr
2222
Owned: descriptionsForAPIServices(csv.Spec.APIServiceDefinitions.Owned),
2323
Required: descriptionsForAPIServices(csv.Spec.APIServiceDefinitions.Required),
2424
},
25+
Keywords: csv.Spec.Keywords,
26+
Maturity: csv.Spec.Maturity,
2527
}
2628

2729
icons := make([]Icon, len(csv.Spec.Icon))
@@ -36,6 +38,22 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescr
3638
desc.Icon = icons
3739
}
3840

41+
desc.Links = make([]AppLink, len(csv.Spec.Links))
42+
for i, link := range csv.Spec.Links {
43+
desc.Links[i] = AppLink{
44+
Name: link.Name,
45+
URL: link.URL,
46+
}
47+
}
48+
49+
desc.Maintainers = make([]Maintainer, len(csv.Spec.Maintainers))
50+
for i, maintainer := range csv.Spec.Maintainers {
51+
desc.Maintainers[i] = Maintainer{
52+
Name: maintainer.Name,
53+
Email: maintainer.Email,
54+
}
55+
}
56+
3957
return desc
4058
}
4159

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ type CSVDescription struct {
9696
// Provider is the CSV's provider
9797
Provider AppLink
9898
Annotations map[string]string
99+
Keywords []string
100+
Links []AppLink
101+
Maintainers []Maintainer
102+
Maturity string
99103

100104
// LongDescription is the CSV's description
101105
LongDescription string
@@ -113,6 +117,12 @@ type AppLink struct {
113117
URL string
114118
}
115119

120+
// Maintainer defines a project maintainer
121+
type Maintainer struct {
122+
Name string `json:"name,omitempty"`
123+
Email string `json:"email,omitempty"`
124+
}
125+
116126
// Icon defines a base64 encoded icon and media type
117127
type Icon struct {
118128
Base64Data string

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescr
1616
InstallModes: csv.Spec.InstallModes,
1717
CustomResourceDefinitions: csv.Spec.CustomResourceDefinitions,
1818
APIServiceDefinitions: csv.Spec.APIServiceDefinitions,
19+
Keywords: csv.Spec.Keywords,
20+
Maturity: csv.Spec.Maturity,
1921
}
2022

2123
icons := make([]Icon, len(csv.Spec.Icon))
@@ -30,5 +32,21 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescr
3032
desc.Icon = icons
3133
}
3234

35+
desc.Links = make([]AppLink, len(csv.Spec.Links))
36+
for i, link := range csv.Spec.Links {
37+
desc.Links[i] = AppLink{
38+
Name: link.Name,
39+
URL: link.URL,
40+
}
41+
}
42+
43+
desc.Maintainers = make([]Maintainer, len(csv.Spec.Maintainers))
44+
for i, maintainer := range csv.Spec.Maintainers {
45+
desc.Maintainers[i] = Maintainer{
46+
Name: maintainer.Name,
47+
Email: maintainer.Email,
48+
}
49+
}
50+
3351
return desc
3452
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,13 @@ type CSVDescription struct {
9696
// Provider is the CSV's provider
9797
Provider AppLink `json:"provider,omitempty"`
9898
Annotations map[string]string `json:"annotations,omitempty"`
99+
// +listType=set
100+
Keywords []string `json:"keywords,omitempty"`
101+
// +listType=set
102+
Links []AppLink `json:"links,omitempty"`
103+
// +listType=set
104+
Maintainers []Maintainer `json:"maintainers,omitempty"`
105+
Maturity string `json:"maturity,omitempty"`
99106

100107
// LongDescription is the CSV's description
101108
LongDescription string `json:"description,omitempty"`
@@ -113,6 +120,12 @@ type AppLink struct {
113120
URL string `json:"url,omitempty"`
114121
}
115122

123+
// Maintainer defines a project maintainer
124+
type Maintainer struct {
125+
Name string `json:"name,omitempty"`
126+
Email string `json:"email,omitempty"`
127+
}
128+
116129
// Icon defines a base64 encoded icon and media type
117130
type Icon struct {
118131
Base64Data string `json:"base64data,omitempty"`

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

Lines changed: 40 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: 31 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: 31 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: 85 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)