diff --git a/cli/internal/helm/backup.go b/cli/internal/helm/backup.go index 37197ba70..ad371d74d 100644 --- a/cli/internal/helm/backup.go +++ b/cli/internal/helm/backup.go @@ -63,7 +63,11 @@ func (c *Client) backupCRs(ctx context.Context, crds []apiextensionsv1.CustomRes } for _, cr := range crs { - path := filepath.Join(backupFolder, cr.GetName()+".yaml") + targetFolder := filepath.Join(backupFolder, cr.GetKind(), cr.GetNamespace()) + if err := c.fs.MkdirAll(targetFolder); err != nil { + return fmt.Errorf("creating resource dir: %w", err) + } + path := filepath.Join(targetFolder, cr.GetName()+".yaml") yamlBytes, err := yaml.Marshal(cr.Object) if err != nil { return err diff --git a/cli/internal/helm/backup_test.go b/cli/internal/helm/backup_test.go index d16bd9678..abc2ed06e 100644 --- a/cli/internal/helm/backup_test.go +++ b/cli/internal/helm/backup_test.go @@ -133,7 +133,7 @@ func TestBackupCRs(t *testing.T) { } assert.NoError(err) - data, err := afero.ReadFile(memFs, filepath.Join(backupFolder, tc.resource.GetName()+".yaml")) + data, err := afero.ReadFile(memFs, filepath.Join(backupFolder, tc.resource.GetKind(), tc.resource.GetNamespace(), tc.resource.GetName()+".yaml")) require.NoError(err) assert.YAMLEq(tc.expectedFile, string(data)) })