Skip to content

Commit 0b95d07

Browse files
committed
Merge origin/main into remove-mcp-transport.
Resolve PR merge conflicts while keeping the experimental/aitools removals from this branch.
2 parents 6b7f6a2 + dc16dbd commit 0b95d07

53 files changed

Lines changed: 696 additions & 1152 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.golangci.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ linters:
4444
msg: Use cmdio.IsPromptSupported(ctx) to check for a TTY.
4545
- pattern: 'os\.UserHomeDir'
4646
msg: Use env.UserHomeDir(ctx) from libs/env instead.
47+
- pattern: 'os\.Getenv'
48+
msg: Use env.Get(ctx) from the libs/env package instead of os.Getenv.
4749
analyze-types: true
4850
copyloopvar:
4951
check-alias: true
@@ -121,6 +123,10 @@ linters:
121123
- path: bundle/direct/dresources/.*_test.go
122124
linters:
123125
- exhaustruct
126+
- text: "Use env\\.Get"
127+
path: "_test\\.go$"
128+
linters:
129+
- forbidigo
124130
# TODO: remove these exceptions by moving the dependency out of experimental/.
125131
- path: cmd/apps/init.go
126132
linters:

NEXT_CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
### Bundles
88
* Modify grants to use SDK types ([#4666](https://github.com/databricks/cli/pull/4666))
9+
* Modify permissions to use SDK types where available. This makes DABs validate permission levels, producing a warning on the unknown ones ([#4686](https://github.com/databricks/cli/pull/4686))
910

1011
### Dependency updates
1112
* Bump databricks-sdk-go from v0.112.0 to v0.119.0 ([#4631](https://github.com/databricks/cli/pull/4631), [#4695](https://github.com/databricks/cli/pull/4695))

acceptance/bundle/refschema/out.fields.txt

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ resources.alerts.*.lifecycle_state sql.AlertLifecycleState ALL
3838
resources.alerts.*.modified_status string INPUT
3939
resources.alerts.*.owner_user_name string ALL
4040
resources.alerts.*.parent_path string ALL
41-
resources.alerts.*.permissions []resources.AlertPermission INPUT
42-
resources.alerts.*.permissions[*] resources.AlertPermission INPUT
41+
resources.alerts.*.permissions []resources.Permission INPUT
42+
resources.alerts.*.permissions[*] resources.Permission INPUT
4343
resources.alerts.*.permissions[*].group_name string INPUT
44-
resources.alerts.*.permissions[*].level resources.AlertPermissionLevel INPUT
44+
resources.alerts.*.permissions[*].level iam.PermissionLevel INPUT
4545
resources.alerts.*.permissions[*].service_principal_name string INPUT
4646
resources.alerts.*.permissions[*].user_name string INPUT
4747
resources.alerts.*.query_text string ALL
@@ -166,7 +166,7 @@ resources.apps.*.pending_deployment.update_time string ALL
166166
resources.apps.*.permissions []resources.AppPermission INPUT
167167
resources.apps.*.permissions[*] resources.AppPermission INPUT
168168
resources.apps.*.permissions[*].group_name string INPUT
169-
resources.apps.*.permissions[*].level resources.AppPermissionLevel INPUT
169+
resources.apps.*.permissions[*].level apps.AppPermissionLevel INPUT
170170
resources.apps.*.permissions[*].service_principal_name string INPUT
171171
resources.apps.*.permissions[*].user_name string INPUT
172172
resources.apps.*.resources []apps.AppResource ALL
@@ -403,7 +403,7 @@ resources.clusters.*.num_workers int ALL
403403
resources.clusters.*.permissions []resources.ClusterPermission INPUT
404404
resources.clusters.*.permissions[*] resources.ClusterPermission INPUT
405405
resources.clusters.*.permissions[*].group_name string INPUT
406-
resources.clusters.*.permissions[*].level resources.ClusterPermissionLevel INPUT
406+
resources.clusters.*.permissions[*].level compute.ClusterPermissionLevel INPUT
407407
resources.clusters.*.permissions[*].service_principal_name string INPUT
408408
resources.clusters.*.permissions[*].user_name string INPUT
409409
resources.clusters.*.policy_id string ALL
@@ -567,10 +567,10 @@ resources.dashboards.*.lifecycle_state dashboards.LifecycleState ALL
567567
resources.dashboards.*.modified_status string INPUT
568568
resources.dashboards.*.parent_path string ALL
569569
resources.dashboards.*.path string ALL
570-
resources.dashboards.*.permissions []resources.DashboardPermission INPUT
571-
resources.dashboards.*.permissions[*] resources.DashboardPermission INPUT
570+
resources.dashboards.*.permissions []resources.Permission INPUT
571+
resources.dashboards.*.permissions[*] resources.Permission INPUT
572572
resources.dashboards.*.permissions[*].group_name string INPUT
573-
resources.dashboards.*.permissions[*].level resources.DashboardPermissionLevel INPUT
573+
resources.dashboards.*.permissions[*].level iam.PermissionLevel INPUT
574574
resources.dashboards.*.permissions[*].service_principal_name string INPUT
575575
resources.dashboards.*.permissions[*].user_name string INPUT
576576
resources.dashboards.*.published bool REMOTE STATE
@@ -634,10 +634,10 @@ resources.database_instances.*.parent_instance_ref.effective_lsn string ALL
634634
resources.database_instances.*.parent_instance_ref.lsn string ALL
635635
resources.database_instances.*.parent_instance_ref.name string ALL
636636
resources.database_instances.*.parent_instance_ref.uid string ALL
637-
resources.database_instances.*.permissions []resources.DatabaseInstancePermission INPUT
638-
resources.database_instances.*.permissions[*] resources.DatabaseInstancePermission INPUT
637+
resources.database_instances.*.permissions []resources.Permission INPUT
638+
resources.database_instances.*.permissions[*] resources.Permission INPUT
639639
resources.database_instances.*.permissions[*].group_name string INPUT
640-
resources.database_instances.*.permissions[*].level resources.DatabaseInstancePermissionLevel INPUT
640+
resources.database_instances.*.permissions[*].level iam.PermissionLevel INPUT
641641
resources.database_instances.*.permissions[*].service_principal_name string INPUT
642642
resources.database_instances.*.permissions[*].user_name string INPUT
643643
resources.database_instances.*.pg_version string ALL
@@ -669,7 +669,7 @@ resources.experiments.*.name string ALL
669669
resources.experiments.*.permissions []resources.MlflowExperimentPermission INPUT
670670
resources.experiments.*.permissions[*] resources.MlflowExperimentPermission INPUT
671671
resources.experiments.*.permissions[*].group_name string INPUT
672-
resources.experiments.*.permissions[*].level resources.MlflowExperimentPermissionLevel INPUT
672+
resources.experiments.*.permissions[*].level ml.ExperimentPermissionLevel INPUT
673673
resources.experiments.*.permissions[*].service_principal_name string INPUT
674674
resources.experiments.*.permissions[*].user_name string INPUT
675675
resources.experiments.*.tags []ml.ExperimentTag ALL
@@ -932,7 +932,7 @@ resources.jobs.*.performance_target jobs.PerformanceTarget ALL
932932
resources.jobs.*.permissions []resources.JobPermission INPUT
933933
resources.jobs.*.permissions[*] resources.JobPermission INPUT
934934
resources.jobs.*.permissions[*].group_name string INPUT
935-
resources.jobs.*.permissions[*].level resources.JobPermissionLevel INPUT
935+
resources.jobs.*.permissions[*].level jobs.JobPermissionLevel INPUT
936936
resources.jobs.*.permissions[*].service_principal_name string INPUT
937937
resources.jobs.*.permissions[*].user_name string INPUT
938938
resources.jobs.*.queue *jobs.QueueSettings ALL
@@ -2109,7 +2109,7 @@ resources.model_serving_endpoints.*.name string INPUT STATE
21092109
resources.model_serving_endpoints.*.permissions []resources.ModelServingEndpointPermission INPUT
21102110
resources.model_serving_endpoints.*.permissions[*] resources.ModelServingEndpointPermission INPUT
21112111
resources.model_serving_endpoints.*.permissions[*].group_name string INPUT
2112-
resources.model_serving_endpoints.*.permissions[*].level resources.ModelServingEndpointPermissionLevel INPUT
2112+
resources.model_serving_endpoints.*.permissions[*].level serving.ServingEndpointPermissionLevel INPUT
21132113
resources.model_serving_endpoints.*.permissions[*].service_principal_name string INPUT
21142114
resources.model_serving_endpoints.*.permissions[*].user_name string INPUT
21152115
resources.model_serving_endpoints.*.rate_limits []serving.RateLimit INPUT STATE
@@ -2160,7 +2160,7 @@ resources.models.*.permission_level ml.PermissionLevel REMOTE
21602160
resources.models.*.permissions []resources.MlflowModelPermission INPUT
21612161
resources.models.*.permissions[*] resources.MlflowModelPermission INPUT
21622162
resources.models.*.permissions[*].group_name string INPUT
2163-
resources.models.*.permissions[*].level resources.MlflowModelPermissionLevel INPUT
2163+
resources.models.*.permissions[*].level ml.RegisteredModelPermissionLevel INPUT
21642164
resources.models.*.permissions[*].service_principal_name string INPUT
21652165
resources.models.*.permissions[*].user_name string INPUT
21662166
resources.models.*.tags []ml.ModelTag ALL
@@ -2485,7 +2485,7 @@ resources.pipelines.*.notifications[*].email_recipients[*] string ALL
24852485
resources.pipelines.*.permissions []resources.PipelinePermission INPUT
24862486
resources.pipelines.*.permissions[*] resources.PipelinePermission INPUT
24872487
resources.pipelines.*.permissions[*].group_name string INPUT
2488-
resources.pipelines.*.permissions[*].level resources.PipelinePermissionLevel INPUT
2488+
resources.pipelines.*.permissions[*].level pipelines.PipelinePermissionLevel INPUT
24892489
resources.pipelines.*.permissions[*].service_principal_name string INPUT
24902490
resources.pipelines.*.permissions[*].user_name string INPUT
24912491
resources.pipelines.*.photon bool ALL
@@ -2640,10 +2640,10 @@ resources.postgres_projects.*.lifecycle resources.Lifecycle INPUT
26402640
resources.postgres_projects.*.lifecycle.prevent_destroy bool INPUT
26412641
resources.postgres_projects.*.modified_status string INPUT
26422642
resources.postgres_projects.*.name string REMOTE
2643-
resources.postgres_projects.*.permissions []resources.DatabaseProjectPermission INPUT
2644-
resources.postgres_projects.*.permissions[*] resources.DatabaseProjectPermission INPUT
2643+
resources.postgres_projects.*.permissions []resources.Permission INPUT
2644+
resources.postgres_projects.*.permissions[*] resources.Permission INPUT
26452645
resources.postgres_projects.*.permissions[*].group_name string INPUT
2646-
resources.postgres_projects.*.permissions[*].level resources.DatabaseProjectPermissionLevel INPUT
2646+
resources.postgres_projects.*.permissions[*].level iam.PermissionLevel INPUT
26472647
resources.postgres_projects.*.permissions[*].service_principal_name string INPUT
26482648
resources.postgres_projects.*.permissions[*].user_name string INPUT
26492649
resources.postgres_projects.*.pg_version int INPUT STATE
@@ -2890,7 +2890,7 @@ resources.sql_warehouses.*.odbc_params.protocol string REMOTE
28902890
resources.sql_warehouses.*.permissions []resources.SqlWarehousePermission INPUT
28912891
resources.sql_warehouses.*.permissions[*] resources.SqlWarehousePermission INPUT
28922892
resources.sql_warehouses.*.permissions[*].group_name string INPUT
2893-
resources.sql_warehouses.*.permissions[*].level resources.SqlWarehousePermissionLevel INPUT
2893+
resources.sql_warehouses.*.permissions[*].level sql.WarehousePermissionLevel INPUT
28942894
resources.sql_warehouses.*.permissions[*].service_principal_name string INPUT
28952895
resources.sql_warehouses.*.permissions[*].user_name string INPUT
28962896
resources.sql_warehouses.*.spot_instance_policy sql.SpotInstancePolicy ALL

acceptance/internal/prepare_server.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func isTruePtr(value *bool) bool {
6464
}
6565

6666
func PrepareServerAndClient(t *testing.T, config TestConfig, logRequests bool, outputDir string) (*sdkconfig.Config, iam.User) {
67-
cloudEnv := os.Getenv("CLOUD_ENV")
67+
cloudEnv := env.Get(t.Context(), "CLOUD_ENV")
6868
recordRequests := isTruePtr(config.RecordRequests)
6969

7070
// Use a unique token for each test. This allows us to maintain
@@ -107,7 +107,7 @@ func PrepareServerAndClient(t *testing.T, config TestConfig, logRequests bool, o
107107
// use the default shared server.
108108
if len(config.Server) == 0 && !recordRequests {
109109
cfg := &sdkconfig.Config{
110-
Host: os.Getenv("DATABRICKS_DEFAULT_HOST"),
110+
Host: env.Get(t.Context(), "DATABRICKS_DEFAULT_HOST"),
111111
Token: token,
112112
}
113113

bundle/config/mutator/resourcemutator/apply_bundle_permissions.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/databricks/cli/libs/diag"
1414
"github.com/databricks/cli/libs/dyn"
1515
"github.com/databricks/cli/libs/dyn/convert"
16+
"github.com/databricks/databricks-sdk-go/service/iam"
1617
)
1718

1819
var (
@@ -151,7 +152,7 @@ func (m *bundlePermissions) Apply(ctx context.Context, b *bundle.Bundle) diag.Di
151152

152153
func validatePermissions(b *bundle.Bundle) error {
153154
for _, p := range b.Config.Permissions {
154-
if !slices.Contains(allowedLevels, p.Level) {
155+
if !slices.Contains(allowedLevels, string(p.Level)) {
155156
return fmt.Errorf("invalid permission level: %s, allowed values: [%s]", p.Level, strings.Join(allowedLevels, ", "))
156157
}
157158
}
@@ -172,7 +173,7 @@ func convertPermissions(
172173
) []resources.Permission {
173174
var permissions []resources.Permission
174175
for _, p := range bundlePermissions {
175-
level, ok := lm[p.Level]
176+
level, ok := lm[string(p.Level)]
176177
// If there is no bundle permission level defined in the map, it means
177178
// it's not applicable for the resource, therefore skipping
178179
if !ok {
@@ -184,7 +185,7 @@ func convertPermissions(
184185
}
185186

186187
permissions = append(permissions, resources.Permission{
187-
Level: level,
188+
Level: iam.PermissionLevel(level),
188189
UserName: p.UserName,
189190
GroupName: p.GroupName,
190191
ServicePrincipalName: p.ServicePrincipalName,

bundle/config/mutator/resourcemutator/apply_bundle_permissions_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ func TestApplyBundlePermissions(t *testing.T) {
132132
require.Contains(t, b.Config.Resources.ModelServingEndpoints["endpoint_2"].Permissions, resources.ModelServingEndpointPermission{Level: "CAN_QUERY", ServicePrincipalName: "TestServicePrincipal"})
133133

134134
require.Len(t, b.Config.Resources.Dashboards["dashboard_1"].Permissions, 2)
135-
require.Contains(t, b.Config.Resources.Dashboards["dashboard_1"].Permissions, resources.DashboardPermission{Level: "CAN_MANAGE", UserName: "TestUser"})
136-
require.Contains(t, b.Config.Resources.Dashboards["dashboard_1"].Permissions, resources.DashboardPermission{Level: "CAN_READ", GroupName: "TestGroup"})
135+
require.Contains(t, b.Config.Resources.Dashboards["dashboard_1"].Permissions, resources.Permission{Level: "CAN_MANAGE", UserName: "TestUser"})
136+
require.Contains(t, b.Config.Resources.Dashboards["dashboard_1"].Permissions, resources.Permission{Level: "CAN_READ", GroupName: "TestGroup"})
137137

138138
require.Len(t, b.Config.Resources.Apps["app_1"].Permissions, 2)
139139
require.Contains(t, b.Config.Resources.Apps["app_1"].Permissions, resources.AppPermission{Level: "CAN_MANAGE", UserName: "TestUser"})

bundle/config/mutator/resourcemutator/run_as.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ func setPipelineOwnersToRunAsIdentity(b *bundle.Bundle) {
201201
(runAs.UserName != "" && p.UserName == runAs.UserName)
202202
})
203203
pipeline.Permissions = append(pipeline.Permissions, resources.PipelinePermission{
204-
Level: "IS_OWNER",
204+
Level: pipelines.PipelinePermissionLevelIsOwner,
205205
ServicePrincipalName: runAs.ServicePrincipalName,
206206
UserName: runAs.UserName,
207207
})

bundle/config/resources/alerts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type Alert struct {
1414
BaseResource
1515
sql.AlertV2 //nolint AlertV2 also defines Id and URL field with the same json tag "id" and "url"
1616

17-
Permissions []AlertPermission `json:"permissions,omitempty"`
17+
Permissions []Permission `json:"permissions,omitempty"`
1818

1919
// Filepath points to the local .dbalert.json file containing the alert definition.
2020
// If specified, any fields that are part of the .dbalert.json file schema will not be allowed in

bundle/config/resources/dashboard.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ type Dashboard struct {
8080
BaseResource
8181
DashboardConfig
8282

83-
Permissions []DashboardPermission `json:"permissions,omitempty"`
83+
Permissions []Permission `json:"permissions,omitempty"`
8484

8585
// FilePath points to the local `.lvdash.json` file containing the dashboard definition.
8686
// This is inlined into serialized_dashboard during deployment. The file_path is kept around

bundle/config/resources/database_instance.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type DatabaseInstance struct {
1414
BaseResource
1515
database.DatabaseInstance
1616

17-
Permissions []DatabaseInstancePermission `json:"permissions,omitempty"`
17+
Permissions []Permission `json:"permissions,omitempty"`
1818
}
1919

2020
func (d *DatabaseInstance) Exists(ctx context.Context, w *databricks.WorkspaceClient, name string) (bool, error) {

0 commit comments

Comments
 (0)