pulumi-databricks 1.75.0a1756323569__py3-none-any.whl → 1.77.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. pulumi_databricks/__init__.py +129 -46
  2. pulumi_databricks/_inputs.py +13377 -13798
  3. pulumi_databricks/account_federation_policy.py +473 -0
  4. pulumi_databricks/account_network_policy.py +12 -4
  5. pulumi_databricks/account_setting_v2.py +759 -0
  6. pulumi_databricks/alert_v2.py +223 -90
  7. pulumi_databricks/app.py +111 -4
  8. pulumi_databricks/apps_settings_custom_template.py +531 -0
  9. pulumi_databricks/budget_policy.py +28 -5
  10. pulumi_databricks/catalog.py +322 -2
  11. pulumi_databricks/cluster.py +47 -168
  12. pulumi_databricks/config/__init__.pyi +2 -0
  13. pulumi_databricks/config/vars.py +4 -0
  14. pulumi_databricks/connection.py +0 -34
  15. pulumi_databricks/data_quality_monitor.py +453 -0
  16. pulumi_databricks/data_quality_refresh.py +492 -0
  17. pulumi_databricks/database_database_catalog.py +8 -4
  18. pulumi_databricks/database_instance.py +354 -73
  19. pulumi_databricks/database_synced_database_table.py +52 -4
  20. pulumi_databricks/entitlements.py +21 -21
  21. pulumi_databricks/entity_tag_assignment.py +409 -0
  22. pulumi_databricks/external_metadata.py +15 -11
  23. pulumi_databricks/feature_engineering_feature.py +480 -0
  24. pulumi_databricks/feature_engineering_materialized_feature.py +397 -0
  25. pulumi_databricks/get_account_federation_policies.py +127 -0
  26. pulumi_databricks/get_account_federation_policy.py +214 -0
  27. pulumi_databricks/get_account_network_policies.py +4 -0
  28. pulumi_databricks/get_account_network_policy.py +17 -18
  29. pulumi_databricks/get_account_setting_v2.py +331 -0
  30. pulumi_databricks/get_alert_v2.py +78 -70
  31. pulumi_databricks/get_alerts_v2.py +31 -12
  32. pulumi_databricks/get_app.py +21 -9
  33. pulumi_databricks/get_apps.py +22 -10
  34. pulumi_databricks/get_apps_settings_custom_template.py +207 -0
  35. pulumi_databricks/get_apps_settings_custom_templates.py +133 -0
  36. pulumi_databricks/get_aws_bucket_policy.py +6 -6
  37. pulumi_databricks/get_budget_policies.py +70 -6
  38. pulumi_databricks/get_budget_policy.py +35 -30
  39. pulumi_databricks/get_catalog.py +21 -4
  40. pulumi_databricks/get_catalogs.py +23 -4
  41. pulumi_databricks/get_cluster.py +21 -4
  42. pulumi_databricks/get_cluster_policy.py +23 -4
  43. pulumi_databricks/get_clusters.py +21 -4
  44. pulumi_databricks/get_current_metastore.py +21 -4
  45. pulumi_databricks/get_dashboards.py +24 -4
  46. pulumi_databricks/get_data_quality_monitor.py +210 -0
  47. pulumi_databricks/get_data_quality_monitors.py +143 -0
  48. pulumi_databricks/get_data_quality_refresh.py +270 -0
  49. pulumi_databricks/get_data_quality_refreshes.py +207 -0
  50. pulumi_databricks/get_database_database_catalog.py +6 -20
  51. pulumi_databricks/get_database_database_catalogs.py +46 -8
  52. pulumi_databricks/get_database_instance.py +122 -75
  53. pulumi_databricks/get_database_instances.py +31 -6
  54. pulumi_databricks/get_database_synced_database_table.py +7 -28
  55. pulumi_databricks/get_database_synced_database_tables.py +43 -5
  56. pulumi_databricks/get_directory.py +20 -1
  57. pulumi_databricks/get_entity_tag_assignment.py +202 -0
  58. pulumi_databricks/get_entity_tag_assignments.py +187 -0
  59. pulumi_databricks/get_external_location.py +21 -4
  60. pulumi_databricks/get_external_locations.py +23 -4
  61. pulumi_databricks/get_external_metadata.py +12 -50
  62. pulumi_databricks/get_external_metadatas.py +55 -6
  63. pulumi_databricks/get_feature_engineering_feature.py +179 -0
  64. pulumi_databricks/get_feature_engineering_features.py +103 -0
  65. pulumi_databricks/get_feature_engineering_materialized_feature.py +180 -0
  66. pulumi_databricks/get_feature_engineering_materialized_features.py +123 -0
  67. pulumi_databricks/get_functions.py +16 -1
  68. pulumi_databricks/get_instance_profiles.py +21 -4
  69. pulumi_databricks/get_jobs.py +23 -4
  70. pulumi_databricks/get_materialized_features_feature_tag.py +3 -11
  71. pulumi_databricks/get_materialized_features_feature_tags.py +59 -8
  72. pulumi_databricks/get_metastore.py +2 -2
  73. pulumi_databricks/get_mlflow_experiment.py +18 -1
  74. pulumi_databricks/get_mlflow_model.py +18 -1
  75. pulumi_databricks/get_mlflow_models.py +23 -4
  76. pulumi_databricks/get_node_type.py +42 -5
  77. pulumi_databricks/get_notification_destinations.py +17 -1
  78. pulumi_databricks/get_online_store.py +7 -17
  79. pulumi_databricks/get_online_stores.py +29 -8
  80. pulumi_databricks/get_pipelines.py +23 -4
  81. pulumi_databricks/get_policy_info.py +28 -99
  82. pulumi_databricks/get_policy_infos.py +92 -5
  83. pulumi_databricks/get_quality_monitor_v2.py +4 -0
  84. pulumi_databricks/get_quality_monitors_v2.py +22 -3
  85. pulumi_databricks/get_registered_model.py +19 -4
  86. pulumi_databricks/get_registered_model_versions.py +19 -4
  87. pulumi_databricks/get_rfa_access_request_destinations.py +126 -0
  88. pulumi_databricks/get_schema.py +18 -1
  89. pulumi_databricks/get_schemas.py +23 -4
  90. pulumi_databricks/get_service_principal_federation_policies.py +151 -0
  91. pulumi_databricks/get_service_principal_federation_policy.py +220 -0
  92. pulumi_databricks/get_serving_endpoints.py +19 -4
  93. pulumi_databricks/get_share.py +117 -18
  94. pulumi_databricks/get_shares.py +22 -3
  95. pulumi_databricks/get_spark_version.py +20 -1
  96. pulumi_databricks/get_sql_warehouse.py +16 -1
  97. pulumi_databricks/get_sql_warehouses.py +20 -1
  98. pulumi_databricks/get_storage_credential.py +18 -1
  99. pulumi_databricks/get_storage_credentials.py +23 -4
  100. pulumi_databricks/get_table.py +18 -1
  101. pulumi_databricks/get_tables.py +20 -1
  102. pulumi_databricks/get_tag_policies.py +139 -0
  103. pulumi_databricks/get_tag_policy.py +175 -0
  104. pulumi_databricks/get_views.py +20 -1
  105. pulumi_databricks/get_volume.py +18 -1
  106. pulumi_databricks/get_volumes.py +20 -1
  107. pulumi_databricks/get_workspace_network_option.py +8 -16
  108. pulumi_databricks/get_workspace_setting_v2.py +331 -0
  109. pulumi_databricks/get_zones.py +20 -1
  110. pulumi_databricks/git_credential.py +54 -7
  111. pulumi_databricks/grant.py +2 -2
  112. pulumi_databricks/group.py +21 -21
  113. pulumi_databricks/job.py +47 -0
  114. pulumi_databricks/library.py +165 -0
  115. pulumi_databricks/materialized_features_feature_tag.py +8 -4
  116. pulumi_databricks/mws_ncc_private_endpoint_rule.py +7 -7
  117. pulumi_databricks/mws_permission_assignment.py +16 -16
  118. pulumi_databricks/mws_storage_configurations.py +6 -6
  119. pulumi_databricks/mws_workspaces.py +76 -29
  120. pulumi_databricks/online_store.py +8 -4
  121. pulumi_databricks/outputs.py +26397 -22382
  122. pulumi_databricks/permission_assignment.py +266 -24
  123. pulumi_databricks/pipeline.py +37 -3
  124. pulumi_databricks/policy_info.py +43 -39
  125. pulumi_databricks/provider.py +15 -0
  126. pulumi_databricks/pulumi-plugin.json +1 -1
  127. pulumi_databricks/quality_monitor.py +47 -0
  128. pulumi_databricks/quality_monitor_v2.py +8 -4
  129. pulumi_databricks/registered_model.py +301 -29
  130. pulumi_databricks/rfa_access_request_destinations.py +286 -0
  131. pulumi_databricks/service_principal_federation_policy.py +469 -0
  132. pulumi_databricks/share.py +71 -84
  133. pulumi_databricks/sql_endpoint.py +47 -0
  134. pulumi_databricks/sql_table.py +35 -7
  135. pulumi_databricks/storage_credential.py +59 -6
  136. pulumi_databricks/tag_policy.py +357 -0
  137. pulumi_databricks/user.py +21 -21
  138. pulumi_databricks/workspace_binding.py +0 -48
  139. pulumi_databricks/workspace_network_option.py +8 -4
  140. pulumi_databricks/workspace_setting_v2.py +759 -0
  141. {pulumi_databricks-1.75.0a1756323569.dist-info → pulumi_databricks-1.77.0.dist-info}/METADATA +1 -1
  142. pulumi_databricks-1.77.0.dist-info/RECORD +250 -0
  143. pulumi_databricks/clean_room_asset.py +0 -891
  144. pulumi_databricks/clean_room_auto_approval_rule.py +0 -426
  145. pulumi_databricks/clean_rooms_clean_room.py +0 -518
  146. pulumi_databricks/get_clean_room_asset.py +0 -399
  147. pulumi_databricks/get_clean_room_asset_revisions_clean_room_asset.py +0 -375
  148. pulumi_databricks/get_clean_room_asset_revisions_clean_room_assets.py +0 -82
  149. pulumi_databricks/get_clean_room_assets.py +0 -104
  150. pulumi_databricks/get_clean_room_auto_approval_rule.py +0 -200
  151. pulumi_databricks/get_clean_room_auto_approval_rules.py +0 -82
  152. pulumi_databricks/get_clean_rooms_clean_room.py +0 -272
  153. pulumi_databricks/get_clean_rooms_clean_rooms.py +0 -104
  154. pulumi_databricks/get_recipient_federation_policies.py +0 -82
  155. pulumi_databricks/get_recipient_federation_policy.py +0 -165
  156. pulumi_databricks/recipient_federation_policy.py +0 -346
  157. pulumi_databricks-1.75.0a1756323569.dist-info/RECORD +0 -231
  158. {pulumi_databricks-1.75.0a1756323569.dist-info → pulumi_databricks-1.77.0.dist-info}/WHEEL +0 -0
  159. {pulumi_databricks-1.75.0a1756323569.dist-info → pulumi_databricks-1.77.0.dist-info}/top_level.txt +0 -0
