databricks-sdk 0.40.0__py3-none-any.whl → 0.41.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.
Potentially problematic release.
This version of databricks-sdk might be problematic. Click here for more details.
- databricks/sdk/__init__.py +23 -3
- databricks/sdk/_base_client.py +16 -3
- databricks/sdk/config.py +5 -0
- databricks/sdk/credentials_provider.py +23 -14
- databricks/sdk/data_plane.py +1 -1
- databricks/sdk/mixins/files.py +184 -1
- databricks/sdk/mixins/open_ai_client.py +40 -1
- databricks/sdk/service/apps.py +12 -4
- databricks/sdk/service/catalog.py +1 -0
- databricks/sdk/service/cleanrooms.py +2 -1
- databricks/sdk/service/compute.py +4 -0
- databricks/sdk/service/dashboards.py +7 -4
- databricks/sdk/service/files.py +6 -3
- databricks/sdk/service/iam.py +158 -0
- databricks/sdk/service/jobs.py +168 -16
- databricks/sdk/service/oauth2.py +53 -45
- databricks/sdk/service/pipelines.py +89 -12
- databricks/sdk/service/serving.py +423 -215
- databricks/sdk/service/sharing.py +51 -54
- databricks/sdk/version.py +1 -1
- {databricks_sdk-0.40.0.dist-info → databricks_sdk-0.41.0.dist-info}/METADATA +26 -26
- {databricks_sdk-0.40.0.dist-info → databricks_sdk-0.41.0.dist-info}/RECORD +26 -26
- {databricks_sdk-0.40.0.dist-info → databricks_sdk-0.41.0.dist-info}/WHEEL +1 -1
- {databricks_sdk-0.40.0.dist-info → databricks_sdk-0.41.0.dist-info}/LICENSE +0 -0
- {databricks_sdk-0.40.0.dist-info → databricks_sdk-0.41.0.dist-info}/NOTICE +0 -0
- {databricks_sdk-0.40.0.dist-info → databricks_sdk-0.41.0.dist-info}/top_level.txt +0 -0
databricks/sdk/service/oauth2.py
CHANGED
|
@@ -202,35 +202,6 @@ class CreateServicePrincipalSecretResponse:
|
|
|
202
202
|
update_time=d.get('update_time', None))
|
|
203
203
|
|
|
204
204
|
|
|
205
|
-
@dataclass
|
|
206
|
-
class DataPlaneInfo:
|
|
207
|
-
authorization_details: Optional[str] = None
|
|
208
|
-
"""Authorization details as a string."""
|
|
209
|
-
|
|
210
|
-
endpoint_url: Optional[str] = None
|
|
211
|
-
"""The URL of the endpoint for this operation in the dataplane."""
|
|
212
|
-
|
|
213
|
-
def as_dict(self) -> dict:
|
|
214
|
-
"""Serializes the DataPlaneInfo into a dictionary suitable for use as a JSON request body."""
|
|
215
|
-
body = {}
|
|
216
|
-
if self.authorization_details is not None: body['authorization_details'] = self.authorization_details
|
|
217
|
-
if self.endpoint_url is not None: body['endpoint_url'] = self.endpoint_url
|
|
218
|
-
return body
|
|
219
|
-
|
|
220
|
-
def as_shallow_dict(self) -> dict:
|
|
221
|
-
"""Serializes the DataPlaneInfo into a shallow dictionary of its immediate attributes."""
|
|
222
|
-
body = {}
|
|
223
|
-
if self.authorization_details is not None: body['authorization_details'] = self.authorization_details
|
|
224
|
-
if self.endpoint_url is not None: body['endpoint_url'] = self.endpoint_url
|
|
225
|
-
return body
|
|
226
|
-
|
|
227
|
-
@classmethod
|
|
228
|
-
def from_dict(cls, d: Dict[str, any]) -> DataPlaneInfo:
|
|
229
|
-
"""Deserializes the DataPlaneInfo from a dictionary."""
|
|
230
|
-
return cls(authorization_details=d.get('authorization_details', None),
|
|
231
|
-
endpoint_url=d.get('endpoint_url', None))
|
|
232
|
-
|
|
233
|
-
|
|
234
205
|
@dataclass
|
|
235
206
|
class DeleteCustomAppIntegrationOutput:
|
|
236
207
|
|
|
@@ -297,8 +268,13 @@ class FederationPolicy:
|
|
|
297
268
|
"""Description of the federation policy."""
|
|
298
269
|
|
|
299
270
|
name: Optional[str] = None
|
|
300
|
-
"""
|
|
301
|
-
|
|
271
|
+
"""Resource name for the federation policy. Example values include
|
|
272
|
+
`accounts/<account-id>/federationPolicies/my-federation-policy` for Account Federation Policies,
|
|
273
|
+
and
|
|
274
|
+
`accounts/<account-id>/servicePrincipals/<service-principal-id>/federationPolicies/my-federation-policy`
|
|
275
|
+
for Service Principal Federation Policies. Typically an output parameter, which does not need to
|
|
276
|
+
be specified in create or update requests. If specified in a request, must match the value in
|
|
277
|
+
the request URL."""
|
|
302
278
|
|
|
303
279
|
oidc_policy: Optional[OidcFederationPolicy] = None
|
|
304
280
|
"""Specifies the policy to use for validating OIDC claims in your federated tokens."""
|
|
@@ -815,6 +791,10 @@ class UpdateCustomAppIntegration:
|
|
|
815
791
|
redirect_urls: Optional[List[str]] = None
|
|
816
792
|
"""List of OAuth redirect urls to be updated in the custom OAuth app integration"""
|
|
817
793
|
|
|
794
|
+
scopes: Optional[List[str]] = None
|
|
795
|
+
"""List of OAuth scopes to be updated in the custom OAuth app integration, similar to redirect URIs
|
|
796
|
+
this will fully replace the existing values instead of appending"""
|
|
797
|
+
|
|
818
798
|
token_access_policy: Optional[TokenAccessPolicy] = None
|
|
819
799
|
"""Token access policy to be updated in the custom OAuth app integration"""
|
|
820
800
|
|
|
@@ -823,6 +803,7 @@ class UpdateCustomAppIntegration:
|
|
|
823
803
|
body = {}
|
|
824
804
|
if self.integration_id is not None: body['integration_id'] = self.integration_id
|
|
825
805
|
if self.redirect_urls: body['redirect_urls'] = [v for v in self.redirect_urls]
|
|
806
|
+
if self.scopes: body['scopes'] = [v for v in self.scopes]
|
|
826
807
|
if self.token_access_policy: body['token_access_policy'] = self.token_access_policy.as_dict()
|
|
827
808
|
return body
|
|
828
809
|
|
|
@@ -831,6 +812,7 @@ class UpdateCustomAppIntegration:
|
|
|
831
812
|
body = {}
|
|
832
813
|
if self.integration_id is not None: body['integration_id'] = self.integration_id
|
|
833
814
|
if self.redirect_urls: body['redirect_urls'] = self.redirect_urls
|
|
815
|
+
if self.scopes: body['scopes'] = self.scopes
|
|
834
816
|
if self.token_access_policy: body['token_access_policy'] = self.token_access_policy
|
|
835
817
|
return body
|
|
836
818
|
|
|
@@ -839,6 +821,7 @@ class UpdateCustomAppIntegration:
|
|
|
839
821
|
"""Deserializes the UpdateCustomAppIntegration from a dictionary."""
|
|
840
822
|
return cls(integration_id=d.get('integration_id', None),
|
|
841
823
|
redirect_urls=d.get('redirect_urls', None),
|
|
824
|
+
scopes=d.get('scopes', None),
|
|
842
825
|
token_access_policy=_from_dict(d, 'token_access_policy', TokenAccessPolicy))
|
|
843
826
|
|
|
844
827
|
|
|
@@ -961,11 +944,14 @@ class AccountFederationPolicyAPI:
|
|
|
961
944
|
|
|
962
945
|
:param policy: :class:`FederationPolicy` (optional)
|
|
963
946
|
:param policy_id: str (optional)
|
|
964
|
-
The identifier for the federation policy.
|
|
947
|
+
The identifier for the federation policy. The identifier must contain only lowercase alphanumeric
|
|
948
|
+
characters, numbers, hyphens, and slashes. If unspecified, the id will be assigned by Databricks.
|
|
965
949
|
|
|
966
950
|
:returns: :class:`FederationPolicy`
|
|
967
951
|
"""
|
|
968
952
|
body = policy.as_dict()
|
|
953
|
+
query = {}
|
|
954
|
+
if policy_id is not None: query['policy_id'] = policy_id
|
|
969
955
|
headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
|
|
970
956
|
|
|
971
957
|
res = self._api.do('POST',
|
|
@@ -979,6 +965,7 @@ class AccountFederationPolicyAPI:
|
|
|
979
965
|
"""Delete account federation policy.
|
|
980
966
|
|
|
981
967
|
:param policy_id: str
|
|
968
|
+
The identifier for the federation policy.
|
|
982
969
|
|
|
983
970
|
|
|
984
971
|
"""
|
|
@@ -993,6 +980,7 @@ class AccountFederationPolicyAPI:
|
|
|
993
980
|
"""Get account federation policy.
|
|
994
981
|
|
|
995
982
|
:param policy_id: str
|
|
983
|
+
The identifier for the federation policy.
|
|
996
984
|
|
|
997
985
|
:returns: :class:`FederationPolicy`
|
|
998
986
|
"""
|
|
@@ -1035,21 +1023,26 @@ class AccountFederationPolicyAPI:
|
|
|
1035
1023
|
|
|
1036
1024
|
def update(self,
|
|
1037
1025
|
policy_id: str,
|
|
1038
|
-
update_mask: str,
|
|
1039
1026
|
*,
|
|
1040
|
-
policy: Optional[FederationPolicy] = None
|
|
1027
|
+
policy: Optional[FederationPolicy] = None,
|
|
1028
|
+
update_mask: Optional[str] = None) -> FederationPolicy:
|
|
1041
1029
|
"""Update account federation policy.
|
|
1042
1030
|
|
|
1043
1031
|
:param policy_id: str
|
|
1044
|
-
|
|
1045
|
-
Field mask is required to be passed into the PATCH request. Field mask specifies which fields of the
|
|
1046
|
-
setting payload will be updated. The field mask needs to be supplied as single string. To specify
|
|
1047
|
-
multiple fields in the field mask, use comma as the separator (no space).
|
|
1032
|
+
The identifier for the federation policy.
|
|
1048
1033
|
:param policy: :class:`FederationPolicy` (optional)
|
|
1034
|
+
:param update_mask: str (optional)
|
|
1035
|
+
The field mask specifies which fields of the policy to update. To specify multiple fields in the
|
|
1036
|
+
field mask, use comma as the separator (no space). The special value '*' indicates that all fields
|
|
1037
|
+
should be updated (full replacement). If unspecified, all fields that are set in the policy provided
|
|
1038
|
+
in the update request will overwrite the corresponding fields in the existing policy. Example value:
|
|
1039
|
+
'description,oidc_policy.audiences'.
|
|
1049
1040
|
|
|
1050
1041
|
:returns: :class:`FederationPolicy`
|
|
1051
1042
|
"""
|
|
1052
1043
|
body = policy.as_dict()
|
|
1044
|
+
query = {}
|
|
1045
|
+
if update_mask is not None: query['update_mask'] = update_mask
|
|
1053
1046
|
headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
|
|
1054
1047
|
|
|
1055
1048
|
res = self._api.do('PATCH',
|
|
@@ -1183,6 +1176,7 @@ class CustomAppIntegrationAPI:
|
|
|
1183
1176
|
integration_id: str,
|
|
1184
1177
|
*,
|
|
1185
1178
|
redirect_urls: Optional[List[str]] = None,
|
|
1179
|
+
scopes: Optional[List[str]] = None,
|
|
1186
1180
|
token_access_policy: Optional[TokenAccessPolicy] = None):
|
|
1187
1181
|
"""Updates Custom OAuth App Integration.
|
|
1188
1182
|
|
|
@@ -1192,6 +1186,9 @@ class CustomAppIntegrationAPI:
|
|
|
1192
1186
|
:param integration_id: str
|
|
1193
1187
|
:param redirect_urls: List[str] (optional)
|
|
1194
1188
|
List of OAuth redirect urls to be updated in the custom OAuth app integration
|
|
1189
|
+
:param scopes: List[str] (optional)
|
|
1190
|
+
List of OAuth scopes to be updated in the custom OAuth app integration, similar to redirect URIs
|
|
1191
|
+
this will fully replace the existing values instead of appending
|
|
1195
1192
|
:param token_access_policy: :class:`TokenAccessPolicy` (optional)
|
|
1196
1193
|
Token access policy to be updated in the custom OAuth app integration
|
|
1197
1194
|
|
|
@@ -1199,6 +1196,7 @@ class CustomAppIntegrationAPI:
|
|
|
1199
1196
|
"""
|
|
1200
1197
|
body = {}
|
|
1201
1198
|
if redirect_urls is not None: body['redirect_urls'] = [v for v in redirect_urls]
|
|
1199
|
+
if scopes is not None: body['scopes'] = [v for v in scopes]
|
|
1202
1200
|
if token_access_policy is not None: body['token_access_policy'] = token_access_policy.as_dict()
|
|
1203
1201
|
headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
|
|
1204
1202
|
|
|
@@ -1433,11 +1431,14 @@ class ServicePrincipalFederationPolicyAPI:
|
|
|
1433
1431
|
The service principal id for the federation policy.
|
|
1434
1432
|
:param policy: :class:`FederationPolicy` (optional)
|
|
1435
1433
|
:param policy_id: str (optional)
|
|
1436
|
-
The identifier for the federation policy.
|
|
1434
|
+
The identifier for the federation policy. The identifier must contain only lowercase alphanumeric
|
|
1435
|
+
characters, numbers, hyphens, and slashes. If unspecified, the id will be assigned by Databricks.
|
|
1437
1436
|
|
|
1438
1437
|
:returns: :class:`FederationPolicy`
|
|
1439
1438
|
"""
|
|
1440
1439
|
body = policy.as_dict()
|
|
1440
|
+
query = {}
|
|
1441
|
+
if policy_id is not None: query['policy_id'] = policy_id
|
|
1441
1442
|
headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
|
|
1442
1443
|
|
|
1443
1444
|
res = self._api.do(
|
|
@@ -1454,6 +1455,7 @@ class ServicePrincipalFederationPolicyAPI:
|
|
|
1454
1455
|
:param service_principal_id: int
|
|
1455
1456
|
The service principal id for the federation policy.
|
|
1456
1457
|
:param policy_id: str
|
|
1458
|
+
The identifier for the federation policy.
|
|
1457
1459
|
|
|
1458
1460
|
|
|
1459
1461
|
"""
|
|
@@ -1471,6 +1473,7 @@ class ServicePrincipalFederationPolicyAPI:
|
|
|
1471
1473
|
:param service_principal_id: int
|
|
1472
1474
|
The service principal id for the federation policy.
|
|
1473
1475
|
:param policy_id: str
|
|
1476
|
+
The identifier for the federation policy.
|
|
1474
1477
|
|
|
1475
1478
|
:returns: :class:`FederationPolicy`
|
|
1476
1479
|
"""
|
|
@@ -1519,23 +1522,28 @@ class ServicePrincipalFederationPolicyAPI:
|
|
|
1519
1522
|
def update(self,
|
|
1520
1523
|
service_principal_id: int,
|
|
1521
1524
|
policy_id: str,
|
|
1522
|
-
update_mask: str,
|
|
1523
1525
|
*,
|
|
1524
|
-
policy: Optional[FederationPolicy] = None
|
|
1526
|
+
policy: Optional[FederationPolicy] = None,
|
|
1527
|
+
update_mask: Optional[str] = None) -> FederationPolicy:
|
|
1525
1528
|
"""Update service principal federation policy.
|
|
1526
1529
|
|
|
1527
1530
|
:param service_principal_id: int
|
|
1528
1531
|
The service principal id for the federation policy.
|
|
1529
1532
|
:param policy_id: str
|
|
1530
|
-
|
|
1531
|
-
Field mask is required to be passed into the PATCH request. Field mask specifies which fields of the
|
|
1532
|
-
setting payload will be updated. The field mask needs to be supplied as single string. To specify
|
|
1533
|
-
multiple fields in the field mask, use comma as the separator (no space).
|
|
1533
|
+
The identifier for the federation policy.
|
|
1534
1534
|
:param policy: :class:`FederationPolicy` (optional)
|
|
1535
|
+
:param update_mask: str (optional)
|
|
1536
|
+
The field mask specifies which fields of the policy to update. To specify multiple fields in the
|
|
1537
|
+
field mask, use comma as the separator (no space). The special value '*' indicates that all fields
|
|
1538
|
+
should be updated (full replacement). If unspecified, all fields that are set in the policy provided
|
|
1539
|
+
in the update request will overwrite the corresponding fields in the existing policy. Example value:
|
|
1540
|
+
'description,oidc_policy.audiences'.
|
|
1535
1541
|
|
|
1536
1542
|
:returns: :class:`FederationPolicy`
|
|
1537
1543
|
"""
|
|
1538
1544
|
body = policy.as_dict()
|
|
1545
|
+
query = {}
|
|
1546
|
+
if update_mask is not None: query['update_mask'] = update_mask
|
|
1539
1547
|
headers = {'Accept': 'application/json', 'Content-Type': 'application/json', }
|
|
1540
1548
|
|
|
1541
1549
|
res = self._api.do(
|
|
@@ -85,6 +85,14 @@ class CreatePipeline:
|
|
|
85
85
|
restart_window: Optional[RestartWindow] = None
|
|
86
86
|
"""Restart window of this pipeline."""
|
|
87
87
|
|
|
88
|
+
run_as: Optional[RunAs] = None
|
|
89
|
+
"""Write-only setting, available only in Create/Update calls. Specifies the user or service
|
|
90
|
+
principal that the pipeline runs as. If not specified, the pipeline runs as the user who created
|
|
91
|
+
the pipeline.
|
|
92
|
+
|
|
93
|
+
Only `user_name` or `service_principal_name` can be specified. If both are specified, an error
|
|
94
|
+
is thrown."""
|
|
95
|
+
|
|
88
96
|
schema: Optional[str] = None
|
|
89
97
|
"""The default schema (database) where tables are read from or published to. The presence of this
|
|
90
98
|
field implies that the pipeline is in direct publishing mode."""
|
|
@@ -126,6 +134,7 @@ class CreatePipeline:
|
|
|
126
134
|
if self.notifications: body['notifications'] = [v.as_dict() for v in self.notifications]
|
|
127
135
|
if self.photon is not None: body['photon'] = self.photon
|
|
128
136
|
if self.restart_window: body['restart_window'] = self.restart_window.as_dict()
|
|
137
|
+
if self.run_as: body['run_as'] = self.run_as.as_dict()
|
|
129
138
|
if self.schema is not None: body['schema'] = self.schema
|
|
130
139
|
if self.serverless is not None: body['serverless'] = self.serverless
|
|
131
140
|
if self.storage is not None: body['storage'] = self.storage
|
|
@@ -156,6 +165,7 @@ class CreatePipeline:
|
|
|
156
165
|
if self.notifications: body['notifications'] = self.notifications
|
|
157
166
|
if self.photon is not None: body['photon'] = self.photon
|
|
158
167
|
if self.restart_window: body['restart_window'] = self.restart_window
|
|
168
|
+
if self.run_as: body['run_as'] = self.run_as
|
|
159
169
|
if self.schema is not None: body['schema'] = self.schema
|
|
160
170
|
if self.serverless is not None: body['serverless'] = self.serverless
|
|
161
171
|
if self.storage is not None: body['storage'] = self.storage
|
|
@@ -186,6 +196,7 @@ class CreatePipeline:
|
|
|
186
196
|
notifications=_repeated_dict(d, 'notifications', Notifications),
|
|
187
197
|
photon=d.get('photon', None),
|
|
188
198
|
restart_window=_from_dict(d, 'restart_window', RestartWindow),
|
|
199
|
+
run_as=_from_dict(d, 'run_as', RunAs),
|
|
189
200
|
schema=d.get('schema', None),
|
|
190
201
|
serverless=d.get('serverless', None),
|
|
191
202
|
storage=d.get('storage', None),
|
|
@@ -277,6 +288,19 @@ class DataPlaneId:
|
|
|
277
288
|
return cls(instance=d.get('instance', None), seq_no=d.get('seq_no', None))
|
|
278
289
|
|
|
279
290
|
|
|
291
|
+
class DayOfWeek(Enum):
|
|
292
|
+
"""Days of week in which the restart is allowed to happen (within a five-hour window starting at
|
|
293
|
+
start_hour). If not specified all days of the week will be used."""
|
|
294
|
+
|
|
295
|
+
FRIDAY = 'FRIDAY'
|
|
296
|
+
MONDAY = 'MONDAY'
|
|
297
|
+
SATURDAY = 'SATURDAY'
|
|
298
|
+
SUNDAY = 'SUNDAY'
|
|
299
|
+
THURSDAY = 'THURSDAY'
|
|
300
|
+
TUESDAY = 'TUESDAY'
|
|
301
|
+
WEDNESDAY = 'WEDNESDAY'
|
|
302
|
+
|
|
303
|
+
|
|
280
304
|
@dataclass
|
|
281
305
|
class DeletePipelineResponse:
|
|
282
306
|
|
|
@@ -373,6 +397,14 @@ class EditPipeline:
|
|
|
373
397
|
restart_window: Optional[RestartWindow] = None
|
|
374
398
|
"""Restart window of this pipeline."""
|
|
375
399
|
|
|
400
|
+
run_as: Optional[RunAs] = None
|
|
401
|
+
"""Write-only setting, available only in Create/Update calls. Specifies the user or service
|
|
402
|
+
principal that the pipeline runs as. If not specified, the pipeline runs as the user who created
|
|
403
|
+
the pipeline.
|
|
404
|
+
|
|
405
|
+
Only `user_name` or `service_principal_name` can be specified. If both are specified, an error
|
|
406
|
+
is thrown."""
|
|
407
|
+
|
|
376
408
|
schema: Optional[str] = None
|
|
377
409
|
"""The default schema (database) where tables are read from or published to. The presence of this
|
|
378
410
|
field implies that the pipeline is in direct publishing mode."""
|
|
@@ -416,6 +448,7 @@ class EditPipeline:
|
|
|
416
448
|
if self.photon is not None: body['photon'] = self.photon
|
|
417
449
|
if self.pipeline_id is not None: body['pipeline_id'] = self.pipeline_id
|
|
418
450
|
if self.restart_window: body['restart_window'] = self.restart_window.as_dict()
|
|
451
|
+
if self.run_as: body['run_as'] = self.run_as.as_dict()
|
|
419
452
|
if self.schema is not None: body['schema'] = self.schema
|
|
420
453
|
if self.serverless is not None: body['serverless'] = self.serverless
|
|
421
454
|
if self.storage is not None: body['storage'] = self.storage
|
|
@@ -448,6 +481,7 @@ class EditPipeline:
|
|
|
448
481
|
if self.photon is not None: body['photon'] = self.photon
|
|
449
482
|
if self.pipeline_id is not None: body['pipeline_id'] = self.pipeline_id
|
|
450
483
|
if self.restart_window: body['restart_window'] = self.restart_window
|
|
484
|
+
if self.run_as: body['run_as'] = self.run_as
|
|
451
485
|
if self.schema is not None: body['schema'] = self.schema
|
|
452
486
|
if self.serverless is not None: body['serverless'] = self.serverless
|
|
453
487
|
if self.storage is not None: body['storage'] = self.storage
|
|
@@ -479,6 +513,7 @@ class EditPipeline:
|
|
|
479
513
|
photon=d.get('photon', None),
|
|
480
514
|
pipeline_id=d.get('pipeline_id', None),
|
|
481
515
|
restart_window=_from_dict(d, 'restart_window', RestartWindow),
|
|
516
|
+
run_as=_from_dict(d, 'run_as', RunAs),
|
|
482
517
|
schema=d.get('schema', None),
|
|
483
518
|
serverless=d.get('serverless', None),
|
|
484
519
|
storage=d.get('storage', None),
|
|
@@ -2105,7 +2140,7 @@ class RestartWindow:
|
|
|
2105
2140
|
"""An integer between 0 and 23 denoting the start hour for the restart window in the 24-hour day.
|
|
2106
2141
|
Continuous pipeline restart is triggered only within a five-hour window starting at this hour."""
|
|
2107
2142
|
|
|
2108
|
-
days_of_week: Optional[List[
|
|
2143
|
+
days_of_week: Optional[List[DayOfWeek]] = None
|
|
2109
2144
|
"""Days of week in which the restart is allowed to happen (within a five-hour window starting at
|
|
2110
2145
|
start_hour). If not specified all days of the week will be used."""
|
|
2111
2146
|
|
|
@@ -2133,22 +2168,48 @@ class RestartWindow:
|
|
|
2133
2168
|
@classmethod
|
|
2134
2169
|
def from_dict(cls, d: Dict[str, any]) -> RestartWindow:
|
|
2135
2170
|
"""Deserializes the RestartWindow from a dictionary."""
|
|
2136
|
-
return cls(days_of_week=_repeated_enum(d, 'days_of_week',
|
|
2171
|
+
return cls(days_of_week=_repeated_enum(d, 'days_of_week', DayOfWeek),
|
|
2137
2172
|
start_hour=d.get('start_hour', None),
|
|
2138
2173
|
time_zone_id=d.get('time_zone_id', None))
|
|
2139
2174
|
|
|
2140
2175
|
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2176
|
+
@dataclass
|
|
2177
|
+
class RunAs:
|
|
2178
|
+
"""Write-only setting, available only in Create/Update calls. Specifies the user or service
|
|
2179
|
+
principal that the pipeline runs as. If not specified, the pipeline runs as the user who created
|
|
2180
|
+
the pipeline.
|
|
2181
|
+
|
|
2182
|
+
Only `user_name` or `service_principal_name` can be specified. If both are specified, an error
|
|
2183
|
+
is thrown."""
|
|
2144
2184
|
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2185
|
+
service_principal_name: Optional[str] = None
|
|
2186
|
+
"""Application ID of an active service principal. Setting this field requires the
|
|
2187
|
+
`servicePrincipal/user` role."""
|
|
2188
|
+
|
|
2189
|
+
user_name: Optional[str] = None
|
|
2190
|
+
"""The email of an active workspace user. Users can only set this field to their own email."""
|
|
2191
|
+
|
|
2192
|
+
def as_dict(self) -> dict:
|
|
2193
|
+
"""Serializes the RunAs into a dictionary suitable for use as a JSON request body."""
|
|
2194
|
+
body = {}
|
|
2195
|
+
if self.service_principal_name is not None:
|
|
2196
|
+
body['service_principal_name'] = self.service_principal_name
|
|
2197
|
+
if self.user_name is not None: body['user_name'] = self.user_name
|
|
2198
|
+
return body
|
|
2199
|
+
|
|
2200
|
+
def as_shallow_dict(self) -> dict:
|
|
2201
|
+
"""Serializes the RunAs into a shallow dictionary of its immediate attributes."""
|
|
2202
|
+
body = {}
|
|
2203
|
+
if self.service_principal_name is not None:
|
|
2204
|
+
body['service_principal_name'] = self.service_principal_name
|
|
2205
|
+
if self.user_name is not None: body['user_name'] = self.user_name
|
|
2206
|
+
return body
|
|
2207
|
+
|
|
2208
|
+
@classmethod
|
|
2209
|
+
def from_dict(cls, d: Dict[str, any]) -> RunAs:
|
|
2210
|
+
"""Deserializes the RunAs from a dictionary."""
|
|
2211
|
+
return cls(service_principal_name=d.get('service_principal_name', None),
|
|
2212
|
+
user_name=d.get('user_name', None))
|
|
2152
2213
|
|
|
2153
2214
|
|
|
2154
2215
|
@dataclass
|
|
@@ -2791,6 +2852,7 @@ class PipelinesAPI:
|
|
|
2791
2852
|
notifications: Optional[List[Notifications]] = None,
|
|
2792
2853
|
photon: Optional[bool] = None,
|
|
2793
2854
|
restart_window: Optional[RestartWindow] = None,
|
|
2855
|
+
run_as: Optional[RunAs] = None,
|
|
2794
2856
|
schema: Optional[str] = None,
|
|
2795
2857
|
serverless: Optional[bool] = None,
|
|
2796
2858
|
storage: Optional[str] = None,
|
|
@@ -2843,6 +2905,12 @@ class PipelinesAPI:
|
|
|
2843
2905
|
Whether Photon is enabled for this pipeline.
|
|
2844
2906
|
:param restart_window: :class:`RestartWindow` (optional)
|
|
2845
2907
|
Restart window of this pipeline.
|
|
2908
|
+
:param run_as: :class:`RunAs` (optional)
|
|
2909
|
+
Write-only setting, available only in Create/Update calls. Specifies the user or service principal
|
|
2910
|
+
that the pipeline runs as. If not specified, the pipeline runs as the user who created the pipeline.
|
|
2911
|
+
|
|
2912
|
+
Only `user_name` or `service_principal_name` can be specified. If both are specified, an error is
|
|
2913
|
+
thrown.
|
|
2846
2914
|
:param schema: str (optional)
|
|
2847
2915
|
The default schema (database) where tables are read from or published to. The presence of this field
|
|
2848
2916
|
implies that the pipeline is in direct publishing mode.
|
|
@@ -2879,6 +2947,7 @@ class PipelinesAPI:
|
|
|
2879
2947
|
if notifications is not None: body['notifications'] = [v.as_dict() for v in notifications]
|
|
2880
2948
|
if photon is not None: body['photon'] = photon
|
|
2881
2949
|
if restart_window is not None: body['restart_window'] = restart_window.as_dict()
|
|
2950
|
+
if run_as is not None: body['run_as'] = run_as.as_dict()
|
|
2882
2951
|
if schema is not None: body['schema'] = schema
|
|
2883
2952
|
if serverless is not None: body['serverless'] = serverless
|
|
2884
2953
|
if storage is not None: body['storage'] = storage
|
|
@@ -3213,6 +3282,7 @@ class PipelinesAPI:
|
|
|
3213
3282
|
notifications: Optional[List[Notifications]] = None,
|
|
3214
3283
|
photon: Optional[bool] = None,
|
|
3215
3284
|
restart_window: Optional[RestartWindow] = None,
|
|
3285
|
+
run_as: Optional[RunAs] = None,
|
|
3216
3286
|
schema: Optional[str] = None,
|
|
3217
3287
|
serverless: Optional[bool] = None,
|
|
3218
3288
|
storage: Optional[str] = None,
|
|
@@ -3268,6 +3338,12 @@ class PipelinesAPI:
|
|
|
3268
3338
|
Whether Photon is enabled for this pipeline.
|
|
3269
3339
|
:param restart_window: :class:`RestartWindow` (optional)
|
|
3270
3340
|
Restart window of this pipeline.
|
|
3341
|
+
:param run_as: :class:`RunAs` (optional)
|
|
3342
|
+
Write-only setting, available only in Create/Update calls. Specifies the user or service principal
|
|
3343
|
+
that the pipeline runs as. If not specified, the pipeline runs as the user who created the pipeline.
|
|
3344
|
+
|
|
3345
|
+
Only `user_name` or `service_principal_name` can be specified. If both are specified, an error is
|
|
3346
|
+
thrown.
|
|
3271
3347
|
:param schema: str (optional)
|
|
3272
3348
|
The default schema (database) where tables are read from or published to. The presence of this field
|
|
3273
3349
|
implies that the pipeline is in direct publishing mode.
|
|
@@ -3304,6 +3380,7 @@ class PipelinesAPI:
|
|
|
3304
3380
|
if notifications is not None: body['notifications'] = [v.as_dict() for v in notifications]
|
|
3305
3381
|
if photon is not None: body['photon'] = photon
|
|
3306
3382
|
if restart_window is not None: body['restart_window'] = restart_window.as_dict()
|
|
3383
|
+
if run_as is not None: body['run_as'] = run_as.as_dict()
|
|
3307
3384
|
if schema is not None: body['schema'] = schema
|
|
3308
3385
|
if serverless is not None: body['serverless'] = serverless
|
|
3309
3386
|
if storage is not None: body['storage'] = storage
|