Skip to content

Commit 23588b7

Browse files
committed
cmd,internal,pkg,test: PR fixes
1 parent 9491e72 commit 23588b7

File tree

5 files changed

+40
-50
lines changed

5 files changed

+40
-50
lines changed

cmd/operator-sdk/new/cmd.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -312,14 +312,14 @@ func doHelmScaffold() error {
312312

313313
resource, chart, err := helm.CreateChart(cfg.AbsProjectPath, createOpts)
314314
if err != nil {
315-
return fmt.Errorf("failed to create helm chart: %s", err)
315+
return fmt.Errorf("failed to create helm chart: %w", err)
316316
}
317317

318318
valuesPath := filepath.Join("<project_dir>", helm.HelmChartsDir, chart.Name(), "values.yaml")
319319

320320
rawValues, err := yaml.Marshal(chart.Values)
321321
if err != nil {
322-
return fmt.Errorf("failed to get raw chart values: %s", err)
322+
return fmt.Errorf("failed to get raw chart values: %w", err)
323323
}
324324
crSpec := fmt.Sprintf("# Default values copied from %s\n\n%s", valuesPath, rawValues)
325325

@@ -350,11 +350,11 @@ func doHelmScaffold() error {
350350
},
351351
)
352352
if err != nil {
353-
return fmt.Errorf("new helm scaffold failed: (%v)", err)
353+
return fmt.Errorf("new helm scaffold failed: %w", err)
354354
}
355355

356356
if err := scaffold.UpdateRoleForResource(resource, cfg.AbsProjectPath); err != nil {
357-
return fmt.Errorf("failed to update the RBAC manifest for resource (%v, %v): (%v)", resource.APIVersion, resource.Kind, err)
357+
return fmt.Errorf("failed to update the RBAC manifest for resource (%v, %v): %w", resource.APIVersion, resource.Kind, err)
358358
}
359359
return nil
360360
}

internal/scaffold/helm/chart.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -245,11 +245,6 @@ func createChartFromRemote(destDir string, opts CreateChartOptions) (*chart.Char
245245

246246
chartArchive, _, err := c.DownloadTo(opts.Chart, opts.Version, tmpDir)
247247
if err != nil {
248-
// One of Helm's error messages directs users to run `helm init`, which
249-
// installs tiller in a remote cluster. Since that's unnecessary and
250-
// unhelpful, modify the error message to be relevant for operator-sdk.
251-
252-
// TODO(joelanford): Is there anything to initialize in helm v3
253248
return nil, err
254249
}
255250

internal/scaffold/helm/chart_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,14 +85,14 @@ func TestCreateChart(t *testing.T) {
8585
},
8686
{
8787
name: "from directory",
88-
helmChart: "./testdata/testcharts/" + chartName,
88+
helmChart: filepath.Join(".", "testdata", "testcharts", chartName),
8989
expectResource: mustNewResource(t, helm.DefaultAPIVersion, expectDerivedKind),
9090
expectChartName: chartName,
9191
expectChartVersion: latestVersion,
9292
},
9393
{
9494
name: "from archive",
95-
helmChart: fmt.Sprintf("./testdata/testcharts/%s-%s.tgz", chartName, latestVersion),
95+
helmChart: filepath.Join(".", "testdata", "testcharts", fmt.Sprintf("%s-%s.tgz", chartName, latestVersion)),
9696
expectResource: mustNewResource(t, helm.DefaultAPIVersion, expectDerivedKind),
9797
expectChartName: chartName,
9898
expectChartVersion: latestVersion,
@@ -115,7 +115,7 @@ func TestCreateChart(t *testing.T) {
115115
name: "from repo and name implicit latest with apiVersion",
116116
helmChart: "test/" + chartName,
117117
apiVersion: customAPIVersion,
118-
expectResource: mustNewResource(t, customApiVersion, expectDerivedKind),
118+
expectResource: mustNewResource(t, customAPIVersion, expectDerivedKind),
119119
expectChartName: chartName,
120120
expectChartVersion: latestVersion,
121121
},

pkg/helm/release/manager_factory.go

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ import (
2626
"helm.sh/helm/v3/pkg/chart/loader"
2727
"helm.sh/helm/v3/pkg/kube"
2828
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"
3131
"k8s.io/apimachinery/pkg/api/meta"
3232
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3333
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -36,8 +36,8 @@ import (
3636
"k8s.io/cli-runtime/pkg/resource"
3737
v1 "k8s.io/client-go/kubernetes/typed/core/v1"
3838
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"
4141
crmanager "sigs.k8s.io/controller-runtime/pkg/manager"
4242

4343
"github.com/operator-framework/operator-sdk/pkg/helm/client"
@@ -65,28 +65,28 @@ func NewManagerFactory(mgr crmanager.Manager, chartDir string) ManagerFactory {
6565
func (f managerFactory) NewManager(cr *unstructured.Unstructured) (Manager, error) {
6666
clientv1, err := v1.NewForConfig(f.mgr.GetConfig())
6767
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)
6969
}
7070

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())))
7373

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)
7676
}
7777