@@ -20,24 +20,37 @@ __all__ = ['PermissionAssignmentArgs', 'PermissionAssignment']
20
20
  class PermissionAssignmentArgs:
21
21
  def __init__(__self__, *,
22
22
  permissions: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
23
- principal_id: pulumi.Input[_builtins.str]):
23
+ group_name: Optional[pulumi.Input[_builtins.str]] = None,
24
+ principal_id: Optional[pulumi.Input[_builtins.str]] = None,
25
+ service_principal_name: Optional[pulumi.Input[_builtins.str]] = None,
26
+ user_name: Optional[pulumi.Input[_builtins.str]] = None):
24
27
  """
25
28
  The set of arguments for constructing a PermissionAssignment resource.
26
29
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] permissions: The list of workspace permissions to assign to the principal:
27
- * `"USER"` - Can access the workspace with basic privileges.
28
- * `"ADMIN"` - Can access the workspace and has workspace admin privileges to manage users and groups, workspace configurations, and more.
30
+ * `"USER"` - Adds principal to the workspace `users` group. This gives basic workspace access.
31
+ * `"ADMIN"` - Adds principal to the workspace `admins` group. This gives workspace admin privileges to manage users and groups, workspace configurations, and more.
32
+ :param pulumi.Input[_builtins.str] group_name: the group name to assign to a workspace.
29
33
  :param pulumi.Input[_builtins.str] principal_id: Databricks ID of the user, service principal, or group. The principal ID can be retrieved using the account-level SCIM API, or using databricks_user, ServicePrincipal or Group data sources with account API (and has to be an account admin). A more sensible approach is to retrieve the list of `principal_id` as outputs from another Pulumi stack.
34
+ :param pulumi.Input[_builtins.str] service_principal_name: the application ID of service principal to assign to a workspace.
35
+ :param pulumi.Input[_builtins.str] user_name: the user name (email) to assign to a workspace.
30
36
  """
