From 796e1b182fde0580a362b8d51ab9548f39c01bda Mon Sep 17 00:00:00 2001 From: Salah Al Saleh Date: Wed, 14 Aug 2024 21:10:39 +0000 Subject: [PATCH] updates --- cmd/buildtools/adminconsole.go | 11 ++++++++--- cmd/buildtools/embeddedclusteroperator.go | 6 +++++- cmd/buildtools/openebs.go | 6 +++++- cmd/buildtools/registry.go | 11 ++++++++--- cmd/buildtools/seaweedfs.go | 6 +++++- cmd/buildtools/velero.go | 17 +++++++++++++---- pkg/addons/adminconsole/adminconsole.go | 4 ++-- .../embeddedclusteroperator.go | 4 ++-- pkg/addons/openebs/openebs.go | 4 ++-- pkg/addons/registry/registry.go | 6 +++--- pkg/addons/seaweedfs/seaweedfs.go | 4 ++-- pkg/addons/velero/velero.go | 4 ++-- pkg/release/addon.go | 8 ++++---- pkg/release/template.go | 12 ++++++------ 14 files changed, 67 insertions(+), 36 deletions(-) diff --git a/cmd/buildtools/adminconsole.go b/cmd/buildtools/adminconsole.go index 8075ea890..661ea27cc 100644 --- a/cmd/buildtools/adminconsole.go +++ b/cmd/buildtools/adminconsole.go @@ -51,9 +51,11 @@ var updateAdminConsoleAddonCommand = &cli.Command{ } upstream := "registry.replicated.com/library/admin-console" + chartURL := fmt.Sprintf("oci://{{ .ReplicatedProxyDomain }}/anonymous/%s", upstream) + newmeta := release.AddonMetadata{ Version: latest, - Location: fmt.Sprintf("oci://{{ .ReplicatedProxyDomain }}/anonymous/%s", upstream), + Location: chartURL, Images: make(map[string]release.AddonImage), } @@ -63,8 +65,11 @@ var updateAdminConsoleAddonCommand = &cli.Command{ } logrus.Infof("extracting images from chart") - withproto := fmt.Sprintf("oci://%s", upstream) - images, err := GetImagesFromOCIChart(withproto, "adminconsole", latest, values) + templatedChartURL, err := release.Template(chartURL, nil) + if err != nil { + return fmt.Errorf("failed to template chart url: %w", err) + } + images, err := GetImagesFromOCIChart(templatedChartURL, "adminconsole", latest, values) if err != nil { return fmt.Errorf("failed to get images from admin console chart: %w", err) } diff --git a/cmd/buildtools/embeddedclusteroperator.go b/cmd/buildtools/embeddedclusteroperator.go index 6f02c1e4c..fbd0789f3 100644 --- a/cmd/buildtools/embeddedclusteroperator.go +++ b/cmd/buildtools/embeddedclusteroperator.go @@ -98,7 +98,11 @@ func updateOperatorAddonImages(ctx context.Context, chartURL string, chartVersio } logrus.Infof("extracting images from chart version %s", chartVersion) - images, err := GetImagesFromOCIChart(chartURL, "embeddedclusteroperator", chartVersion, values) + templatedChartURL, err := release.Template(chartURL, nil) + if err != nil { + return fmt.Errorf("failed to template chart url: %w", err) + } + images, err := GetImagesFromOCIChart(templatedChartURL, "embeddedclusteroperator", chartVersion, values) if err != nil { return fmt.Errorf("failed to get images from embedded cluster operator chart: %w", err) } diff --git a/cmd/buildtools/openebs.go b/cmd/buildtools/openebs.go index ee8e3828f..1064b78b9 100644 --- a/cmd/buildtools/openebs.go +++ b/cmd/buildtools/openebs.go @@ -120,7 +120,11 @@ func updateOpenEBSAddonImages(ctx context.Context, chartURL string, chartVersion } logrus.Infof("extracting images from chart version %s", chartVersion) - images, err := GetImagesFromOCIChart(chartURL, "openebs", chartVersion, values) + templatedChartURL, err := release.Template(chartURL, nil) + if err != nil { + return fmt.Errorf("failed to template chart url: %w", err) + } + images, err := GetImagesFromOCIChart(templatedChartURL, "openebs", chartVersion, values) if err != nil { return fmt.Errorf("failed to get images from openebs chart: %w", err) } diff --git a/cmd/buildtools/registry.go b/cmd/buildtools/registry.go index 7a97795ce..a512541a9 100644 --- a/cmd/buildtools/registry.go +++ b/cmd/buildtools/registry.go @@ -51,9 +51,11 @@ var updateRegistryAddonCommand = &cli.Command{ } upstream := fmt.Sprintf("%s/docker-registry", os.Getenv("CHARTS_DESTINATION")) + chartURL := fmt.Sprintf("oci://{{ .ReplicatedProxyDomain }}/anonymous/%s", upstream) + newmeta := release.AddonMetadata{ Version: latest, - Location: fmt.Sprintf("oci://{{ .ReplicatedProxyDomain }}/anonymous/%s", upstream), + Location: chartURL, Images: make(map[string]release.AddonImage), } @@ -63,8 +65,11 @@ var updateRegistryAddonCommand = &cli.Command{ } logrus.Infof("extracting images from chart") - withproto := fmt.Sprintf("oci://%s", upstream) - images, err := GetImagesFromOCIChart(withproto, "docker-registry", latest, values) + templatedChartURL, err := release.Template(chartURL, nil) + if err != nil { + return fmt.Errorf("failed to template chart url: %w", err) + } + images, err := GetImagesFromOCIChart(templatedChartURL, "docker-registry", latest, values) if err != nil { return fmt.Errorf("failed to get images from chart: %w", err) } diff --git a/cmd/buildtools/seaweedfs.go b/cmd/buildtools/seaweedfs.go index dd60fde64..ff89ec558 100644 --- a/cmd/buildtools/seaweedfs.go +++ b/cmd/buildtools/seaweedfs.go @@ -108,7 +108,11 @@ func updateSeaweedFSAddonImages(ctx context.Context, chartURL string, chartVersi } logrus.Infof("extracting images from chart version %s", chartVersion) - images, err := GetImagesFromOCIChart(chartURL, "seaweedfs", chartVersion, values) + templatedChartURL, err := release.Template(chartURL, nil) + if err != nil { + return fmt.Errorf("failed to template chart url: %w", err) + } + images, err := GetImagesFromOCIChart(templatedChartURL, "seaweedfs", chartVersion, values) if err != nil { return fmt.Errorf("failed to get images from seaweedfs chart: %w", err) } diff --git a/cmd/buildtools/velero.go b/cmd/buildtools/velero.go index 76428636b..f9670666a 100644 --- a/cmd/buildtools/velero.go +++ b/cmd/buildtools/velero.go @@ -90,7 +90,7 @@ var updateVeleroAddonCommand = &cli.Command{ upstream := fmt.Sprintf("%s/velero", os.Getenv("CHARTS_DESTINATION")) withproto := fmt.Sprintf("oci://{{ .ReplicatedProxyDomain }}/anonymous/%s", upstream) - veleroVersion, err := findVeleroVersionFromChart(c.Context, withproto, nextChartVersion) + veleroVersion, err := findVeleroVersionFromChart(withproto, nextChartVersion) if err != nil { return fmt.Errorf("failed to find velero version from chart: %w", err) } @@ -150,12 +150,17 @@ var updateVeleroImagesCommand = &cli.Command{ }, } -func findVeleroVersionFromChart(ctx context.Context, chartURL string, chartVersion string) (string, error) { +func findVeleroVersionFromChart(chartURL string, chartVersion string) (string, error) { values, err := release.GetValuesWithOriginalImages("velero") if err != nil { return "", fmt.Errorf("failed to get velero values: %v", err) } - images, err := GetImagesFromOCIChart(chartURL, "velero", chartVersion, values) + + templatedChartURL, err := release.Template(chartURL, nil) + if err != nil { + return "", fmt.Errorf("failed to template chart url: %w", err) + } + images, err := GetImagesFromOCIChart(templatedChartURL, "velero", chartVersion, values) if err != nil { return "", fmt.Errorf("failed to get images from velero chart: %w", err) } @@ -200,7 +205,11 @@ func updateVeleroAddonImages(ctx context.Context, chartURL string, chartVersion } logrus.Infof("extracting images from chart version %s", chartVersion) - images, err := GetImagesFromOCIChart(chartURL, "velero", chartVersion, values) + templatedChartURL, err := release.Template(chartURL, nil) + if err != nil { + return fmt.Errorf("failed to template chart url: %w", err) + } + images, err := GetImagesFromOCIChart(templatedChartURL, "velero", chartVersion, values) if err != nil { return fmt.Errorf("failed to get images from velero chart: %w", err) } diff --git a/pkg/addons/adminconsole/adminconsole.go b/pkg/addons/adminconsole/adminconsole.go index 7b270324b..78a162f26 100644 --- a/pkg/addons/adminconsole/adminconsole.go +++ b/pkg/addons/adminconsole/adminconsole.go @@ -39,11 +39,11 @@ const ( var ( //go:embed static/values.yaml - rawvalues []byte + rawvalues string // helmValues is the unmarshal version of rawvalues. helmValues map[string]interface{} //go:embed static/metadata.yaml - rawmetadata []byte + rawmetadata string // Metadata is the unmarshal version of rawmetadata. Metadata release.AddonMetadata // protectedFields are helm values that are not overwritten when upgrading the addon. diff --git a/pkg/addons/embeddedclusteroperator/embeddedclusteroperator.go b/pkg/addons/embeddedclusteroperator/embeddedclusteroperator.go index 1faadc695..c17bf0d2a 100644 --- a/pkg/addons/embeddedclusteroperator/embeddedclusteroperator.go +++ b/pkg/addons/embeddedclusteroperator/embeddedclusteroperator.go @@ -33,11 +33,11 @@ const releaseName = "embedded-cluster-operator" var ( //go:embed static/values.yaml - rawvalues []byte + rawvalues string // helmValues is the unmarshal version of rawvalues. helmValues map[string]interface{} //go:embed static/metadata.yaml - rawmetadata []byte + rawmetadata string // Metadata is the unmarshal version of rawmetadata. Metadata release.AddonMetadata ) diff --git a/pkg/addons/openebs/openebs.go b/pkg/addons/openebs/openebs.go index 8cdb61d8f..57d313ef4 100644 --- a/pkg/addons/openebs/openebs.go +++ b/pkg/addons/openebs/openebs.go @@ -25,11 +25,11 @@ const ( var ( //go:embed static/values.yaml - rawvalues []byte + rawvalues string // helmValues is the unmarshal version of rawvalues. helmValues map[string]interface{} //go:embed static/metadata.yaml - rawmetadata []byte + rawmetadata string // Metadata is the unmarshal version of rawmetadata. Metadata release.AddonMetadata ) diff --git a/pkg/addons/registry/registry.go b/pkg/addons/registry/registry.go index 439a535c6..8be0de102 100644 --- a/pkg/addons/registry/registry.go +++ b/pkg/addons/registry/registry.go @@ -35,15 +35,15 @@ const ( var ( //go:embed static/values.yaml - rawvalues []byte + rawvalues string // helmValues is the unmarshal version of rawvalues. helmValues map[string]interface{} //go:embed static/values-ha.yaml - rawvaluesha []byte + rawvaluesha string // helmValuesHA is the unmarshal version of rawvaluesha. helmValuesHA map[string]interface{} //go:embed static/metadata.yaml - rawmetadata []byte + rawmetadata string // Metadata is the unmarshal version of rawmetadata. Metadata release.AddonMetadata registryPassword = helpers.RandString(20) diff --git a/pkg/addons/seaweedfs/seaweedfs.go b/pkg/addons/seaweedfs/seaweedfs.go index d1b21bf2e..d4e025e38 100644 --- a/pkg/addons/seaweedfs/seaweedfs.go +++ b/pkg/addons/seaweedfs/seaweedfs.go @@ -23,11 +23,11 @@ const releaseName = "seaweedfs" var ( //go:embed static/values.yaml - rawvalues []byte + rawvalues string // helmValues is the unmarshal version of rawvalues. helmValues map[string]interface{} //go:embed static/metadata.yaml - rawmetadata []byte + rawmetadata string // Metadata is the unmarshal version of rawmetadata. Metadata release.AddonMetadata ) diff --git a/pkg/addons/velero/velero.go b/pkg/addons/velero/velero.go index 36fa4b611..18cd1a642 100644 --- a/pkg/addons/velero/velero.go +++ b/pkg/addons/velero/velero.go @@ -25,11 +25,11 @@ const ( var ( //go:embed static/values.yaml - rawvalues []byte + rawvalues string // helmValues is the unmarshal version of rawvalues. helmValues map[string]interface{} //go:embed static/metadata.yaml - rawmetadata []byte + rawmetadata string // Metadata is the unmarshal version of rawmetadata. Metadata release.AddonMetadata ) diff --git a/pkg/release/addon.go b/pkg/release/addon.go index 58f0e20d6..801d23c7b 100644 --- a/pkg/release/addon.go +++ b/pkg/release/addon.go @@ -125,25 +125,25 @@ func (a *AddonMetadata) RenderValues(addon, tplfile, dest string) error { return nil } -func ParseAddonMetadata(rawmetadata []byte, license *kotsv1beta1.License) (*AddonMetadata, error) { +func ParseAddonMetadata(rawmetadata string, license *kotsv1beta1.License) (*AddonMetadata, error) { templated, err := Template(rawmetadata, license) if err != nil { return nil, fmt.Errorf("template metadata: %w", err) } var parsed AddonMetadata - if err := yaml.Unmarshal(templated, &parsed); err != nil { + if err := yaml.Unmarshal([]byte(templated), &parsed); err != nil { return nil, fmt.Errorf("unmarshal metadata: %w", err) } return &parsed, nil } -func ParseAddonHelmValues(rawvalues []byte, license *kotsv1beta1.License) (map[string]interface{}, error) { +func ParseAddonHelmValues(rawvalues string, license *kotsv1beta1.License) (map[string]interface{}, error) { templated, err := Template(rawvalues, license) if err != nil { return nil, fmt.Errorf("template helm values: %w", err) } parsed := make(map[string]interface{}) - if err := yaml.Unmarshal(templated, &parsed); err != nil { + if err := yaml.Unmarshal([]byte(templated), &parsed); err != nil { return nil, fmt.Errorf("unmarshal helm values: %w", err) } return parsed, nil diff --git a/pkg/release/template.go b/pkg/release/template.go index 40998f560..c1f191aa1 100644 --- a/pkg/release/template.go +++ b/pkg/release/template.go @@ -12,21 +12,21 @@ type TemplateData struct { ReplicatedProxyDomain string } -func Template(raw []byte, license *kotsv1beta1.License) ([]byte, error) { - tmpl, err := template.New("release").Parse(string(raw)) +func Template(raw string, license *kotsv1beta1.License) (string, error) { + tmpl, err := template.New("release").Parse(raw) if err != nil { - return nil, fmt.Errorf("parse template: %w", err) + return "", fmt.Errorf("parse template: %w", err) } data, err := getTemplateData(license) if err != nil { - return nil, fmt.Errorf("get template data: %w", err) + return "", fmt.Errorf("get template data: %w", err) } buf := bytes.NewBuffer(nil) err = tmpl.Execute(buf, data) if err != nil { - return nil, fmt.Errorf("execute template: %w", err) + return "", fmt.Errorf("execute template: %w", err) } - return buf.Bytes(), nil + return buf.String(), nil } func getTemplateData(license *kotsv1beta1.License) (*TemplateData, error) {