Skip to content

Commit f186bb4

Browse files
committed
Update the code and test case
Signed-off-by: Vu Dinh <[email protected]>
1 parent 24bcac4 commit f186bb4

File tree

5 files changed

+127
-131
lines changed

5 files changed

+127
-131
lines changed

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

Lines changed: 16 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55

66
operatorsv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
7+
"github.com/operator-framework/operator-registry/pkg/registry"
78
)
89

910
const (
@@ -12,7 +13,7 @@ const (
1213
)
1314

1415
// CreateCSVDescription creates a CSVDescription from a given CSV
15-
func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescription {
16+
func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion, csvJSON string) CSVDescription {
1617
desc := CSVDescription{
1718
DisplayName: csv.Spec.DisplayName,
1819
Version: csv.Spec.Version,
@@ -33,7 +34,7 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescr
3334
},
3435
NativeAPIs: csv.Spec.NativeAPIs,
3536
MinKubeVersion: csv.Spec.MinKubeVersion,
36-
RelatedImages: GetImages(csv),
37+
RelatedImages: GetImages(csvJSON),
3738
}
3839

3940
icons := make([]Icon, len(csv.Spec.Icon))
@@ -82,65 +83,27 @@ func descriptionsForAPIServices(apis []operatorsv1alpha1.APIServiceDescription)
8283
return descriptions
8384
}
8485