31
37
  pulumi.set(__self__, "permissions", permissions)
32
- pulumi.set(__self__, "principal_id", principal_id)
38
+ if group_name is not None:
39
+ pulumi.set(__self__, "group_name", group_name)
40
+ if principal_id is not None:
41
+ pulumi.set(__self__, "principal_id", principal_id)
42
+ if service_principal_name is not None:
43
+ pulumi.set(__self__, "service_principal_name", service_principal_name)
44
+ if user_name is not None:
45
+ pulumi.set(__self__, "user_name", user_name)
33
46
 
34
47
  @_builtins.property
35
48
  @pulumi.getter
36
49
  def permissions(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
37
50
  """
38
51
  The list of workspace permissions to assign to the principal:
39
- * `"USER"` - Can access the workspace with basic privileges.
40
- * `"ADMIN"` - Can access the workspace and has workspace admin privileges to manage users and groups, workspace configurations, and more.
52
+ * `"USER"` - Adds principal to the workspace `users` group. This gives basic workspace access.
53
+ * `"ADMIN"` - Adds principal to the workspace `admins` group. This gives workspace admin privileges to manage users and groups, workspace configurations, and more.
41
54
  """
42
55
  return pulumi.get(self, "permissions")
43
56
 
@@ -45,43 +58,119 @@ class PermissionAssignmentArgs:
45
58
  def permissions(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
46
59
  pulumi.set(self, "permissions", value)
47
60
 
61
+ @_builtins.property
62
+ @pulumi.getter(name="groupName")
63
+ def group_name(self) -> Optional[pulumi.Input[_builtins.str]]:
64
+ """
65
+ the group name to assign to a workspace.
66
+ """
67
+ return pulumi.get(self, "group_name")
68
+
69
+ @group_name.setter
70
+ def group_name(self, value: Optional[pulumi.Input[_builtins.str]]):
71
+ pulumi.set(self, "group_name", value)
72
+
48
73
  @_builtins.property
49
74
  @pulumi.getter(name="principalId")
50
- def principal_id(self) -> pulumi.Input[_builtins.str]:
75
+ def principal_id(self) -> Optional[pulumi.Input[_builtins.str]]:
51
76
  """
52
77
  Databricks ID of the user, service principal, or group. The principal ID can be retrieved using the account-level SCIM API, or using databricks_user, ServicePrincipal or Group data sources with account API (and has to be an account admin). A more sensible approach is to retrieve the list of `principal_id` as outputs from another Pulumi stack.
53
78
  """
54
79
  return pulumi.get(self, "principal_id")
55
80
 
56
81
  @principal_id.setter
57
- def principal_id(self, value: pulumi.Input[_builtins.str]):
82
+ def principal_id(self, value: Optional[pulumi.Input[_builtins.str]]):
58
83
  pulumi.set(self, "principal_id", value)
59
84
 
85
+ @_builtins.property
86
+ @pulumi.getter(name="servicePrincipalName")
87
+ def service_principal_name(self) -> Optional[pulumi.Input[_builtins.str]]:
88
+ """
89
+ the application ID of service principal to assign to a workspace.
90
+ """
91
+ return pulumi.get(self, "service_principal_name")
92
+
93
+ @service_principal_name.setter
94
+ def service_principal_name(self, value: Optional[pulumi.Input[_builtins.str]]):
95
+ pulumi.set(self, "service_principal_name", value)
96
+
97
+ @_builtins.property
98
+ @pulumi.getter(name="userName")
99
+ def user_name(self) -> Optional[pulumi.Input[_builtins.str]]:
100
+ """
101
+ the user name (email) to assign to a workspace.
102
+ """
103
+ return pulumi.get(self, "user_name")
104
+
105
+ @user_name.setter
106
+ def user_name(self, value: Optional[pulumi.Input[_builtins.str]]):
107
+ pulumi.set(self, "user_name", value)
108
+
60
109
 
61
110
  @pulumi.input_type
62
111
  class _PermissionAssignmentState:
63
112
  def __init__(__self__, *,
113
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
114
+ group_name: Optional[pulumi.Input[_builtins.str]] = None,
64
115
  permissions: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
65
- principal_id: Optional[pulumi.Input[_builtins.str]] = None):
116
+ principal_id: Optional[pulumi.Input[_builtins.str]] = None,
117
+ service_principal_name: Optional[pulumi.Input[_builtins.str]] = None,
118
+ user_name: Optional[pulumi.Input[_builtins.str]] = None):
66
119
  """
67
120
  Input properties used for looking up and filtering PermissionAssignment resources.
121
+ :param pulumi.Input[_builtins.str] display_name: the display name of the assigned principal.
122
+ :param pulumi.Input[_builtins.str] group_name: the group name to assign to a workspace.
68
123
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] permissions: The list of workspace permissions to assign to the principal:
69
- * `"USER"` - Can access the workspace with basic privileges.
70
- * `"ADMIN"` - Can access the workspace and has workspace admin privileges to manage users and groups, workspace configurations, and more.
124
+ * `"USER"` - Adds principal to the workspace `users` group. This gives basic workspace access.
125
+ * `"ADMIN"` - Adds principal to the workspace `admins` group. This gives workspace admin privileges to manage users and groups, workspace configurations, and more.
71
126
  :param pulumi.Input[_builtins.str] principal_id: Databricks ID of the user, service principal, or group. The principal ID can be retrieved using the account-level SCIM API, or using databricks_user, ServicePrincipal or Group data sources with account API (and has to be an account admin). A more sensible approach is to retrieve the list of `principal_id` as outputs from another Pulumi stack.
127
+ :param pulumi.Input[_builtins.str] service_principal_name: the application ID of service principal to assign to a workspace.
128
+ :param pulumi.Input[_builtins.str] user_name: the user name (email) to assign to a workspace.
72
129
  """
130
+ if display_name is not None:
131
+ pulumi.set(__self__, "display_name", display_name)
132
+ if group_name is not None:
133
+ pulumi.set(__self__, "group_name", group_name)
73
134
  if permissions is not None:
74
135
  pulumi.set(__self__, "permissions", permissions)
75
136
  if principal_id is not None:
76
137
  pulumi.set(__self__, "principal_id", principal_id)
138
+ if service_principal_name is not None:
139
+ pulumi.set(__self__, "service_principal_name", service_principal_name)
140
+ if user_name is not None:
141
+ pulumi.set(__self__, "user_name", user_name)
142
+
143
+ @_builtins.property
144
+ @pulumi.getter(name="displayName")
145
+ def display_name(self) -> Optional[pulumi.Input[_builtins.str]]:
146
+ """
147
+ the display name of the assigned principal.
148
+ """
149
+ return pulumi.get(self, "display_name")
150
+
151
+ @display_name.setter
152
+ def display_name(self, value: Optional[pulumi.Input[_builtins.str]]):
153
+ pulumi.set(self, "display_name", value)
154
+
155
+ @_builtins.property
156
+ @pulumi.getter(name="groupName")
157
+ def group_name(self) -> Optional[pulumi.Input[_builtins.str]]:
158
+ """
159
+ the group name to assign to a workspace.
160
+ """
161
+ return pulumi.get(self, "group_name")
162
+
163
+ @group_name.setter
164
+ def group_name(self, value: Optional[pulumi.Input[_builtins.str]]):
165
+ pulumi.set(self, "group_name", value)
77
166
 
78
167
  @_builtins.property
79
168
  @pulumi.getter
80
169
  def permissions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
81
170
  """
82
171
  The list of workspace permissions to assign to the principal:
83
- * `"USER"` - Can access the workspace with basic privileges.
84
- * `"ADMIN"` - Can access the workspace and has workspace admin privileges to manage users and groups, workspace configurations, and more.
172
+ * `"USER"` - Adds principal to the workspace `users` group. This gives basic workspace access.
173
+ * `"ADMIN"` - Adds principal to the workspace `admins` group. This gives workspace admin privileges to manage users and groups, workspace configurations, and more.
85
174
  """
86
175
  return pulumi.get(self, "permissions")
87
176
 
@@ -101,6 +190,30 @@ class _PermissionAssignmentState:
101
190
  def principal_id(self, value: Optional[pulumi.Input[_builtins.str]]):
102
191
  pulumi.set(self, "principal_id", value)
103
192
 
193
+ @_builtins.property
194
+ @pulumi.getter(name="servicePrincipalName")
195
+ def service_principal_name(self) -> Optional[pulumi.Input[_builtins.str]]:
196
+ """
197
+ the application ID of service principal to assign to a workspace.
198
+ """
199
+ return pulumi.get(self, "service_principal_name")
200
+
201
+ @service_principal_name.setter
202
+ def service_principal_name(self, value: Optional[pulumi.Input[_builtins.str]]):
203
+ pulumi.set(self, "service_principal_name", value)
204
+
205
+ @_builtins.property
206
+ @pulumi.getter(name="userName")
207
+ def user_name(self) -> Optional[pulumi.Input[_builtins.str]]:
208
+ """
209
+ the user name (email) to assign to a workspace.
210
+ """
211
+ return pulumi.get(self, "user_name")
212
+
213
+ @user_name.setter
214
+ def user_name(self, value: Optional[pulumi.Input[_builtins.str]]):
215
+ pulumi.set(self, "user_name", value)
216
+
104
217
 
105
218
  @pulumi.type_token("databricks:index/permissionAssignment:PermissionAssignment")
106
219
  class PermissionAssignment(pulumi.CustomResource):
@@ -108,16 +221,21 @@ class PermissionAssignment(pulumi.CustomResource):
108
221
  def __init__(__self__,
109
222
  resource_name: str,
110
223
  opts: Optional[pulumi.ResourceOptions] = None,
224
+ group_name: Optional[pulumi.Input[_builtins.str]] = None,
111
225
  permissions: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
112
226
  principal_id: Optional[pulumi.Input[_builtins.str]] = None,
227
+ service_principal_name: Optional[pulumi.Input[_builtins.str]] = None,
228
+ user_name: Optional[pulumi.Input[_builtins.str]] = None,
113
229
  __props__=None):
114
230
  """
115
- This resource is used to assign account-level users, service principals and groups to a Databricks workspace.
231
+ This resource is used to assign account-level users, service principals and groups to a Databricks workspace. To configure additional entitlements such as cluster creation, please use Entitlements
116
232
 
117
233
  > This resource can only be used with a workspace-level provider!
118
234
 
119
235
  ## Example Usage
120
236
 
237
+ ### Assign using `principal_id`
238
+
121
239
  In workspace context, adding account-level user to a workspace:
122
240
 
123
241
  ```python
@@ -160,6 +278,41 @@ class PermissionAssignment(pulumi.CustomResource):
160
278
  pulumi.export("databricksGroupId", workspace_level.id)
161
279
  ```
162
280
 
281
+ ### Assign using `user_name`, `group_name`, or `service_principal_name`
282
+
283
+ In workspace context, adding account-level user to a workspace:
284
+
285
+ ```python
286
+ import pulumi
287
+ import pulumi_databricks as databricks
288
+
289
+ add_user = databricks.PermissionAssignment("add_user",
290
+ user_name="me@example.com",
291
+ permissions=["USER"])
292
+ ```
293
+
294
+ In workspace context, adding account-level service principal to a workspace:
295
+
296
+ ```python
297
+ import pulumi
298
+ import pulumi_databricks as databricks
299
+
300
+ add_admin_spn = databricks.PermissionAssignment("add_admin_spn",
301
+ service_principal_name="00000000-0000-0000-0000-000000000000",
302
+ permissions=["ADMIN"])
303
+ ```
304
+
305
+ In workspace context, adding account-level group to a workspace:
306
+
307
+ ```python
308
+ import pulumi
309
+ import pulumi_databricks as databricks
310
+
311
+ this = databricks.PermissionAssignment("this",
312
+ group_name="example-group",
313
+ permissions=["USER"])
314
+ ```
315
+
163
316
  ## Related Resources
164
317
 
165
318
  The following resources are used in the same context:
@@ -193,10 +346,13 @@ class PermissionAssignment(pulumi.CustomResource):
193
346
 
194
347
  :param str resource_name: The name of the resource.
195
348
  :param pulumi.ResourceOptions opts: Options for the resource.
349
+ :param pulumi.Input[_builtins.str] group_name: the group name to assign to a workspace.
196
350
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] permissions: The list of workspace permissions to assign to the principal:
197
- * `"USER"` - Can access the workspace with basic privileges.
198
- * `"ADMIN"` - Can access the workspace and has workspace admin privileges to manage users and groups, workspace configurations, and more.
351
+ * `"USER"` - Adds principal to the workspace `users` group. This gives basic workspace access.
352
+ * `"ADMIN"` - Adds principal to the workspace `admins` group. This gives workspace admin privileges to manage users and groups, workspace configurations, and more.
199
353
  :param pulumi.Input[_builtins.str] principal_id: Databricks ID of the user, service principal, or group. The principal ID can be retrieved using the account-level SCIM API, or using databricks_user, ServicePrincipal or Group data sources with account API (and has to be an account admin). A more sensible approach is to retrieve the list of `principal_id` as outputs from another Pulumi stack.
354
+ :param pulumi.Input[_builtins.str] service_principal_name: the application ID of service principal to assign to a workspace.
355
+ :param pulumi.Input[_builtins.str] user_name: the user name (email) to assign to a workspace.
200
356
  """
201
357
  ...
202
358
  @overload
@@ -205,12 +361,14 @@ class PermissionAssignment(pulumi.CustomResource):
205
361
  args: PermissionAssignmentArgs,
206
362
  opts: Optional[pulumi.ResourceOptions] = None):
