@@ -26,8 +26,8 @@ import (
26
26
"helm.sh/helm/v3/pkg/chart/loader"
27
27
"helm.sh/helm/v3/pkg/kube"
28
28
helmreleasev3 "helm.sh/helm/v3/pkg/release"
29
- v3storage "helm.sh/helm/v3/pkg/storage"
30
- v3driver "helm.sh/helm/v3/pkg/storage/driver"
29
+ storagev3 "helm.sh/helm/v3/pkg/storage"
30
+ driverv3 "helm.sh/helm/v3/pkg/storage/driver"
31
31
"k8s.io/apimachinery/pkg/api/meta"
32
32
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33
33
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -36,8 +36,8 @@ import (
36
36
"k8s.io/cli-runtime/pkg/resource"
37
37
v1 "k8s.io/client-go/kubernetes/typed/core/v1"
38
38
helmreleasev2 "k8s.io/helm/pkg/proto/hapi/release"
39
- v2storage "k8s.io/helm/pkg/storage"
40
- v2driver "k8s.io/helm/pkg/storage/driver"
39
+ storagev2 "k8s.io/helm/pkg/storage"
40
+ driverv2 "k8s.io/helm/pkg/storage/driver"
41
41
crmanager "sigs.k8s.io/controller-runtime/pkg/manager"
42
42
43
43
"github.com/operator-framework/operator-sdk/pkg/helm/client"
@@ -65,28 +65,28 @@ func NewManagerFactory(mgr crmanager.Manager, chartDir string) ManagerFactory {
65
65
func (f managerFactory ) NewManager (cr * unstructured.Unstructured ) (Manager , error ) {
66
66
clientv1 , err := v1 .NewForConfig (f .mgr .GetConfig ())
67
67
if err != nil {
68
- return nil , fmt .Errorf ("failed to get core/v1 client: %s " , err )
68
+ return nil , fmt .Errorf ("failed to get core/v1 client: %w " , err )
69
69
}
70
70
71
- v2StorageBackend := v2storage .Init (v2driver .NewSecrets (clientv1 .Secrets (cr .GetNamespace ())))
72
- v3StorageBackend := v3storage .Init (v3driver .NewSecrets (clientv1 .Secrets (cr .GetNamespace ())))
71
+ storageBackendV2 := storagev2 .Init (driverv2 .NewSecrets (clientv1 .Secrets (cr .GetNamespace ())))
72
+ storageBackendV3 := storagev3 .Init (driverv3 .NewSecrets (clientv1 .Secrets (cr .GetNamespace ())))
73
73
74
- if err := convertV2ToV3 (v2StorageBackend , v3StorageBackend , cr ); err != nil {
75
- return nil , fmt .Errorf ("failed to convert releases from v2 to v3: %s " , err )
74
+ if err := convertV2ToV3 (storageBackendV2 , storageBackendV3 , cr ); err != nil {
75
+ return nil , fmt .Errorf ("failed to convert releases from v2 to v3: %w " , err )
76
76
}
77
77
78
78
rcg , err := client .NewRESTClientGetter (f .mgr )
79
79
if err != nil {
80
- return nil , fmt .Errorf ("failed to get REST client getter from manager: %s " , err )
80
+ return nil , fmt .Errorf ("failed to get REST client getter from manager: %w " , err )
81
81
}
82
82
kubeClient := kube .New (nil )
83
83
crChart , err := loader .LoadDir (f .chartDir )
84
84
if err != nil {
85
- return nil , fmt .Errorf ("failed to load chart dir: %s " , err )
85
+ return nil , fmt .Errorf ("failed to load chart dir: %w " , err )
86
86
}
87
- releaseName , err := getReleaseName (v3StorageBackend , crChart .Name (), cr )
87
+ releaseName , err := getReleaseName (storageBackendV3 , crChart .Name (), cr )
88
88
if err != nil {
89
- return nil , fmt .Errorf ("failed to get helm release name: %s " , err )
89
+ return nil , fmt .Errorf ("failed to get helm release name: %w " , err )
90
90
}
91
91
values , ok := cr .Object ["spec" ].(map [string ]interface {})
92
92
if ! ok {
@@ -99,13 +99,13 @@ func (f managerFactory) NewManager(cr *unstructured.Unstructured) (Manager, erro
99
99
}
100
100
actionConfig := & action.Configuration {
101
101
RESTClientGetter : rcg ,
102
- Releases : v3StorageBackend ,
102
+ Releases : storageBackendV3 ,
103
103
KubeClient : ownerRefClient ,
104
104
Log : func (_ string , _ ... interface {}) {},
105
105
}
106
106
return & manager {
107
107
actionConfig : actionConfig ,
108
- storageBackend : v3StorageBackend ,
108
+ storageBackend : storageBackendV3 ,
109
109
kubeClient : ownerRefClient ,
110
110
111
111
releaseName : releaseName ,
@@ -147,46 +147,40 @@ func (c *ownerRefInjectingClient) Build(reader io.Reader, validate bool) (kube.R
147
147
return resourceList , nil
148
148
}
149
149
150
- func convertV2ToV3 (v2StorageBackend * v2storage .Storage , v3StorageBackend * v3storage .Storage , cr * unstructured.Unstructured ) error {
150
+ func convertV2ToV3 (storageBackendV2 * storagev2 .Storage , storageBackendV3 * storagev3 .Storage , cr * unstructured.Unstructured ) error {
151
151
// If a v2 release with the legacy name exists, convert it to v3.
152
152
legacyName := getLegacyName (cr )
153
- legacyHistoryV2 , legacyV2Exists , err := releaseHistoryV2 (v2StorageBackend , legacyName )
153
+ legacyHistoryV2 , legacyExistsV2 , err := releaseHistoryV2 (storageBackendV2 , legacyName )
154
154
if err != nil {
155
155
return err
156
156
}
157
- if legacyV2Exists {
158
- if err := convertHistoryToV3 (legacyHistoryV2 , v2StorageBackend , v3StorageBackend ); err != nil {
159
- return err
160
- }
161
- return nil
157
+ if legacyExistsV2 {
158
+ return convertHistoryToV3 (legacyHistoryV2 , storageBackendV2 , storageBackendV3 )
162
159
}
163
160
164
161
// If a v2 release with the CR name exists, convert it to v3.
165
162
releaseName := cr .GetName ()
166
- historyV2 , existsV2 , err := releaseHistoryV2 (v2StorageBackend , releaseName )
163
+ historyV2 , existsV2 , err := releaseHistoryV2 (storageBackendV2 , releaseName )
167
164
if err != nil {
168
165
return err
169
166
}
170
167
if existsV2 {
171
- if err := convertHistoryToV3 (historyV2 , v2StorageBackend , v3StorageBackend ); err != nil {
172
- return err
173
- }
174
- return nil
168
+ return convertHistoryToV3 (historyV2 , storageBackendV2 , storageBackendV3 )
175
169
}
176
170
return nil
177
171
}
178
172
179
- func convertHistoryToV3 (history []* helmreleasev2.Release , v2StorageBackend * v2storage .Storage , v3StorageBackend * v3storage .Storage ) error {
180
- for _ , v2Rel := range history {
181
- v3Rel , err := helm2to3 .CreateRelease (v2Rel )
173
+ func convertHistoryToV3 (history []* helmreleasev2.Release , storageBackendV2 * storagev2 .Storage , storageBackendV3 * storagev3 .Storage ) error {
174
+ for _ , relV2 := range history {
175
+ relV3 , err := helm2to3 .CreateRelease (relV2 )
182
176
if err != nil {
183
- return fmt .Errorf ("generate v3 release: %s " , err )
177
+ return fmt .Errorf ("generate v3 release: %w " , err )
184
178
}
185
- if err := v3StorageBackend .Create (v3Rel ); err != nil {
186
- return fmt .Errorf ("create v3 release: %s " , err )
179
+ if err := storageBackendV3 .Create (relV3 ); err != nil {
180
+ return fmt .Errorf ("create v3 release: %w " , err )
187
181
}
188
- if _ , err := v2StorageBackend .Delete (v2Rel .GetName (), v2Rel .GetVersion ()); err != nil {
189
- return fmt .Errorf ("delete v2 release: %s " , err )
182
+ if _ , err := storageBackendV2 .Delete (relV2 .GetName (), relV2 .GetVersion ()); err != nil {
183
+ return fmt .Errorf ("delete v2 release: %w " , err )
190
184
}
191
185
}
192
186
return nil
@@ -227,7 +221,7 @@ func getLegacyName(cr *unstructured.Unstructured) string {
227
221
// admission webhook so that the CR owner receives immediate feedback of the
228
222
// collision. As is, the only indication of collision will be in the CR status
229
223
// and operator logs.
230
- func getReleaseName (storageBackend * v3storage .Storage , crChartName string , cr * unstructured.Unstructured ) (string , error ) {
224
+ func getReleaseName (storageBackend * storagev3 .Storage , crChartName string , cr * unstructured.Unstructured ) (string , error ) {
231
225
// If a release with the legacy name exists as a v3 release,
232
226
// return the legacy name.
233
227
legacyName := getLegacyName (cr )
@@ -263,7 +257,7 @@ func getReleaseName(storageBackend *v3storage.Storage, crChartName string, cr *u
263
257
return releaseName , nil
264
258
}
265
259
266
- func releaseHistoryV2 (storageBackend * v2storage .Storage , releaseName string ) ([]* helmreleasev2.Release , bool , error ) {
260
+ func releaseHistoryV2 (storageBackend * storagev2 .Storage , releaseName string ) ([]* helmreleasev2.Release , bool , error ) {
267
261
releaseHistory , err := storageBackend .History (releaseName )
268
262
if err != nil {
269
263
if notFoundErr (err ) {
@@ -274,7 +268,7 @@ func releaseHistoryV2(storageBackend *v2storage.Storage, releaseName string) ([]
274
268
return releaseHistory , len (releaseHistory ) > 0 , nil
275
269
}
276
270
277
- func releaseHistoryV3 (storageBackend * v3storage .Storage , releaseName string ) ([]* helmreleasev3.Release , bool , error ) {
271
+ func releaseHistoryV3 (storageBackend * storagev3 .Storage , releaseName string ) ([]* helmreleasev3.Release , bool , error ) {
278
272
releaseHistory , err := storageBackend .History (releaseName )
279
273
if err != nil {
280
274
if notFoundErr (err ) {
0 commit comments