From 7db5dfb37edaa8600a3ba39e1fb5f506b71b6729 Mon Sep 17 00:00:00 2001 From: Benoit Laurent Date: Wed, 3 Jul 2024 11:39:34 +0200 Subject: [PATCH 1/3] Execute make format to remove all formatting issues --- cmd/dt/auth_test.go | 1 + cmd/dt/wrap_test.go | 1 + internal/testutil/oci.go | 3 ++- pkg/artifacts/helm.go | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cmd/dt/auth_test.go b/cmd/dt/auth_test.go index 18b310b..dd2e824 100644 --- a/cmd/dt/auth_test.go +++ b/cmd/dt/auth_test.go @@ -6,6 +6,7 @@ import ( "github.com/google/go-containerregistry/pkg/crane" "github.com/stretchr/testify/require" "github.com/vmware-labs/distribution-tooling-for-helm/internal/testutil" + "helm.sh/helm/v3/pkg/repo/repotest" ) diff --git a/cmd/dt/wrap_test.go b/cmd/dt/wrap_test.go index 3243574..25aa05e 100644 --- a/cmd/dt/wrap_test.go +++ b/cmd/dt/wrap_test.go @@ -16,6 +16,7 @@ import ( "github.com/google/go-containerregistry/pkg/registry" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "helm.sh/helm/v3/pkg/repo/repotest" "github.com/vmware-labs/distribution-tooling-for-helm/cmd/dt/wrap" diff --git a/internal/testutil/oci.go b/internal/testutil/oci.go index b0c5839..dfed4f6 100644 --- a/internal/testutil/oci.go +++ b/internal/testutil/oci.go @@ -10,9 +10,10 @@ import ( "time" "golang.org/x/crypto/bcrypt" - "helm.sh/helm/v3/pkg/repo/repotest" "oras.land/oras-go/v2/content/oci" + "helm.sh/helm/v3/pkg/repo/repotest" + "github.com/distribution/distribution/v3/configuration" "github.com/distribution/distribution/v3/registry" "github.com/google/go-containerregistry/pkg/crane" diff --git a/pkg/artifacts/helm.go b/pkg/artifacts/helm.go index b2c3c65..666c467 100644 --- a/pkg/artifacts/helm.go +++ b/pkg/artifacts/helm.go @@ -11,6 +11,7 @@ import ( "strings" "github.com/containerd/containerd/remotes/docker" + "helm.sh/helm/v3/pkg/action" "helm.sh/helm/v3/pkg/cli" "helm.sh/helm/v3/pkg/registry" From 2d6fe830120550a5b50156296d022085efc5b750 Mon Sep 17 00:00:00 2001 From: Benoit Laurent Date: Wed, 3 Jul 2024 11:46:43 +0200 Subject: [PATCH 2/3] Propagate --insecure flag when using dt images pull and dt wrap --- cmd/dt/pull/pull.go | 2 +- cmd/dt/wrap/wrap.go | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd/dt/pull/pull.go b/cmd/dt/pull/pull.go index 56bf30b..7a01190 100644 --- a/cmd/dt/pull/pull.go +++ b/cmd/dt/pull/pull.go @@ -63,6 +63,7 @@ func NewCmd(cfg *config.Config) *cobra.Command { chartutils.WithContext(ctx), chartutils.WithProgressBar(childLog.ProgressBar()), chartutils.WithArtifactsDir(chart.ImageArtifactsDir()), + chartutils.WithInsecureMode(cfg.Insecure), ); err != nil { return childLog.Failf("%v", err) } @@ -109,7 +110,6 @@ func NewCmd(cfg *config.Config) *cobra.Command { func pullImages(chart wrapping.Lockable, imagesDir string, opts ...chartutils.Option) error { lock, err := chart.GetImagesLock() - if err != nil { return fmt.Errorf("failed to read Images.lock file") } diff --git a/cmd/dt/wrap/wrap.go b/cmd/dt/wrap/wrap.go index 34b8590..15d9990 100644 --- a/cmd/dt/wrap/wrap.go +++ b/cmd/dt/wrap/wrap.go @@ -214,7 +214,6 @@ func ResolveInputChartPath(inputPath string, cfg *Config) (string, error) { var err error tmpDir, err := cfg.GetTemporaryDirectory() - if err != nil { return "", fmt.Errorf("failed to create temporary directory: %w", err) } @@ -342,6 +341,7 @@ func pullImages(wrap wrapping.Wrap, cfg *Config) error { chartutils.WithAuth(cfg.ContainerRegistryAuth.Username, cfg.ContainerRegistryAuth.Password), chartutils.WithArtifactsDir(wrap.ImageArtifactsDir()), chartutils.WithProgressBar(childLog.ProgressBar()), + chartutils.WithInsecureMode(cfg.Insecure), ); err != nil { return childLog.Failf("%v", err) } @@ -439,7 +439,7 @@ func NewCmd(cfg *config.Config) *cobra.Command { var platforms []string var fetchArtifacts bool var carvelize bool - var examples = ` # Wrap a Helm chart from a local folder + examples := ` # Wrap a Helm chart from a local folder $ dt wrap examples/mariadb # Wrap a Helm chart in an OCI registry @@ -476,7 +476,6 @@ This command will pull all the container images and wrap it into a single tarbal WithOutputFile(outputFile), WithTempDirectory(tmpDir), ) - if err != nil { if _, ok := err.(*log.LoggedError); ok { // We already logged it, lets be less verbose From 0f7aeb4ccdbdc169c044023f1c6bb1da8cffe874 Mon Sep 17 00:00:00 2001 From: Benoit Laurent Date: Wed, 3 Jul 2024 19:12:41 +0200 Subject: [PATCH 3/3] Change default strip level to match directory layout of wrapped chart --- cmd/dt/info_test.go | 18 ++++++++++-------- pkg/chartutils/chartutils.go | 3 +-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/cmd/dt/info_test.go b/cmd/dt/info_test.go index 901cab6..fb1bbca 100644 --- a/cmd/dt/info_test.go +++ b/cmd/dt/info_test.go @@ -11,7 +11,6 @@ import ( ) func (suite *CmdSuite) TestInfoCommand() { - t := suite.T() require := suite.Require() assert := suite.Assert() @@ -29,17 +28,21 @@ func (suite *CmdSuite) TestInfoCommand() { appVersion := "2.3.4" scenarioDir := fmt.Sprintf("../../testdata/scenarios/%s", scenarioName) + wrapDir := sb.TempFile() chartDir := sb.TempFile() - images, err := writeSampleImages(imageName, imageTag, filepath.Join(chartDir, "images")) + images, err := writeSampleImages(imageName, imageTag, filepath.Join(wrapDir, "images")) + require.NoError(err) + err = utils.CopyDir(filepath.Join(wrapDir, "images"), chartDir) require.NoError(err) - require.NoError(tu.RenderScenario(scenarioDir, chartDir, - map[string]interface{}{"ServerURL": serverURL, "Images": images, "Name": chartName, "Version": version, "AppVersion": appVersion, "RepositoryURL": serverURL}, - )) - + for _, chartPath := range []string{filepath.Join(wrapDir, "chart"), chartDir} { + require.NoError(tu.RenderScenario(scenarioDir, chartPath, + map[string]interface{}{"ServerURL": serverURL, "Images": images, "Name": chartName, "Version": version, "AppVersion": appVersion, "RepositoryURL": serverURL}, + )) + } tarFile := sb.TempFile() - if err := utils.Tar(chartDir, tarFile, utils.TarConfig{ + if err := utils.Tar(wrapDir, tarFile, utils.TarConfig{ Prefix: chartName, }); err != nil { require.NoError(err) @@ -83,7 +86,6 @@ func (suite *CmdSuite) TestInfoCommand() { require.NoError(err) assert.Equal(lockFileData, yamlInfoData) - }) } diff --git a/pkg/chartutils/chartutils.go b/pkg/chartutils/chartutils.go index 20e8b38..70e51ee 100644 --- a/pkg/chartutils/chartutils.go +++ b/pkg/chartutils/chartutils.go @@ -136,7 +136,6 @@ func getChartFile(c *chart.Chart, name string) *chart.File { for _, f := range c.Raw { if f.Name == name { return f - } } return nil @@ -165,7 +164,7 @@ func ReadLockFromChart(chartPath string) (*imagelock.ImagesLock, error) { if err := utils.FindFileInTar(context.Background(), chartPath, "Images.lock", func(tr *tar.Reader) error { lock, err = imagelock.FromYAML(tr) return err - }, utils.TarConfig{StripComponents: 1}); err != nil { + }, utils.TarConfig{StripComponents: 2}); err != nil { return nil, err } if lock == nil {