207
363
  """
208
- This resource is used to assign account-level users, service principals and groups to a Databricks workspace.
364
+ This resource is used to assign account-level users, service principals and groups to a Databricks workspace. To configure additional entitlements such as cluster creation, please use Entitlements
209
365
 
210
366
  > This resource can only be used with a workspace-level provider!
211
367
 
212
368
  ## Example Usage
213
369
 
370
+ ### Assign using `principal_id`
371
+
214
372
  In workspace context, adding account-level user to a workspace:
215
373
 
216
374
  ```python
@@ -253,6 +411,41 @@ class PermissionAssignment(pulumi.CustomResource):
253
411
  pulumi.export("databricksGroupId", workspace_level.id)
254
412
  ```
255
413
 
414
+ ### Assign using `user_name`, `group_name`, or `service_principal_name`
415
+
416
+ In workspace context, adding account-level user to a workspace:
417
+
418
+ ```python
419
+ import pulumi
420
+ import pulumi_databricks as databricks
421
+
422
+ add_user = databricks.PermissionAssignment("add_user",
423
+ user_name="me@example.com",
424
+ permissions=["USER"])
425
+ ```
426
+
427
+ In workspace context, adding account-level service principal to a workspace:
428
+
429
+ ```python
430
+ import pulumi
431
+ import pulumi_databricks as databricks
432
+
433
+ add_admin_spn = databricks.PermissionAssignment("add_admin_spn",
434
+ service_principal_name="00000000-0000-0000-0000-000000000000",
435
+ permissions=["ADMIN"])
436
+ ```
437
+
438
+ In workspace context, adding account-level group to a workspace:
439
+
440
+ ```python
441
+ import pulumi
442
+ import pulumi_databricks as databricks
443
+
444
+ this = databricks.PermissionAssignment("this",
445
+ group_name="example-group",
446
+ permissions=["USER"])
447
+ ```
448
+
256
449
  ## Related Resources
257
450
 
258
451
  The following resources are used in the same context:
@@ -299,8 +492,11 @@ class PermissionAssignment(pulumi.CustomResource):
299
492
  def _internal_init(__self__,
300
493
  resource_name: str,
301
494
  opts: Optional[pulumi.ResourceOptions] = None,
495
+ group_name: Optional[pulumi.Input[_builtins.str]] = None,
302
496
  permissions: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
303
497
  principal_id: Optional[pulumi.Input[_builtins.str]] = None,
498
+ service_principal_name: Optional[pulumi.Input[_builtins.str]] = None,
499
+ user_name: Optional[pulumi.Input[_builtins.str]] = None,
304
500
  __props__=None):
305
501
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
306
502
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -310,12 +506,14 @@ class PermissionAssignment(pulumi.CustomResource):
310
506
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
311
507
  __props__ = PermissionAssignmentArgs.__new__(PermissionAssignmentArgs)
312
508
 
509
+ __props__.__dict__["group_name"] = group_name
313
510
  if permissions is None and not opts.urn:
314
511
  raise TypeError("Missing required property 'permissions'")
315
512
  __props__.__dict__["permissions"] = permissions
316
- if principal_id is None and not opts.urn:
317
- raise TypeError("Missing required property 'principal_id'")
318
513
  __props__.__dict__["principal_id"] = principal_id
514
+ __props__.__dict__["service_principal_name"] = service_principal_name
515
+ __props__.__dict__["user_name"] = user_name
516
+ __props__.__dict__["display_name"] = None
319
517
  super(PermissionAssignment, __self__).__init__(
320
518
  'databricks:index/permissionAssignment:PermissionAssignment',
321
519
  resource_name,
@@ -326,8 +524,12 @@ class PermissionAssignment(pulumi.CustomResource):
326
524
  def get(resource_name: str,
327
525
  id: pulumi.Input[str],
328
526
  opts: Optional[pulumi.ResourceOptions] = None,
527
+ display_name: Optional[pulumi.Input[_builtins.str]] = None,
528
+ group_name: Optional[pulumi.Input[_builtins.str]] = None,
329
529
  permissions: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
330
- principal_id: Optional[pulumi.Input[_builtins.str]] = None) -> 'PermissionAssignment':
530
+ principal_id: Optional[pulumi.Input[_builtins.str]] = None,
531
+ service_principal_name: Optional[pulumi.Input[_builtins.str]] = None,
532
+ user_name: Optional[pulumi.Input[_builtins.str]] = None) -> 'PermissionAssignment':
331
533
  """
