Skip to content

Commit dd8ec05

Browse files
authored
chore(v2): mock helm client factory (#1802)
* chore(v2): mock helm client factory * feedback
1 parent f5bdb81 commit dd8ec05

File tree

21 files changed

+252
-194
lines changed

21 files changed

+252
-194
lines changed

cmd/buildtools/adminconsole.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"strings"
66

77
"github.com/replicatedhq/embedded-cluster/pkg/addons/adminconsole"
8+
"github.com/replicatedhq/embedded-cluster/pkg/helm"
89
"github.com/replicatedhq/embedded-cluster/pkg/release"
910
"github.com/sirupsen/logrus"
1011
"github.com/urfave/cli/v2"
@@ -36,6 +37,12 @@ var updateAdminConsoleAddonCommand = &cli.Command{
3637
Action: func(c *cli.Context) error {
3738
logrus.Infof("updating admin console addon")
3839

40+
hcli, err := NewHelm()
41+
if err != nil {
42+
return fmt.Errorf("failed to create helm client: %w", err)
43+
}
44+
defer hcli.Close()
45+
3946
logrus.Infof("getting admin console latest tag")
4047
latest, err := GetLatestGitHubTag(c.Context, "replicatedhq", "kots-helm")
4148
if err != nil {
@@ -64,7 +71,7 @@ var updateAdminConsoleAddonCommand = &cli.Command{
6471

6572
logrus.Infof("extracting images from chart")
6673
withproto := fmt.Sprintf("oci://%s", upstream)
67-
images, err := GetImagesFromOCIChart(withproto, "adminconsole", latest, values)
74+
images, err := helm.ExtractImagesFromOCIChart(hcli, withproto, "adminconsole", latest, values)
6875
if err != nil {
6976
return fmt.Errorf("failed to get images from admin console chart: %w", err)
7077
}

cmd/buildtools/embeddedclusteroperator.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88

99
"github.com/replicatedhq/embedded-cluster/pkg/addons/embeddedclusteroperator"
10+
"github.com/replicatedhq/embedded-cluster/pkg/helm"
1011
"github.com/replicatedhq/embedded-cluster/pkg/release"
1112
"github.com/sirupsen/logrus"
1213
"github.com/urfave/cli/v2"
@@ -29,6 +30,12 @@ var updateOperatorAddonCommand = &cli.Command{
2930
Action: func(c *cli.Context) error {
3031
logrus.Infof("updating embedded cluster operator addon")
3132

33+
hcli, err := NewHelm()
34+
if err != nil {
35+
return fmt.Errorf("failed to create helm client: %w", err)
36+
}
37+
defer hcli.Close()
38+
3239
nextChartVersion := os.Getenv("INPUT_OPERATOR_CHART_VERSION")
3340
if nextChartVersion != "" {
3441
logrus.Infof("using input override from INPUT_OPERATOR_CHART_VERSION: %s", nextChartVersion)
@@ -68,7 +75,7 @@ var updateOperatorAddonCommand = &cli.Command{
6875
}
6976
}
7077

71-
err := updateOperatorAddonImages(c.Context, chartURL, nextChartVersion)
78+
err = updateOperatorAddonImages(c.Context, hcli, chartURL, nextChartVersion)
7279
if err != nil {
7380
return fmt.Errorf("failed to update embedded cluster operator images: %w", err)
7481
}
@@ -86,9 +93,15 @@ var updateOperatorImagesCommand = &cli.Command{
8693
Action: func(c *cli.Context) error {
8794
logrus.Infof("updating embedded cluster operator images")
8895

96+
hcli, err := NewHelm()
97+
if err != nil {
98+
return fmt.Errorf("failed to create helm client: %w", err)
99+
}
100+
defer hcli.Close()
101+
89102
current := embeddedclusteroperator.Metadata
90103

91-
err := updateOperatorAddonImages(c.Context, current.Location, current.Version)
104+
err = updateOperatorAddonImages(c.Context, hcli, current.Location, current.Version)
92105
if err != nil {
93106
return fmt.Errorf("failed to update embedded cluster operator images: %w", err)
94107
}
@@ -99,7 +112,7 @@ var updateOperatorImagesCommand = &cli.Command{
99112
},
100113
}
101114

102-
func updateOperatorAddonImages(ctx context.Context, chartURL string, chartVersion string) error {
115+
func updateOperatorAddonImages(ctx context.Context, hcli helm.Client, chartURL string, chartVersion string) error {
103116
newmeta := release.AddonMetadata{
104117
Version: chartVersion,
105118
Location: chartURL,
@@ -112,7 +125,7 @@ func updateOperatorAddonImages(ctx context.Context, chartURL string, chartVersio
112125
}
113126

114127
logrus.Infof("extracting images from chart version %s", chartVersion)
115-
images, err := GetImagesFromOCIChart(chartURL, "embeddedclusteroperator", chartVersion, values)
128+
images, err := helm.ExtractImagesFromOCIChart(hcli, chartURL, "embeddedclusteroperator", chartVersion, values)
116129
if err != nil {
117130
return fmt.Errorf("failed to get images from embedded cluster operator chart: %w", err)
118131
}

cmd/buildtools/metadata.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,15 @@ var metadataExtractHelmChartImagesCommand = &cli.Command{
4444
repos := metadata.Configs.Repositories
4545
charts := metadata.Configs.Charts
4646

47-
images, err := extractImagesFromHelmExtensions(repos, charts, metadata.Versions["Kubernetes"])
47+
hcli, err := helm.NewClient(helm.HelmOptions{
48+
K0sVersion: metadata.Versions["Kubernetes"],
49+
})
50+
if err != nil {
51+
return fmt.Errorf("failed to create helm client: %w", err)
52+
}
53+
defer hcli.Close()
54+
55+
images, err := extractImagesFromHelmExtensions(hcli, repos, charts)
4856
if err != nil {
4957
return fmt.Errorf("failed to extract images from helm extensions: %w", err)
5058
}
@@ -72,15 +80,7 @@ func readMetadataFromFile(path string) (*types.ReleaseMetadata, error) {
7280
return &metadata, nil
7381
}
7482

75-
func extractImagesFromHelmExtensions(repos []k0sv1beta1.Repository, charts []embeddedclusterv1beta1.Chart, k8sVersion string) ([]string, error) {
76-
hcli, err := helm.NewClient(helm.HelmOptions{
77-
K0sVersion: k8sVersion,
78-
})
79-
if err != nil {
80-
return nil, fmt.Errorf("create helm client: %w", err)
81-
}
82-
defer hcli.Close()
83-
83+
func extractImagesFromHelmExtensions(hcli helm.Client, repos []k0sv1beta1.Repository, charts []embeddedclusterv1beta1.Chart) ([]string, error) {
8484
for _, entry := range repos {
8585
log.Printf("Adding helm repository %s", entry.Name)
8686
repo := &repo.Entry{

cmd/buildtools/openebs.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88

99
"github.com/replicatedhq/embedded-cluster/pkg/addons/openebs"
10+
"github.com/replicatedhq/embedded-cluster/pkg/helm"
1011
"github.com/replicatedhq/embedded-cluster/pkg/release"
1112
"github.com/sirupsen/logrus"
1213
"github.com/urfave/cli/v2"
@@ -47,12 +48,18 @@ var updateOpenEBSAddonCommand = &cli.Command{
4748
Action: func(c *cli.Context) error {
4849
logrus.Infof("updating openebs addon")
4950

51+
hcli, err := NewHelm()
52+
if err != nil {
53+
return fmt.Errorf("failed to create helm client: %w", err)
54+
}
55+
defer hcli.Close()
56+
5057
nextChartVersion := os.Getenv("INPUT_OPENEBS_CHART_VERSION")
5158
if nextChartVersion != "" {
5259
logrus.Infof("using input override from INPUT_OPENEBS_CHART_VERSION: %s", nextChartVersion)
5360
} else {
5461
logrus.Infof("fetching the latest openebs chart version")
55-
latest, err := LatestChartVersion(openebsRepo, "openebs")
62+
latest, err := LatestChartVersion(hcli, openebsRepo, "openebs")
5663
if err != nil {
5764
return fmt.Errorf("failed to get the latest openebs chart version: %v", err)
5865
}
@@ -68,7 +75,7 @@ var updateOpenEBSAddonCommand = &cli.Command{
6875
}
6976

7077
logrus.Infof("mirroring openebs chart version %s", nextChartVersion)
71-
if err := MirrorChart(openebsRepo, "openebs", nextChartVersion); err != nil {
78+
if err := MirrorChart(hcli, openebsRepo, "openebs", nextChartVersion); err != nil {
7279
return fmt.Errorf("failed to mirror openebs chart: %v", err)
7380
}
7481

@@ -77,7 +84,7 @@ var updateOpenEBSAddonCommand = &cli.Command{
7784

7885
logrus.Infof("updating openebs images")
7986

80-
err := updateOpenEBSAddonImages(c.Context, withproto, nextChartVersion, nextChartVersion)
87+
err = updateOpenEBSAddonImages(c.Context, hcli, withproto, nextChartVersion, nextChartVersion)
8188
if err != nil {
8289
return fmt.Errorf("failed to update openebs images: %w", err)
8390
}
@@ -95,9 +102,15 @@ var updateOpenEBSImagesCommand = &cli.Command{
95102
Action: func(c *cli.Context) error {
96103
logrus.Infof("updating openebs images")
97104

105+
hcli, err := NewHelm()
106+
if err != nil {
107+
return fmt.Errorf("failed to create helm client: %w", err)
108+
}
109+
defer hcli.Close()
110+
98111
current := openebs.Metadata
99112

100-
err := updateOpenEBSAddonImages(c.Context, current.Location, current.Version, current.Version)
113+
err = updateOpenEBSAddonImages(c.Context, hcli, current.Location, current.Version, current.Version)
101114
if err != nil {
102115
return fmt.Errorf("failed to update openebs images: %w", err)
103116
}
@@ -108,7 +121,7 @@ var updateOpenEBSImagesCommand = &cli.Command{
108121
},
109122
}
110123

111-
func updateOpenEBSAddonImages(ctx context.Context, chartURL string, chartVersion string, linuxUtilsVersion string) error {
124+
func updateOpenEBSAddonImages(ctx context.Context, hcli helm.Client, chartURL string, chartVersion string, linuxUtilsVersion string) error {
112125
newmeta := release.AddonMetadata{
113126
Version: chartVersion,
114127
Location: chartURL,
@@ -121,7 +134,7 @@ func updateOpenEBSAddonImages(ctx context.Context, chartURL string, chartVersion
121134
}
122135

123136
logrus.Infof("extracting images from chart version %s", chartVersion)
124-
images, err := GetImagesFromOCIChart(chartURL, "openebs", chartVersion, values)
137+
images, err := helm.ExtractImagesFromOCIChart(hcli, chartURL, "openebs", chartVersion, values)
125138
if err != nil {
126139
return fmt.Errorf("failed to get images from openebs chart: %w", err)
127140
}

cmd/buildtools/registry.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"helm.sh/helm/v3/pkg/repo"
1010

1111
"github.com/replicatedhq/embedded-cluster/pkg/addons/registry"
12+
"github.com/replicatedhq/embedded-cluster/pkg/helm"
1213
"github.com/replicatedhq/embedded-cluster/pkg/release"
1314
)
1415

@@ -33,7 +34,14 @@ var updateRegistryAddonCommand = &cli.Command{
3334
UsageText: environmentUsageText,
3435
Action: func(c *cli.Context) error {
3536
logrus.Infof("updating registry addon")
36-
latest, err := LatestChartVersion(registryRepo, "docker-registry")
37+
38+
hcli, err := NewHelm()
39+
if err != nil {
40+
return fmt.Errorf("failed to create helm client: %w", err)
41+
}
42+
defer hcli.Close()
43+
44+
latest, err := LatestChartVersion(hcli, registryRepo, "docker-registry")
3745
if err != nil {
3846
return fmt.Errorf("unable to get the latest registry version: %v", err)
3947
}
@@ -46,7 +54,7 @@ var updateRegistryAddonCommand = &cli.Command{
4654
}
4755

4856
logrus.Infof("mirroring registry chart version %s", latest)
49-
if err := MirrorChart(registryRepo, "docker-registry", latest); err != nil {
57+
if err := MirrorChart(hcli, registryRepo, "docker-registry", latest); err != nil {
5058
return fmt.Errorf("unable to mirror chart: %w", err)
5159
}
5260

@@ -64,7 +72,7 @@ var updateRegistryAddonCommand = &cli.Command{
6472

6573
logrus.Infof("extracting images from chart")
6674
withproto := fmt.Sprintf("oci://%s", upstream)
67-
images, err := GetImagesFromOCIChart(withproto, "docker-registry", latest, values)
75+
images, err := helm.ExtractImagesFromOCIChart(hcli, withproto, "docker-registry", latest, values)
6876
if err != nil {
6977
return fmt.Errorf("failed to get images from chart: %w", err)
7078
}

cmd/buildtools/seaweedfs.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88

99
"github.com/replicatedhq/embedded-cluster/pkg/addons/seaweedfs"
10+
"github.com/replicatedhq/embedded-cluster/pkg/helm"
1011
"github.com/replicatedhq/embedded-cluster/pkg/release"
1112
"github.com/sirupsen/logrus"
1213
"github.com/urfave/cli/v2"
@@ -35,12 +36,18 @@ var updateSeaweedFSAddonCommand = &cli.Command{
3536
Action: func(c *cli.Context) error {
3637
logrus.Infof("updating seaweedfs addon")
3738

39+
hcli, err := NewHelm()
40+
if err != nil {
41+
return fmt.Errorf("failed to create helm client: %w", err)
42+
}
43+
defer hcli.Close()
44+
3845
nextChartVersion := os.Getenv("INPUT_SEAWEEDFS_CHART_VERSION")
3946
if nextChartVersion != "" {
4047
logrus.Infof("using input override from INPUT_SEAWEEDFS_CHART_VERSION: %s", nextChartVersion)
4148
} else {
4249
logrus.Infof("fetching the latest seaweedfs chart version")
43-
latest, err := LatestChartVersion(seaweedfsRepo, "seaweedfs")
50+
latest, err := LatestChartVersion(hcli, seaweedfsRepo, "seaweedfs")
4451
if err != nil {
4552
return fmt.Errorf("failed to get the latest seaweedfs chart version: %v", err)
4653
}
@@ -56,7 +63,7 @@ var updateSeaweedFSAddonCommand = &cli.Command{
5663
}
5764

5865
logrus.Infof("mirroring seaweedfs chart version %s", nextChartVersion)
59-
if err := MirrorChart(seaweedfsRepo, "seaweedfs", nextChartVersion); err != nil {
66+
if err := MirrorChart(hcli, seaweedfsRepo, "seaweedfs", nextChartVersion); err != nil {
6067
return fmt.Errorf("failed to mirror seaweedfs chart: %v", err)
6168
}
6269

@@ -65,7 +72,7 @@ var updateSeaweedFSAddonCommand = &cli.Command{
6572

6673
logrus.Infof("updating seaweedfs images")
6774

68-
err := updateSeaweedFSAddonImages(c.Context, withproto, nextChartVersion)
75+
err = updateSeaweedFSAddonImages(c.Context, hcli, withproto, nextChartVersion)
6976
if err != nil {
7077
return fmt.Errorf("failed to update seaweedfs images: %w", err)
7178
}
@@ -83,9 +90,15 @@ var updateSeaweedFSImagesCommand = &cli.Command{
8390
Action: func(c *cli.Context) error {
8491
logrus.Infof("updating seaweedfs images")
8592

93+
hcli, err := NewHelm()
94+
if err != nil {
95+
return fmt.Errorf("failed to create helm client: %w", err)
96+
}
97+
defer hcli.Close()
98+
8699
current := seaweedfs.Metadata
87100

88-
err := updateSeaweedFSAddonImages(c.Context, current.Location, current.Version)
101+
err = updateSeaweedFSAddonImages(c.Context, hcli, current.Location, current.Version)
89102
if err != nil {
90103
return fmt.Errorf("failed to update seaweedfs images: %w", err)
91104
}
@@ -96,7 +109,7 @@ var updateSeaweedFSImagesCommand = &cli.Command{
96109
},
97110
}
98111

99-
func updateSeaweedFSAddonImages(ctx context.Context, chartURL string, chartVersion string) error {
112+
func updateSeaweedFSAddonImages(ctx context.Context, hcli helm.Client, chartURL string, chartVersion string) error {
100113
newmeta := release.AddonMetadata{
101114
Version: chartVersion,
102115
Location: chartURL,
@@ -109,7 +122,7 @@ func updateSeaweedFSAddonImages(ctx context.Context, chartURL string, chartVersi
109122
}
110123

111124
logrus.Infof("extracting images from chart version %s", chartVersion)
112-
images, err := GetImagesFromOCIChart(chartURL, "seaweedfs", chartVersion, values)
125+
images, err := helm.ExtractImagesFromOCIChart(hcli, chartURL, "seaweedfs", chartVersion, values)
113126
if err != nil {
114127
return fmt.Errorf("failed to get images from seaweedfs chart: %w", err)
115128
}

0 commit comments

Comments
 (0)