diff --git a/bundle/config/mutator/apply_presets.go b/bundle/config/mutator/apply_presets.go index 45ee79ef..4472de04 100644 --- a/bundle/config/mutator/apply_presets.go +++ b/bundle/config/mutator/apply_presets.go @@ -11,8 +11,6 @@ import ( "github.com/databricks/cli/bundle/config" "github.com/databricks/cli/libs/diag" "github.com/databricks/cli/libs/dyn" - "github.com/databricks/cli/libs/dyn/dynvar" - "github.com/databricks/cli/libs/log" "github.com/databricks/cli/libs/textutil" "github.com/databricks/databricks-sdk-go/service/catalog" "github.com/databricks/databricks-sdk-go/service/jobs" @@ -194,31 +192,6 @@ func (m *applyPresets) Apply(ctx context.Context, b *bundle.Bundle) diag.Diagnos // HTTP API for schemas doesn't yet support tags. It's only supported in // the Databricks UI and via the SQL API. } - - // Volumes: Prefix - for _, v := range r.Volumes { - if containsUserIdentity(v.CatalogName, b.Config.Workspace.CurrentUser) { - log.Debugf(ctx, "Skipping prefix for volume %s because catalog %s contains the current user's identity", v.Name, v.CatalogName) - continue - } - if containsUserIdentity(v.SchemaName, b.Config.Workspace.CurrentUser) { - log.Debugf(ctx, "Skipping prefix for volume %s because schema %s contains the current user's identity", v.Name, v.SchemaName) - continue - } - // We only have to check for ${resources.schemas...} references because any - // other valid reference (like ${var.foo}) would have been interpolated by this point. - if p, ok := dynvar.PureReferenceToPath(v.SchemaName); ok && p.HasPrefix(dyn.Path{dyn.Key("resources"), dyn.Key("schemas")}) { - log.Debugf(ctx, "Skipping prefix for volume %s because schema %s is defined in the bundle and the schema name will be interpolated at runtime", v.Name, v.SchemaName) - continue - - } - - v.Name = normalizePrefix(prefix) + v.Name - - // HTTP API for volumes doesn't yet support tags. It's only supported in - // the Databricks UI and via the SQL API. - } - // Clusters: Prefix, Tags for key, c := range r.Clusters { if c.ClusterSpec == nil { diff --git a/bundle/config/mutator/apply_presets_test.go b/bundle/config/mutator/apply_presets_test.go index 50c5618b..7ca13291 100644 --- a/bundle/config/mutator/apply_presets_test.go +++ b/bundle/config/mutator/apply_presets_test.go @@ -9,9 +9,7 @@ import ( "github.com/databricks/cli/bundle/config/mutator" "github.com/databricks/cli/bundle/config/resources" "github.com/databricks/databricks-sdk-go/service/catalog" - "github.com/databricks/databricks-sdk-go/service/iam" "github.com/databricks/databricks-sdk-go/service/jobs" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -127,145 +125,34 @@ func TestApplyPresetsPrefixForUcSchema(t *testing.T) { } } -func TestApplyPresentsReminderToAddSupportForSkippingPrefixes(t *testing.T) { - _, ok := config.SupportedResources()["catalogs"] - assert.False(t, ok, - `Since you are adding support for UC catalogs to DABs please ensure that -you add logic to skip applying presets.name_prefix for UC schemas, UC volumes and -any other resources that fall under a catalog in the UC hierarchy (like registered models). -Once you do so feel free to remove this test.`) -} - -func TestApplyPresetsPrefixForUcVolumes(t *testing.T) { - tests := []struct { - name string - prefix string - volume *resources.Volume - want string - }{ - { - name: "add prefix to volume", - prefix: "[prefix]", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - CatalogName: "catalog1", - SchemaName: "schema1", - }, - }, - want: "prefix_volume1", - }, - { - name: "add empty prefix to volume", - prefix: "", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - }, - }, - want: "volume1", - }, - { - name: "skip prefix when catalog name contains user short name", - prefix: "[prefix]", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - CatalogName: "dev_john_wick_targets", - }, - }, - want: "volume1", - }, - { - name: "skip prefix when catalog name contains user email", - prefix: "[prefix]", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - CatalogName: "dev_john.wick@continental.com_targets", - }, - }, - want: "volume1", - }, - { - name: "skip prefix when schema name contains user short name", - prefix: "[prefix]", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - SchemaName: "dev_john_wick_weapons", - }, - }, - want: "volume1", - }, - { - name: "skip prefix when schema name contains user email", - prefix: "[prefix]", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - SchemaName: "dev_john.wick@continental.com_targets", - }, - }, - want: "volume1", - }, - { - name: "skip prefix when schema is defined in the bundle and will be interpolated at runtime", - prefix: "[prefix]", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - SchemaName: "${resources.schemas.schema1.name}", - }, - }, - want: "volume1", - }, - { - name: "add prefix when schema is a reference without the resources.schemas prefix", - prefix: "[prefix]", - volume: &resources.Volume{ - CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ - Name: "volume1", - SchemaName: "${foo.bar.baz}", - }, - }, - want: "prefix_volume1", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - b := &bundle.Bundle{ - Config: config.Root{ - Resources: config.Resources{ - Volumes: map[string]*resources.Volume{ - "volume1": tt.volume, - }, - }, - Presets: config.Presets{ - NamePrefix: tt.prefix, - }, - Workspace: config.Workspace{ - CurrentUser: &config.User{ - ShortName: "john_wick", - User: &iam.User{ - UserName: "john.wick@continental.com", - }, +func TestApplyPresetsUCVolumesShouldNotBePrefixed(t *testing.T) { + b := &bundle.Bundle{ + Config: config.Root{ + Resources: config.Resources{ + Volumes: map[string]*resources.Volume{ + "volume1": { + CreateVolumeRequestContent: &catalog.CreateVolumeRequestContent{ + Name: "volume1", + CatalogName: "catalog1", + SchemaName: "schema1", }, }, }, - } - - ctx := context.Background() - diag := bundle.Apply(ctx, b, mutator.ApplyPresets()) - - if diag.HasError() { - t.Fatalf("unexpected error: %v", diag) - } - - require.Equal(t, tt.want, b.Config.Resources.Volumes["volume1"].Name) - }) + }, + Presets: config.Presets{ + NamePrefix: "[prefix]", + }, + }, } + + ctx := context.Background() + diag := bundle.Apply(ctx, b, mutator.ApplyPresets()) + + if diag.HasError() { + t.Fatalf("unexpected error: %v", diag) + } + + require.Equal(t, "volume1", b.Config.Resources.Volumes["volume1"].Name) } func TestApplyPresetsTags(t *testing.T) { diff --git a/bundle/config/mutator/translate_paths_dashboards_test.go b/bundle/config/mutator/translate_paths_dashboards_test.go index 5e4e69f5..ae74f314 100644 --- a/bundle/config/mutator/translate_paths_dashboards_test.go +++ b/bundle/config/mutator/translate_paths_dashboards_test.go @@ -6,10 +6,10 @@ import ( "testing" "github.com/databricks/cli/bundle" + "github.com/databricks/cli/bundle/bundletest" "github.com/databricks/cli/bundle/config" "github.com/databricks/cli/bundle/config/mutator" "github.com/databricks/cli/bundle/config/resources" - "github.com/databricks/cli/bundle/internal/bundletest" "github.com/databricks/cli/libs/dyn" "github.com/databricks/cli/libs/vfs" "github.com/databricks/databricks-sdk-go/service/dashboards"