332
534
  Get an existing PermissionAssignment resource's state with the given name, id, and optional extra
333
535
  properties used to qualify the lookup.
@@ -335,26 +537,50 @@ class PermissionAssignment(pulumi.CustomResource):
335
537
  :param str resource_name: The unique name of the resulting resource.
336
538
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
337
539
  :param pulumi.ResourceOptions opts: Options for the resource.
540
+ :param pulumi.Input[_builtins.str] display_name: the display name of the assigned principal.
541
+ :param pulumi.Input[_builtins.str] group_name: the group name to assign to a workspace.
338
542
  :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] permissions: The list of workspace permissions to assign to the principal:
339
- * `"USER"` - Can access the workspace with basic privileges.
340
- * `"ADMIN"` - Can access the workspace and has workspace admin privileges to manage users and groups, workspace configurations, and more.
543
+ * `"USER"` - Adds principal to the workspace `users` group. This gives basic workspace access.
544
+ * `"ADMIN"` - Adds principal to the workspace `admins` group. This gives workspace admin privileges to manage users and groups, workspace configurations, and more.
341
545
  :param pulumi.Input[_builtins.str] principal_id: Databricks ID of the user, service principal, or group. The principal ID can be retrieved using the account-level SCIM API, or using databricks_user, ServicePrincipal or Group data sources with account API (and has to be an account admin). A more sensible approach is to retrieve the list of `principal_id` as outputs from another Pulumi stack.