85-
// GetOperatorImages returns a list of images listed in Deployments
86-
func GetOperatorImages(csv *operatorsv1alpha1.ClusterServiceVersion) map[string]struct{} {
87-
imageSet := make(map[string]struct{})
88-
89-
for _, deployment := range csv.Spec.InstallStrategy.StrategySpec.DeploymentSpecs {
90-
for _, container := range deployment.Spec.Template.Spec.Containers {
91-
imageSet[container.Image] = struct{}{}
92-
}
93-
for _, initcont := range deployment.Spec.Template.Spec.InitContainers {
94-
imageSet[initcont.Image] = struct{}{}
95-
}
96-
}
97-
98-
return imageSet
99-
}
100-
101-
// GetRelatedImages returns a list of related images listed in CSV spec
102-
func GetRelatedImages(csv *operatorsv1alpha1.ClusterServiceVersion) map[string]struct{} {
103-
var objMap map[string]*json.RawMessage
104-
imageSet := make(map[string]struct{})
86+
// GetImages returns a list of images listed in CSV (spec and deployments)
87+
func GetImages(csvJSON string) []string {
88+
var images []string
10589

106-
csvJSON, err := json.Marshal(csv)
90+
csv := &registry.ClusterServiceVersion{}
91+
err := json.Unmarshal([]byte(csvJSON), &csv)
10792
if err != nil {
108-
return imageSet
93+
return images
10994
}
11095

111-
if err := json.Unmarshal(csvJSON, &objMap); err != nil {
112-
return imageSet
113-
}
114-
115-
rawValue, ok := objMap[relatedImages]
116-
if !ok || rawValue == nil {
117-
return imageSet
118-
}
119-
120-
type relatedImage struct {
121-
Name string `json:"name"`
122-
Ref string `json:"image"`
123-
}
124-
125-
var relatedImages []relatedImage
126-
if err = json.Unmarshal(*rawValue, &relatedImages); err != nil {
127-
return imageSet
96+
imageSet, err := csv.GetOperatorImages()
97+
if err != nil {
98+
return images
12899
}
129100

130-
for _, img := range relatedImages {
131-
imageSet[img.Ref] = struct{}{}
101+
relatedImgSet, err := csv.GetRelatedImages()
102+
if err != nil {
103+
return images
132104
}
133105

134-
return imageSet
135-
}
136-
137-
// GetImages returns a list of images listed in CSV (spec and deployments)
138-
func GetImages(csv *operatorsv1alpha1.ClusterServiceVersion) []string {
139-
var images []string
140-
141-
imageSet := GetOperatorImages(csv)
142-
143-
for k := range GetRelatedImages(csv) {
106+
for k := range relatedImgSet {
144107
imageSet[k] = struct{}{}
145108
}
146109

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

Lines changed: 16 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55

66
operatorsv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/apis/operators/v1alpha1"
7+
"github.com/operator-framework/operator-registry/pkg/registry"
78
)
89

910
const (
@@ -12,7 +13,7 @@ const (
1213
)
1314

1415
// CreateCSVDescription creates a CSVDescription from a given CSV
15-
func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescription {
16+
func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion, csvJSON string) CSVDescription {
1617
desc := CSVDescription{
1718
DisplayName: csv.Spec.DisplayName,
1819
Version: csv.Spec.Version,
@@ -27,7 +28,7 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescr
2728
APIServiceDefinitions: csv.Spec.APIServiceDefinitions,
2829
NativeAPIs: csv.Spec.NativeAPIs,
2930
MinKubeVersion: csv.Spec.MinKubeVersion,
30-
RelatedImages: GetImages(csv),
31+
RelatedImages: GetImages(csvJSON),
3132
}
3233

3334
icons := make([]Icon, len(csv.Spec.Icon))
@@ -45,65 +46,27 @@ func CreateCSVDescription(csv *operatorsv1alpha1.ClusterServiceVersion) CSVDescr
4546
return desc
4647
}
4748

48-
// GetOperatorImages returns a list of images listed in Deployments
49-
func GetOperatorImages(csv *operatorsv1alpha1.ClusterServiceVersion) map[string]struct{} {
50-
imageSet := make(map[string]struct{})
51-
52-
for _, deployment := range csv.Spec.InstallStrategy.StrategySpec.DeploymentSpecs {
53-
for _, container := range deployment.Spec.Template.Spec.Containers {
54-
imageSet[container.Image] = struct{}{}
55-
}
56-
for _, initcont := range deployment.Spec.Template.Spec.InitContainers {
57-
imageSet[initcont.Image] = struct{}{}
58-
}
59-
}
60-
61-
return imageSet
62-
}
63-
64-
// GetRelatedImages returns a list of related images listed in CSV spec
65-
func GetRelatedImages(csv *operatorsv1alpha1.ClusterServiceVersion) map[string]struct{} {
66-
var objMap map[string]*json.RawMessage
67-
imageSet := make(map[string]struct{})
49+
// GetImages returns a list of images listed in CSV (spec and deployments)
50+
func GetImages(csvJSON string) []string {
51+
var images []string
6852

69-
csvJSON, err := json.Marshal(csv)
53+
csv := &registry.ClusterServiceVersion{}
54+
err := json.Unmarshal([]byte(csvJSON), &csv)
7055
if err != nil {
71-
return imageSet
56+
return images
7257
}
7358

74-
if err := json.Unmarshal(csvJSON, &objMap); err != nil {
75-
return imageSet
76-
}
77-
78-
rawValue, ok := objMap[relatedImages]
79-
if !ok || rawValue == nil {
80-
return imageSet
81-
}
82-
83-
type relatedImage struct {
84-
Name string `json:"name"`
85-
Ref string `json:"image"`
86-
}
87-
88-
var relatedImages []relatedImage
89-
if err = json.Unmarshal(*rawValue, &relatedImages); err != nil {
90-
return imageSet
59+
imageSet, err := csv.GetOperatorImages()
60+
if err != nil {
61+
return images
9162
}
9263

93-
for _, img := range relatedImages {
94-
imageSet[img.Ref] = struct{}{}
64+
relatedImgSet, err := csv.GetRelatedImages()
65+
if err != nil {
66+
return images
9567
}
9668

97-
return imageSet
98-
}
99-
100-
// GetImages returns a list of images listed in CSV (spec and deployments)
101-
func GetImages(csv *operatorsv1alpha1.ClusterServiceVersion) []string {
102-
var images []string
103-
104-
imageSet := GetOperatorImages(csv)
105-
106-
for k := range GetRelatedImages(csv) {
69+
for k := range relatedImgSet {
10770
imageSet[k] = struct{}{}
10871
}
10972

pkg/package-server/provider/registry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ func newPackageManifest(ctx context.Context, logger *logrus.Entry, pkg *api.Pack
495495
manifest.Status.Channels = append(manifest.Status.Channels, operators.PackageChannel{
496496
Name: pkgChannel.GetName(),
497497
CurrentCSV: csv.GetName(),
498-
CurrentCSVDesc: operators.CreateCSVDescription(&csv),
498+
CurrentCSVDesc: operators.CreateCSVDescription(&csv, bundle.GetCsvJson()),
499499
})
500500

501501
if manifest.Status.DefaultChannel != "" && pkgChannel.GetName() == manifest.Status.DefaultChannel || !providerSet {

0 commit comments

Comments
 (0)