7878
rcg, err := client.NewRESTClientGetter(f.mgr)
7979
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)
8181
}
8282
kubeClient := kube.New(nil)
8383
crChart, err := loader.LoadDir(f.chartDir)
8484
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)
8686
}
87-
releaseName, err := getReleaseName(v3StorageBackend, crChart.Name(), cr)
87+
releaseName, err := getReleaseName(storageBackendV3, crChart.Name(), cr)
8888
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)
9090
}
9191
values, ok := cr.Object["spec"].(map[string]interface{})
9292
if !ok {
@@ -99,13 +99,13 @@ func (f managerFactory) NewManager(cr *unstructured.Unstructured) (Manager, erro
9999
}
100100
actionConfig := &action.Configuration{
101101
RESTClientGetter: rcg,
102-
Releases: v3StorageBackend,
102+
Releases: storageBackendV3,
103103
KubeClient: ownerRefClient,
104104
Log: func(_ string, _ ...interface{}) {},
105105
}
106106
return &manager{
107107
actionConfig: actionConfig,
108-
storageBackend: v3StorageBackend,
108+
storageBackend: storageBackendV3,
109109
kubeClient: ownerRefClient,
110110

111111
releaseName: releaseName,
@@ -147,46 +147,40 @@ func (c *ownerRefInjectingClient) Build(reader io.Reader, validate bool) (kube.R
147147
return resourceList, nil
148148
}
149149

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 {
151151
// If a v2 release with the legacy name exists, convert it to v3.
152152
legacyName := getLegacyName(cr)
153-
legacyHistoryV2, legacyV2Exists, err := releaseHistoryV2(v2StorageBackend, legacyName)
153+
legacyHistoryV2, legacyExistsV2, err := releaseHistoryV2(storageBackendV2, legacyName)
154154
if err != nil {
155155
return err
156156
}
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)
162159
}
163160

164161
// If a v2 release with the CR name exists, convert it to v3.
165162
releaseName := cr.GetName()
166-
historyV2, existsV2, err := releaseHistoryV2(v2StorageBackend, releaseName)
163+
historyV2, existsV2, err := releaseHistoryV2(storageBackendV2, releaseName)
167164
if err != nil {
168165
return err
169166
}
170167
if existsV2 {
171-
if err := convertHistoryToV3(historyV2, v2StorageBackend, v3StorageBackend); err != nil {
172-
return err
173-
}
174-
return nil
168+
return convertHistoryToV3(historyV2, storageBackendV2, storageBackendV3)
175169
}
176170
return nil
177171
}
178172

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)
182176
if err != nil {
183-
return fmt.Errorf("generate v3 release: %s", err)
177+
return fmt.Errorf("generate v3 release: %w", err)
184178
}
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)
187181
}
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)
190184
}
191185
}
192186
return nil
@@ -227,7 +221,7 @@ func getLegacyName(cr *unstructured.Unstructured) string {
227221
// admission webhook so that the CR owner receives immediate feedback of the
228222
// collision. As is, the only indication of collision will be in the CR status
229223
// 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) {
231225
// If a release with the legacy name exists as a v3 release,
232226
// return the legacy name.
233227
legacyName := getLegacyName(cr)
@@ -263,7 +257,7 @@ func getReleaseName(storageBackend *v3storage.Storage, crChartName string, cr *u
263257
return releaseName, nil
264258
}
265259

266-
func releaseHistoryV2(storageBackend *v2storage.Storage, releaseName string) ([]*helmreleasev2.Release, bool, error) {
260+
func releaseHistoryV2(storageBackend *storagev2.Storage, releaseName string) ([]*helmreleasev2.Release, bool, error) {
267261
releaseHistory, err := storageBackend.History(releaseName)
268262
if err != nil {
269263
if notFoundErr(err) {
@@ -274,7 +268,7 @@ func releaseHistoryV2(storageBackend *v2storage.Storage, releaseName string) ([]
274268
return releaseHistory, len(releaseHistory) > 0, nil
275269
}
276270

277-
func releaseHistoryV3(storageBackend *v3storage.Storage, releaseName string) ([]*helmreleasev3.Release, bool, error) {
271+
func releaseHistoryV3(storageBackend *storagev3.Storage, releaseName string) ([]*helmreleasev3.Release, bool, error) {
278272
releaseHistory, err := storageBackend.History(releaseName)
279273
if err != nil {
280274
if notFoundErr(err) {

test/test-framework/go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -889,6 +889,7 @@ gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81
889889
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
890890
gotest.tools/gotestsum v0.3.5/go.mod h1:Mnf3e5FUzXbkCfynWBGOwLssY7gTQgCHObK9tMpAriY=
891891
helm.sh/helm/v3 v3.0.0/go.mod h1:sI7B9yfvMgxtTPMWdk1jSKJ2aa59UyP9qhPydqW6mgo=
892+
helm.sh/helm/v3 v3.0.1/go.mod h1:sI7B9yfvMgxtTPMWdk1jSKJ2aa59UyP9qhPydqW6mgo=
892893
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
893894
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
894895
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

0 commit comments

Comments
 (0)