546
+ :param pulumi.Input[_builtins.str] service_principal_name: the application ID of service principal to assign to a workspace.
547
+ :param pulumi.Input[_builtins.str] user_name: the user name (email) to assign to a workspace.
342
548
  """
343
549
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
344
550
 
345
551
  __props__ = _PermissionAssignmentState.__new__(_PermissionAssignmentState)
346
552
 
553
+ __props__.__dict__["display_name"] = display_name
554
+ __props__.__dict__["group_name"] = group_name
347
555
  __props__.__dict__["permissions"] = permissions
348
556
  __props__.__dict__["principal_id"] = principal_id
557
+ __props__.__dict__["service_principal_name"] = service_principal_name
558
+ __props__.__dict__["user_name"] = user_name
349
559
  return PermissionAssignment(resource_name, opts=opts, __props__=__props__)
350
560
 
561
+ @_builtins.property
562
+ @pulumi.getter(name="displayName")
563
+ def display_name(self) -> pulumi.Output[_builtins.str]:
564
+ """
565
+ the display name of the assigned principal.
566
+ """
567
+ return pulumi.get(self, "display_name")
568
+
569
+ @_builtins.property
570
+ @pulumi.getter(name="groupName")
571
+ def group_name(self) -> pulumi.Output[_builtins.str]:
572
+ """
573
+ the group name to assign to a workspace.
574
+ """
575
+ return pulumi.get(self, "group_name")
576
+
351
577
  @_builtins.property
352
578
  @pulumi.getter
353
579
  def permissions(self) -> pulumi.Output[Sequence[_builtins.str]]:
354
580
  """
355
581
  The list of workspace permissions to assign to the principal:
356
- * `"USER"` - Can access the workspace with basic privileges.
357
- * `"ADMIN"` - Can access the workspace and has workspace admin privileges to manage users and groups, workspace configurations, and more.
582
+ * `"USER"` - Adds principal to the workspace `users` group. This gives basic workspace access.
583
+ * `"ADMIN"` - Adds principal to the workspace `admins` group. This gives workspace admin privileges to manage users and groups, workspace configurations, and more.
358
584
  """
359
585
  return pulumi.get(self, "permissions")
360
586
 
@@ -366,3 +592,19 @@ class PermissionAssignment(pulumi.CustomResource):
366
592
  """
367
593
  return pulumi.get(self, "principal_id")
368
594
 
595
+ @_builtins.property
596
+ @pulumi.getter(name="servicePrincipalName")
597
+ def service_principal_name(self) -> pulumi.Output[_builtins.str]:
598
+ """
599
+ the application ID of service principal to assign to a workspace.
600
+ """
601
+ return pulumi.get(self, "service_principal_name")
602
+
603
+ @_builtins.property
604
+ @pulumi.getter(name="userName")
605
+ def user_name(self) -> pulumi.Output[_builtins.str]:
606
+ """
607
+ the user name (email) to assign to a workspace.
608
+ """
609
+ return pulumi.get(self, "user_name")
610
+
@@ -58,7 +58,8 @@ class PipelineArgs:
58
58
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
59
59
  target: Optional[pulumi.Input[_builtins.str]] = None,
60
60
  trigger: Optional[pulumi.Input['PipelineTriggerArgs']] = None,
61
- url: Optional[pulumi.Input[_builtins.str]] = None):
61
+ url: Optional[pulumi.Input[_builtins.str]] = None,
62
+ usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None):
62
63
  """
63
64
  The set of arguments for constructing a Pipeline resource.
64
65
  :param pulumi.Input[_builtins.bool] allow_duplicate_names: Optional boolean flag. If false, deployment will fail if name conflicts with that of another pipeline. default is `false`.
@@ -161,6 +162,8 @@ class PipelineArgs:
161
162
  pulumi.set(__self__, "trigger", trigger)
162
163
  if url is not None:
163
164
  pulumi.set(__self__, "url", url)
165
+ if usage_policy_id is not None:
166
+ pulumi.set(__self__, "usage_policy_id", usage_policy_id)
164
167
 
165
168
  @_builtins.property
166
169
  @pulumi.getter(name="allowDuplicateNames")
@@ -573,6 +576,15 @@ class PipelineArgs:
573
576
  def url(self, value: Optional[pulumi.Input[_builtins.str]]):
574
577
  pulumi.set(self, "url", value)
575
578
 
579
+ @_builtins.property
580
+ @pulumi.getter(name="usagePolicyId")
581
+ def usage_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
582
+ return pulumi.get(self, "usage_policy_id")
583
+
584
+ @usage_policy_id.setter
585
+ def usage_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
586
+ pulumi.set(self, "usage_policy_id", value)
587
+
576
588
 
577
589
  @pulumi.input_type
578
590
  class _PipelineState:
@@ -614,7 +626,8 @@ class _PipelineState:
614
626
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
615
627
  target: Optional[pulumi.Input[_builtins.str]] = None,
616
628
  trigger: Optional[pulumi.Input['PipelineTriggerArgs']] = None,
617
- url: Optional[pulumi.Input[_builtins.str]] = None):
629
+ url: Optional[pulumi.Input[_builtins.str]] = None,
630
+ usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None):
618
631
  """
619
632
  Input properties used for looking up and filtering Pipeline resources.
620
633
  :param pulumi.Input[_builtins.bool] allow_duplicate_names: Optional boolean flag. If false, deployment will fail if name conflicts with that of another pipeline. default is `false`.
@@ -717,6 +730,8 @@ class _PipelineState:
717
730
  pulumi.set(__self__, "trigger", trigger)
718
731
  if url is not None:
719
732
  pulumi.set(__self__, "url", url)
733
+ if usage_policy_id is not None:
734
+ pulumi.set(__self__, "usage_policy_id", usage_policy_id)
720
735
 
721
736
  @_builtins.property
722
737
  @pulumi.getter(name="allowDuplicateNames")
@@ -1129,6 +1144,15 @@ class _PipelineState:
1129
1144
  def url(self, value: Optional[pulumi.Input[_builtins.str]]):
1130
1145
  pulumi.set(self, "url", value)
1131
1146
 
1147
+ @_builtins.property
1148
+ @pulumi.getter(name="usagePolicyId")
1149
+ def usage_policy_id(self) -> Optional[pulumi.Input[_builtins.str]]:
1150
+ return pulumi.get(self, "usage_policy_id")
1151
+
1152
+ @usage_policy_id.setter
1153
+ def usage_policy_id(self, value: Optional[pulumi.Input[_builtins.str]]):
1154
+ pulumi.set(self, "usage_policy_id", value)
1155
+
1132
1156
 
1133
1157
  @pulumi.type_token("databricks:index/pipeline:Pipeline")
1134
1158
  class Pipeline(pulumi.CustomResource):
@@ -1174,6 +1198,7 @@ class Pipeline(pulumi.CustomResource):
1174
1198
  target: Optional[pulumi.Input[_builtins.str]] = None,
1175
1199
  trigger: Optional[pulumi.Input[Union['PipelineTriggerArgs', 'PipelineTriggerArgsDict']]] = None,
1176
1200
  url: Optional[pulumi.Input[_builtins.str]] = None,
1201
+ usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
1177
1202
  __props__=None):
1178
1203
  """
1179
1204
  Use `Pipeline` to deploy [Lakeflow Declarative Pipelines](https://docs.databricks.com/aws/en/dlt).
@@ -1462,6 +1487,7 @@ class Pipeline(pulumi.CustomResource):
1462
1487
  target: Optional[pulumi.Input[_builtins.str]] = None,
1463
1488
  trigger: Optional[pulumi.Input[Union['PipelineTriggerArgs', 'PipelineTriggerArgsDict']]] = None,
1464
1489
  url: Optional[pulumi.Input[_builtins.str]] = None,
1490
+ usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None,
1465
1491
  __props__=None):
1466
1492
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
1467
1493
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -1509,6 +1535,7 @@ class Pipeline(pulumi.CustomResource):
1509
1535
  __props__.__dict__["target"] = target
1510
1536
  __props__.__dict__["trigger"] = trigger
1511
1537
  __props__.__dict__["url"] = url
1538
+ __props__.__dict__["usage_policy_id"] = usage_policy_id
1512
1539
  super(Pipeline, __self__).__init__(
1513
1540
  'databricks:index/pipeline:Pipeline',
1514
1541
  resource_name,
@@ -1556,7 +1583,8 @@ class Pipeline(pulumi.CustomResource):
1556
1583
  tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1557
1584
  target: Optional[pulumi.Input[_builtins.str]] = None,
1558
1585
  trigger: Optional[pulumi.Input[Union['PipelineTriggerArgs', 'PipelineTriggerArgsDict']]] = None,
1559
- url: Optional[pulumi.Input[_builtins.str]] = None) -> 'Pipeline':
1586
+ url: Optional[pulumi.Input[_builtins.str]] = None,
1587
+ usage_policy_id: Optional[pulumi.Input[_builtins.str]] = None) -> 'Pipeline':
1560
1588
  """
1561
1589
  Get an existing Pipeline resource's state with the given name, id, and optional extra
1562
1590
  properties used to qualify the lookup.
@@ -1630,6 +1658,7 @@ class Pipeline(pulumi.CustomResource):
1630
1658
  __props__.__dict__["target"] = target
1631
1659
  __props__.__dict__["trigger"] = trigger
1632
1660
  __props__.__dict__["url"] = url
1661
+ __props__.__dict__["usage_policy_id"] = usage_policy_id
1633
1662
  return Pipeline(resource_name, opts=opts, __props__=__props__)
1634
1663
 
1635
1664
  @_builtins.property
@@ -1891,3 +1920,8 @@ class Pipeline(pulumi.CustomResource):
1891
1920
  """
1892
1921
  return pulumi.get(self, "url")
1893
1922
 
1923
+ @_builtins.property
1924
+ @pulumi.getter(name="usagePolicyId")
1925
+ def usage_policy_id(self) -> pulumi.Output[Optional[_builtins.str]]:
1926
+ return pulumi.get(self, "usage_policy_id")
1927
+