databricks-sdk 0.56.0__py3-none-any.whl → 0.58.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 +38 -11
- databricks/sdk/service/aibuilder.py +122 -17
- databricks/sdk/service/apps.py +15 -45
- databricks/sdk/service/billing.py +70 -74
- databricks/sdk/service/catalog.py +1898 -557
- databricks/sdk/service/cleanrooms.py +14 -55
- databricks/sdk/service/compute.py +305 -508
- databricks/sdk/service/dashboards.py +148 -223
- databricks/sdk/service/database.py +657 -127
- databricks/sdk/service/files.py +18 -54
- databricks/sdk/service/iam.py +55 -165
- databricks/sdk/service/jobs.py +238 -214
- databricks/sdk/service/marketplace.py +47 -146
- databricks/sdk/service/ml.py +1137 -447
- databricks/sdk/service/oauth2.py +17 -46
- databricks/sdk/service/pipelines.py +93 -69
- databricks/sdk/service/provisioning.py +34 -212
- databricks/sdk/service/qualitymonitorv2.py +5 -33
- databricks/sdk/service/serving.py +69 -55
- databricks/sdk/service/settings.py +106 -434
- databricks/sdk/service/sharing.py +33 -95
- databricks/sdk/service/sql.py +164 -254
- databricks/sdk/service/vectorsearch.py +13 -62
- databricks/sdk/service/workspace.py +36 -110
- databricks/sdk/version.py +1 -1
- {databricks_sdk-0.56.0.dist-info → databricks_sdk-0.58.0.dist-info}/METADATA +1 -1
- {databricks_sdk-0.56.0.dist-info → databricks_sdk-0.58.0.dist-info}/RECORD +31 -31
- {databricks_sdk-0.56.0.dist-info → databricks_sdk-0.58.0.dist-info}/WHEEL +0 -0
- {databricks_sdk-0.56.0.dist-info → databricks_sdk-0.58.0.dist-info}/licenses/LICENSE +0 -0
- {databricks_sdk-0.56.0.dist-info → databricks_sdk-0.58.0.dist-info}/licenses/NOTICE +0 -0
- {databricks_sdk-0.56.0.dist-info → databricks_sdk-0.58.0.dist-info}/top_level.txt +0 -0
|
@@ -520,8 +520,10 @@ class AwsIamRole:
|
|
|
520
520
|
|
|
521
521
|
@dataclass
|
|
522
522
|
class AwsIamRoleRequest:
|
|
523
|
+
"""The AWS IAM role configuration"""
|
|
524
|
+
|
|
523
525
|
role_arn: str
|
|
524
|
-
"""The Amazon Resource Name (ARN) of the AWS IAM role
|
|
526
|
+
"""The Amazon Resource Name (ARN) of the AWS IAM role used to vend temporary credentials."""
|
|
525
527
|
|
|
526
528
|
def as_dict(self) -> dict:
|
|
527
529
|
"""Serializes the AwsIamRoleRequest into a dictionary suitable for use as a JSON request body."""
|
|
@@ -545,11 +547,13 @@ class AwsIamRoleRequest:
|
|
|
545
547
|
|
|
546
548
|
@dataclass
|
|
547
549
|
class AwsIamRoleResponse:
|
|
550
|
+
"""The AWS IAM role configuration"""
|
|
551
|
+
|
|
548
552
|
role_arn: str
|
|
549
|
-
"""The Amazon Resource Name (ARN) of the AWS IAM role
|
|
553
|
+
"""The Amazon Resource Name (ARN) of the AWS IAM role used to vend temporary credentials."""
|
|
550
554
|
|
|
551
555
|
external_id: Optional[str] = None
|
|
552
|
-
"""The external ID used in role assumption to prevent confused deputy problem
|
|
556
|
+
"""The external ID used in role assumption to prevent the confused deputy problem."""
|
|
553
557
|
|
|
554
558
|
unity_catalog_iam_arn: Optional[str] = None
|
|
555
559
|
"""The Amazon Resource Name (ARN) of the AWS IAM user managed by Databricks. This is the identity
|
|
@@ -594,7 +598,7 @@ class AwsSqsQueue:
|
|
|
594
598
|
|
|
595
599
|
queue_url: Optional[str] = None
|
|
596
600
|
"""The AQS queue url in the format https://sqs.{region}.amazonaws.com/{account id}/{queue name}
|
|
597
|
-
|
|
601
|
+
Required for provided_sqs."""
|
|
598
602
|
|
|
599
603
|
def as_dict(self) -> dict:
|
|
600
604
|
"""Serializes the AwsSqsQueue into a dictionary suitable for use as a JSON request body."""
|
|
@@ -659,9 +663,7 @@ class AzureManagedIdentity:
|
|
|
659
663
|
`/subscriptions/{guid}/resourceGroups/{rg-name}/providers/Microsoft.Databricks/accessConnectors/{connector-name}`."""
|
|
660
664
|
|
|
661
665
|
credential_id: Optional[str] = None
|
|
662
|
-
"""The Databricks internal ID that represents this managed identity.
|
|
663
|
-
persist the credential_id once it is fetched from the credentials manager - as we only use the
|
|
664
|
-
protobuf serializer to store credentials, this ID gets persisted to the database. ."""
|
|
666
|
+
"""The Databricks internal ID that represents this managed identity."""
|
|
665
667
|
|
|
666
668
|
managed_identity_id: Optional[str] = None
|
|
667
669
|
"""The Azure resource ID of the managed identity. Use the format,
|
|
@@ -704,16 +706,18 @@ class AzureManagedIdentity:
|
|
|
704
706
|
|
|
705
707
|
@dataclass
|
|
706
708
|
class AzureManagedIdentityRequest:
|
|
709
|
+
"""The Azure managed identity configuration."""
|
|
710
|
+
|
|
707
711
|
access_connector_id: str
|
|
708
712
|
"""The Azure resource ID of the Azure Databricks Access Connector. Use the format
|
|
709
|
-
|
|
713
|
+
`/subscriptions/{guid}/resourceGroups/{rg-name}/providers/Microsoft.Databricks/accessConnectors/{connector-name}`."""
|
|
710
714
|
|
|
711
715
|
managed_identity_id: Optional[str] = None
|
|
712
|
-
"""The Azure resource ID of the managed identity. Use the format
|
|
713
|
-
|
|
716
|
+
"""The Azure resource ID of the managed identity. Use the format,
|
|
717
|
+
`/subscriptions/{guid}/resourceGroups/{rg-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identity-name}`
|
|
714
718
|
This is only available for user-assgined identities. For system-assigned identities, the
|
|
715
719
|
access_connector_id is used to identify the identity. If this field is not provided, then we
|
|
716
|
-
assume the AzureManagedIdentity is
|
|
720
|
+
assume the AzureManagedIdentity is using the system-assigned identity."""
|
|
717
721
|
|
|
718
722
|
def as_dict(self) -> dict:
|
|
719
723
|
"""Serializes the AzureManagedIdentityRequest into a dictionary suitable for use as a JSON request body."""
|
|
@@ -744,19 +748,21 @@ class AzureManagedIdentityRequest:
|
|
|
744
748
|
|
|
745
749
|
@dataclass
|
|
746
750
|
class AzureManagedIdentityResponse:
|
|
751
|
+
"""The Azure managed identity configuration."""
|
|
752
|
+
|
|
747
753
|
access_connector_id: str
|
|
748
754
|
"""The Azure resource ID of the Azure Databricks Access Connector. Use the format
|
|
749
|
-
|
|
755
|
+
`/subscriptions/{guid}/resourceGroups/{rg-name}/providers/Microsoft.Databricks/accessConnectors/{connector-name}`."""
|
|
750
756
|
|
|
751
757
|
credential_id: Optional[str] = None
|
|
752
758
|
"""The Databricks internal ID that represents this managed identity."""
|
|
753
759
|
|
|
754
760
|
managed_identity_id: Optional[str] = None
|
|
755
|
-
"""The Azure resource ID of the managed identity. Use the format
|
|
756
|
-
|
|
761
|
+
"""The Azure resource ID of the managed identity. Use the format,
|
|
762
|
+
`/subscriptions/{guid}/resourceGroups/{rg-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identity-name}`
|
|
757
763
|
This is only available for user-assgined identities. For system-assigned identities, the
|
|
758
764
|
access_connector_id is used to identify the identity. If this field is not provided, then we
|
|
759
|
-
assume the AzureManagedIdentity is
|
|
765
|
+
assume the AzureManagedIdentity is using the system-assigned identity."""
|
|
760
766
|
|
|
761
767
|
def as_dict(self) -> dict:
|
|
762
768
|
"""Serializes the AzureManagedIdentityResponse into a dictionary suitable for use as a JSON request body."""
|
|
@@ -797,15 +803,15 @@ class AzureQueueStorage:
|
|
|
797
803
|
|
|
798
804
|
queue_url: Optional[str] = None
|
|
799
805
|
"""The AQS queue url in the format https://{storage account}.queue.core.windows.net/{queue name}
|
|
800
|
-
|
|
806
|
+
Required for provided_aqs."""
|
|
801
807
|
|
|
802
808
|
resource_group: Optional[str] = None
|
|
803
809
|
"""The resource group for the queue, event grid subscription, and external location storage
|
|
804
|
-
account.
|
|
810
|
+
account. Only required for locations with a service principal storage credential"""
|
|
805
811
|
|
|
806
812
|
subscription_id: Optional[str] = None
|
|
807
|
-
"""
|
|
808
|
-
|
|
813
|
+
"""Optional subscription id for the queue, event grid subscription, and external location storage
|
|
814
|
+
account. Required for locations with a service principal storage credential"""
|
|
809
815
|
|
|
810
816
|
def as_dict(self) -> dict:
|
|
811
817
|
"""Serializes the AzureQueueStorage into a dictionary suitable for use as a JSON request body."""
|
|
@@ -942,7 +948,6 @@ class CatalogInfo:
|
|
|
942
948
|
through the BROWSE privilege when include_browse is enabled in the request."""
|
|
943
949
|
|
|
944
950
|
catalog_type: Optional[CatalogType] = None
|
|
945
|
-
"""The type of the catalog."""
|
|
946
951
|
|
|
947
952
|
comment: Optional[str] = None
|
|
948
953
|
"""User-provided free-form text description."""
|
|
@@ -988,10 +993,8 @@ class CatalogInfo:
|
|
|
988
993
|
A Delta Sharing catalog is a catalog that is based on a Delta share on a remote sharing server."""
|
|
989
994
|
|
|
990
995
|
provisioning_info: Optional[ProvisioningInfo] = None
|
|
991
|
-
"""Status of an asynchronously provisioned resource."""
|
|
992
996
|
|
|
993
997
|
securable_type: Optional[SecurableType] = None
|
|
994
|
-
"""The type of Unity Catalog securable."""
|
|
995
998
|
|
|
996
999
|
share_name: Optional[str] = None
|
|
997
1000
|
"""The name of the share under the share provider."""
|
|
@@ -1157,19 +1160,21 @@ class CatalogType(Enum):
|
|
|
1157
1160
|
MANAGED_CATALOG = "MANAGED_CATALOG"
|
|
1158
1161
|
MANAGED_ONLINE_CATALOG = "MANAGED_ONLINE_CATALOG"
|
|
1159
1162
|
SYSTEM_CATALOG = "SYSTEM_CATALOG"
|
|
1160
|
-
UNKNOWN_CATALOG_TYPE = "UNKNOWN_CATALOG_TYPE"
|
|
1161
1163
|
|
|
1162
1164
|
|
|
1163
1165
|
@dataclass
|
|
1164
1166
|
class CloudflareApiToken:
|
|
1167
|
+
"""The Cloudflare API token configuration. Read more at
|
|
1168
|
+
https://developers.cloudflare.com/r2/api/s3/tokens/"""
|
|
1169
|
+
|
|
1165
1170
|
access_key_id: str
|
|
1166
|
-
"""The
|
|
1171
|
+
"""The access key ID associated with the API token."""
|
|
1167
1172
|
|
|
1168
1173
|
secret_access_key: str
|
|
1169
|
-
"""The secret access token generated for the access key
|
|
1174
|
+
"""The secret access token generated for the above access key ID."""
|
|
1170
1175
|
|
|
1171
1176
|
account_id: str
|
|
1172
|
-
"""The account
|
|
1177
|
+
"""The ID of the account associated with the API token."""
|
|
1173
1178
|
|
|
1174
1179
|
def as_dict(self) -> dict:
|
|
1175
1180
|
"""Serializes the CloudflareApiToken into a dictionary suitable for use as a JSON request body."""
|
|
@@ -1350,6 +1355,36 @@ class ColumnMask:
|
|
|
1350
1355
|
return cls(function_name=d.get("function_name", None), using_column_names=d.get("using_column_names", None))
|
|
1351
1356
|
|
|
1352
1357
|
|
|
1358
|
+
@dataclass
|
|
1359
|
+
class ColumnRelationship:
|
|
1360
|
+
source: Optional[str] = None
|
|
1361
|
+
|
|
1362
|
+
target: Optional[str] = None
|
|
1363
|
+
|
|
1364
|
+
def as_dict(self) -> dict:
|
|
1365
|
+
"""Serializes the ColumnRelationship into a dictionary suitable for use as a JSON request body."""
|
|
1366
|
+
body = {}
|
|
1367
|
+
if self.source is not None:
|
|
1368
|
+
body["source"] = self.source
|
|
1369
|
+
if self.target is not None:
|
|
1370
|
+
body["target"] = self.target
|
|
1371
|
+
return body
|
|
1372
|
+
|
|
1373
|
+
def as_shallow_dict(self) -> dict:
|
|
1374
|
+
"""Serializes the ColumnRelationship into a shallow dictionary of its immediate attributes."""
|
|
1375
|
+
body = {}
|
|
1376
|
+
if self.source is not None:
|
|
1377
|
+
body["source"] = self.source
|
|
1378
|
+
if self.target is not None:
|
|
1379
|
+
body["target"] = self.target
|
|
1380
|
+
return body
|
|
1381
|
+
|
|
1382
|
+
@classmethod
|
|
1383
|
+
def from_dict(cls, d: Dict[str, Any]) -> ColumnRelationship:
|
|
1384
|
+
"""Deserializes the ColumnRelationship from a dictionary."""
|
|
1385
|
+
return cls(source=d.get("source", None), target=d.get("target", None))
|
|
1386
|
+
|
|
1387
|
+
|
|
1353
1388
|
class ColumnTypeName(Enum):
|
|
1354
1389
|
|
|
1355
1390
|
ARRAY = "ARRAY"
|
|
@@ -1378,6 +1413,33 @@ class ColumnTypeName(Enum):
|
|
|
1378
1413
|
VARIANT = "VARIANT"
|
|
1379
1414
|
|
|
1380
1415
|
|
|
1416
|
+
@dataclass
|
|
1417
|
+
class ConnectionDependency:
|
|
1418
|
+
"""A connection that is dependent on a SQL object."""
|
|
1419
|
+
|
|
1420
|
+
connection_name: Optional[str] = None
|
|
1421
|
+
"""Full name of the dependent connection, in the form of __connection_name__."""
|
|
1422
|
+
|
|
1423
|
+
def as_dict(self) -> dict:
|
|
1424
|
+
"""Serializes the ConnectionDependency into a dictionary suitable for use as a JSON request body."""
|
|
1425
|
+
body = {}
|
|
1426
|
+
if self.connection_name is not None:
|
|
1427
|
+
body["connection_name"] = self.connection_name
|
|
1428
|
+
return body
|
|
1429
|
+
|
|
1430
|
+
def as_shallow_dict(self) -> dict:
|
|
1431
|
+
"""Serializes the ConnectionDependency into a shallow dictionary of its immediate attributes."""
|
|
1432
|
+
body = {}
|
|
1433
|
+
if self.connection_name is not None:
|
|
1434
|
+
body["connection_name"] = self.connection_name
|
|
1435
|
+
return body
|
|
1436
|
+
|
|
1437
|
+
@classmethod
|
|
1438
|
+
def from_dict(cls, d: Dict[str, Any]) -> ConnectionDependency:
|
|
1439
|
+
"""Deserializes the ConnectionDependency from a dictionary."""
|
|
1440
|
+
return cls(connection_name=d.get("connection_name", None))
|
|
1441
|
+
|
|
1442
|
+
|
|
1381
1443
|
@dataclass
|
|
1382
1444
|
class ConnectionInfo:
|
|
1383
1445
|
comment: Optional[str] = None
|
|
@@ -1417,13 +1479,11 @@ class ConnectionInfo:
|
|
|
1417
1479
|
"""A map of key-value properties attached to the securable."""
|
|
1418
1480
|
|
|
1419
1481
|
provisioning_info: Optional[ProvisioningInfo] = None
|
|
1420
|
-
"""Status of an asynchronously provisioned resource."""
|
|
1421
1482
|
|
|
1422
1483
|
read_only: Optional[bool] = None
|
|
1423
1484
|
"""If the connection is read only."""
|
|
1424
1485
|
|
|
1425
1486
|
securable_type: Optional[SecurableType] = None
|
|
1426
|
-
"""The type of Unity Catalog securable."""
|
|
1427
1487
|
|
|
1428
1488
|
updated_at: Optional[int] = None
|
|
1429
1489
|
"""Time at which this connection was updated, in epoch milliseconds."""
|
|
@@ -1542,7 +1602,7 @@ class ConnectionInfo:
|
|
|
1542
1602
|
|
|
1543
1603
|
|
|
1544
1604
|
class ConnectionType(Enum):
|
|
1545
|
-
"""Next Id:
|
|
1605
|
+
"""Next Id: 36"""
|
|
1546
1606
|
|
|
1547
1607
|
BIGQUERY = "BIGQUERY"
|
|
1548
1608
|
DATABRICKS = "DATABRICKS"
|
|
@@ -1773,19 +1833,19 @@ class CreateCredentialRequest:
|
|
|
1773
1833
|
metastore."""
|
|
1774
1834
|
|
|
1775
1835
|
aws_iam_role: Optional[AwsIamRole] = None
|
|
1776
|
-
"""The AWS IAM role configuration"""
|
|
1836
|
+
"""The AWS IAM role configuration."""
|
|
1777
1837
|
|
|
1778
1838
|
azure_managed_identity: Optional[AzureManagedIdentity] = None
|
|
1779
1839
|
"""The Azure managed identity configuration."""
|
|
1780
1840
|
|
|
1781
1841
|
azure_service_principal: Optional[AzureServicePrincipal] = None
|
|
1782
|
-
"""The Azure service principal configuration.
|
|
1842
|
+
"""The Azure service principal configuration."""
|
|
1783
1843
|
|
|
1784
1844
|
comment: Optional[str] = None
|
|
1785
1845
|
"""Comment associated with the credential."""
|
|
1786
1846
|
|
|
1787
1847
|
databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None
|
|
1788
|
-
"""
|
|
1848
|
+
"""The Databricks managed GCP service account configuration."""
|
|
1789
1849
|
|
|
1790
1850
|
purpose: Optional[CredentialPurpose] = None
|
|
1791
1851
|
"""Indicates the purpose of the credential."""
|
|
@@ -1874,10 +1934,9 @@ class CreateExternalLocation:
|
|
|
1874
1934
|
"""User-provided free-form text description."""
|
|
1875
1935
|
|
|
1876
1936
|
enable_file_events: Optional[bool] = None
|
|
1877
|
-
"""
|
|
1937
|
+
"""Whether to enable file events on this external location."""
|
|
1878
1938
|
|
|
1879
1939
|
encryption_details: Optional[EncryptionDetails] = None
|
|
1880
|
-
"""Encryption options that apply to clients connecting to cloud storage."""
|
|
1881
1940
|
|
|
1882
1941
|
fallback: Optional[bool] = None
|
|
1883
1942
|
"""Indicates whether fallback mode is enabled for this external location. When fallback mode is
|
|
@@ -1885,7 +1944,7 @@ class CreateExternalLocation:
|
|
|
1885
1944
|
sufficient."""
|
|
1886
1945
|
|
|
1887
1946
|
file_event_queue: Optional[FileEventQueue] = None
|
|
1888
|
-
"""
|
|
1947
|
+
"""File event queue settings."""
|
|
1889
1948
|
|
|
1890
1949
|
read_only: Optional[bool] = None
|
|
1891
1950
|
"""Indicates whether the external location is read-only."""
|
|
@@ -2483,6 +2542,65 @@ class CreateRegisteredModelRequest:
|
|
|
2483
2542
|
)
|
|
2484
2543
|
|
|
2485
2544
|
|
|
2545
|
+
@dataclass
|
|
2546
|
+
class CreateRequestExternalLineage:
|
|
2547
|
+
source: ExternalLineageObject
|
|
2548
|
+
"""Source object of the external lineage relationship."""
|
|
2549
|
+
|
|
2550
|
+
target: ExternalLineageObject
|
|
2551
|
+
"""Target object of the external lineage relationship."""
|
|
2552
|
+
|
|
2553
|
+
columns: Optional[List[ColumnRelationship]] = None
|
|
2554
|
+
"""List of column relationships between source and target objects."""
|
|
2555
|
+
|
|
2556
|
+
id: Optional[str] = None
|
|
2557
|
+
"""Unique identifier of the external lineage relationship."""
|
|
2558
|
+
|
|
2559
|
+
properties: Optional[Dict[str, str]] = None
|
|
2560
|
+
"""Key-value properties associated with the external lineage relationship."""
|
|
2561
|
+
|
|
2562
|
+
def as_dict(self) -> dict:
|
|
2563
|
+
"""Serializes the CreateRequestExternalLineage into a dictionary suitable for use as a JSON request body."""
|
|
2564
|
+
body = {}
|
|
2565
|
+
if self.columns:
|
|
2566
|
+
body["columns"] = [v.as_dict() for v in self.columns]
|
|
2567
|
+
if self.id is not None:
|
|
2568
|
+
body["id"] = self.id
|
|
2569
|
+
if self.properties:
|
|
2570
|
+
body["properties"] = self.properties
|
|
2571
|
+
if self.source:
|
|
2572
|
+
body["source"] = self.source.as_dict()
|
|
2573
|
+
if self.target:
|
|
2574
|
+
body["target"] = self.target.as_dict()
|
|
2575
|
+
return body
|
|
2576
|
+
|
|
2577
|
+
def as_shallow_dict(self) -> dict:
|
|
2578
|
+
"""Serializes the CreateRequestExternalLineage into a shallow dictionary of its immediate attributes."""
|
|
2579
|
+
body = {}
|
|
2580
|
+
if self.columns:
|
|
2581
|
+
body["columns"] = self.columns
|
|
2582
|
+
if self.id is not None:
|
|
2583
|
+
body["id"] = self.id
|
|
2584
|
+
if self.properties:
|
|
2585
|
+
body["properties"] = self.properties
|
|
2586
|
+
if self.source:
|
|
2587
|
+
body["source"] = self.source
|
|
2588
|
+
if self.target:
|
|
2589
|
+
body["target"] = self.target
|
|
2590
|
+
return body
|
|
2591
|
+
|
|
2592
|
+
@classmethod
|
|
2593
|
+
def from_dict(cls, d: Dict[str, Any]) -> CreateRequestExternalLineage:
|
|
2594
|
+
"""Deserializes the CreateRequestExternalLineage from a dictionary."""
|
|
2595
|
+
return cls(
|
|
2596
|
+
columns=_repeated_dict(d, "columns", ColumnRelationship),
|
|
2597
|
+
id=d.get("id", None),
|
|
2598
|
+
properties=d.get("properties", None),
|
|
2599
|
+
source=_from_dict(d, "source", ExternalLineageObject),
|
|
2600
|
+
target=_from_dict(d, "target", ExternalLineageObject),
|
|
2601
|
+
)
|
|
2602
|
+
|
|
2603
|
+
|
|
2486
2604
|
@dataclass
|
|
2487
2605
|
class CreateResponse:
|
|
2488
2606
|
def as_dict(self) -> dict:
|
|
@@ -2563,7 +2681,8 @@ class CreateSchema:
|
|
|
2563
2681
|
@dataclass
|
|
2564
2682
|
class CreateStorageCredential:
|
|
2565
2683
|
name: str
|
|
2566
|
-
"""The credential name. The name must be unique within the
|
|
2684
|
+
"""The credential name. The name must be unique among storage and service credentials within the
|
|
2685
|
+
metastore."""
|
|
2567
2686
|
|
|
2568
2687
|
aws_iam_role: Optional[AwsIamRoleRequest] = None
|
|
2569
2688
|
"""The AWS IAM role configuration."""
|
|
@@ -2584,7 +2703,8 @@ class CreateStorageCredential:
|
|
|
2584
2703
|
"""The Databricks managed GCP service account configuration."""
|
|
2585
2704
|
|
|
2586
2705
|
read_only: Optional[bool] = None
|
|
2587
|
-
"""Whether the
|
|
2706
|
+
"""Whether the credential is usable only for read operations. Only applicable when purpose is
|
|
2707
|
+
**STORAGE**."""
|
|
2588
2708
|
|
|
2589
2709
|
skip_validation: Optional[bool] = None
|
|
2590
2710
|
"""Supplying true to this argument skips validation of the created credential."""
|
|
@@ -2659,8 +2779,6 @@ class CreateTableConstraint:
|
|
|
2659
2779
|
"""The full name of the table referenced by the constraint."""
|
|
2660
2780
|
|
|
2661
2781
|
constraint: TableConstraint
|
|
2662
|
-
"""A table constraint, as defined by *one* of the following fields being set:
|
|
2663
|
-
__primary_key_constraint__, __foreign_key_constraint__, __named_table_constraint__."""
|
|
2664
2782
|
|
|
2665
2783
|
def as_dict(self) -> dict:
|
|
2666
2784
|
"""Serializes the CreateTableConstraint into a dictionary suitable for use as a JSON request body."""
|
|
@@ -2698,11 +2816,6 @@ class CreateVolumeRequestContent:
|
|
|
2698
2816
|
"""The name of the volume"""
|
|
2699
2817
|
|
|
2700
2818
|
volume_type: VolumeType
|
|
2701
|
-
"""The type of the volume. An external volume is located in the specified external location. A
|
|
2702
|
-
managed volume is located in the default location which is specified by the parent schema, or
|
|
2703
|
-
the parent catalog, or the Metastore. [Learn more]
|
|
2704
|
-
|
|
2705
|
-
[Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external"""
|
|
2706
2819
|
|
|
2707
2820
|
comment: Optional[str] = None
|
|
2708
2821
|
"""The comment attached to the volume"""
|
|
@@ -2757,16 +2870,43 @@ class CreateVolumeRequestContent:
|
|
|
2757
2870
|
)
|
|
2758
2871
|
|
|
2759
2872
|
|
|
2873
|
+
@dataclass
|
|
2874
|
+
class CredentialDependency:
|
|
2875
|
+
"""A credential that is dependent on a SQL object."""
|
|
2876
|
+
|
|
2877
|
+
credential_name: Optional[str] = None
|
|
2878
|
+
"""Full name of the dependent credential, in the form of __credential_name__."""
|
|
2879
|
+
|
|
2880
|
+
def as_dict(self) -> dict:
|
|
2881
|
+
"""Serializes the CredentialDependency into a dictionary suitable for use as a JSON request body."""
|
|
2882
|
+
body = {}
|
|
2883
|
+
if self.credential_name is not None:
|
|
2884
|
+
body["credential_name"] = self.credential_name
|
|
2885
|
+
return body
|
|
2886
|
+
|
|
2887
|
+
def as_shallow_dict(self) -> dict:
|
|
2888
|
+
"""Serializes the CredentialDependency into a shallow dictionary of its immediate attributes."""
|
|
2889
|
+
body = {}
|
|
2890
|
+
if self.credential_name is not None:
|
|
2891
|
+
body["credential_name"] = self.credential_name
|
|
2892
|
+
return body
|
|
2893
|
+
|
|
2894
|
+
@classmethod
|
|
2895
|
+
def from_dict(cls, d: Dict[str, Any]) -> CredentialDependency:
|
|
2896
|
+
"""Deserializes the CredentialDependency from a dictionary."""
|
|
2897
|
+
return cls(credential_name=d.get("credential_name", None))
|
|
2898
|
+
|
|
2899
|
+
|
|
2760
2900
|
@dataclass
|
|
2761
2901
|
class CredentialInfo:
|
|
2762
2902
|
aws_iam_role: Optional[AwsIamRole] = None
|
|
2763
|
-
"""The AWS IAM role configuration"""
|
|
2903
|
+
"""The AWS IAM role configuration."""
|
|
2764
2904
|
|
|
2765
2905
|
azure_managed_identity: Optional[AzureManagedIdentity] = None
|
|
2766
2906
|
"""The Azure managed identity configuration."""
|
|
2767
2907
|
|
|
2768
2908
|
azure_service_principal: Optional[AzureServicePrincipal] = None
|
|
2769
|
-
"""The Azure service principal configuration.
|
|
2909
|
+
"""The Azure service principal configuration."""
|
|
2770
2910
|
|
|
2771
2911
|
comment: Optional[str] = None
|
|
2772
2912
|
"""Comment associated with the credential."""
|
|
@@ -2778,7 +2918,7 @@ class CredentialInfo:
|
|
|
2778
2918
|
"""Username of credential creator."""
|
|
2779
2919
|
|
|
2780
2920
|
databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None
|
|
2781
|
-
"""
|
|
2921
|
+
"""The Databricks managed GCP service account configuration."""
|
|
2782
2922
|
|
|
2783
2923
|
full_name: Optional[str] = None
|
|
2784
2924
|
"""The full name of the credential."""
|
|
@@ -2930,8 +3070,9 @@ class CredentialPurpose(Enum):
|
|
|
2930
3070
|
|
|
2931
3071
|
|
|
2932
3072
|
class CredentialType(Enum):
|
|
2933
|
-
"""Next Id:
|
|
3073
|
+
"""Next Id: 13"""
|
|
2934
3074
|
|
|
3075
|
+
ANY_STATIC_CREDENTIAL = "ANY_STATIC_CREDENTIAL"
|
|
2935
3076
|
BEARER_TOKEN = "BEARER_TOKEN"
|
|
2936
3077
|
OAUTH_ACCESS_TOKEN = "OAUTH_ACCESS_TOKEN"
|
|
2937
3078
|
OAUTH_M2M = "OAUTH_M2M"
|
|
@@ -2985,21 +3126,28 @@ class DataSourceFormat(Enum):
|
|
|
2985
3126
|
BIGQUERY_FORMAT = "BIGQUERY_FORMAT"
|
|
2986
3127
|
CSV = "CSV"
|
|
2987
3128
|
DATABRICKS_FORMAT = "DATABRICKS_FORMAT"
|
|
3129
|
+
DATABRICKS_ROW_STORE_FORMAT = "DATABRICKS_ROW_STORE_FORMAT"
|
|
2988
3130
|
DELTA = "DELTA"
|
|
2989
3131
|
DELTASHARING = "DELTASHARING"
|
|
2990
|
-
|
|
2991
|
-
|
|
3132
|
+
DELTA_UNIFORM_HUDI = "DELTA_UNIFORM_HUDI"
|
|
3133
|
+
DELTA_UNIFORM_ICEBERG = "DELTA_UNIFORM_ICEBERG"
|
|
3134
|
+
HIVE = "HIVE"
|
|
3135
|
+
ICEBERG = "ICEBERG"
|
|
2992
3136
|
JSON = "JSON"
|
|
3137
|
+
MONGODB_FORMAT = "MONGODB_FORMAT"
|
|
2993
3138
|
MYSQL_FORMAT = "MYSQL_FORMAT"
|
|
2994
3139
|
NETSUITE_FORMAT = "NETSUITE_FORMAT"
|
|
3140
|
+
ORACLE_FORMAT = "ORACLE_FORMAT"
|
|
2995
3141
|
ORC = "ORC"
|
|
2996
3142
|
PARQUET = "PARQUET"
|
|
2997
3143
|
POSTGRESQL_FORMAT = "POSTGRESQL_FORMAT"
|
|
2998
3144
|
REDSHIFT_FORMAT = "REDSHIFT_FORMAT"
|
|
3145
|
+
SALESFORCE_DATA_CLOUD_FORMAT = "SALESFORCE_DATA_CLOUD_FORMAT"
|
|
2999
3146
|
SALESFORCE_FORMAT = "SALESFORCE_FORMAT"
|
|
3000
3147
|
SNOWFLAKE_FORMAT = "SNOWFLAKE_FORMAT"
|
|
3001
3148
|
SQLDW_FORMAT = "SQLDW_FORMAT"
|
|
3002
3149
|
SQLSERVER_FORMAT = "SQLSERVER_FORMAT"
|
|
3150
|
+
TERADATA_FORMAT = "TERADATA_FORMAT"
|
|
3003
3151
|
TEXT = "TEXT"
|
|
3004
3152
|
UNITY_CATALOG = "UNITY_CATALOG"
|
|
3005
3153
|
VECTOR_INDEX_FORMAT = "VECTOR_INDEX_FORMAT"
|
|
@@ -3011,9 +3159,7 @@ class DatabricksGcpServiceAccount:
|
|
|
3011
3159
|
"""GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
|
|
3012
3160
|
|
|
3013
3161
|
credential_id: Optional[str] = None
|
|
3014
|
-
"""The Databricks internal ID that represents this managed identity.
|
|
3015
|
-
persist the credential_id once it is fetched from the credentials manager - as we only use the
|
|
3016
|
-
protobuf serializer to store credentials, this ID gets persisted to the database"""
|
|
3162
|
+
"""The Databricks internal ID that represents this managed identity."""
|
|
3017
3163
|
|
|
3018
3164
|
email: Optional[str] = None
|
|
3019
3165
|
"""The email of the service account."""
|
|
@@ -3055,6 +3201,8 @@ class DatabricksGcpServiceAccount:
|
|
|
3055
3201
|
|
|
3056
3202
|
@dataclass
|
|
3057
3203
|
class DatabricksGcpServiceAccountRequest:
|
|
3204
|
+
"""GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
|
|
3205
|
+
|
|
3058
3206
|
def as_dict(self) -> dict:
|
|
3059
3207
|
"""Serializes the DatabricksGcpServiceAccountRequest into a dictionary suitable for use as a JSON request body."""
|
|
3060
3208
|
body = {}
|
|
@@ -3073,11 +3221,13 @@ class DatabricksGcpServiceAccountRequest:
|
|
|
3073
3221
|
|
|
3074
3222
|
@dataclass
|
|
3075
3223
|
class DatabricksGcpServiceAccountResponse:
|
|
3224
|
+
"""GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
|
|
3225
|
+
|
|
3076
3226
|
credential_id: Optional[str] = None
|
|
3077
|
-
"""The Databricks internal ID that represents this
|
|
3227
|
+
"""The Databricks internal ID that represents this managed identity."""
|
|
3078
3228
|
|
|
3079
3229
|
email: Optional[str] = None
|
|
3080
|
-
"""The email of the service account.
|
|
3230
|
+
"""The email of the service account."""
|
|
3081
3231
|
|
|
3082
3232
|
def as_dict(self) -> dict:
|
|
3083
3233
|
"""Serializes the DatabricksGcpServiceAccountResponse into a dictionary suitable for use as a JSON request body."""
|
|
@@ -3139,6 +3289,49 @@ class DeleteCredentialResponse:
|
|
|
3139
3289
|
return cls()
|
|
3140
3290
|
|
|
3141
3291
|
|
|
3292
|
+
@dataclass
|
|
3293
|
+
class DeleteRequestExternalLineage:
|
|
3294
|
+
source: ExternalLineageObject
|
|
3295
|
+
"""Source object of the external lineage relationship."""
|
|
3296
|
+
|
|
3297
|
+
target: ExternalLineageObject
|
|
3298
|
+
"""Target object of the external lineage relationship."""
|
|
3299
|
+
|
|
3300
|
+
id: Optional[str] = None
|
|
3301
|
+
"""Unique identifier of the external lineage relationship."""
|
|
3302
|
+
|
|
3303
|
+
def as_dict(self) -> dict:
|
|
3304
|
+
"""Serializes the DeleteRequestExternalLineage into a dictionary suitable for use as a JSON request body."""
|
|
3305
|
+
body = {}
|
|
3306
|
+
if self.id is not None:
|
|
3307
|
+
body["id"] = self.id
|
|
3308
|
+
if self.source:
|
|
3309
|
+
body["source"] = self.source.as_dict()
|
|
3310
|
+
if self.target:
|
|
3311
|
+
body["target"] = self.target.as_dict()
|
|
3312
|
+
return body
|
|
3313
|
+
|
|
3314
|
+
def as_shallow_dict(self) -> dict:
|
|
3315
|
+
"""Serializes the DeleteRequestExternalLineage into a shallow dictionary of its immediate attributes."""
|
|
3316
|
+
body = {}
|
|
3317
|
+
if self.id is not None:
|
|
3318
|
+
body["id"] = self.id
|
|
3319
|
+
if self.source:
|
|
3320
|
+
body["source"] = self.source
|
|
3321
|
+
if self.target:
|
|
3322
|
+
body["target"] = self.target
|
|
3323
|
+
return body
|
|
3324
|
+
|
|
3325
|
+
@classmethod
|
|
3326
|
+
def from_dict(cls, d: Dict[str, Any]) -> DeleteRequestExternalLineage:
|
|
3327
|
+
"""Deserializes the DeleteRequestExternalLineage from a dictionary."""
|
|
3328
|
+
return cls(
|
|
3329
|
+
id=d.get("id", None),
|
|
3330
|
+
source=_from_dict(d, "source", ExternalLineageObject),
|
|
3331
|
+
target=_from_dict(d, "target", ExternalLineageObject),
|
|
3332
|
+
)
|
|
3333
|
+
|
|
3334
|
+
|
|
3142
3335
|
@dataclass
|
|
3143
3336
|
class DeleteResponse:
|
|
3144
3337
|
def as_dict(self) -> dict:
|
|
@@ -3193,18 +3386,24 @@ class DeltaSharingScopeEnum(Enum):
|
|
|
3193
3386
|
|
|
3194
3387
|
@dataclass
|
|
3195
3388
|
class Dependency:
|
|
3196
|
-
"""A dependency of a SQL object.
|
|
3197
|
-
|
|
3389
|
+
"""A dependency of a SQL object. One of the following fields must be defined: __table__,
|
|
3390
|
+
__function__, __connection__, or __credential__."""
|
|
3391
|
+
|
|
3392
|
+
connection: Optional[ConnectionDependency] = None
|
|
3393
|
+
|
|
3394
|
+
credential: Optional[CredentialDependency] = None
|
|
3198
3395
|
|
|
3199
3396
|
function: Optional[FunctionDependency] = None
|
|
3200
|
-
"""A function that is dependent on a SQL object."""
|
|
3201
3397
|
|
|
3202
3398
|
table: Optional[TableDependency] = None
|
|
3203
|
-
"""A table that is dependent on a SQL object."""
|
|
3204
3399
|
|
|
3205
3400
|
def as_dict(self) -> dict:
|
|
3206
3401
|
"""Serializes the Dependency into a dictionary suitable for use as a JSON request body."""
|
|
3207
3402
|
body = {}
|
|
3403
|
+
if self.connection:
|
|
3404
|
+
body["connection"] = self.connection.as_dict()
|
|
3405
|
+
if self.credential:
|
|
3406
|
+
body["credential"] = self.credential.as_dict()
|
|
3208
3407
|
if self.function:
|
|
3209
3408
|
body["function"] = self.function.as_dict()
|
|
3210
3409
|
if self.table:
|
|
@@ -3214,6 +3413,10 @@ class Dependency:
|
|
|
3214
3413
|
def as_shallow_dict(self) -> dict:
|
|
3215
3414
|
"""Serializes the Dependency into a shallow dictionary of its immediate attributes."""
|
|
3216
3415
|
body = {}
|
|
3416
|
+
if self.connection:
|
|
3417
|
+
body["connection"] = self.connection
|
|
3418
|
+
if self.credential:
|
|
3419
|
+
body["credential"] = self.credential
|
|
3217
3420
|
if self.function:
|
|
3218
3421
|
body["function"] = self.function
|
|
3219
3422
|
if self.table:
|
|
@@ -3224,7 +3427,10 @@ class Dependency:
|
|
|
3224
3427
|
def from_dict(cls, d: Dict[str, Any]) -> Dependency:
|
|
3225
3428
|
"""Deserializes the Dependency from a dictionary."""
|
|
3226
3429
|
return cls(
|
|
3227
|
-
|
|
3430
|
+
connection=_from_dict(d, "connection", ConnectionDependency),
|
|
3431
|
+
credential=_from_dict(d, "credential", CredentialDependency),
|
|
3432
|
+
function=_from_dict(d, "function", FunctionDependency),
|
|
3433
|
+
table=_from_dict(d, "table", TableDependency),
|
|
3228
3434
|
)
|
|
3229
3435
|
|
|
3230
3436
|
|
|
@@ -3535,70 +3741,607 @@ class EncryptionDetails:
|
|
|
3535
3741
|
|
|
3536
3742
|
|
|
3537
3743
|
@dataclass
|
|
3538
|
-
class
|
|
3539
|
-
|
|
3540
|
-
"""Indicates whether the principal is limited to retrieving metadata for the associated object
|
|
3541
|
-
through the BROWSE privilege when include_browse is enabled in the request."""
|
|
3744
|
+
class ExternalLineageExternalMetadata:
|
|
3745
|
+
name: Optional[str] = None
|
|
3542
3746
|
|
|
3543
|
-
|
|
3544
|
-
|
|
3747
|
+
def as_dict(self) -> dict:
|
|
3748
|
+
"""Serializes the ExternalLineageExternalMetadata into a dictionary suitable for use as a JSON request body."""
|
|
3749
|
+
body = {}
|
|
3750
|
+
if self.name is not None:
|
|
3751
|
+
body["name"] = self.name
|
|
3752
|
+
return body
|
|
3545
3753
|
|
|
3546
|
-
|
|
3547
|
-
|
|
3754
|
+
def as_shallow_dict(self) -> dict:
|
|
3755
|
+
"""Serializes the ExternalLineageExternalMetadata into a shallow dictionary of its immediate attributes."""
|
|
3756
|
+
body = {}
|
|
3757
|
+
if self.name is not None:
|
|
3758
|
+
body["name"] = self.name
|
|
3759
|
+
return body
|
|
3548
3760
|
|
|
3549
|
-
|
|
3550
|
-
|
|
3761
|
+
@classmethod
|
|
3762
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageExternalMetadata:
|
|
3763
|
+
"""Deserializes the ExternalLineageExternalMetadata from a dictionary."""
|
|
3764
|
+
return cls(name=d.get("name", None))
|
|
3551
3765
|
|
|
3552
|
-
credential_id: Optional[str] = None
|
|
3553
|
-
"""Unique ID of the location's storage credential."""
|
|
3554
3766
|
|
|
3555
|
-
|
|
3556
|
-
|
|
3767
|
+
@dataclass
|
|
3768
|
+
class ExternalLineageExternalMetadataInfo:
|
|
3769
|
+
"""Represents the external metadata object in the lineage event."""
|
|
3557
3770
|
|
|
3558
|
-
|
|
3559
|
-
"""
|
|
3771
|
+
entity_type: Optional[str] = None
|
|
3772
|
+
"""Type of entity represented by the external metadata object."""
|
|
3560
3773
|
|
|
3561
|
-
|
|
3562
|
-
"""
|
|
3774
|
+
event_time: Optional[str] = None
|
|
3775
|
+
"""Timestamp of the lineage event."""
|
|
3563
3776
|
|
|
3564
|
-
|
|
3565
|
-
"""
|
|
3566
|
-
enabled, the access to the location falls back to cluster credentials if UC credentials are not
|
|
3567
|
-
sufficient."""
|
|
3777
|
+
name: Optional[str] = None
|
|
3778
|
+
"""Name of the external metadata object."""
|
|
3568
3779
|
|
|
3569
|
-
|
|
3570
|
-
"""
|
|
3780
|
+
system_type: Optional[SystemType] = None
|
|
3781
|
+
"""Type of external system."""
|
|
3571
3782
|
|
|
3572
|
-
|
|
3783
|
+
def as_dict(self) -> dict:
|
|
3784
|
+
"""Serializes the ExternalLineageExternalMetadataInfo into a dictionary suitable for use as a JSON request body."""
|
|
3785
|
+
body = {}
|
|
3786
|
+
if self.entity_type is not None:
|
|
3787
|
+
body["entity_type"] = self.entity_type
|
|
3788
|
+
if self.event_time is not None:
|
|
3789
|
+
body["event_time"] = self.event_time
|
|
3790
|
+
if self.name is not None:
|
|
3791
|
+
body["name"] = self.name
|
|
3792
|
+
if self.system_type is not None:
|
|
3793
|
+
body["system_type"] = self.system_type.value
|
|
3794
|
+
return body
|
|
3573
3795
|
|
|
3574
|
-
|
|
3575
|
-
|
|
3796
|
+
def as_shallow_dict(self) -> dict:
|
|
3797
|
+
"""Serializes the ExternalLineageExternalMetadataInfo into a shallow dictionary of its immediate attributes."""
|
|
3798
|
+
body = {}
|
|
3799
|
+
if self.entity_type is not None:
|
|
3800
|
+
body["entity_type"] = self.entity_type
|
|
3801
|
+
if self.event_time is not None:
|
|
3802
|
+
body["event_time"] = self.event_time
|
|
3803
|
+
if self.name is not None:
|
|
3804
|
+
body["name"] = self.name
|
|
3805
|
+
if self.system_type is not None:
|
|
3806
|
+
body["system_type"] = self.system_type
|
|
3807
|
+
return body
|
|
3576
3808
|
|
|
3577
|
-
|
|
3578
|
-
|
|
3809
|
+
@classmethod
|
|
3810
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageExternalMetadataInfo:
|
|
3811
|
+
"""Deserializes the ExternalLineageExternalMetadataInfo from a dictionary."""
|
|
3812
|
+
return cls(
|
|
3813
|
+
entity_type=d.get("entity_type", None),
|
|
3814
|
+
event_time=d.get("event_time", None),
|
|
3815
|
+
name=d.get("name", None),
|
|
3816
|
+
system_type=_enum(d, "system_type", SystemType),
|
|
3817
|
+
)
|
|
3579
3818
|
|
|
3580
|
-
owner: Optional[str] = None
|
|
3581
|
-
"""The owner of the external location."""
|
|
3582
3819
|
|
|
3583
|
-
|
|
3584
|
-
|
|
3820
|
+
@dataclass
|
|
3821
|
+
class ExternalLineageFileInfo:
|
|
3822
|
+
"""Represents the path information in the lineage event."""
|
|
3585
3823
|
|
|
3586
|
-
|
|
3587
|
-
"""
|
|
3824
|
+
event_time: Optional[str] = None
|
|
3825
|
+
"""Timestamp of the lineage event."""
|
|
3588
3826
|
|
|
3589
|
-
|
|
3590
|
-
"""
|
|
3827
|
+
path: Optional[str] = None
|
|
3828
|
+
"""URL of the path."""
|
|
3591
3829
|
|
|
3592
|
-
|
|
3593
|
-
"""
|
|
3830
|
+
securable_name: Optional[str] = None
|
|
3831
|
+
"""The full name of the securable on the path."""
|
|
3832
|
+
|
|
3833
|
+
securable_type: Optional[str] = None
|
|
3834
|
+
"""The securable type of the securable on the path."""
|
|
3835
|
+
|
|
3836
|
+
storage_location: Optional[str] = None
|
|
3837
|
+
"""The storage location associated with securable on the path."""
|
|
3594
3838
|
|
|
3595
3839
|
def as_dict(self) -> dict:
|
|
3596
|
-
"""Serializes the
|
|
3840
|
+
"""Serializes the ExternalLineageFileInfo into a dictionary suitable for use as a JSON request body."""
|
|
3597
3841
|
body = {}
|
|
3598
|
-
if self.
|
|
3599
|
-
body["
|
|
3600
|
-
if self.
|
|
3601
|
-
body["
|
|
3842
|
+
if self.event_time is not None:
|
|
3843
|
+
body["event_time"] = self.event_time
|
|
3844
|
+
if self.path is not None:
|
|
3845
|
+
body["path"] = self.path
|
|
3846
|
+
if self.securable_name is not None:
|
|
3847
|
+
body["securable_name"] = self.securable_name
|
|
3848
|
+
if self.securable_type is not None:
|
|
3849
|
+
body["securable_type"] = self.securable_type
|
|
3850
|
+
if self.storage_location is not None:
|
|
3851
|
+
body["storage_location"] = self.storage_location
|
|
3852
|
+
return body
|
|
3853
|
+
|
|
3854
|
+
def as_shallow_dict(self) -> dict:
|
|
3855
|
+
"""Serializes the ExternalLineageFileInfo into a shallow dictionary of its immediate attributes."""
|
|
3856
|
+
body = {}
|
|
3857
|
+
if self.event_time is not None:
|
|
3858
|
+
body["event_time"] = self.event_time
|
|
3859
|
+
if self.path is not None:
|
|
3860
|
+
body["path"] = self.path
|
|
3861
|
+
if self.securable_name is not None:
|
|
3862
|
+
body["securable_name"] = self.securable_name
|
|
3863
|
+
if self.securable_type is not None:
|
|
3864
|
+
body["securable_type"] = self.securable_type
|
|
3865
|
+
if self.storage_location is not None:
|
|
3866
|
+
body["storage_location"] = self.storage_location
|
|
3867
|
+
return body
|
|
3868
|
+
|
|
3869
|
+
@classmethod
|
|
3870
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageFileInfo:
|
|
3871
|
+
"""Deserializes the ExternalLineageFileInfo from a dictionary."""
|
|
3872
|
+
return cls(
|
|
3873
|
+
event_time=d.get("event_time", None),
|
|
3874
|
+
path=d.get("path", None),
|
|
3875
|
+
securable_name=d.get("securable_name", None),
|
|
3876
|
+
securable_type=d.get("securable_type", None),
|
|
3877
|
+
storage_location=d.get("storage_location", None),
|
|
3878
|
+
)
|
|
3879
|
+
|
|
3880
|
+
|
|
3881
|
+
@dataclass
|
|
3882
|
+
class ExternalLineageInfo:
|
|
3883
|
+
"""Lineage response containing lineage information of a data asset."""
|
|
3884
|
+
|
|
3885
|
+
external_lineage_info: Optional[ExternalLineageRelationshipInfo] = None
|
|
3886
|
+
"""Information about the edge metadata of the external lineage relationship."""
|
|
3887
|
+
|
|
3888
|
+
external_metadata_info: Optional[ExternalLineageExternalMetadataInfo] = None
|
|
3889
|
+
"""Information about external metadata involved in the lineage relationship."""
|
|
3890
|
+
|
|
3891
|
+
file_info: Optional[ExternalLineageFileInfo] = None
|
|
3892
|
+
"""Information about the file involved in the lineage relationship."""
|
|
3893
|
+
|
|
3894
|
+
model_info: Optional[ExternalLineageModelVersionInfo] = None
|
|
3895
|
+
"""Information about the model version involved in the lineage relationship."""
|
|
3896
|
+
|
|
3897
|
+
table_info: Optional[ExternalLineageTableInfo] = None
|
|
3898
|
+
"""Information about the table involved in the lineage relationship."""
|
|
3899
|
+
|
|
3900
|
+
def as_dict(self) -> dict:
|
|
3901
|
+
"""Serializes the ExternalLineageInfo into a dictionary suitable for use as a JSON request body."""
|
|
3902
|
+
body = {}
|
|
3903
|
+
if self.external_lineage_info:
|
|
3904
|
+
body["external_lineage_info"] = self.external_lineage_info.as_dict()
|
|
3905
|
+
if self.external_metadata_info:
|
|
3906
|
+
body["external_metadata_info"] = self.external_metadata_info.as_dict()
|
|
3907
|
+
if self.file_info:
|
|
3908
|
+
body["file_info"] = self.file_info.as_dict()
|
|
3909
|
+
if self.model_info:
|
|
3910
|
+
body["model_info"] = self.model_info.as_dict()
|
|
3911
|
+
if self.table_info:
|
|
3912
|
+
body["table_info"] = self.table_info.as_dict()
|
|
3913
|
+
return body
|
|
3914
|
+
|
|
3915
|
+
def as_shallow_dict(self) -> dict:
|
|
3916
|
+
"""Serializes the ExternalLineageInfo into a shallow dictionary of its immediate attributes."""
|
|
3917
|
+
body = {}
|
|
3918
|
+
if self.external_lineage_info:
|
|
3919
|
+
body["external_lineage_info"] = self.external_lineage_info
|
|
3920
|
+
if self.external_metadata_info:
|
|
3921
|
+
body["external_metadata_info"] = self.external_metadata_info
|
|
3922
|
+
if self.file_info:
|
|
3923
|
+
body["file_info"] = self.file_info
|
|
3924
|
+
if self.model_info:
|
|
3925
|
+
body["model_info"] = self.model_info
|
|
3926
|
+
if self.table_info:
|
|
3927
|
+
body["table_info"] = self.table_info
|
|
3928
|
+
return body
|
|
3929
|
+
|
|
3930
|
+
@classmethod
|
|
3931
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageInfo:
|
|
3932
|
+
"""Deserializes the ExternalLineageInfo from a dictionary."""
|
|
3933
|
+
return cls(
|
|
3934
|
+
external_lineage_info=_from_dict(d, "external_lineage_info", ExternalLineageRelationshipInfo),
|
|
3935
|
+
external_metadata_info=_from_dict(d, "external_metadata_info", ExternalLineageExternalMetadataInfo),
|
|
3936
|
+
file_info=_from_dict(d, "file_info", ExternalLineageFileInfo),
|
|
3937
|
+
model_info=_from_dict(d, "model_info", ExternalLineageModelVersionInfo),
|
|
3938
|
+
table_info=_from_dict(d, "table_info", ExternalLineageTableInfo),
|
|
3939
|
+
)
|
|
3940
|
+
|
|
3941
|
+
|
|
3942
|
+
@dataclass
|
|
3943
|
+
class ExternalLineageModelVersion:
|
|
3944
|
+
name: Optional[str] = None
|
|
3945
|
+
|
|
3946
|
+
version: Optional[str] = None
|
|
3947
|
+
|
|
3948
|
+
def as_dict(self) -> dict:
|
|
3949
|
+
"""Serializes the ExternalLineageModelVersion into a dictionary suitable for use as a JSON request body."""
|
|
3950
|
+
body = {}
|
|
3951
|
+
if self.name is not None:
|
|
3952
|
+
body["name"] = self.name
|
|
3953
|
+
if self.version is not None:
|
|
3954
|
+
body["version"] = self.version
|
|
3955
|
+
return body
|
|
3956
|
+
|
|
3957
|
+
def as_shallow_dict(self) -> dict:
|
|
3958
|
+
"""Serializes the ExternalLineageModelVersion into a shallow dictionary of its immediate attributes."""
|
|
3959
|
+
body = {}
|
|
3960
|
+
if self.name is not None:
|
|
3961
|
+
body["name"] = self.name
|
|
3962
|
+
if self.version is not None:
|
|
3963
|
+
body["version"] = self.version
|
|
3964
|
+
return body
|
|
3965
|
+
|
|
3966
|
+
@classmethod
|
|
3967
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageModelVersion:
|
|
3968
|
+
"""Deserializes the ExternalLineageModelVersion from a dictionary."""
|
|
3969
|
+
return cls(name=d.get("name", None), version=d.get("version", None))
|
|
3970
|
+
|
|
3971
|
+
|
|
3972
|
+
@dataclass
|
|
3973
|
+
class ExternalLineageModelVersionInfo:
|
|
3974
|
+
"""Represents the model version information in the lineage event."""
|
|
3975
|
+
|
|
3976
|
+
event_time: Optional[str] = None
|
|
3977
|
+
"""Timestamp of the lineage event."""
|
|
3978
|
+
|
|
3979
|
+
model_name: Optional[str] = None
|
|
3980
|
+
"""Name of the model."""
|
|
3981
|
+
|
|
3982
|
+
version: Optional[int] = None
|
|
3983
|
+
"""Version number of the model."""
|
|
3984
|
+
|
|
3985
|
+
def as_dict(self) -> dict:
|
|
3986
|
+
"""Serializes the ExternalLineageModelVersionInfo into a dictionary suitable for use as a JSON request body."""
|
|
3987
|
+
body = {}
|
|
3988
|
+
if self.event_time is not None:
|
|
3989
|
+
body["event_time"] = self.event_time
|
|
3990
|
+
if self.model_name is not None:
|
|
3991
|
+
body["model_name"] = self.model_name
|
|
3992
|
+
if self.version is not None:
|
|
3993
|
+
body["version"] = self.version
|
|
3994
|
+
return body
|
|
3995
|
+
|
|
3996
|
+
def as_shallow_dict(self) -> dict:
|
|
3997
|
+
"""Serializes the ExternalLineageModelVersionInfo into a shallow dictionary of its immediate attributes."""
|
|
3998
|
+
body = {}
|
|
3999
|
+
if self.event_time is not None:
|
|
4000
|
+
body["event_time"] = self.event_time
|
|
4001
|
+
if self.model_name is not None:
|
|
4002
|
+
body["model_name"] = self.model_name
|
|
4003
|
+
if self.version is not None:
|
|
4004
|
+
body["version"] = self.version
|
|
4005
|
+
return body
|
|
4006
|
+
|
|
4007
|
+
@classmethod
|
|
4008
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageModelVersionInfo:
|
|
4009
|
+
"""Deserializes the ExternalLineageModelVersionInfo from a dictionary."""
|
|
4010
|
+
return cls(
|
|
4011
|
+
event_time=d.get("event_time", None), model_name=d.get("model_name", None), version=d.get("version", None)
|
|
4012
|
+
)
|
|
4013
|
+
|
|
4014
|
+
|
|
4015
|
+
@dataclass
|
|
4016
|
+
class ExternalLineageObject:
|
|
4017
|
+
external_metadata: Optional[ExternalLineageExternalMetadata] = None
|
|
4018
|
+
|
|
4019
|
+
model_version: Optional[ExternalLineageModelVersion] = None
|
|
4020
|
+
|
|
4021
|
+
path: Optional[ExternalLineagePath] = None
|
|
4022
|
+
|
|
4023
|
+
table: Optional[ExternalLineageTable] = None
|
|
4024
|
+
|
|
4025
|
+
def as_dict(self) -> dict:
|
|
4026
|
+
"""Serializes the ExternalLineageObject into a dictionary suitable for use as a JSON request body."""
|
|
4027
|
+
body = {}
|
|
4028
|
+
if self.external_metadata:
|
|
4029
|
+
body["external_metadata"] = self.external_metadata.as_dict()
|
|
4030
|
+
if self.model_version:
|
|
4031
|
+
body["model_version"] = self.model_version.as_dict()
|
|
4032
|
+
if self.path:
|
|
4033
|
+
body["path"] = self.path.as_dict()
|
|
4034
|
+
if self.table:
|
|
4035
|
+
body["table"] = self.table.as_dict()
|
|
4036
|
+
return body
|
|
4037
|
+
|
|
4038
|
+
def as_shallow_dict(self) -> dict:
|
|
4039
|
+
"""Serializes the ExternalLineageObject into a shallow dictionary of its immediate attributes."""
|
|
4040
|
+
body = {}
|
|
4041
|
+
if self.external_metadata:
|
|
4042
|
+
body["external_metadata"] = self.external_metadata
|
|
4043
|
+
if self.model_version:
|
|
4044
|
+
body["model_version"] = self.model_version
|
|
4045
|
+
if self.path:
|
|
4046
|
+
body["path"] = self.path
|
|
4047
|
+
if self.table:
|
|
4048
|
+
body["table"] = self.table
|
|
4049
|
+
return body
|
|
4050
|
+
|
|
4051
|
+
@classmethod
|
|
4052
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageObject:
|
|
4053
|
+
"""Deserializes the ExternalLineageObject from a dictionary."""
|
|
4054
|
+
return cls(
|
|
4055
|
+
external_metadata=_from_dict(d, "external_metadata", ExternalLineageExternalMetadata),
|
|
4056
|
+
model_version=_from_dict(d, "model_version", ExternalLineageModelVersion),
|
|
4057
|
+
path=_from_dict(d, "path", ExternalLineagePath),
|
|
4058
|
+
table=_from_dict(d, "table", ExternalLineageTable),
|
|
4059
|
+
)
|
|
4060
|
+
|
|
4061
|
+
|
|
4062
|
+
@dataclass
|
|
4063
|
+
class ExternalLineagePath:
|
|
4064
|
+
url: Optional[str] = None
|
|
4065
|
+
|
|
4066
|
+
def as_dict(self) -> dict:
|
|
4067
|
+
"""Serializes the ExternalLineagePath into a dictionary suitable for use as a JSON request body."""
|
|
4068
|
+
body = {}
|
|
4069
|
+
if self.url is not None:
|
|
4070
|
+
body["url"] = self.url
|
|
4071
|
+
return body
|
|
4072
|
+
|
|
4073
|
+
def as_shallow_dict(self) -> dict:
|
|
4074
|
+
"""Serializes the ExternalLineagePath into a shallow dictionary of its immediate attributes."""
|
|
4075
|
+
body = {}
|
|
4076
|
+
if self.url is not None:
|
|
4077
|
+
body["url"] = self.url
|
|
4078
|
+
return body
|
|
4079
|
+
|
|
4080
|
+
@classmethod
|
|
4081
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineagePath:
|
|
4082
|
+
"""Deserializes the ExternalLineagePath from a dictionary."""
|
|
4083
|
+
return cls(url=d.get("url", None))
|
|
4084
|
+
|
|
4085
|
+
|
|
4086
|
+
@dataclass
|
|
4087
|
+
class ExternalLineageRelationship:
|
|
4088
|
+
source: ExternalLineageObject
|
|
4089
|
+
"""Source object of the external lineage relationship."""
|
|
4090
|
+
|
|
4091
|
+
target: ExternalLineageObject
|
|
4092
|
+
"""Target object of the external lineage relationship."""
|
|
4093
|
+
|
|
4094
|
+
columns: Optional[List[ColumnRelationship]] = None
|
|
4095
|
+
"""List of column relationships between source and target objects."""
|
|
4096
|
+
|
|
4097
|
+
id: Optional[str] = None
|
|
4098
|
+
"""Unique identifier of the external lineage relationship."""
|
|
4099
|
+
|
|
4100
|
+
properties: Optional[Dict[str, str]] = None
|
|
4101
|
+
"""Key-value properties associated with the external lineage relationship."""
|
|
4102
|
+
|
|
4103
|
+
def as_dict(self) -> dict:
|
|
4104
|
+
"""Serializes the ExternalLineageRelationship into a dictionary suitable for use as a JSON request body."""
|
|
4105
|
+
body = {}
|
|
4106
|
+
if self.columns:
|
|
4107
|
+
body["columns"] = [v.as_dict() for v in self.columns]
|
|
4108
|
+
if self.id is not None:
|
|
4109
|
+
body["id"] = self.id
|
|
4110
|
+
if self.properties:
|
|
4111
|
+
body["properties"] = self.properties
|
|
4112
|
+
if self.source:
|
|
4113
|
+
body["source"] = self.source.as_dict()
|
|
4114
|
+
if self.target:
|
|
4115
|
+
body["target"] = self.target.as_dict()
|
|
4116
|
+
return body
|
|
4117
|
+
|
|
4118
|
+
def as_shallow_dict(self) -> dict:
|
|
4119
|
+
"""Serializes the ExternalLineageRelationship into a shallow dictionary of its immediate attributes."""
|
|
4120
|
+
body = {}
|
|
4121
|
+
if self.columns:
|
|
4122
|
+
body["columns"] = self.columns
|
|
4123
|
+
if self.id is not None:
|
|
4124
|
+
body["id"] = self.id
|
|
4125
|
+
if self.properties:
|
|
4126
|
+
body["properties"] = self.properties
|
|
4127
|
+
if self.source:
|
|
4128
|
+
body["source"] = self.source
|
|
4129
|
+
if self.target:
|
|
4130
|
+
body["target"] = self.target
|
|
4131
|
+
return body
|
|
4132
|
+
|
|
4133
|
+
@classmethod
|
|
4134
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageRelationship:
|
|
4135
|
+
"""Deserializes the ExternalLineageRelationship from a dictionary."""
|
|
4136
|
+
return cls(
|
|
4137
|
+
columns=_repeated_dict(d, "columns", ColumnRelationship),
|
|
4138
|
+
id=d.get("id", None),
|
|
4139
|
+
properties=d.get("properties", None),
|
|
4140
|
+
source=_from_dict(d, "source", ExternalLineageObject),
|
|
4141
|
+
target=_from_dict(d, "target", ExternalLineageObject),
|
|
4142
|
+
)
|
|
4143
|
+
|
|
4144
|
+
|
|
4145
|
+
@dataclass
|
|
4146
|
+
class ExternalLineageRelationshipInfo:
|
|
4147
|
+
source: ExternalLineageObject
|
|
4148
|
+
"""Source object of the external lineage relationship."""
|
|
4149
|
+
|
|
4150
|
+
target: ExternalLineageObject
|
|
4151
|
+
"""Target object of the external lineage relationship."""
|
|
4152
|
+
|
|
4153
|
+
columns: Optional[List[ColumnRelationship]] = None
|
|
4154
|
+
"""List of column relationships between source and target objects."""
|
|
4155
|
+
|
|
4156
|
+
id: Optional[str] = None
|
|
4157
|
+
"""Unique identifier of the external lineage relationship."""
|
|
4158
|
+
|
|
4159
|
+
properties: Optional[Dict[str, str]] = None
|
|
4160
|
+
"""Key-value properties associated with the external lineage relationship."""
|
|
4161
|
+
|
|
4162
|
+
def as_dict(self) -> dict:
|
|
4163
|
+
"""Serializes the ExternalLineageRelationshipInfo into a dictionary suitable for use as a JSON request body."""
|
|
4164
|
+
body = {}
|
|
4165
|
+
if self.columns:
|
|
4166
|
+
body["columns"] = [v.as_dict() for v in self.columns]
|
|
4167
|
+
if self.id is not None:
|
|
4168
|
+
body["id"] = self.id
|
|
4169
|
+
if self.properties:
|
|
4170
|
+
body["properties"] = self.properties
|
|
4171
|
+
if self.source:
|
|
4172
|
+
body["source"] = self.source.as_dict()
|
|
4173
|
+
if self.target:
|
|
4174
|
+
body["target"] = self.target.as_dict()
|
|
4175
|
+
return body
|
|
4176
|
+
|
|
4177
|
+
def as_shallow_dict(self) -> dict:
|
|
4178
|
+
"""Serializes the ExternalLineageRelationshipInfo into a shallow dictionary of its immediate attributes."""
|
|
4179
|
+
body = {}
|
|
4180
|
+
if self.columns:
|
|
4181
|
+
body["columns"] = self.columns
|
|
4182
|
+
if self.id is not None:
|
|
4183
|
+
body["id"] = self.id
|
|
4184
|
+
if self.properties:
|
|
4185
|
+
body["properties"] = self.properties
|
|
4186
|
+
if self.source:
|
|
4187
|
+
body["source"] = self.source
|
|
4188
|
+
if self.target:
|
|
4189
|
+
body["target"] = self.target
|
|
4190
|
+
return body
|
|
4191
|
+
|
|
4192
|
+
@classmethod
|
|
4193
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageRelationshipInfo:
|
|
4194
|
+
"""Deserializes the ExternalLineageRelationshipInfo from a dictionary."""
|
|
4195
|
+
return cls(
|
|
4196
|
+
columns=_repeated_dict(d, "columns", ColumnRelationship),
|
|
4197
|
+
id=d.get("id", None),
|
|
4198
|
+
properties=d.get("properties", None),
|
|
4199
|
+
source=_from_dict(d, "source", ExternalLineageObject),
|
|
4200
|
+
target=_from_dict(d, "target", ExternalLineageObject),
|
|
4201
|
+
)
|
|
4202
|
+
|
|
4203
|
+
|
|
4204
|
+
@dataclass
|
|
4205
|
+
class ExternalLineageTable:
|
|
4206
|
+
name: Optional[str] = None
|
|
4207
|
+
|
|
4208
|
+
def as_dict(self) -> dict:
|
|
4209
|
+
"""Serializes the ExternalLineageTable into a dictionary suitable for use as a JSON request body."""
|
|
4210
|
+
body = {}
|
|
4211
|
+
if self.name is not None:
|
|
4212
|
+
body["name"] = self.name
|
|
4213
|
+
return body
|
|
4214
|
+
|
|
4215
|
+
def as_shallow_dict(self) -> dict:
|
|
4216
|
+
"""Serializes the ExternalLineageTable into a shallow dictionary of its immediate attributes."""
|
|
4217
|
+
body = {}
|
|
4218
|
+
if self.name is not None:
|
|
4219
|
+
body["name"] = self.name
|
|
4220
|
+
return body
|
|
4221
|
+
|
|
4222
|
+
@classmethod
|
|
4223
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageTable:
|
|
4224
|
+
"""Deserializes the ExternalLineageTable from a dictionary."""
|
|
4225
|
+
return cls(name=d.get("name", None))
|
|
4226
|
+
|
|
4227
|
+
|
|
4228
|
+
@dataclass
|
|
4229
|
+
class ExternalLineageTableInfo:
|
|
4230
|
+
"""Represents the table information in the lineage event."""
|
|
4231
|
+
|
|
4232
|
+
catalog_name: Optional[str] = None
|
|
4233
|
+
"""Name of Catalog."""
|
|
4234
|
+
|
|
4235
|
+
event_time: Optional[str] = None
|
|
4236
|
+
"""Timestamp of the lineage event."""
|
|
4237
|
+
|
|
4238
|
+
name: Optional[str] = None
|
|
4239
|
+
"""Name of Table."""
|
|
4240
|
+
|
|
4241
|
+
schema_name: Optional[str] = None
|
|
4242
|
+
"""Name of Schema."""
|
|
4243
|
+
|
|
4244
|
+
def as_dict(self) -> dict:
|
|
4245
|
+
"""Serializes the ExternalLineageTableInfo into a dictionary suitable for use as a JSON request body."""
|
|
4246
|
+
body = {}
|
|
4247
|
+
if self.catalog_name is not None:
|
|
4248
|
+
body["catalog_name"] = self.catalog_name
|
|
4249
|
+
if self.event_time is not None:
|
|
4250
|
+
body["event_time"] = self.event_time
|
|
4251
|
+
if self.name is not None:
|
|
4252
|
+
body["name"] = self.name
|
|
4253
|
+
if self.schema_name is not None:
|
|
4254
|
+
body["schema_name"] = self.schema_name
|
|
4255
|
+
return body
|
|
4256
|
+
|
|
4257
|
+
def as_shallow_dict(self) -> dict:
|
|
4258
|
+
"""Serializes the ExternalLineageTableInfo into a shallow dictionary of its immediate attributes."""
|
|
4259
|
+
body = {}
|
|
4260
|
+
if self.catalog_name is not None:
|
|
4261
|
+
body["catalog_name"] = self.catalog_name
|
|
4262
|
+
if self.event_time is not None:
|
|
4263
|
+
body["event_time"] = self.event_time
|
|
4264
|
+
if self.name is not None:
|
|
4265
|
+
body["name"] = self.name
|
|
4266
|
+
if self.schema_name is not None:
|
|
4267
|
+
body["schema_name"] = self.schema_name
|
|
4268
|
+
return body
|
|
4269
|
+
|
|
4270
|
+
@classmethod
|
|
4271
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalLineageTableInfo:
|
|
4272
|
+
"""Deserializes the ExternalLineageTableInfo from a dictionary."""
|
|
4273
|
+
return cls(
|
|
4274
|
+
catalog_name=d.get("catalog_name", None),
|
|
4275
|
+
event_time=d.get("event_time", None),
|
|
4276
|
+
name=d.get("name", None),
|
|
4277
|
+
schema_name=d.get("schema_name", None),
|
|
4278
|
+
)
|
|
4279
|
+
|
|
4280
|
+
|
|
4281
|
+
@dataclass
|
|
4282
|
+
class ExternalLocationInfo:
|
|
4283
|
+
browse_only: Optional[bool] = None
|
|
4284
|
+
"""Indicates whether the principal is limited to retrieving metadata for the associated object
|
|
4285
|
+
through the BROWSE privilege when include_browse is enabled in the request."""
|
|
4286
|
+
|
|
4287
|
+
comment: Optional[str] = None
|
|
4288
|
+
"""User-provided free-form text description."""
|
|
4289
|
+
|
|
4290
|
+
created_at: Optional[int] = None
|
|
4291
|
+
"""Time at which this external location was created, in epoch milliseconds."""
|
|
4292
|
+
|
|
4293
|
+
created_by: Optional[str] = None
|
|
4294
|
+
"""Username of external location creator."""
|
|
4295
|
+
|
|
4296
|
+
credential_id: Optional[str] = None
|
|
4297
|
+
"""Unique ID of the location's storage credential."""
|
|
4298
|
+
|
|
4299
|
+
credential_name: Optional[str] = None
|
|
4300
|
+
"""Name of the storage credential used with this location."""
|
|
4301
|
+
|
|
4302
|
+
enable_file_events: Optional[bool] = None
|
|
4303
|
+
"""Whether to enable file events on this external location."""
|
|
4304
|
+
|
|
4305
|
+
encryption_details: Optional[EncryptionDetails] = None
|
|
4306
|
+
|
|
4307
|
+
fallback: Optional[bool] = None
|
|
4308
|
+
"""Indicates whether fallback mode is enabled for this external location. When fallback mode is
|
|
4309
|
+
enabled, the access to the location falls back to cluster credentials if UC credentials are not
|
|
4310
|
+
sufficient."""
|
|
4311
|
+
|
|
4312
|
+
file_event_queue: Optional[FileEventQueue] = None
|
|
4313
|
+
"""File event queue settings."""
|
|
4314
|
+
|
|
4315
|
+
isolation_mode: Optional[IsolationMode] = None
|
|
4316
|
+
|
|
4317
|
+
metastore_id: Optional[str] = None
|
|
4318
|
+
"""Unique identifier of metastore hosting the external location."""
|
|
4319
|
+
|
|
4320
|
+
name: Optional[str] = None
|
|
4321
|
+
"""Name of the external location."""
|
|
4322
|
+
|
|
4323
|
+
owner: Optional[str] = None
|
|
4324
|
+
"""The owner of the external location."""
|
|
4325
|
+
|
|
4326
|
+
read_only: Optional[bool] = None
|
|
4327
|
+
"""Indicates whether the external location is read-only."""
|
|
4328
|
+
|
|
4329
|
+
updated_at: Optional[int] = None
|
|
4330
|
+
"""Time at which external location this was last modified, in epoch milliseconds."""
|
|
4331
|
+
|
|
4332
|
+
updated_by: Optional[str] = None
|
|
4333
|
+
"""Username of user who last modified the external location."""
|
|
4334
|
+
|
|
4335
|
+
url: Optional[str] = None
|
|
4336
|
+
"""Path URL of the external location."""
|
|
4337
|
+
|
|
4338
|
+
def as_dict(self) -> dict:
|
|
4339
|
+
"""Serializes the ExternalLocationInfo into a dictionary suitable for use as a JSON request body."""
|
|
4340
|
+
body = {}
|
|
4341
|
+
if self.browse_only is not None:
|
|
4342
|
+
body["browse_only"] = self.browse_only
|
|
4343
|
+
if self.comment is not None:
|
|
4344
|
+
body["comment"] = self.comment
|
|
3602
4345
|
if self.created_at is not None:
|
|
3603
4346
|
body["created_at"] = self.created_at
|
|
3604
4347
|
if self.created_by is not None:
|
|
@@ -3692,8 +4435,139 @@ class ExternalLocationInfo:
|
|
|
3692
4435
|
metastore_id=d.get("metastore_id", None),
|
|
3693
4436
|
name=d.get("name", None),
|
|
3694
4437
|
owner=d.get("owner", None),
|
|
3695
|
-
read_only=d.get("read_only", None),
|
|
3696
|
-
updated_at=d.get("updated_at", None),
|
|
4438
|
+
read_only=d.get("read_only", None),
|
|
4439
|
+
updated_at=d.get("updated_at", None),
|
|
4440
|
+
updated_by=d.get("updated_by", None),
|
|
4441
|
+
url=d.get("url", None),
|
|
4442
|
+
)
|
|
4443
|
+
|
|
4444
|
+
|
|
4445
|
+
@dataclass
|
|
4446
|
+
class ExternalMetadata:
|
|
4447
|
+
name: str
|
|
4448
|
+
"""Name of the external metadata object."""
|
|
4449
|
+
|
|
4450
|
+
system_type: SystemType
|
|
4451
|
+
"""Type of external system."""
|
|
4452
|
+
|
|
4453
|
+
entity_type: str
|
|
4454
|
+
"""Type of entity within the external system."""
|
|
4455
|
+
|
|
4456
|
+
columns: Optional[List[str]] = None
|
|
4457
|
+
"""List of columns associated with the external metadata object."""
|
|
4458
|
+
|
|
4459
|
+
create_time: Optional[str] = None
|
|
4460
|
+
"""Time at which this external metadata object was created."""
|
|
4461
|
+
|
|
4462
|
+
created_by: Optional[str] = None
|
|
4463
|
+
"""Username of external metadata object creator."""
|
|
4464
|
+
|
|
4465
|
+
description: Optional[str] = None
|
|
4466
|
+
"""User-provided free-form text description."""
|
|
4467
|
+
|
|
4468
|
+
id: Optional[str] = None
|
|
4469
|
+
"""Unique identifier of the external metadata object."""
|
|
4470
|
+
|
|
4471
|
+
metastore_id: Optional[str] = None
|
|
4472
|
+
"""Unique identifier of parent metastore."""
|
|
4473
|
+
|
|
4474
|
+
owner: Optional[str] = None
|
|
4475
|
+
"""Owner of the external metadata object."""
|
|
4476
|
+
|
|
4477
|
+
properties: Optional[Dict[str, str]] = None
|
|
4478
|
+
"""A map of key-value properties attached to the external metadata object."""
|
|
4479
|
+
|
|
4480
|
+
update_time: Optional[str] = None
|
|
4481
|
+
"""Time at which this external metadata object was last modified."""
|
|
4482
|
+
|
|
4483
|
+
updated_by: Optional[str] = None
|
|
4484
|
+
"""Username of user who last modified external metadata object."""
|
|
4485
|
+
|
|
4486
|
+
url: Optional[str] = None
|
|
4487
|
+
"""URL associated with the external metadata object."""
|
|
4488
|
+
|
|
4489
|
+
def as_dict(self) -> dict:
|
|
4490
|
+
"""Serializes the ExternalMetadata into a dictionary suitable for use as a JSON request body."""
|
|
4491
|
+
body = {}
|
|
4492
|
+
if self.columns:
|
|
4493
|
+
body["columns"] = [v for v in self.columns]
|
|
4494
|
+
if self.create_time is not None:
|
|
4495
|
+
body["create_time"] = self.create_time
|
|
4496
|
+
if self.created_by is not None:
|
|
4497
|
+
body["created_by"] = self.created_by
|
|
4498
|
+
if self.description is not None:
|
|
4499
|
+
body["description"] = self.description
|
|
4500
|
+
if self.entity_type is not None:
|
|
4501
|
+
body["entity_type"] = self.entity_type
|
|
4502
|
+
if self.id is not None:
|
|
4503
|
+
body["id"] = self.id
|
|
4504
|
+
if self.metastore_id is not None:
|
|
4505
|
+
body["metastore_id"] = self.metastore_id
|
|
4506
|
+
if self.name is not None:
|
|
4507
|
+
body["name"] = self.name
|
|
4508
|
+
if self.owner is not None:
|
|
4509
|
+
body["owner"] = self.owner
|
|
4510
|
+
if self.properties:
|
|
4511
|
+
body["properties"] = self.properties
|
|
4512
|
+
if self.system_type is not None:
|
|
4513
|
+
body["system_type"] = self.system_type.value
|
|
4514
|
+
if self.update_time is not None:
|
|
4515
|
+
body["update_time"] = self.update_time
|
|
4516
|
+
if self.updated_by is not None:
|
|
4517
|
+
body["updated_by"] = self.updated_by
|
|
4518
|
+
if self.url is not None:
|
|
4519
|
+
body["url"] = self.url
|
|
4520
|
+
return body
|
|
4521
|
+
|
|
4522
|
+
def as_shallow_dict(self) -> dict:
|
|
4523
|
+
"""Serializes the ExternalMetadata into a shallow dictionary of its immediate attributes."""
|
|
4524
|
+
body = {}
|
|
4525
|
+
if self.columns:
|
|
4526
|
+
body["columns"] = self.columns
|
|
4527
|
+
if self.create_time is not None:
|
|
4528
|
+
body["create_time"] = self.create_time
|
|
4529
|
+
if self.created_by is not None:
|
|
4530
|
+
body["created_by"] = self.created_by
|
|
4531
|
+
if self.description is not None:
|
|
4532
|
+
body["description"] = self.description
|
|
4533
|
+
if self.entity_type is not None:
|
|
4534
|
+
body["entity_type"] = self.entity_type
|
|
4535
|
+
if self.id is not None:
|
|
4536
|
+
body["id"] = self.id
|
|
4537
|
+
if self.metastore_id is not None:
|
|
4538
|
+
body["metastore_id"] = self.metastore_id
|
|
4539
|
+
if self.name is not None:
|
|
4540
|
+
body["name"] = self.name
|
|
4541
|
+
if self.owner is not None:
|
|
4542
|
+
body["owner"] = self.owner
|
|
4543
|
+
if self.properties:
|
|
4544
|
+
body["properties"] = self.properties
|
|
4545
|
+
if self.system_type is not None:
|
|
4546
|
+
body["system_type"] = self.system_type
|
|
4547
|
+
if self.update_time is not None:
|
|
4548
|
+
body["update_time"] = self.update_time
|
|
4549
|
+
if self.updated_by is not None:
|
|
4550
|
+
body["updated_by"] = self.updated_by
|
|
4551
|
+
if self.url is not None:
|
|
4552
|
+
body["url"] = self.url
|
|
4553
|
+
return body
|
|
4554
|
+
|
|
4555
|
+
@classmethod
|
|
4556
|
+
def from_dict(cls, d: Dict[str, Any]) -> ExternalMetadata:
|
|
4557
|
+
"""Deserializes the ExternalMetadata from a dictionary."""
|
|
4558
|
+
return cls(
|
|
4559
|
+
columns=d.get("columns", None),
|
|
4560
|
+
create_time=d.get("create_time", None),
|
|
4561
|
+
created_by=d.get("created_by", None),
|
|
4562
|
+
description=d.get("description", None),
|
|
4563
|
+
entity_type=d.get("entity_type", None),
|
|
4564
|
+
id=d.get("id", None),
|
|
4565
|
+
metastore_id=d.get("metastore_id", None),
|
|
4566
|
+
name=d.get("name", None),
|
|
4567
|
+
owner=d.get("owner", None),
|
|
4568
|
+
properties=d.get("properties", None),
|
|
4569
|
+
system_type=_enum(d, "system_type", SystemType),
|
|
4570
|
+
update_time=d.get("update_time", None),
|
|
3697
4571
|
updated_by=d.get("updated_by", None),
|
|
3698
4572
|
url=d.get("url", None),
|
|
3699
4573
|
)
|
|
@@ -3815,6 +4689,9 @@ class ForeignKeyConstraint:
|
|
|
3815
4689
|
parent_columns: List[str]
|
|
3816
4690
|
"""Column names for this constraint."""
|
|
3817
4691
|
|
|
4692
|
+
rely: Optional[bool] = None
|
|
4693
|
+
"""True if the constraint is RELY, false or unset if NORELY."""
|
|
4694
|
+
|
|
3818
4695
|
def as_dict(self) -> dict:
|
|
3819
4696
|
"""Serializes the ForeignKeyConstraint into a dictionary suitable for use as a JSON request body."""
|
|
3820
4697
|
body = {}
|
|
@@ -3826,6 +4703,8 @@ class ForeignKeyConstraint:
|
|
|
3826
4703
|
body["parent_columns"] = [v for v in self.parent_columns]
|
|
3827
4704
|
if self.parent_table is not None:
|
|
3828
4705
|
body["parent_table"] = self.parent_table
|
|
4706
|
+
if self.rely is not None:
|
|
4707
|
+
body["rely"] = self.rely
|
|
3829
4708
|
return body
|
|
3830
4709
|
|
|
3831
4710
|
def as_shallow_dict(self) -> dict:
|
|
@@ -3839,6 +4718,8 @@ class ForeignKeyConstraint:
|
|
|
3839
4718
|
body["parent_columns"] = self.parent_columns
|
|
3840
4719
|
if self.parent_table is not None:
|
|
3841
4720
|
body["parent_table"] = self.parent_table
|
|
4721
|
+
if self.rely is not None:
|
|
4722
|
+
body["rely"] = self.rely
|
|
3842
4723
|
return body
|
|
3843
4724
|
|
|
3844
4725
|
@classmethod
|
|
@@ -3849,6 +4730,7 @@ class ForeignKeyConstraint:
|
|
|
3849
4730
|
name=d.get("name", None),
|
|
3850
4731
|
parent_columns=d.get("parent_columns", None),
|
|
3851
4732
|
parent_table=d.get("parent_table", None),
|
|
4733
|
+
rely=d.get("rely", None),
|
|
3852
4734
|
)
|
|
3853
4735
|
|
|
3854
4736
|
|
|
@@ -4192,10 +5074,8 @@ class FunctionParameterInfo:
|
|
|
4192
5074
|
"""Default value of the parameter."""
|
|
4193
5075
|
|
|
4194
5076
|
parameter_mode: Optional[FunctionParameterMode] = None
|
|
4195
|
-
"""The mode of the function parameter."""
|
|
4196
5077
|
|
|
4197
5078
|
parameter_type: Optional[FunctionParameterType] = None
|
|
4198
|
-
"""The type of function parameter."""
|
|
4199
5079
|
|
|
4200
5080
|
type_interval_type: Optional[str] = None
|
|
4201
5081
|
"""Format of IntervalType."""
|
|
@@ -4358,7 +5238,7 @@ class GcpPubsub:
|
|
|
4358
5238
|
|
|
4359
5239
|
subscription_name: Optional[str] = None
|
|
4360
5240
|
"""The Pub/Sub subscription name in the format projects/{project}/subscriptions/{subscription name}
|
|
4361
|
-
|
|
5241
|
+
Required for provided_pubsub."""
|
|
4362
5242
|
|
|
4363
5243
|
def as_dict(self) -> dict:
|
|
4364
5244
|
"""Serializes the GcpPubsub into a dictionary suitable for use as a JSON request body."""
|
|
@@ -4450,10 +5330,8 @@ class GenerateTemporaryServiceCredentialRequest:
|
|
|
4450
5330
|
"""The name of the service credential used to generate a temporary credential"""
|
|
4451
5331
|
|
|
4452
5332
|
azure_options: Optional[GenerateTemporaryServiceCredentialAzureOptions] = None
|
|
4453
|
-
"""The Azure cloud options to customize the requested temporary credential"""
|
|
4454
5333
|
|
|
4455
5334
|
gcp_options: Optional[GenerateTemporaryServiceCredentialGcpOptions] = None
|
|
4456
|
-
"""The GCP cloud options to customize the requested temporary credential"""
|
|
4457
5335
|
|
|
4458
5336
|
def as_dict(self) -> dict:
|
|
4459
5337
|
"""Serializes the GenerateTemporaryServiceCredentialRequest into a dictionary suitable for use as a JSON request body."""
|
|
@@ -4524,29 +5402,18 @@ class GenerateTemporaryTableCredentialRequest:
|
|
|
4524
5402
|
@dataclass
|
|
4525
5403
|
class GenerateTemporaryTableCredentialResponse:
|
|
4526
5404
|
aws_temp_credentials: Optional[AwsCredentials] = None
|
|
4527
|
-
"""AWS temporary credentials for API authentication. Read more at
|
|
4528
|
-
https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html."""
|
|
4529
5405
|
|
|
4530
5406
|
azure_aad: Optional[AzureActiveDirectoryToken] = None
|
|
4531
|
-
"""Azure Active Directory token, essentially the Oauth token for Azure Service Principal or Managed
|
|
4532
|
-
Identity. Read more at
|
|
4533
|
-
https://learn.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/aad/service-prin-aad-token"""
|
|
4534
5407
|
|
|
4535
5408
|
azure_user_delegation_sas: Optional[AzureUserDelegationSas] = None
|
|
4536
|
-
"""Azure temporary credentials for API authentication. Read more at
|
|
4537
|
-
https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas"""
|
|
4538
5409
|
|
|
4539
5410
|
expiration_time: Optional[int] = None
|
|
4540
5411
|
"""Server time when the credential will expire, in epoch milliseconds. The API client is advised to
|
|
4541
5412
|
cache the credential given this expiration time."""
|
|
4542
5413
|
|
|
4543
5414
|
gcp_oauth_token: Optional[GcpOauthToken] = None
|
|
4544
|
-
"""GCP temporary credentials for API authentication. Read more at
|
|
4545
|
-
https://developers.google.com/identity/protocols/oauth2/service-account"""
|
|
4546
5415
|
|
|
4547
5416
|
r2_temp_credentials: Optional[R2Credentials] = None
|
|
4548
|
-
"""R2 temporary credentials for API authentication. Read more at
|
|
4549
|
-
https://developers.cloudflare.com/r2/api/s3/tokens/."""
|
|
4550
5417
|
|
|
4551
5418
|
url: Optional[str] = None
|
|
4552
5419
|
"""The URL of the storage path accessible by the temporary credential."""
|
|
@@ -4908,6 +5775,12 @@ class IsolationMode(Enum):
|
|
|
4908
5775
|
ISOLATION_MODE_OPEN = "ISOLATION_MODE_OPEN"
|
|
4909
5776
|
|
|
4910
5777
|
|
|
5778
|
+
class LineageDirection(Enum):
|
|
5779
|
+
|
|
5780
|
+
DOWNSTREAM = "DOWNSTREAM"
|
|
5781
|
+
UPSTREAM = "UPSTREAM"
|
|
5782
|
+
|
|
5783
|
+
|
|
4911
5784
|
@dataclass
|
|
4912
5785
|
class ListAccountMetastoreAssignmentsResponse:
|
|
4913
5786
|
"""The list of workspaces to which the given metastore is assigned."""
|
|
@@ -5061,6 +5934,39 @@ class ListCredentialsResponse:
|
|
|
5061
5934
|
)
|
|
5062
5935
|
|
|
5063
5936
|
|
|
5937
|
+
@dataclass
|
|
5938
|
+
class ListExternalLineageRelationshipsResponse:
|
|
5939
|
+
external_lineage_relationships: Optional[List[ExternalLineageInfo]] = None
|
|
5940
|
+
|
|
5941
|
+
next_page_token: Optional[str] = None
|
|
5942
|
+
|
|
5943
|
+
def as_dict(self) -> dict:
|
|
5944
|
+
"""Serializes the ListExternalLineageRelationshipsResponse into a dictionary suitable for use as a JSON request body."""
|
|
5945
|
+
body = {}
|
|
5946
|
+
if self.external_lineage_relationships:
|
|
5947
|
+
body["external_lineage_relationships"] = [v.as_dict() for v in self.external_lineage_relationships]
|
|
5948
|
+
if self.next_page_token is not None:
|
|
5949
|
+
body["next_page_token"] = self.next_page_token
|
|
5950
|
+
return body
|
|
5951
|
+
|
|
5952
|
+
def as_shallow_dict(self) -> dict:
|
|
5953
|
+
"""Serializes the ListExternalLineageRelationshipsResponse into a shallow dictionary of its immediate attributes."""
|
|
5954
|
+
body = {}
|
|
5955
|
+
if self.external_lineage_relationships:
|
|
5956
|
+
body["external_lineage_relationships"] = self.external_lineage_relationships
|
|
5957
|
+
if self.next_page_token is not None:
|
|
5958
|
+
body["next_page_token"] = self.next_page_token
|
|
5959
|
+
return body
|
|
5960
|
+
|
|
5961
|
+
@classmethod
|
|
5962
|
+
def from_dict(cls, d: Dict[str, Any]) -> ListExternalLineageRelationshipsResponse:
|
|
5963
|
+
"""Deserializes the ListExternalLineageRelationshipsResponse from a dictionary."""
|
|
5964
|
+
return cls(
|
|
5965
|
+
external_lineage_relationships=_repeated_dict(d, "external_lineage_relationships", ExternalLineageInfo),
|
|
5966
|
+
next_page_token=d.get("next_page_token", None),
|
|
5967
|
+
)
|
|
5968
|
+
|
|
5969
|
+
|
|
5064
5970
|
@dataclass
|
|
5065
5971
|
class ListExternalLocationsResponse:
|
|
5066
5972
|
external_locations: Optional[List[ExternalLocationInfo]] = None
|
|
@@ -5097,6 +6003,39 @@ class ListExternalLocationsResponse:
|
|
|
5097
6003
|
)
|
|
5098
6004
|
|
|
5099
6005
|
|
|
6006
|
+
@dataclass
|
|
6007
|
+
class ListExternalMetadataResponse:
|
|
6008
|
+
external_metadata: Optional[List[ExternalMetadata]] = None
|
|
6009
|
+
|
|
6010
|
+
next_page_token: Optional[str] = None
|
|
6011
|
+
|
|
6012
|
+
def as_dict(self) -> dict:
|
|
6013
|
+
"""Serializes the ListExternalMetadataResponse into a dictionary suitable for use as a JSON request body."""
|
|
6014
|
+
body = {}
|
|
6015
|
+
if self.external_metadata:
|
|
6016
|
+
body["external_metadata"] = [v.as_dict() for v in self.external_metadata]
|
|
6017
|
+
if self.next_page_token is not None:
|
|
6018
|
+
body["next_page_token"] = self.next_page_token
|
|
6019
|
+
return body
|
|
6020
|
+
|
|
6021
|
+
def as_shallow_dict(self) -> dict:
|
|
6022
|
+
"""Serializes the ListExternalMetadataResponse into a shallow dictionary of its immediate attributes."""
|
|
6023
|
+
body = {}
|
|
6024
|
+
if self.external_metadata:
|
|
6025
|
+
body["external_metadata"] = self.external_metadata
|
|
6026
|
+
if self.next_page_token is not None:
|
|
6027
|
+
body["next_page_token"] = self.next_page_token
|
|
6028
|
+
return body
|
|
6029
|
+
|
|
6030
|
+
@classmethod
|
|
6031
|
+
def from_dict(cls, d: Dict[str, Any]) -> ListExternalMetadataResponse:
|
|
6032
|
+
"""Deserializes the ListExternalMetadataResponse from a dictionary."""
|
|
6033
|
+
return cls(
|
|
6034
|
+
external_metadata=_repeated_dict(d, "external_metadata", ExternalMetadata),
|
|
6035
|
+
next_page_token=d.get("next_page_token", None),
|
|
6036
|
+
)
|
|
6037
|
+
|
|
6038
|
+
|
|
5100
6039
|
@dataclass
|
|
5101
6040
|
class ListFunctionsResponse:
|
|
5102
6041
|
functions: Optional[List[FunctionInfo]] = None
|
|
@@ -6085,7 +7024,6 @@ class MonitorInfo:
|
|
|
6085
7024
|
"""The full name of the table to monitor. Format: __catalog_name__.__schema_name__.__table_name__."""
|
|
6086
7025
|
|
|
6087
7026
|
status: MonitorInfoStatus
|
|
6088
|
-
"""The status of the monitor."""
|
|
6089
7027
|
|
|
6090
7028
|
monitor_version: str
|
|
6091
7029
|
"""The version of the monitor config (e.g. 1,2,3). If negative, the monitor may be corrupted."""
|
|
@@ -6771,26 +7709,18 @@ class OnlineTableStatus:
|
|
|
6771
7709
|
"""Status of an online table."""
|
|
6772
7710
|
|
|
6773
7711
|
continuous_update_status: Optional[ContinuousUpdateStatus] = None
|
|
6774
|
-
"""Detailed status of an online table. Shown if the online table is in the ONLINE_CONTINUOUS_UPDATE
|
|
6775
|
-
or the ONLINE_UPDATING_PIPELINE_RESOURCES state."""
|
|
6776
7712
|
|
|
6777
7713
|
detailed_state: Optional[OnlineTableState] = None
|
|
6778
7714
|
"""The state of the online table."""
|
|
6779
7715
|
|
|
6780
7716
|
failed_status: Optional[FailedStatus] = None
|
|
6781
|
-
"""Detailed status of an online table. Shown if the online table is in the OFFLINE_FAILED or the
|
|
6782
|
-
ONLINE_PIPELINE_FAILED state."""
|
|
6783
7717
|
|
|
6784
7718
|
message: Optional[str] = None
|
|
6785
7719
|
"""A text description of the current state of the online table."""
|
|
6786
7720
|
|
|
6787
7721
|
provisioning_status: Optional[ProvisioningStatus] = None
|
|
6788
|
-
"""Detailed status of an online table. Shown if the online table is in the
|
|
6789
|
-
PROVISIONING_PIPELINE_RESOURCES or the PROVISIONING_INITIAL_SNAPSHOT state."""
|
|
6790
7722
|
|
|
6791
7723
|
triggered_update_status: Optional[TriggeredUpdateStatus] = None
|
|
6792
|
-
"""Detailed status of an online table. Shown if the online table is in the ONLINE_TRIGGERED_UPDATE
|
|
6793
|
-
or the ONLINE_NO_PENDING_UPDATE state."""
|
|
6794
7724
|
|
|
6795
7725
|
def as_dict(self) -> dict:
|
|
6796
7726
|
"""Serializes the OnlineTableStatus into a dictionary suitable for use as a JSON request body."""
|
|
@@ -6839,6 +7769,169 @@ class OnlineTableStatus:
|
|
|
6839
7769
|
)
|
|
6840
7770
|
|
|
6841
7771
|
|
|
7772
|
+
@dataclass
|
|
7773
|
+
class OptionSpec:
|
|
7774
|
+
"""Spec of an allowed option on a securable kind and its attributes. This is mostly used by UI to
|
|
7775
|
+
provide user friendly hints and descriptions in order to facilitate the securable creation
|
|
7776
|
+
process."""
|
|
7777
|
+
|
|
7778
|
+
allowed_values: Optional[List[str]] = None
|
|
7779
|
+
"""For drop down / radio button selections, UI will want to know the possible input values, it can
|
|
7780
|
+
also be used by other option types to limit input selections."""
|
|
7781
|
+
|
|
7782
|
+
default_value: Optional[str] = None
|
|
7783
|
+
"""The default value of the option, for example, value '443' for 'port' option."""
|
|
7784
|
+
|
|
7785
|
+
description: Optional[str] = None
|
|
7786
|
+
"""A concise user facing description of what the input value of this option should look like."""
|
|
7787
|
+
|
|
7788
|
+
hint: Optional[str] = None
|
|
7789
|
+
"""The hint is used on the UI to suggest what the input value can possibly be like, for example:
|
|
7790
|
+
example.com for 'host' option. Unlike default value, it will not be applied automatically
|
|
7791
|
+
without user input."""
|
|
7792
|
+
|
|
7793
|
+
is_copiable: Optional[bool] = None
|
|
7794
|
+
"""Indicates whether an option should be displayed with copy button on the UI."""
|
|
7795
|
+
|
|
7796
|
+
is_creatable: Optional[bool] = None
|
|
7797
|
+
"""Indicates whether an option can be provided by users in the create/update path of an entity."""
|
|
7798
|
+
|
|
7799
|
+
is_hidden: Optional[bool] = None
|
|
7800
|
+
"""Is the option value not user settable and is thus not shown on the UI."""
|
|
7801
|
+
|
|
7802
|
+
is_loggable: Optional[bool] = None
|
|
7803
|
+
"""Specifies whether this option is safe to log, i.e. no sensitive information."""
|
|
7804
|
+
|
|
7805
|
+
is_required: Optional[bool] = None
|
|
7806
|
+
"""Is the option required."""
|
|
7807
|
+
|
|
7808
|
+
is_secret: Optional[bool] = None
|
|
7809
|
+
"""Is the option value considered secret and thus redacted on the UI."""
|
|
7810
|
+
|
|
7811
|
+
is_updatable: Optional[bool] = None
|
|
7812
|
+
"""Is the option updatable by users."""
|
|
7813
|
+
|
|
7814
|
+
name: Optional[str] = None
|
|
7815
|
+
"""The unique name of the option."""
|
|
7816
|
+
|
|
7817
|
+
oauth_stage: Optional[OptionSpecOauthStage] = None
|
|
7818
|
+
"""Specifies when the option value is displayed on the UI within the OAuth flow."""
|
|
7819
|
+
|
|
7820
|
+
type: Optional[OptionSpecOptionType] = None
|
|
7821
|
+
"""The type of the option."""
|
|
7822
|
+
|
|
7823
|
+
def as_dict(self) -> dict:
|
|
7824
|
+
"""Serializes the OptionSpec into a dictionary suitable for use as a JSON request body."""
|
|
7825
|
+
body = {}
|
|
7826
|
+
if self.allowed_values:
|
|
7827
|
+
body["allowed_values"] = [v for v in self.allowed_values]
|
|
7828
|
+
if self.default_value is not None:
|
|
7829
|
+
body["default_value"] = self.default_value
|
|
7830
|
+
if self.description is not None:
|
|
7831
|
+
body["description"] = self.description
|
|
7832
|
+
if self.hint is not None:
|
|
7833
|
+
body["hint"] = self.hint
|
|
7834
|
+
if self.is_copiable is not None:
|
|
7835
|
+
body["is_copiable"] = self.is_copiable
|
|
7836
|
+
if self.is_creatable is not None:
|
|
7837
|
+
body["is_creatable"] = self.is_creatable
|
|
7838
|
+
if self.is_hidden is not None:
|
|
7839
|
+
body["is_hidden"] = self.is_hidden
|
|
7840
|
+
if self.is_loggable is not None:
|
|
7841
|
+
body["is_loggable"] = self.is_loggable
|
|
7842
|
+
if self.is_required is not None:
|
|
7843
|
+
body["is_required"] = self.is_required
|
|
7844
|
+
if self.is_secret is not None:
|
|
7845
|
+
body["is_secret"] = self.is_secret
|
|
7846
|
+
if self.is_updatable is not None:
|
|
7847
|
+
body["is_updatable"] = self.is_updatable
|
|
7848
|
+
if self.name is not None:
|
|
7849
|
+
body["name"] = self.name
|
|
7850
|
+
if self.oauth_stage is not None:
|
|
7851
|
+
body["oauth_stage"] = self.oauth_stage.value
|
|
7852
|
+
if self.type is not None:
|
|
7853
|
+
body["type"] = self.type.value
|
|
7854
|
+
return body
|
|
7855
|
+
|
|
7856
|
+
def as_shallow_dict(self) -> dict:
|
|
7857
|
+
"""Serializes the OptionSpec into a shallow dictionary of its immediate attributes."""
|
|
7858
|
+
body = {}
|
|
7859
|
+
if self.allowed_values:
|
|
7860
|
+
body["allowed_values"] = self.allowed_values
|
|
7861
|
+
if self.default_value is not None:
|
|
7862
|
+
body["default_value"] = self.default_value
|
|
7863
|
+
if self.description is not None:
|
|
7864
|
+
body["description"] = self.description
|
|
7865
|
+
if self.hint is not None:
|
|
7866
|
+
body["hint"] = self.hint
|
|
7867
|
+
if self.is_copiable is not None:
|
|
7868
|
+
body["is_copiable"] = self.is_copiable
|
|
7869
|
+
if self.is_creatable is not None:
|
|
7870
|
+
body["is_creatable"] = self.is_creatable
|
|
7871
|
+
if self.is_hidden is not None:
|
|
7872
|
+
body["is_hidden"] = self.is_hidden
|
|
7873
|
+
if self.is_loggable is not None:
|
|
7874
|
+
body["is_loggable"] = self.is_loggable
|
|
7875
|
+
if self.is_required is not None:
|
|
7876
|
+
body["is_required"] = self.is_required
|
|
7877
|
+
if self.is_secret is not None:
|
|
7878
|
+
body["is_secret"] = self.is_secret
|
|
7879
|
+
if self.is_updatable is not None:
|
|
7880
|
+
body["is_updatable"] = self.is_updatable
|
|
7881
|
+
if self.name is not None:
|
|
7882
|
+
body["name"] = self.name
|
|
7883
|
+
if self.oauth_stage is not None:
|
|
7884
|
+
body["oauth_stage"] = self.oauth_stage
|
|
7885
|
+
if self.type is not None:
|
|
7886
|
+
body["type"] = self.type
|
|
7887
|
+
return body
|
|
7888
|
+
|
|
7889
|
+
@classmethod
|
|
7890
|
+
def from_dict(cls, d: Dict[str, Any]) -> OptionSpec:
|
|
7891
|
+
"""Deserializes the OptionSpec from a dictionary."""
|
|
7892
|
+
return cls(
|
|
7893
|
+
allowed_values=d.get("allowed_values", None),
|
|
7894
|
+
default_value=d.get("default_value", None),
|
|
7895
|
+
description=d.get("description", None),
|
|
7896
|
+
hint=d.get("hint", None),
|
|
7897
|
+
is_copiable=d.get("is_copiable", None),
|
|
7898
|
+
is_creatable=d.get("is_creatable", None),
|
|
7899
|
+
is_hidden=d.get("is_hidden", None),
|
|
7900
|
+
is_loggable=d.get("is_loggable", None),
|
|
7901
|
+
is_required=d.get("is_required", None),
|
|
7902
|
+
is_secret=d.get("is_secret", None),
|
|
7903
|
+
is_updatable=d.get("is_updatable", None),
|
|
7904
|
+
name=d.get("name", None),
|
|
7905
|
+
oauth_stage=_enum(d, "oauth_stage", OptionSpecOauthStage),
|
|
7906
|
+
type=_enum(d, "type", OptionSpecOptionType),
|
|
7907
|
+
)
|
|
7908
|
+
|
|
7909
|
+
|
|
7910
|
+
class OptionSpecOauthStage(Enum):
|
|
7911
|
+
"""During the OAuth flow, specifies which stage the option should be displayed in the UI.
|
|
7912
|
+
OAUTH_STAGE_UNSPECIFIED is the default value for options unrelated to the OAuth flow.
|
|
7913
|
+
BEFORE_AUTHORIZATION_CODE corresponds to options necessary to initiate the OAuth process.
|
|
7914
|
+
BEFORE_ACCESS_TOKEN corresponds to options that are necessary to create a foreign connection,
|
|
7915
|
+
but that should be displayed after the authorization code has already been received."""
|
|
7916
|
+
|
|
7917
|
+
BEFORE_ACCESS_TOKEN = "BEFORE_ACCESS_TOKEN"
|
|
7918
|
+
BEFORE_AUTHORIZATION_CODE = "BEFORE_AUTHORIZATION_CODE"
|
|
7919
|
+
|
|
7920
|
+
|
|
7921
|
+
class OptionSpecOptionType(Enum):
|
|
7922
|
+
"""Type of the option, we purposely follow JavaScript types so that the UI can map the options to
|
|
7923
|
+
JS types. https://www.w3schools.com/js/js_datatypes.asp Enum is a special case that it's just
|
|
7924
|
+
string with selections."""
|
|
7925
|
+
|
|
7926
|
+
OPTION_BIGINT = "OPTION_BIGINT"
|
|
7927
|
+
OPTION_BOOLEAN = "OPTION_BOOLEAN"
|
|
7928
|
+
OPTION_ENUM = "OPTION_ENUM"
|
|
7929
|
+
OPTION_MULTILINE_STRING = "OPTION_MULTILINE_STRING"
|
|
7930
|
+
OPTION_NUMBER = "OPTION_NUMBER"
|
|
7931
|
+
OPTION_SERVICE_CREDENTIAL = "OPTION_SERVICE_CREDENTIAL"
|
|
7932
|
+
OPTION_STRING = "OPTION_STRING"
|
|
7933
|
+
|
|
7934
|
+
|
|
6842
7935
|
@dataclass
|
|
6843
7936
|
class PermissionsChange:
|
|
6844
7937
|
add: Optional[List[Privilege]] = None
|
|
@@ -6952,6 +8045,9 @@ class PrimaryKeyConstraint:
|
|
|
6952
8045
|
child_columns: List[str]
|
|
6953
8046
|
"""Column names for this constraint."""
|
|
6954
8047
|
|
|
8048
|
+
rely: Optional[bool] = None
|
|
8049
|
+
"""True if the constraint is RELY, false or unset if NORELY."""
|
|
8050
|
+
|
|
6955
8051
|
timeseries_columns: Optional[List[str]] = None
|
|
6956
8052
|
"""Column names that represent a timeseries."""
|
|
6957
8053
|
|
|
@@ -6962,6 +8058,8 @@ class PrimaryKeyConstraint:
|
|
|
6962
8058
|
body["child_columns"] = [v for v in self.child_columns]
|
|
6963
8059
|
if self.name is not None:
|
|
6964
8060
|
body["name"] = self.name
|
|
8061
|
+
if self.rely is not None:
|
|
8062
|
+
body["rely"] = self.rely
|
|
6965
8063
|
if self.timeseries_columns:
|
|
6966
8064
|
body["timeseries_columns"] = [v for v in self.timeseries_columns]
|
|
6967
8065
|
return body
|
|
@@ -6973,6 +8071,8 @@ class PrimaryKeyConstraint:
|
|
|
6973
8071
|
body["child_columns"] = self.child_columns
|
|
6974
8072
|
if self.name is not None:
|
|
6975
8073
|
body["name"] = self.name
|
|
8074
|
+
if self.rely is not None:
|
|
8075
|
+
body["rely"] = self.rely
|
|
6976
8076
|
if self.timeseries_columns:
|
|
6977
8077
|
body["timeseries_columns"] = self.timeseries_columns
|
|
6978
8078
|
return body
|
|
@@ -6983,6 +8083,7 @@ class PrimaryKeyConstraint:
|
|
|
6983
8083
|
return cls(
|
|
6984
8084
|
child_columns=d.get("child_columns", None),
|
|
6985
8085
|
name=d.get("name", None),
|
|
8086
|
+
rely=d.get("rely", None),
|
|
6986
8087
|
timeseries_columns=d.get("timeseries_columns", None),
|
|
6987
8088
|
)
|
|
6988
8089
|
|
|
@@ -7043,7 +8144,8 @@ class Privilege(Enum):
|
|
|
7043
8144
|
@dataclass
|
|
7044
8145
|
class PrivilegeAssignment:
|
|
7045
8146
|
principal: Optional[str] = None
|
|
7046
|
-
"""The principal (user email address or group name).
|
|
8147
|
+
"""The principal (user email address or group name). For deleted principals, `principal` is empty
|
|
8148
|
+
while `principal_id` is populated."""
|
|
7047
8149
|
|
|
7048
8150
|
privileges: Optional[List[Privilege]] = None
|
|
7049
8151
|
"""The privileges assigned to the principal."""
|
|
@@ -7649,6 +8751,138 @@ class SchemaInfo:
|
|
|
7649
8751
|
)
|
|
7650
8752
|
|
|
7651
8753
|
|
|
8754
|
+
class SecurableKind(Enum):
|
|
8755
|
+
"""Latest kind: TABLE_DELTA_ICEBERG_DELTASHARING = 252; Next id:253"""
|
|
8756
|
+
|
|
8757
|
+
TABLE_DB_STORAGE = "TABLE_DB_STORAGE"
|
|
8758
|
+
TABLE_DELTA = "TABLE_DELTA"
|
|
8759
|
+
TABLE_DELTASHARING = "TABLE_DELTASHARING"
|
|
8760
|
+
TABLE_DELTASHARING_MUTABLE = "TABLE_DELTASHARING_MUTABLE"
|
|
8761
|
+
TABLE_DELTA_EXTERNAL = "TABLE_DELTA_EXTERNAL"
|
|
8762
|
+
TABLE_DELTA_ICEBERG_DELTASHARING = "TABLE_DELTA_ICEBERG_DELTASHARING"
|
|
8763
|
+
TABLE_DELTA_ICEBERG_MANAGED = "TABLE_DELTA_ICEBERG_MANAGED"
|
|
8764
|
+
TABLE_DELTA_UNIFORM_HUDI_EXTERNAL = "TABLE_DELTA_UNIFORM_HUDI_EXTERNAL"
|
|
8765
|
+
TABLE_DELTA_UNIFORM_ICEBERG_EXTERNAL = "TABLE_DELTA_UNIFORM_ICEBERG_EXTERNAL"
|
|
8766
|
+
TABLE_DELTA_UNIFORM_ICEBERG_FOREIGN_HIVE_METASTORE_EXTERNAL = (
|
|
8767
|
+
"TABLE_DELTA_UNIFORM_ICEBERG_FOREIGN_HIVE_METASTORE_EXTERNAL"
|
|
8768
|
+
)
|
|
8769
|
+
TABLE_DELTA_UNIFORM_ICEBERG_FOREIGN_HIVE_METASTORE_MANAGED = (
|
|
8770
|
+
"TABLE_DELTA_UNIFORM_ICEBERG_FOREIGN_HIVE_METASTORE_MANAGED"
|
|
8771
|
+
)
|
|
8772
|
+
TABLE_DELTA_UNIFORM_ICEBERG_FOREIGN_SNOWFLAKE = "TABLE_DELTA_UNIFORM_ICEBERG_FOREIGN_SNOWFLAKE"
|
|
8773
|
+
TABLE_EXTERNAL = "TABLE_EXTERNAL"
|
|
8774
|
+
TABLE_FEATURE_STORE = "TABLE_FEATURE_STORE"
|
|
8775
|
+
TABLE_FEATURE_STORE_EXTERNAL = "TABLE_FEATURE_STORE_EXTERNAL"
|
|
8776
|
+
TABLE_FOREIGN_BIGQUERY = "TABLE_FOREIGN_BIGQUERY"
|
|
8777
|
+
TABLE_FOREIGN_DATABRICKS = "TABLE_FOREIGN_DATABRICKS"
|
|
8778
|
+
TABLE_FOREIGN_DELTASHARING = "TABLE_FOREIGN_DELTASHARING"
|
|
8779
|
+
TABLE_FOREIGN_HIVE_METASTORE = "TABLE_FOREIGN_HIVE_METASTORE"
|
|
8780
|
+
TABLE_FOREIGN_HIVE_METASTORE_DBFS_EXTERNAL = "TABLE_FOREIGN_HIVE_METASTORE_DBFS_EXTERNAL"
|
|
8781
|
+
TABLE_FOREIGN_HIVE_METASTORE_DBFS_MANAGED = "TABLE_FOREIGN_HIVE_METASTORE_DBFS_MANAGED"
|
|
8782
|
+
TABLE_FOREIGN_HIVE_METASTORE_DBFS_SHALLOW_CLONE_EXTERNAL = (
|
|
8783
|
+
"TABLE_FOREIGN_HIVE_METASTORE_DBFS_SHALLOW_CLONE_EXTERNAL"
|
|
8784
|
+
)
|
|
8785
|
+
TABLE_FOREIGN_HIVE_METASTORE_DBFS_SHALLOW_CLONE_MANAGED = "TABLE_FOREIGN_HIVE_METASTORE_DBFS_SHALLOW_CLONE_MANAGED"
|
|
8786
|
+
TABLE_FOREIGN_HIVE_METASTORE_DBFS_VIEW = "TABLE_FOREIGN_HIVE_METASTORE_DBFS_VIEW"
|
|
8787
|
+
TABLE_FOREIGN_HIVE_METASTORE_EXTERNAL = "TABLE_FOREIGN_HIVE_METASTORE_EXTERNAL"
|
|
8788
|
+
TABLE_FOREIGN_HIVE_METASTORE_MANAGED = "TABLE_FOREIGN_HIVE_METASTORE_MANAGED"
|
|
8789
|
+
TABLE_FOREIGN_HIVE_METASTORE_SHALLOW_CLONE_EXTERNAL = "TABLE_FOREIGN_HIVE_METASTORE_SHALLOW_CLONE_EXTERNAL"
|
|
8790
|
+
TABLE_FOREIGN_HIVE_METASTORE_SHALLOW_CLONE_MANAGED = "TABLE_FOREIGN_HIVE_METASTORE_SHALLOW_CLONE_MANAGED"
|
|
8791
|
+
TABLE_FOREIGN_HIVE_METASTORE_VIEW = "TABLE_FOREIGN_HIVE_METASTORE_VIEW"
|
|
8792
|
+
TABLE_FOREIGN_MONGODB = "TABLE_FOREIGN_MONGODB"
|
|
8793
|
+
TABLE_FOREIGN_MYSQL = "TABLE_FOREIGN_MYSQL"
|
|
8794
|
+
TABLE_FOREIGN_NETSUITE = "TABLE_FOREIGN_NETSUITE"
|
|
8795
|
+
TABLE_FOREIGN_ORACLE = "TABLE_FOREIGN_ORACLE"
|
|
8796
|
+
TABLE_FOREIGN_POSTGRESQL = "TABLE_FOREIGN_POSTGRESQL"
|
|
8797
|
+
TABLE_FOREIGN_REDSHIFT = "TABLE_FOREIGN_REDSHIFT"
|
|
8798
|
+
TABLE_FOREIGN_SALESFORCE = "TABLE_FOREIGN_SALESFORCE"
|
|
8799
|
+
TABLE_FOREIGN_SALESFORCE_DATA_CLOUD = "TABLE_FOREIGN_SALESFORCE_DATA_CLOUD"
|
|
8800
|
+
TABLE_FOREIGN_SALESFORCE_DATA_CLOUD_FILE_SHARING = "TABLE_FOREIGN_SALESFORCE_DATA_CLOUD_FILE_SHARING"
|
|
8801
|
+
TABLE_FOREIGN_SALESFORCE_DATA_CLOUD_FILE_SHARING_VIEW = "TABLE_FOREIGN_SALESFORCE_DATA_CLOUD_FILE_SHARING_VIEW"
|
|
8802
|
+
TABLE_FOREIGN_SNOWFLAKE = "TABLE_FOREIGN_SNOWFLAKE"
|
|
8803
|
+
TABLE_FOREIGN_SQLDW = "TABLE_FOREIGN_SQLDW"
|
|
8804
|
+
TABLE_FOREIGN_SQLSERVER = "TABLE_FOREIGN_SQLSERVER"
|
|
8805
|
+
TABLE_FOREIGN_TERADATA = "TABLE_FOREIGN_TERADATA"
|
|
8806
|
+
TABLE_FOREIGN_WORKDAY_RAAS = "TABLE_FOREIGN_WORKDAY_RAAS"
|
|
8807
|
+
TABLE_ICEBERG_UNIFORM_MANAGED = "TABLE_ICEBERG_UNIFORM_MANAGED"
|
|
8808
|
+
TABLE_INTERNAL = "TABLE_INTERNAL"
|
|
8809
|
+
TABLE_MANAGED_POSTGRESQL = "TABLE_MANAGED_POSTGRESQL"
|
|
8810
|
+
TABLE_MATERIALIZED_VIEW = "TABLE_MATERIALIZED_VIEW"
|
|
8811
|
+
TABLE_MATERIALIZED_VIEW_DELTASHARING = "TABLE_MATERIALIZED_VIEW_DELTASHARING"
|
|
8812
|
+
TABLE_METRIC_VIEW = "TABLE_METRIC_VIEW"
|
|
8813
|
+
TABLE_ONLINE_VECTOR_INDEX_DIRECT = "TABLE_ONLINE_VECTOR_INDEX_DIRECT"
|
|
8814
|
+
TABLE_ONLINE_VECTOR_INDEX_REPLICA = "TABLE_ONLINE_VECTOR_INDEX_REPLICA"
|
|
8815
|
+
TABLE_ONLINE_VIEW = "TABLE_ONLINE_VIEW"
|
|
8816
|
+
TABLE_STANDARD = "TABLE_STANDARD"
|
|
8817
|
+
TABLE_STREAMING_LIVE_TABLE = "TABLE_STREAMING_LIVE_TABLE"
|
|
8818
|
+
TABLE_STREAMING_LIVE_TABLE_DELTASHARING = "TABLE_STREAMING_LIVE_TABLE_DELTASHARING"
|
|
8819
|
+
TABLE_SYSTEM = "TABLE_SYSTEM"
|
|
8820
|
+
TABLE_SYSTEM_DELTASHARING = "TABLE_SYSTEM_DELTASHARING"
|
|
8821
|
+
TABLE_VIEW = "TABLE_VIEW"
|
|
8822
|
+
TABLE_VIEW_DELTASHARING = "TABLE_VIEW_DELTASHARING"
|
|
8823
|
+
|
|
8824
|
+
|
|
8825
|
+
@dataclass
|
|
8826
|
+
class SecurableKindManifest:
|
|
8827
|
+
"""Manifest of a specific securable kind."""
|
|
8828
|
+
|
|
8829
|
+
assignable_privileges: Optional[List[str]] = None
|
|
8830
|
+
"""Privileges that can be assigned to the securable."""
|
|
8831
|
+
|
|
8832
|
+
capabilities: Optional[List[str]] = None
|
|
8833
|
+
"""A list of capabilities in the securable kind."""
|
|
8834
|
+
|
|
8835
|
+
options: Optional[List[OptionSpec]] = None
|
|
8836
|
+
"""Detailed specs of allowed options."""
|
|
8837
|
+
|
|
8838
|
+
securable_kind: Optional[SecurableKind] = None
|
|
8839
|
+
"""Securable kind to get manifest of."""
|
|
8840
|
+
|
|
8841
|
+
securable_type: Optional[SecurableType] = None
|
|
8842
|
+
"""Securable Type of the kind."""
|
|
8843
|
+
|
|
8844
|
+
def as_dict(self) -> dict:
|
|
8845
|
+
"""Serializes the SecurableKindManifest into a dictionary suitable for use as a JSON request body."""
|
|
8846
|
+
body = {}
|
|
8847
|
+
if self.assignable_privileges:
|
|
8848
|
+
body["assignable_privileges"] = [v for v in self.assignable_privileges]
|
|
8849
|
+
if self.capabilities:
|
|
8850
|
+
body["capabilities"] = [v for v in self.capabilities]
|
|
8851
|
+
if self.options:
|
|
8852
|
+
body["options"] = [v.as_dict() for v in self.options]
|
|
8853
|
+
if self.securable_kind is not None:
|
|
8854
|
+
body["securable_kind"] = self.securable_kind.value
|
|
8855
|
+
if self.securable_type is not None:
|
|
8856
|
+
body["securable_type"] = self.securable_type.value
|
|
8857
|
+
return body
|
|
8858
|
+
|
|
8859
|
+
def as_shallow_dict(self) -> dict:
|
|
8860
|
+
"""Serializes the SecurableKindManifest into a shallow dictionary of its immediate attributes."""
|
|
8861
|
+
body = {}
|
|
8862
|
+
if self.assignable_privileges:
|
|
8863
|
+
body["assignable_privileges"] = self.assignable_privileges
|
|
8864
|
+
if self.capabilities:
|
|
8865
|
+
body["capabilities"] = self.capabilities
|
|
8866
|
+
if self.options:
|
|
8867
|
+
body["options"] = self.options
|
|
8868
|
+
if self.securable_kind is not None:
|
|
8869
|
+
body["securable_kind"] = self.securable_kind
|
|
8870
|
+
if self.securable_type is not None:
|
|
8871
|
+
body["securable_type"] = self.securable_type
|
|
8872
|
+
return body
|
|
8873
|
+
|
|
8874
|
+
@classmethod
|
|
8875
|
+
def from_dict(cls, d: Dict[str, Any]) -> SecurableKindManifest:
|
|
8876
|
+
"""Deserializes the SecurableKindManifest from a dictionary."""
|
|
8877
|
+
return cls(
|
|
8878
|
+
assignable_privileges=d.get("assignable_privileges", None),
|
|
8879
|
+
capabilities=d.get("capabilities", None),
|
|
8880
|
+
options=_repeated_dict(d, "options", OptionSpec),
|
|
8881
|
+
securable_kind=_enum(d, "securable_kind", SecurableKind),
|
|
8882
|
+
securable_type=_enum(d, "securable_type", SecurableType),
|
|
8883
|
+
)
|
|
8884
|
+
|
|
8885
|
+
|
|
7652
8886
|
class SecurableType(Enum):
|
|
7653
8887
|
"""The type of Unity Catalog securable."""
|
|
7654
8888
|
|
|
@@ -7668,7 +8902,6 @@ class SecurableType(Enum):
|
|
|
7668
8902
|
STAGING_TABLE = "STAGING_TABLE"
|
|
7669
8903
|
STORAGE_CREDENTIAL = "STORAGE_CREDENTIAL"
|
|
7670
8904
|
TABLE = "TABLE"
|
|
7671
|
-
UNKNOWN_SECURABLE_TYPE = "UNKNOWN_SECURABLE_TYPE"
|
|
7672
8905
|
VOLUME = "VOLUME"
|
|
7673
8906
|
|
|
7674
8907
|
|
|
@@ -7834,7 +9067,7 @@ class StorageCredentialInfo:
|
|
|
7834
9067
|
"""Comment associated with the credential."""
|
|
7835
9068
|
|
|
7836
9069
|
created_at: Optional[int] = None
|
|
7837
|
-
"""Time at which this
|
|
9070
|
+
"""Time at which this credential was created, in epoch milliseconds."""
|
|
7838
9071
|
|
|
7839
9072
|
created_by: Optional[str] = None
|
|
7840
9073
|
"""Username of credential creator."""
|
|
@@ -7849,18 +9082,21 @@ class StorageCredentialInfo:
|
|
|
7849
9082
|
"""The unique identifier of the credential."""
|
|
7850
9083
|
|
|
7851
9084
|
isolation_mode: Optional[IsolationMode] = None
|
|
9085
|
+
"""Whether the current securable is accessible from all workspaces or a specific set of workspaces."""
|
|
7852
9086
|
|
|
7853
9087
|
metastore_id: Optional[str] = None
|
|
7854
|
-
"""Unique identifier of parent metastore."""
|
|
9088
|
+
"""Unique identifier of the parent metastore."""
|
|
7855
9089
|
|
|
7856
9090
|
name: Optional[str] = None
|
|
7857
|
-
"""The credential name. The name must be unique within the
|
|
9091
|
+
"""The credential name. The name must be unique among storage and service credentials within the
|
|
9092
|
+
metastore."""
|
|
7858
9093
|
|
|
7859
9094
|
owner: Optional[str] = None
|
|
7860
9095
|
"""Username of current owner of credential."""
|
|
7861
9096
|
|
|
7862
9097
|
read_only: Optional[bool] = None
|
|
7863
|
-
"""Whether the
|
|
9098
|
+
"""Whether the credential is usable only for read operations. Only applicable when purpose is
|
|
9099
|
+
**STORAGE**."""
|
|
7864
9100
|
|
|
7865
9101
|
updated_at: Optional[int] = None
|
|
7866
9102
|
"""Time at which this credential was last modified, in epoch milliseconds."""
|
|
@@ -7869,7 +9105,8 @@ class StorageCredentialInfo:
|
|
|
7869
9105
|
"""Username of user who last modified the credential."""
|
|
7870
9106
|
|
|
7871
9107
|
used_for_managed_storage: Optional[bool] = None
|
|
7872
|
-
"""Whether this credential is the current metastore's root storage credential.
|
|
9108
|
+
"""Whether this credential is the current metastore's root storage credential. Only applicable when
|
|
9109
|
+
purpose is **STORAGE**."""
|
|
7873
9110
|
|
|
7874
9111
|
def as_dict(self) -> dict:
|
|
7875
9112
|
"""Serializes the StorageCredentialInfo into a dictionary suitable for use as a JSON request body."""
|
|
@@ -8014,6 +9251,31 @@ class SystemSchemaInfo:
|
|
|
8014
9251
|
return cls(schema=d.get("schema", None), state=d.get("state", None))
|
|
8015
9252
|
|
|
8016
9253
|
|
|
9254
|
+
class SystemType(Enum):
|
|
9255
|
+
|
|
9256
|
+
AMAZON_REDSHIFT = "AMAZON_REDSHIFT"
|
|
9257
|
+
AZURE_SYNAPSE = "AZURE_SYNAPSE"
|
|
9258
|
+
CONFLUENT = "CONFLUENT"
|
|
9259
|
+
GOOGLE_BIGQUERY = "GOOGLE_BIGQUERY"
|
|
9260
|
+
KAFKA = "KAFKA"
|
|
9261
|
+
LOOKER = "LOOKER"
|
|
9262
|
+
MICROSOFT_FABRIC = "MICROSOFT_FABRIC"
|
|
9263
|
+
MICROSOFT_SQL_SERVER = "MICROSOFT_SQL_SERVER"
|
|
9264
|
+
MONGODB = "MONGODB"
|
|
9265
|
+
MYSQL = "MYSQL"
|
|
9266
|
+
ORACLE = "ORACLE"
|
|
9267
|
+
OTHER = "OTHER"
|
|
9268
|
+
POSTGRESQL = "POSTGRESQL"
|
|
9269
|
+
POWER_BI = "POWER_BI"
|
|
9270
|
+
SALESFORCE = "SALESFORCE"
|
|
9271
|
+
SAP = "SAP"
|
|
9272
|
+
SERVICENOW = "SERVICENOW"
|
|
9273
|
+
SNOWFLAKE = "SNOWFLAKE"
|
|
9274
|
+
TABLEAU = "TABLEAU"
|
|
9275
|
+
TERADATA = "TERADATA"
|
|
9276
|
+
WORKDAY = "WORKDAY"
|
|
9277
|
+
|
|
9278
|
+
|
|
8017
9279
|
@dataclass
|
|
8018
9280
|
class TableConstraint:
|
|
8019
9281
|
"""A table constraint, as defined by *one* of the following fields being set:
|
|
@@ -8138,7 +9400,6 @@ class TableInfo:
|
|
|
8138
9400
|
"""Unique ID of the Data Access Configuration to use with the table data."""
|
|
8139
9401
|
|
|
8140
9402
|
data_source_format: Optional[DataSourceFormat] = None
|
|
8141
|
-
"""Data source format"""
|
|
8142
9403
|
|
|
8143
9404
|
deleted_at: Optional[int] = None
|
|
8144
9405
|
"""Time at which this table was deleted, in epoch milliseconds. Field is omitted if table is not
|
|
@@ -8152,7 +9413,6 @@ class TableInfo:
|
|
|
8152
9413
|
enable_predictive_optimization: Optional[EnablePredictiveOptimization] = None
|
|
8153
9414
|
|
|
8154
9415
|
encryption_details: Optional[EncryptionDetails] = None
|
|
8155
|
-
"""Encryption options that apply to clients connecting to cloud storage."""
|
|
8156
9416
|
|
|
8157
9417
|
full_name: Optional[str] = None
|
|
8158
9418
|
"""Full name of table, in form of __catalog_name__.__schema_name__.__table_name__"""
|
|
@@ -8178,6 +9438,9 @@ class TableInfo:
|
|
|
8178
9438
|
schema_name: Optional[str] = None
|
|
8179
9439
|
"""Name of parent schema relative to its parent catalog."""
|
|
8180
9440
|
|
|
9441
|
+
securable_kind_manifest: Optional[SecurableKindManifest] = None
|
|
9442
|
+
"""SecurableKindManifest of table, including capabilities the table has."""
|
|
9443
|
+
|
|
8181
9444
|
sql_path: Optional[str] = None
|
|
8182
9445
|
"""List of schemes whose objects can be referenced without qualification."""
|
|
8183
9446
|
|
|
@@ -8185,7 +9448,7 @@ class TableInfo:
|
|
|
8185
9448
|
"""Name of the storage credential, when a storage credential is configured for use with this table."""
|
|
8186
9449
|
|
|
8187
9450
|
storage_location: Optional[str] = None
|
|
8188
|
-
"""Storage root URL for table (for **MANAGED**, **EXTERNAL** tables)"""
|
|
9451
|
+
"""Storage root URL for table (for **MANAGED**, **EXTERNAL** tables)."""
|
|
8189
9452
|
|
|
8190
9453
|
table_constraints: Optional[List[TableConstraint]] = None
|
|
8191
9454
|
"""List of table constraints. Note: this field is not set in the output of the __listTables__ API."""
|
|
@@ -8258,6 +9521,8 @@ class TableInfo:
|
|
|
8258
9521
|
body["row_filter"] = self.row_filter.as_dict()
|
|
8259
9522
|
if self.schema_name is not None:
|
|
8260
9523
|
body["schema_name"] = self.schema_name
|
|
9524
|
+
if self.securable_kind_manifest:
|
|
9525
|
+
body["securable_kind_manifest"] = self.securable_kind_manifest.as_dict()
|
|
8261
9526
|
if self.sql_path is not None:
|
|
8262
9527
|
body["sql_path"] = self.sql_path
|
|
8263
9528
|
if self.storage_credential_name is not None:
|
|
@@ -8327,6 +9592,8 @@ class TableInfo:
|
|
|
8327
9592
|
body["row_filter"] = self.row_filter
|
|
8328
9593
|
if self.schema_name is not None:
|
|
8329
9594
|
body["schema_name"] = self.schema_name
|
|
9595
|
+
if self.securable_kind_manifest:
|
|
9596
|
+
body["securable_kind_manifest"] = self.securable_kind_manifest
|
|
8330
9597
|
if self.sql_path is not None:
|
|
8331
9598
|
body["sql_path"] = self.sql_path
|
|
8332
9599
|
if self.storage_credential_name is not None:
|
|
@@ -8379,6 +9646,7 @@ class TableInfo:
|
|
|
8379
9646
|
properties=d.get("properties", None),
|
|
8380
9647
|
row_filter=_from_dict(d, "row_filter", TableRowFilter),
|
|
8381
9648
|
schema_name=d.get("schema_name", None),
|
|
9649
|
+
securable_kind_manifest=_from_dict(d, "securable_kind_manifest", SecurableKindManifest),
|
|
8382
9650
|
sql_path=d.get("sql_path", None),
|
|
8383
9651
|
storage_credential_name=d.get("storage_credential_name", None),
|
|
8384
9652
|
storage_location=d.get("storage_location", None),
|
|
@@ -8436,6 +9704,9 @@ class TableSummary:
|
|
|
8436
9704
|
full_name: Optional[str] = None
|
|
8437
9705
|
"""The full name of the table."""
|
|
8438
9706
|
|
|
9707
|
+
securable_kind_manifest: Optional[SecurableKindManifest] = None
|
|
9708
|
+
"""SecurableKindManifest of table, including capabilities the table has."""
|
|
9709
|
+
|
|
8439
9710
|
table_type: Optional[TableType] = None
|
|
8440
9711
|
|
|
8441
9712
|
def as_dict(self) -> dict:
|
|
@@ -8443,6 +9714,8 @@ class TableSummary:
|
|
|
8443
9714
|
body = {}
|
|
8444
9715
|
if self.full_name is not None:
|
|
8445
9716
|
body["full_name"] = self.full_name
|
|
9717
|
+
if self.securable_kind_manifest:
|
|
9718
|
+
body["securable_kind_manifest"] = self.securable_kind_manifest.as_dict()
|
|
8446
9719
|
if self.table_type is not None:
|
|
8447
9720
|
body["table_type"] = self.table_type.value
|
|
8448
9721
|
return body
|
|
@@ -8452,6 +9725,8 @@ class TableSummary:
|
|
|
8452
9725
|
body = {}
|
|
8453
9726
|
if self.full_name is not None:
|
|
8454
9727
|
body["full_name"] = self.full_name
|
|
9728
|
+
if self.securable_kind_manifest:
|
|
9729
|
+
body["securable_kind_manifest"] = self.securable_kind_manifest
|
|
8455
9730
|
if self.table_type is not None:
|
|
8456
9731
|
body["table_type"] = self.table_type
|
|
8457
9732
|
return body
|
|
@@ -8459,7 +9734,11 @@ class TableSummary:
|
|
|
8459
9734
|
@classmethod
|
|
8460
9735
|
def from_dict(cls, d: Dict[str, Any]) -> TableSummary:
|
|
8461
9736
|
"""Deserializes the TableSummary from a dictionary."""
|
|
8462
|
-
return cls(
|
|
9737
|
+
return cls(
|
|
9738
|
+
full_name=d.get("full_name", None),
|
|
9739
|
+
securable_kind_manifest=_from_dict(d, "securable_kind_manifest", SecurableKindManifest),
|
|
9740
|
+
table_type=_enum(d, "table_type", TableType),
|
|
9741
|
+
)
|
|
8463
9742
|
|
|
8464
9743
|
|
|
8465
9744
|
class TableType(Enum):
|
|
@@ -8470,6 +9749,7 @@ class TableType(Enum):
|
|
|
8470
9749
|
MANAGED = "MANAGED"
|
|
8471
9750
|
MANAGED_SHALLOW_CLONE = "MANAGED_SHALLOW_CLONE"
|
|
8472
9751
|
MATERIALIZED_VIEW = "MATERIALIZED_VIEW"
|
|
9752
|
+
METRIC_VIEW = "METRIC_VIEW"
|
|
8473
9753
|
STREAMING_TABLE = "STREAMING_TABLE"
|
|
8474
9754
|
VIEW = "VIEW"
|
|
8475
9755
|
|
|
@@ -8509,21 +9789,14 @@ class TagKeyValue:
|
|
|
8509
9789
|
@dataclass
|
|
8510
9790
|
class TemporaryCredentials:
|
|
8511
9791
|
aws_temp_credentials: Optional[AwsCredentials] = None
|
|
8512
|
-
"""AWS temporary credentials for API authentication. Read more at
|
|
8513
|
-
https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html."""
|
|
8514
9792
|
|
|
8515
9793
|
azure_aad: Optional[AzureActiveDirectoryToken] = None
|
|
8516
|
-
"""Azure Active Directory token, essentially the Oauth token for Azure Service Principal or Managed
|
|
8517
|
-
Identity. Read more at
|
|
8518
|
-
https://learn.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/aad/service-prin-aad-token"""
|
|
8519
9794
|
|
|
8520
9795
|
expiration_time: Optional[int] = None
|
|
8521
9796
|
"""Server time when the credential will expire, in epoch milliseconds. The API client is advised to
|
|
8522
9797
|
cache the credential given this expiration time."""
|
|
8523
9798
|
|
|
8524
9799
|
gcp_oauth_token: Optional[GcpOauthToken] = None
|
|
8525
|
-
"""GCP temporary credentials for API authentication. Read more at
|
|
8526
|
-
https://developers.google.com/identity/protocols/oauth2/service-account"""
|
|
8527
9800
|
|
|
8528
9801
|
def as_dict(self) -> dict:
|
|
8529
9802
|
"""Serializes the TemporaryCredentials into a dictionary suitable for use as a JSON request body."""
|
|
@@ -8808,19 +10081,19 @@ class UpdateConnection:
|
|
|
8808
10081
|
@dataclass
|
|
8809
10082
|
class UpdateCredentialRequest:
|
|
8810
10083
|
aws_iam_role: Optional[AwsIamRole] = None
|
|
8811
|
-
"""The AWS IAM role configuration"""
|
|
10084
|
+
"""The AWS IAM role configuration."""
|
|
8812
10085
|
|
|
8813
10086
|
azure_managed_identity: Optional[AzureManagedIdentity] = None
|
|
8814
10087
|
"""The Azure managed identity configuration."""
|
|
8815
10088
|
|
|
8816
10089
|
azure_service_principal: Optional[AzureServicePrincipal] = None
|
|
8817
|
-
"""The Azure service principal configuration.
|
|
10090
|
+
"""The Azure service principal configuration."""
|
|
8818
10091
|
|
|
8819
10092
|
comment: Optional[str] = None
|
|
8820
10093
|
"""Comment associated with the credential."""
|
|
8821
10094
|
|
|
8822
10095
|
databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None
|
|
8823
|
-
"""
|
|
10096
|
+
"""The Databricks managed GCP service account configuration."""
|
|
8824
10097
|
|
|
8825
10098
|
force: Optional[bool] = None
|
|
8826
10099
|
"""Force an update even if there are dependent services (when purpose is **SERVICE**) or dependent
|
|
@@ -8931,10 +10204,9 @@ class UpdateExternalLocation:
|
|
|
8931
10204
|
"""Name of the storage credential used with this location."""
|
|
8932
10205
|
|
|
8933
10206
|
enable_file_events: Optional[bool] = None
|
|
8934
|
-
"""
|
|
10207
|
+
"""Whether to enable file events on this external location."""
|
|
8935
10208
|
|
|
8936
10209
|
encryption_details: Optional[EncryptionDetails] = None
|
|
8937
|
-
"""Encryption options that apply to clients connecting to cloud storage."""
|
|
8938
10210
|
|
|
8939
10211
|
fallback: Optional[bool] = None
|
|
8940
10212
|
"""Indicates whether fallback mode is enabled for this external location. When fallback mode is
|
|
@@ -8942,7 +10214,7 @@ class UpdateExternalLocation:
|
|
|
8942
10214
|
sufficient."""
|
|
8943
10215
|
|
|
8944
10216
|
file_event_queue: Optional[FileEventQueue] = None
|
|
8945
|
-
"""
|
|
10217
|
+
"""File event queue settings."""
|
|
8946
10218
|
|
|
8947
10219
|
force: Optional[bool] = None
|
|
8948
10220
|
"""Force update even if changing url invalidates dependent external tables or mounts."""
|
|
@@ -9500,6 +10772,65 @@ class UpdateRegisteredModelRequest:
|
|
|
9500
10772
|
)
|
|
9501
10773
|
|
|
9502
10774
|
|
|
10775
|
+
@dataclass
|
|
10776
|
+
class UpdateRequestExternalLineage:
|
|
10777
|
+
source: ExternalLineageObject
|
|
10778
|
+
"""Source object of the external lineage relationship."""
|
|
10779
|
+
|
|
10780
|
+
target: ExternalLineageObject
|
|
10781
|
+
"""Target object of the external lineage relationship."""
|
|
10782
|
+
|
|
10783
|
+
columns: Optional[List[ColumnRelationship]] = None
|
|
10784
|
+
"""List of column relationships between source and target objects."""
|
|
10785
|
+
|
|
10786
|
+
id: Optional[str] = None
|
|
10787
|
+
"""Unique identifier of the external lineage relationship."""
|
|
10788
|
+
|
|
10789
|
+
properties: Optional[Dict[str, str]] = None
|
|
10790
|
+
"""Key-value properties associated with the external lineage relationship."""
|
|
10791
|
+
|
|
10792
|
+
def as_dict(self) -> dict:
|
|
10793
|
+
"""Serializes the UpdateRequestExternalLineage into a dictionary suitable for use as a JSON request body."""
|
|
10794
|
+
body = {}
|
|
10795
|
+
if self.columns:
|
|
10796
|
+
body["columns"] = [v.as_dict() for v in self.columns]
|
|
10797
|
+
if self.id is not None:
|
|
10798
|
+
body["id"] = self.id
|
|
10799
|
+
if self.properties:
|
|
10800
|
+
body["properties"] = self.properties
|
|
10801
|
+
if self.source:
|
|
10802
|
+
body["source"] = self.source.as_dict()
|
|
10803
|
+
if self.target:
|
|
10804
|
+
body["target"] = self.target.as_dict()
|
|
10805
|
+
return body
|
|
10806
|
+
|
|
10807
|
+
def as_shallow_dict(self) -> dict:
|
|
10808
|
+
"""Serializes the UpdateRequestExternalLineage into a shallow dictionary of its immediate attributes."""
|
|
10809
|
+
body = {}
|
|
10810
|
+
if self.columns:
|
|
10811
|
+
body["columns"] = self.columns
|
|
10812
|
+
if self.id is not None:
|
|
10813
|
+
body["id"] = self.id
|
|
10814
|
+
if self.properties:
|
|
10815
|
+
body["properties"] = self.properties
|
|
10816
|
+
if self.source:
|
|
10817
|
+
body["source"] = self.source
|
|
10818
|
+
if self.target:
|
|
10819
|
+
body["target"] = self.target
|
|
10820
|
+
return body
|
|
10821
|
+
|
|
10822
|
+
@classmethod
|
|
10823
|
+
def from_dict(cls, d: Dict[str, Any]) -> UpdateRequestExternalLineage:
|
|
10824
|
+
"""Deserializes the UpdateRequestExternalLineage from a dictionary."""
|
|
10825
|
+
return cls(
|
|
10826
|
+
columns=_repeated_dict(d, "columns", ColumnRelationship),
|
|
10827
|
+
id=d.get("id", None),
|
|
10828
|
+
properties=d.get("properties", None),
|
|
10829
|
+
source=_from_dict(d, "source", ExternalLineageObject),
|
|
10830
|
+
target=_from_dict(d, "target", ExternalLineageObject),
|
|
10831
|
+
)
|
|
10832
|
+
|
|
10833
|
+
|
|
9503
10834
|
@dataclass
|
|
9504
10835
|
class UpdateResponse:
|
|
9505
10836
|
def as_dict(self) -> dict:
|
|
@@ -9609,6 +10940,7 @@ class UpdateStorageCredential:
|
|
|
9609
10940
|
"""Force update even if there are dependent external locations or external tables."""
|
|
9610
10941
|
|
|
9611
10942
|
isolation_mode: Optional[IsolationMode] = None
|
|
10943
|
+
"""Whether the current securable is accessible from all workspaces or a specific set of workspaces."""
|
|
9612
10944
|
|
|
9613
10945
|
name: Optional[str] = None
|
|
9614
10946
|
"""Name of the storage credential."""
|
|
@@ -9620,7 +10952,8 @@ class UpdateStorageCredential:
|
|
|
9620
10952
|
"""Username of current owner of credential."""
|
|
9621
10953
|
|
|
9622
10954
|
read_only: Optional[bool] = None
|
|
9623
|
-
"""Whether the
|
|
10955
|
+
"""Whether the credential is usable only for read operations. Only applicable when purpose is
|
|
10956
|
+
**STORAGE**."""
|
|
9624
10957
|
|
|
9625
10958
|
skip_validation: Optional[bool] = None
|
|
9626
10959
|
"""Supplying true to this argument skips validation of the updated credential."""
|
|
@@ -9711,12 +11044,11 @@ class UpdateStorageCredential:
|
|
|
9711
11044
|
|
|
9712
11045
|
@dataclass
|
|
9713
11046
|
class UpdateTableRequest:
|
|
9714
|
-
"""Update a table owner."""
|
|
9715
|
-
|
|
9716
11047
|
full_name: Optional[str] = None
|
|
9717
11048
|
"""Full name of the table."""
|
|
9718
11049
|
|
|
9719
11050
|
owner: Optional[str] = None
|
|
11051
|
+
"""Username of current owner of table."""
|
|
9720
11052
|
|
|
9721
11053
|
def as_dict(self) -> dict:
|
|
9722
11054
|
"""Serializes the UpdateTableRequest into a dictionary suitable for use as a JSON request body."""
|
|
@@ -9920,16 +11252,13 @@ class ValidateCredentialRequest:
|
|
|
9920
11252
|
"""Next ID: 17"""
|
|
9921
11253
|
|
|
9922
11254
|
aws_iam_role: Optional[AwsIamRole] = None
|
|
9923
|
-
"""The AWS IAM role configuration"""
|
|
9924
11255
|
|
|
9925
11256
|
azure_managed_identity: Optional[AzureManagedIdentity] = None
|
|
9926
|
-
"""The Azure managed identity configuration."""
|
|
9927
11257
|
|
|
9928
11258
|
credential_name: Optional[str] = None
|
|
9929
11259
|
"""Required. The name of an existing credential or long-lived cloud credential to validate."""
|
|
9930
11260
|
|
|
9931
11261
|
databricks_gcp_service_account: Optional[DatabricksGcpServiceAccount] = None
|
|
9932
|
-
"""GCP long-lived credential. Databricks-created Google Cloud Storage service account."""
|
|
9933
11262
|
|
|
9934
11263
|
external_location_name: Optional[str] = None
|
|
9935
11264
|
"""The name of an existing external location to validate. Only applicable for storage credentials
|
|
@@ -10067,7 +11396,7 @@ class ValidateStorageCredential:
|
|
|
10067
11396
|
"""Whether the storage credential is only usable for read operations."""
|
|
10068
11397
|
|
|
10069
11398
|
storage_credential_name: Optional[str] = None
|
|
10070
|
-
"""The name of
|
|
11399
|
+
"""Required. The name of an existing credential or long-lived cloud credential to validate."""
|
|
10071
11400
|
|
|
10072
11401
|
url: Optional[str] = None
|
|
10073
11402
|
"""The external location url to validate."""
|
|
@@ -10212,7 +11541,8 @@ class ValidationResult:
|
|
|
10212
11541
|
|
|
10213
11542
|
|
|
10214
11543
|
class ValidationResultOperation(Enum):
|
|
10215
|
-
"""
|
|
11544
|
+
"""A enum represents the file operation performed on the external location with the storage
|
|
11545
|
+
credential"""
|
|
10216
11546
|
|
|
10217
11547
|
DELETE = "DELETE"
|
|
10218
11548
|
LIST = "LIST"
|
|
@@ -10222,7 +11552,7 @@ class ValidationResultOperation(Enum):
|
|
|
10222
11552
|
|
|
10223
11553
|
|
|
10224
11554
|
class ValidationResultResult(Enum):
|
|
10225
|
-
"""
|
|
11555
|
+
"""A enum represents the result of the file operation"""
|
|
10226
11556
|
|
|
10227
11557
|
FAIL = "FAIL"
|
|
10228
11558
|
PASS = "PASS"
|
|
@@ -10250,7 +11580,6 @@ class VolumeInfo:
|
|
|
10250
11580
|
"""The identifier of the user who created the volume"""
|
|
10251
11581
|
|
|
10252
11582
|
encryption_details: Optional[EncryptionDetails] = None
|
|
10253
|
-
"""Encryption options that apply to clients connecting to cloud storage."""
|
|
10254
11583
|
|
|
10255
11584
|
full_name: Optional[str] = None
|
|
10256
11585
|
"""The three-level (fully qualified) name of the volume"""
|
|
@@ -10279,11 +11608,6 @@ class VolumeInfo:
|
|
|
10279
11608
|
"""The unique identifier of the volume"""
|
|
10280
11609
|
|
|
10281
11610
|
volume_type: Optional[VolumeType] = None
|
|
10282
|
-
"""The type of the volume. An external volume is located in the specified external location. A
|
|
10283
|
-
managed volume is located in the default location which is specified by the parent schema, or
|
|
10284
|
-
the parent catalog, or the Metastore. [Learn more]
|
|
10285
|
-
|
|
10286
|
-
[Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external"""
|
|
10287
11611
|
|
|
10288
11612
|
def as_dict(self) -> dict:
|
|
10289
11613
|
"""Serializes the VolumeInfo into a dictionary suitable for use as a JSON request body."""
|
|
@@ -10449,9 +11773,7 @@ class AccountMetastoreAssignmentsAPI:
|
|
|
10449
11773
|
def create(
|
|
10450
11774
|
self, workspace_id: int, metastore_id: str, *, metastore_assignment: Optional[CreateMetastoreAssignment] = None
|
|
10451
11775
|
):
|
|
10452
|
-
"""
|
|
10453
|
-
|
|
10454
|
-
Creates an assignment to a metastore for a workspace
|
|
11776
|
+
"""Creates an assignment to a metastore for a workspace
|
|
10455
11777
|
|
|
10456
11778
|
:param workspace_id: int
|
|
10457
11779
|
Workspace ID.
|
|
@@ -10477,9 +11799,7 @@ class AccountMetastoreAssignmentsAPI:
|
|
|
10477
11799
|
)
|
|
10478
11800
|
|
|
10479
11801
|
def delete(self, workspace_id: int, metastore_id: str):
|
|
10480
|
-
"""
|
|
10481
|
-
|
|
10482
|
-
Deletes a metastore assignment to a workspace, leaving the workspace with no metastore.
|
|
11802
|
+
"""Deletes a metastore assignment to a workspace, leaving the workspace with no metastore.
|
|
10483
11803
|
|
|
10484
11804
|
:param workspace_id: int
|
|
10485
11805
|
Workspace ID.
|
|
@@ -10500,9 +11820,7 @@ class AccountMetastoreAssignmentsAPI:
|
|
|
10500
11820
|
)
|
|
10501
11821
|
|
|
10502
11822
|
def get(self, workspace_id: int) -> AccountsMetastoreAssignment:
|
|
10503
|
-
"""Gets the metastore assignment for
|
|
10504
|
-
|
|
10505
|
-
Gets the metastore assignment, if any, for the workspace specified by ID. If the workspace is assigned
|
|
11823
|
+
"""Gets the metastore assignment, if any, for the workspace specified by ID. If the workspace is assigned
|
|
10506
11824
|
a metastore, the mappig will be returned. If no metastore is assigned to the workspace, the assignment
|
|
10507
11825
|
will not be found and a 404 returned.
|
|
10508
11826
|
|
|
@@ -10522,9 +11840,7 @@ class AccountMetastoreAssignmentsAPI:
|
|
|
10522
11840
|
return AccountsMetastoreAssignment.from_dict(res)
|
|
10523
11841
|
|
|
10524
11842
|
def list(self, metastore_id: str) -> Iterator[int]:
|
|
10525
|
-
"""
|
|
10526
|
-
|
|
10527
|
-
Gets a list of all Databricks workspace IDs that have been assigned to given metastore.
|
|
11843
|
+
"""Gets a list of all Databricks workspace IDs that have been assigned to given metastore.
|
|
10528
11844
|
|
|
10529
11845
|
:param metastore_id: str
|
|
10530
11846
|
Unity Catalog metastore ID
|
|
@@ -10545,9 +11861,7 @@ class AccountMetastoreAssignmentsAPI:
|
|
|
10545
11861
|
def update(
|
|
10546
11862
|
self, workspace_id: int, metastore_id: str, *, metastore_assignment: Optional[UpdateMetastoreAssignment] = None
|
|
10547
11863
|
):
|
|
10548
|
-
"""Updates
|
|
10549
|
-
|
|
10550
|
-
Updates an assignment to a metastore for a workspace. Currently, only the default catalog may be
|
|
11864
|
+
"""Updates an assignment to a metastore for a workspace. Currently, only the default catalog may be
|
|
10551
11865
|
updated.
|
|
10552
11866
|
|
|
10553
11867
|
:param workspace_id: int
|
|
@@ -10582,9 +11896,7 @@ class AccountMetastoresAPI:
|
|
|
10582
11896
|
self._api = api_client
|
|
10583
11897
|
|
|
10584
11898
|
def create(self, *, metastore_info: Optional[CreateMetastore] = None) -> AccountsMetastoreInfo:
|
|
10585
|
-
"""
|
|
10586
|
-
|
|
10587
|
-
Creates a Unity Catalog metastore.
|
|
11899
|
+
"""Creates a Unity Catalog metastore.
|
|
10588
11900
|
|
|
10589
11901
|
:param metastore_info: :class:`CreateMetastore` (optional)
|
|
10590
11902
|
|
|
@@ -10602,9 +11914,7 @@ class AccountMetastoresAPI:
|
|
|
10602
11914
|
return AccountsMetastoreInfo.from_dict(res)
|
|
10603
11915
|
|
|
10604
11916
|
def delete(self, metastore_id: str, *, force: Optional[bool] = None):
|
|
10605
|
-
"""
|
|
10606
|
-
|
|
10607
|
-
Deletes a Unity Catalog metastore for an account, both specified by ID.
|
|
11917
|
+
"""Deletes a Unity Catalog metastore for an account, both specified by ID.
|
|
10608
11918
|
|
|
10609
11919
|
:param metastore_id: str
|
|
10610
11920
|
Unity Catalog metastore ID
|
|
@@ -10629,9 +11939,7 @@ class AccountMetastoresAPI:
|
|
|
10629
11939
|
)
|
|
10630
11940
|
|
|
10631
11941
|
def get(self, metastore_id: str) -> AccountsMetastoreInfo:
|
|
10632
|
-
"""
|
|
10633
|
-
|
|
10634
|
-
Gets a Unity Catalog metastore from an account, both specified by ID.
|
|
11942
|
+
"""Gets a Unity Catalog metastore from an account, both specified by ID.
|
|
10635
11943
|
|
|
10636
11944
|
:param metastore_id: str
|
|
10637
11945
|
Unity Catalog metastore ID
|
|
@@ -10649,9 +11957,8 @@ class AccountMetastoresAPI:
|
|
|
10649
11957
|
return AccountsMetastoreInfo.from_dict(res)
|
|
10650
11958
|
|
|
10651
11959
|
def list(self) -> Iterator[MetastoreInfo]:
|
|
10652
|
-
"""
|
|
11960
|
+
"""Gets all Unity Catalog metastores associated with an account specified by ID.
|
|
10653
11961
|
|
|
10654
|
-
Gets all Unity Catalog metastores associated with an account specified by ID.
|
|
10655
11962
|
|
|
10656
11963
|
:returns: Iterator over :class:`MetastoreInfo`
|
|
10657
11964
|
"""
|
|
@@ -10665,9 +11972,7 @@ class AccountMetastoresAPI:
|
|
|
10665
11972
|
return parsed if parsed is not None else []
|
|
10666
11973
|
|
|
10667
11974
|
def update(self, metastore_id: str, *, metastore_info: Optional[UpdateMetastore] = None) -> AccountsMetastoreInfo:
|
|
10668
|
-
"""
|
|
10669
|
-
|
|
10670
|
-
Updates an existing Unity Catalog metastore.
|
|
11975
|
+
"""Updates an existing Unity Catalog metastore.
|
|
10671
11976
|
|
|
10672
11977
|
:param metastore_id: str
|
|
10673
11978
|
Unity Catalog metastore ID
|
|
@@ -10698,9 +12003,7 @@ class AccountStorageCredentialsAPI:
|
|
|
10698
12003
|
def create(
|
|
10699
12004
|
self, metastore_id: str, *, credential_info: Optional[CreateStorageCredential] = None
|
|
10700
12005
|
) -> AccountsStorageCredentialInfo:
|
|
10701
|
-
"""
|
|
10702
|
-
|
|
10703
|
-
Creates a new storage credential. The request object is specific to the cloud:
|
|
12006
|
+
"""Creates a new storage credential. The request object is specific to the cloud:
|
|
10704
12007
|
|
|
10705
12008
|
* **AwsIamRole** for AWS credentials * **AzureServicePrincipal** for Azure credentials *
|
|
10706
12009
|
**GcpServiceAcountKey** for GCP credentials.
|
|
@@ -10731,9 +12034,7 @@ class AccountStorageCredentialsAPI:
|
|
|
10731
12034
|
return AccountsStorageCredentialInfo.from_dict(res)
|
|
10732
12035
|
|
|
10733
12036
|
def delete(self, metastore_id: str, storage_credential_name: str, *, force: Optional[bool] = None):
|
|
10734
|
-
"""
|
|
10735
|
-
|
|
10736
|
-
Deletes a storage credential from the metastore. The caller must be an owner of the storage
|
|
12037
|
+
"""Deletes a storage credential from the metastore. The caller must be an owner of the storage
|
|
10737
12038
|
credential.
|
|
10738
12039
|
|
|
10739
12040
|
:param metastore_id: str
|
|
@@ -10761,9 +12062,7 @@ class AccountStorageCredentialsAPI:
|
|
|
10761
12062
|
)
|
|
10762
12063
|
|
|
10763
12064
|
def get(self, metastore_id: str, storage_credential_name: str) -> AccountsStorageCredentialInfo:
|
|
10764
|
-
"""Gets
|
|
10765
|
-
|
|
10766
|
-
Gets a storage credential from the metastore. The caller must be a metastore admin, the owner of the
|
|
12065
|
+
"""Gets a storage credential from the metastore. The caller must be a metastore admin, the owner of the
|
|
10767
12066
|
storage credential, or have a level of privilege on the storage credential.
|
|
10768
12067
|
|
|
10769
12068
|
:param metastore_id: str
|
|
@@ -10786,9 +12085,7 @@ class AccountStorageCredentialsAPI:
|
|
|
10786
12085
|
return AccountsStorageCredentialInfo.from_dict(res)
|
|
10787
12086
|
|
|
10788
12087
|
def list(self, metastore_id: str) -> Iterator[StorageCredentialInfo]:
|
|
10789
|
-
"""
|
|
10790
|
-
|
|
10791
|
-
Gets a list of all storage credentials that have been assigned to given metastore.
|
|
12088
|
+
"""Gets a list of all storage credentials that have been assigned to given metastore.
|
|
10792
12089
|
|
|
10793
12090
|
:param metastore_id: str
|
|
10794
12091
|
Unity Catalog metastore ID
|
|
@@ -10815,9 +12112,7 @@ class AccountStorageCredentialsAPI:
|
|
|
10815
12112
|
*,
|
|
10816
12113
|
credential_info: Optional[UpdateStorageCredential] = None,
|
|
10817
12114
|
) -> AccountsStorageCredentialInfo:
|
|
10818
|
-
"""Updates a storage credential.
|
|
10819
|
-
|
|
10820
|
-
Updates a storage credential on the metastore. The caller must be the owner of the storage credential.
|
|
12115
|
+
"""Updates a storage credential on the metastore. The caller must be the owner of the storage credential.
|
|
10821
12116
|
If the caller is a metastore admin, only the __owner__ credential can be changed.
|
|
10822
12117
|
|
|
10823
12118
|
:param metastore_id: str
|
|
@@ -10853,9 +12148,7 @@ class ArtifactAllowlistsAPI:
|
|
|
10853
12148
|
self._api = api_client
|
|
10854
12149
|
|
|
10855
12150
|
def get(self, artifact_type: ArtifactType) -> ArtifactAllowlistInfo:
|
|
10856
|
-
"""Get
|
|
10857
|
-
|
|
10858
|
-
Get the artifact allowlist of a certain artifact type. The caller must be a metastore admin or have
|
|
12151
|
+
"""Get the artifact allowlist of a certain artifact type. The caller must be a metastore admin or have
|
|
10859
12152
|
the **MANAGE ALLOWLIST** privilege on the metastore.
|
|
10860
12153
|
|
|
10861
12154
|
:param artifact_type: :class:`ArtifactType`
|
|
@@ -10880,9 +12173,7 @@ class ArtifactAllowlistsAPI:
|
|
|
10880
12173
|
created_by: Optional[str] = None,
|
|
10881
12174
|
metastore_id: Optional[str] = None,
|
|
10882
12175
|
) -> ArtifactAllowlistInfo:
|
|
10883
|
-
"""Set
|
|
10884
|
-
|
|
10885
|
-
Set the artifact allowlist of a certain artifact type. The whole artifact allowlist is replaced with
|
|
12176
|
+
"""Set the artifact allowlist of a certain artifact type. The whole artifact allowlist is replaced with
|
|
10886
12177
|
the new allowlist. The caller must be a metastore admin or have the **MANAGE ALLOWLIST** privilege on
|
|
10887
12178
|
the metastore.
|
|
10888
12179
|
|
|
@@ -10942,9 +12233,7 @@ class CatalogsAPI:
|
|
|
10942
12233
|
share_name: Optional[str] = None,
|
|
10943
12234
|
storage_root: Optional[str] = None,
|
|
10944
12235
|
) -> CatalogInfo:
|
|
10945
|
-
"""
|
|
10946
|
-
|
|
10947
|
-
Creates a new catalog instance in the parent metastore if the caller is a metastore admin or has the
|
|
12236
|
+
"""Creates a new catalog instance in the parent metastore if the caller is a metastore admin or has the
|
|
10948
12237
|
**CREATE_CATALOG** privilege.
|
|
10949
12238
|
|
|
10950
12239
|
:param name: str
|
|
@@ -10994,9 +12283,7 @@ class CatalogsAPI:
|
|
|
10994
12283
|
return CatalogInfo.from_dict(res)
|
|
10995
12284
|
|
|
10996
12285
|
def delete(self, name: str, *, force: Optional[bool] = None):
|
|
10997
|
-
"""
|
|
10998
|
-
|
|
10999
|
-
Deletes the catalog that matches the supplied name. The caller must be a metastore admin or the owner
|
|
12286
|
+
"""Deletes the catalog that matches the supplied name. The caller must be a metastore admin or the owner
|
|
11000
12287
|
of the catalog.
|
|
11001
12288
|
|
|
11002
12289
|
:param name: str
|
|
@@ -11017,9 +12304,7 @@ class CatalogsAPI:
|
|
|
11017
12304
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/catalogs/{name}", query=query, headers=headers)
|
|
11018
12305
|
|
|
11019
12306
|
def get(self, name: str, *, include_browse: Optional[bool] = None) -> CatalogInfo:
|
|
11020
|
-
"""
|
|
11021
|
-
|
|
11022
|
-
Gets the specified catalog in a metastore. The caller must be a metastore admin, the owner of the
|
|
12307
|
+
"""Gets the specified catalog in a metastore. The caller must be a metastore admin, the owner of the
|
|
11023
12308
|
catalog, or a user that has the **USE_CATALOG** privilege set for their account.
|
|
11024
12309
|
|
|
11025
12310
|
:param name: str
|
|
@@ -11048,9 +12333,7 @@ class CatalogsAPI:
|
|
|
11048
12333
|
max_results: Optional[int] = None,
|
|
11049
12334
|
page_token: Optional[str] = None,
|
|
11050
12335
|
) -> Iterator[CatalogInfo]:
|
|
11051
|
-
"""
|
|
11052
|
-
|
|
11053
|
-
Gets an array of catalogs in the metastore. If the caller is the metastore admin, all catalogs will be
|
|
12336
|
+
"""Gets an array of catalogs in the metastore. If the caller is the metastore admin, all catalogs will be
|
|
11054
12337
|
retrieved. Otherwise, only catalogs owned by the caller (or for which the caller has the
|
|
11055
12338
|
**USE_CATALOG** privilege) will be retrieved. There is no guarantee of a specific ordering of the
|
|
11056
12339
|
elements in the array.
|
|
@@ -11104,9 +12387,7 @@ class CatalogsAPI:
|
|
|
11104
12387
|
owner: Optional[str] = None,
|
|
11105
12388
|
properties: Optional[Dict[str, str]] = None,
|
|
11106
12389
|
) -> CatalogInfo:
|
|
11107
|
-
"""
|
|
11108
|
-
|
|
11109
|
-
Updates the catalog that matches the supplied name. The caller must be either the owner of the
|
|
12390
|
+
"""Updates the catalog that matches the supplied name. The caller must be either the owner of the
|
|
11110
12391
|
catalog, or a metastore admin (when changing the owner field of the catalog).
|
|
11111
12392
|
|
|
11112
12393
|
:param name: str
|
|
@@ -11175,9 +12456,7 @@ class ConnectionsAPI:
|
|
|
11175
12456
|
properties: Optional[Dict[str, str]] = None,
|
|
11176
12457
|
read_only: Optional[bool] = None,
|
|
11177
12458
|
) -> ConnectionInfo:
|
|
11178
|
-
"""
|
|
11179
|
-
|
|
11180
|
-
Creates a new connection
|
|
12459
|
+
"""Creates a new connection
|
|
11181
12460
|
|
|
11182
12461
|
Creates a new connection to an external data source. It allows users to specify connection details and
|
|
11183
12462
|
configurations for interaction with the external server.
|
|
@@ -11219,9 +12498,7 @@ class ConnectionsAPI:
|
|
|
11219
12498
|
return ConnectionInfo.from_dict(res)
|
|
11220
12499
|
|
|
11221
12500
|
def delete(self, name: str):
|
|
11222
|
-
"""
|
|
11223
|
-
|
|
11224
|
-
Deletes the connection that matches the supplied name.
|
|
12501
|
+
"""Deletes the connection that matches the supplied name.
|
|
11225
12502
|
|
|
11226
12503
|
:param name: str
|
|
11227
12504
|
The name of the connection to be deleted.
|
|
@@ -11236,9 +12513,7 @@ class ConnectionsAPI:
|
|
|
11236
12513
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/connections/{name}", headers=headers)
|
|
11237
12514
|
|
|
11238
12515
|
def get(self, name: str) -> ConnectionInfo:
|
|
11239
|
-
"""
|
|
11240
|
-
|
|
11241
|
-
Gets a connection from it's name.
|
|
12516
|
+
"""Gets a connection from it's name.
|
|
11242
12517
|
|
|
11243
12518
|
:param name: str
|
|
11244
12519
|
Name of the connection.
|
|
@@ -11254,9 +12529,7 @@ class ConnectionsAPI:
|
|
|
11254
12529
|
return ConnectionInfo.from_dict(res)
|
|
11255
12530
|
|
|
11256
12531
|
def list(self, *, max_results: Optional[int] = None, page_token: Optional[str] = None) -> Iterator[ConnectionInfo]:
|
|
11257
|
-
"""List connections.
|
|
11258
|
-
|
|
11259
|
-
List all connections.
|
|
12532
|
+
"""List all connections.
|
|
11260
12533
|
|
|
11261
12534
|
:param max_results: int (optional)
|
|
11262
12535
|
Maximum number of connections to return. - If not set, all connections are returned (not
|
|
@@ -11290,9 +12563,7 @@ class ConnectionsAPI:
|
|
|
11290
12563
|
def update(
|
|
11291
12564
|
self, name: str, options: Dict[str, str], *, new_name: Optional[str] = None, owner: Optional[str] = None
|
|
11292
12565
|
) -> ConnectionInfo:
|
|
11293
|
-
"""
|
|
11294
|
-
|
|
11295
|
-
Updates the connection that matches the supplied name.
|
|
12566
|
+
"""Updates the connection that matches the supplied name.
|
|
11296
12567
|
|
|
11297
12568
|
:param name: str
|
|
11298
12569
|
Name of the connection.
|
|
@@ -11346,9 +12617,7 @@ class CredentialsAPI:
|
|
|
11346
12617
|
read_only: Optional[bool] = None,
|
|
11347
12618
|
skip_validation: Optional[bool] = None,
|
|
11348
12619
|
) -> CredentialInfo:
|
|
11349
|
-
"""
|
|
11350
|
-
|
|
11351
|
-
Creates a new credential. The type of credential to be created is determined by the **purpose** field,
|
|
12620
|
+
"""Creates a new credential. The type of credential to be created is determined by the **purpose** field,
|
|
11352
12621
|
which should be either **SERVICE** or **STORAGE**.
|
|
11353
12622
|
|
|
11354
12623
|
The caller must be a metastore admin or have the metastore privilege **CREATE_STORAGE_CREDENTIAL** for
|
|
@@ -11358,15 +12627,15 @@ class CredentialsAPI:
|
|
|
11358
12627
|
The credential name. The name must be unique among storage and service credentials within the
|
|
11359
12628
|
metastore.
|
|
11360
12629
|
:param aws_iam_role: :class:`AwsIamRole` (optional)
|
|
11361
|
-
The AWS IAM role configuration
|
|
12630
|
+
The AWS IAM role configuration.
|
|
11362
12631
|
:param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
|
|
11363
12632
|
The Azure managed identity configuration.
|
|
11364
12633
|
:param azure_service_principal: :class:`AzureServicePrincipal` (optional)
|
|
11365
|
-
The Azure service principal configuration.
|
|
12634
|
+
The Azure service principal configuration.
|
|
11366
12635
|
:param comment: str (optional)
|
|
11367
12636
|
Comment associated with the credential.
|
|
11368
12637
|
:param databricks_gcp_service_account: :class:`DatabricksGcpServiceAccount` (optional)
|
|
11369
|
-
|
|
12638
|
+
The Databricks managed GCP service account configuration.
|
|
11370
12639
|
:param purpose: :class:`CredentialPurpose` (optional)
|
|
11371
12640
|
Indicates the purpose of the credential.
|
|
11372
12641
|
:param read_only: bool (optional)
|
|
@@ -11405,9 +12674,7 @@ class CredentialsAPI:
|
|
|
11405
12674
|
return CredentialInfo.from_dict(res)
|
|
11406
12675
|
|
|
11407
12676
|
def delete_credential(self, name_arg: str, *, force: Optional[bool] = None):
|
|
11408
|
-
"""
|
|
11409
|
-
|
|
11410
|
-
Deletes a service or storage credential from the metastore. The caller must be an owner of the
|
|
12677
|
+
"""Deletes a service or storage credential from the metastore. The caller must be an owner of the
|
|
11411
12678
|
credential.
|
|
11412
12679
|
|
|
11413
12680
|
:param name_arg: str
|
|
@@ -11435,17 +12702,13 @@ class CredentialsAPI:
|
|
|
11435
12702
|
azure_options: Optional[GenerateTemporaryServiceCredentialAzureOptions] = None,
|
|
11436
12703
|
gcp_options: Optional[GenerateTemporaryServiceCredentialGcpOptions] = None,
|
|
11437
12704
|
) -> TemporaryCredentials:
|
|
11438
|
-
"""
|
|
11439
|
-
|
|
11440
|
-
Returns a set of temporary credentials generated using the specified service credential. The caller
|
|
12705
|
+
"""Returns a set of temporary credentials generated using the specified service credential. The caller
|
|
11441
12706
|
must be a metastore admin or have the metastore privilege **ACCESS** on the service credential.
|
|
11442
12707
|
|
|
11443
12708
|
:param credential_name: str
|
|
11444
12709
|
The name of the service credential used to generate a temporary credential
|
|
11445
12710
|
:param azure_options: :class:`GenerateTemporaryServiceCredentialAzureOptions` (optional)
|
|
11446
|
-
The Azure cloud options to customize the requested temporary credential
|
|
11447
12711
|
:param gcp_options: :class:`GenerateTemporaryServiceCredentialGcpOptions` (optional)
|
|
11448
|
-
The GCP cloud options to customize the requested temporary credential
|
|
11449
12712
|
|
|
11450
12713
|
:returns: :class:`TemporaryCredentials`
|
|
11451
12714
|
"""
|
|
@@ -11465,9 +12728,7 @@ class CredentialsAPI:
|
|
|
11465
12728
|
return TemporaryCredentials.from_dict(res)
|
|
11466
12729
|
|
|
11467
12730
|
def get_credential(self, name_arg: str) -> CredentialInfo:
|
|
11468
|
-
"""
|
|
11469
|
-
|
|
11470
|
-
Gets a service or storage credential from the metastore. The caller must be a metastore admin, the
|
|
12731
|
+
"""Gets a service or storage credential from the metastore. The caller must be a metastore admin, the
|
|
11471
12732
|
owner of the credential, or have any permission on the credential.
|
|
11472
12733
|
|
|
11473
12734
|
:param name_arg: str
|
|
@@ -11490,9 +12751,7 @@ class CredentialsAPI:
|
|
|
11490
12751
|
page_token: Optional[str] = None,
|
|
11491
12752
|
purpose: Optional[CredentialPurpose] = None,
|
|
11492
12753
|
) -> Iterator[CredentialInfo]:
|
|
11493
|
-
"""
|
|
11494
|
-
|
|
11495
|
-
Gets an array of credentials (as __CredentialInfo__ objects).
|
|
12754
|
+
"""Gets an array of credentials (as __CredentialInfo__ objects).
|
|
11496
12755
|
|
|
11497
12756
|
The array is limited to only the credentials that the caller has permission to access. If the caller
|
|
11498
12757
|
is a metastore admin, retrieval of credentials is unrestricted. There is no guarantee of a specific
|
|
@@ -11547,9 +12806,7 @@ class CredentialsAPI:
|
|
|
11547
12806
|
read_only: Optional[bool] = None,
|
|
11548
12807
|
skip_validation: Optional[bool] = None,
|
|
11549
12808
|
) -> CredentialInfo:
|
|
11550
|
-
"""
|
|
11551
|
-
|
|
11552
|
-
Updates a service or storage credential on the metastore.
|
|
12809
|
+
"""Updates a service or storage credential on the metastore.
|
|
11553
12810
|
|
|
11554
12811
|
The caller must be the owner of the credential or a metastore admin or have the `MANAGE` permission.
|
|
11555
12812
|
If the caller is a metastore admin, only the __owner__ field can be changed.
|
|
@@ -11557,15 +12814,15 @@ class CredentialsAPI:
|
|
|
11557
12814
|
:param name_arg: str
|
|
11558
12815
|
Name of the credential.
|
|
11559
12816
|
:param aws_iam_role: :class:`AwsIamRole` (optional)
|
|
11560
|
-
The AWS IAM role configuration
|
|
12817
|
+
The AWS IAM role configuration.
|
|
11561
12818
|
:param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
|
|
11562
12819
|
The Azure managed identity configuration.
|
|
11563
12820
|
:param azure_service_principal: :class:`AzureServicePrincipal` (optional)
|
|
11564
|
-
The Azure service principal configuration.
|
|
12821
|
+
The Azure service principal configuration.
|
|
11565
12822
|
:param comment: str (optional)
|
|
11566
12823
|
Comment associated with the credential.
|
|
11567
12824
|
:param databricks_gcp_service_account: :class:`DatabricksGcpServiceAccount` (optional)
|
|
11568
|
-
|
|
12825
|
+
The Databricks managed GCP service account configuration.
|
|
11569
12826
|
:param force: bool (optional)
|
|
11570
12827
|
Force an update even if there are dependent services (when purpose is **SERVICE**) or dependent
|
|
11571
12828
|
external locations and external tables (when purpose is **STORAGE**).
|
|
@@ -11626,9 +12883,7 @@ class CredentialsAPI:
|
|
|
11626
12883
|
read_only: Optional[bool] = None,
|
|
11627
12884
|
url: Optional[str] = None,
|
|
11628
12885
|
) -> ValidateCredentialResponse:
|
|
11629
|
-
"""
|
|
11630
|
-
|
|
11631
|
-
Validates a credential.
|
|
12886
|
+
"""Validates a credential.
|
|
11632
12887
|
|
|
11633
12888
|
For service credentials (purpose is **SERVICE**), either the __credential_name__ or the cloud-specific
|
|
11634
12889
|
credential must be provided.
|
|
@@ -11643,13 +12898,10 @@ class CredentialsAPI:
|
|
|
11643
12898
|
metastore and the credential (e.g., **CREATE_EXTERNAL_LOCATION** when purpose is **STORAGE**).
|
|
11644
12899
|
|
|
11645
12900
|
:param aws_iam_role: :class:`AwsIamRole` (optional)
|
|
11646
|
-
The AWS IAM role configuration
|
|
11647
12901
|
:param azure_managed_identity: :class:`AzureManagedIdentity` (optional)
|
|
11648
|
-
The Azure managed identity configuration.
|
|
11649
12902
|
:param credential_name: str (optional)
|
|
11650
12903
|
Required. The name of an existing credential or long-lived cloud credential to validate.
|
|
11651
12904
|
:param databricks_gcp_service_account: :class:`DatabricksGcpServiceAccount` (optional)
|
|
11652
|
-
GCP long-lived credential. Databricks-created Google Cloud Storage service account.
|
|
11653
12905
|
:param external_location_name: str (optional)
|
|
11654
12906
|
The name of an existing external location to validate. Only applicable for storage credentials
|
|
11655
12907
|
(purpose is **STORAGE**.)
|
|
@@ -11689,6 +12941,132 @@ class CredentialsAPI:
|
|
|
11689
12941
|
return ValidateCredentialResponse.from_dict(res)
|
|
11690
12942
|
|
|
11691
12943
|
|
|
12944
|
+
class ExternalLineageAPI:
|
|
12945
|
+
"""External Lineage APIs enable defining and managing lineage relationships between Databricks objects and
|
|
12946
|
+
external systems. These APIs allow users to capture data flows connecting Databricks tables, models, and
|
|
12947
|
+
file paths with external metadata objects.
|
|
12948
|
+
|
|
12949
|
+
With these APIs, users can create, update, delete, and list lineage relationships with support for
|
|
12950
|
+
column-level mappings and custom properties."""
|
|
12951
|
+
|
|
12952
|
+
def __init__(self, api_client):
|
|
12953
|
+
self._api = api_client
|
|
12954
|
+
|
|
12955
|
+
def create_external_lineage_relationship(
|
|
12956
|
+
self, external_lineage_relationship: CreateRequestExternalLineage
|
|
12957
|
+
) -> ExternalLineageRelationship:
|
|
12958
|
+
"""Creates an external lineage relationship between a Databricks or external metadata object and another
|
|
12959
|
+
external metadata object.
|
|
12960
|
+
|
|
12961
|
+
:param external_lineage_relationship: :class:`CreateRequestExternalLineage`
|
|
12962
|
+
|
|
12963
|
+
:returns: :class:`ExternalLineageRelationship`
|
|
12964
|
+
"""
|
|
12965
|
+
body = external_lineage_relationship.as_dict()
|
|
12966
|
+
headers = {
|
|
12967
|
+
"Accept": "application/json",
|
|
12968
|
+
"Content-Type": "application/json",
|
|
12969
|
+
}
|
|
12970
|
+
|
|
12971
|
+
res = self._api.do("POST", "/api/2.0/lineage-tracking/external-lineage", body=body, headers=headers)
|
|
12972
|
+
return ExternalLineageRelationship.from_dict(res)
|
|
12973
|
+
|
|
12974
|
+
def delete_external_lineage_relationship(self, external_lineage_relationship: DeleteRequestExternalLineage):
|
|
12975
|
+
"""Deletes an external lineage relationship between a Databricks or external metadata object and another
|
|
12976
|
+
external metadata object.
|
|
12977
|
+
|
|
12978
|
+
:param external_lineage_relationship: :class:`DeleteRequestExternalLineage`
|
|
12979
|
+
|
|
12980
|
+
|
|
12981
|
+
"""
|
|
12982
|
+
|
|
12983
|
+
query = {}
|
|
12984
|
+
if external_lineage_relationship is not None:
|
|
12985
|
+
query["external_lineage_relationship"] = external_lineage_relationship.as_dict()
|
|
12986
|
+
headers = {
|
|
12987
|
+
"Accept": "application/json",
|
|
12988
|
+
}
|
|
12989
|
+
|
|
12990
|
+
self._api.do("DELETE", "/api/2.0/lineage-tracking/external-lineage", query=query, headers=headers)
|
|
12991
|
+
|
|
12992
|
+
def list_external_lineage_relationships(
|
|
12993
|
+
self,
|
|
12994
|
+
object_info: ExternalLineageObject,
|
|
12995
|
+
lineage_direction: LineageDirection,
|
|
12996
|
+
*,
|
|
12997
|
+
page_size: Optional[int] = None,
|
|
12998
|
+
page_token: Optional[str] = None,
|
|
12999
|
+
) -> Iterator[ExternalLineageInfo]:
|
|
13000
|
+
"""Lists external lineage relationships of a Databricks object or external metadata given a supplied
|
|
13001
|
+
direction.
|
|
13002
|
+
|
|
13003
|
+
:param object_info: :class:`ExternalLineageObject`
|
|
13004
|
+
The object to query external lineage relationship on.
|
|
13005
|
+
:param lineage_direction: :class:`LineageDirection`
|
|
13006
|
+
The lineage direction to filter on.
|
|
13007
|
+
:param page_size: int (optional)
|
|
13008
|
+
:param page_token: str (optional)
|
|
13009
|
+
|
|
13010
|
+
:returns: Iterator over :class:`ExternalLineageInfo`
|
|
13011
|
+
"""
|
|
13012
|
+
|
|
13013
|
+
query = {}
|
|
13014
|
+
if lineage_direction is not None:
|
|
13015
|
+
query["lineage_direction"] = lineage_direction.value
|
|
13016
|
+
if object_info is not None:
|
|
13017
|
+
query["object_info"] = object_info.as_dict()
|
|
13018
|
+
if page_size is not None:
|
|
13019
|
+
query["page_size"] = page_size
|
|
13020
|
+
if page_token is not None:
|
|
13021
|
+
query["page_token"] = page_token
|
|
13022
|
+
headers = {
|
|
13023
|
+
"Accept": "application/json",
|
|
13024
|
+
}
|
|
13025
|
+
|
|
13026
|
+
while True:
|
|
13027
|
+
json = self._api.do("GET", "/api/2.0/lineage-tracking/external-lineage", query=query, headers=headers)
|
|
13028
|
+
if "external_lineage_relationships" in json:
|
|
13029
|
+
for v in json["external_lineage_relationships"]:
|
|
13030
|
+
yield ExternalLineageInfo.from_dict(v)
|
|
13031
|
+
if "next_page_token" not in json or not json["next_page_token"]:
|
|
13032
|
+
return
|
|
13033
|
+
query["page_token"] = json["next_page_token"]
|
|
13034
|
+
|
|
13035
|
+
def update_external_lineage_relationship(
|
|
13036
|
+
self, external_lineage_relationship: UpdateRequestExternalLineage, update_mask: str
|
|
13037
|
+
) -> ExternalLineageRelationship:
|
|
13038
|
+
"""Updates an external lineage relationship between a Databricks or external metadata object and another
|
|
13039
|
+
external metadata object.
|
|
13040
|
+
|
|
13041
|
+
:param external_lineage_relationship: :class:`UpdateRequestExternalLineage`
|
|
13042
|
+
:param update_mask: str
|
|
13043
|
+
The field mask must be a single string, with multiple fields separated by commas (no spaces). The
|
|
13044
|
+
field path is relative to the resource object, using a dot (`.`) to navigate sub-fields (e.g.,
|
|
13045
|
+
`author.given_name`). Specification of elements in sequence or map fields is not allowed, as only
|
|
13046
|
+
the entire collection field can be specified. Field names must exactly match the resource field
|
|
13047
|
+
names.
|
|
13048
|
+
|
|
13049
|
+
A field mask of `*` indicates full replacement. It’s recommended to always explicitly list the
|
|
13050
|
+
fields being updated and avoid using `*` wildcards, as it can lead to unintended results if the API
|
|
13051
|
+
changes in the future.
|
|
13052
|
+
|
|
13053
|
+
:returns: :class:`ExternalLineageRelationship`
|
|
13054
|
+
"""
|
|
13055
|
+
body = external_lineage_relationship.as_dict()
|
|
13056
|
+
query = {}
|
|
13057
|
+
if update_mask is not None:
|
|
13058
|
+
query["update_mask"] = update_mask
|
|
13059
|
+
headers = {
|
|
13060
|
+
"Accept": "application/json",
|
|
13061
|
+
"Content-Type": "application/json",
|
|
13062
|
+
}
|
|
13063
|
+
|
|
13064
|
+
res = self._api.do(
|
|
13065
|
+
"PATCH", "/api/2.0/lineage-tracking/external-lineage", query=query, body=body, headers=headers
|
|
13066
|
+
)
|
|
13067
|
+
return ExternalLineageRelationship.from_dict(res)
|
|
13068
|
+
|
|
13069
|
+
|
|
11692
13070
|
class ExternalLocationsAPI:
|
|
11693
13071
|
"""An external location is an object that combines a cloud storage path with a storage credential that
|
|
11694
13072
|
authorizes access to the cloud storage path. Each external location is subject to Unity Catalog
|
|
@@ -11718,9 +13096,7 @@ class ExternalLocationsAPI:
|
|
|
11718
13096
|
read_only: Optional[bool] = None,
|
|
11719
13097
|
skip_validation: Optional[bool] = None,
|
|
11720
13098
|
) -> ExternalLocationInfo:
|
|
11721
|
-
"""
|
|
11722
|
-
|
|
11723
|
-
Creates a new external location entry in the metastore. The caller must be a metastore admin or have
|
|
13099
|
+
"""Creates a new external location entry in the metastore. The caller must be a metastore admin or have
|
|
11724
13100
|
the **CREATE_EXTERNAL_LOCATION** privilege on both the metastore and the associated storage
|
|
11725
13101
|
credential.
|
|
11726
13102
|
|
|
@@ -11733,15 +13109,14 @@ class ExternalLocationsAPI:
|
|
|
11733
13109
|
:param comment: str (optional)
|
|
11734
13110
|
User-provided free-form text description.
|
|
11735
13111
|
:param enable_file_events: bool (optional)
|
|
11736
|
-
|
|
13112
|
+
Whether to enable file events on this external location.
|
|
11737
13113
|
:param encryption_details: :class:`EncryptionDetails` (optional)
|
|
11738
|
-
Encryption options that apply to clients connecting to cloud storage.
|
|
11739
13114
|
:param fallback: bool (optional)
|
|
11740
13115
|
Indicates whether fallback mode is enabled for this external location. When fallback mode is
|
|
11741
13116
|
enabled, the access to the location falls back to cluster credentials if UC credentials are not
|
|
11742
13117
|
sufficient.
|
|
11743
13118
|
:param file_event_queue: :class:`FileEventQueue` (optional)
|
|
11744
|
-
|
|
13119
|
+
File event queue settings.
|
|
11745
13120
|
:param read_only: bool (optional)
|
|
11746
13121
|
Indicates whether the external location is read-only.
|
|
11747
13122
|
:param skip_validation: bool (optional)
|
|
@@ -11779,9 +13154,7 @@ class ExternalLocationsAPI:
|
|
|
11779
13154
|
return ExternalLocationInfo.from_dict(res)
|
|
11780
13155
|
|
|
11781
13156
|
def delete(self, name: str, *, force: Optional[bool] = None):
|
|
11782
|
-
"""
|
|
11783
|
-
|
|
11784
|
-
Deletes the specified external location from the metastore. The caller must be the owner of the
|
|
13157
|
+
"""Deletes the specified external location from the metastore. The caller must be the owner of the
|
|
11785
13158
|
external location.
|
|
11786
13159
|
|
|
11787
13160
|
:param name: str
|
|
@@ -11802,9 +13175,7 @@ class ExternalLocationsAPI:
|
|
|
11802
13175
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/external-locations/{name}", query=query, headers=headers)
|
|
11803
13176
|
|
|
11804
13177
|
def get(self, name: str, *, include_browse: Optional[bool] = None) -> ExternalLocationInfo:
|
|
11805
|
-
"""
|
|
11806
|
-
|
|
11807
|
-
Gets an external location from the metastore. The caller must be either a metastore admin, the owner
|
|
13178
|
+
"""Gets an external location from the metastore. The caller must be either a metastore admin, the owner
|
|
11808
13179
|
of the external location, or a user that has some privilege on the external location.
|
|
11809
13180
|
|
|
11810
13181
|
:param name: str
|
|
@@ -11833,9 +13204,7 @@ class ExternalLocationsAPI:
|
|
|
11833
13204
|
max_results: Optional[int] = None,
|
|
11834
13205
|
page_token: Optional[str] = None,
|
|
11835
13206
|
) -> Iterator[ExternalLocationInfo]:
|
|
11836
|
-
"""
|
|
11837
|
-
|
|
11838
|
-
Gets an array of external locations (__ExternalLocationInfo__ objects) from the metastore. The caller
|
|
13207
|
+
"""Gets an array of external locations (__ExternalLocationInfo__ objects) from the metastore. The caller
|
|
11839
13208
|
must be a metastore admin, the owner of the external location, or a user that has some privilege on
|
|
11840
13209
|
the external location. There is no guarantee of a specific ordering of the elements in the array.
|
|
11841
13210
|
|
|
@@ -11891,9 +13260,7 @@ class ExternalLocationsAPI:
|
|
|
11891
13260
|
skip_validation: Optional[bool] = None,
|
|
11892
13261
|
url: Optional[str] = None,
|
|
11893
13262
|
) -> ExternalLocationInfo:
|
|
11894
|
-
"""
|
|
11895
|
-
|
|
11896
|
-
Updates an external location in the metastore. The caller must be the owner of the external location,
|
|
13263
|
+
"""Updates an external location in the metastore. The caller must be the owner of the external location,
|
|
11897
13264
|
or be a metastore admin. In the second case, the admin can only update the name of the external
|
|
11898
13265
|
location.
|
|
11899
13266
|
|
|
@@ -11904,15 +13271,14 @@ class ExternalLocationsAPI:
|
|
|
11904
13271
|
:param credential_name: str (optional)
|
|
11905
13272
|
Name of the storage credential used with this location.
|
|
11906
13273
|
:param enable_file_events: bool (optional)
|
|
11907
|
-
|
|
13274
|
+
Whether to enable file events on this external location.
|
|
11908
13275
|
:param encryption_details: :class:`EncryptionDetails` (optional)
|
|
11909
|
-
Encryption options that apply to clients connecting to cloud storage.
|
|
11910
13276
|
:param fallback: bool (optional)
|
|
11911
13277
|
Indicates whether fallback mode is enabled for this external location. When fallback mode is
|
|
11912
13278
|
enabled, the access to the location falls back to cluster credentials if UC credentials are not
|
|
11913
13279
|
sufficient.
|
|
11914
13280
|
:param file_event_queue: :class:`FileEventQueue` (optional)
|
|
11915
|
-
|
|
13281
|
+
File event queue settings.
|
|
11916
13282
|
:param force: bool (optional)
|
|
11917
13283
|
Force update even if changing url invalidates dependent external tables or mounts.
|
|
11918
13284
|
:param isolation_mode: :class:`IsolationMode` (optional)
|
|
@@ -11965,6 +13331,137 @@ class ExternalLocationsAPI:
|
|
|
11965
13331
|
return ExternalLocationInfo.from_dict(res)
|
|
11966
13332
|
|
|
11967
13333
|
|
|
13334
|
+
class ExternalMetadataAPI:
|
|
13335
|
+
"""External Metadata objects enable customers to register and manage metadata about external systems within
|
|
13336
|
+
Unity Catalog.
|
|
13337
|
+
|
|
13338
|
+
These APIs provide a standardized way to create, update, retrieve, list, and delete external metadata
|
|
13339
|
+
objects. Fine-grained authorization ensures that only users with appropriate permissions can view and
|
|
13340
|
+
manage external metadata objects."""
|
|
13341
|
+
|
|
13342
|
+
def __init__(self, api_client):
|
|
13343
|
+
self._api = api_client
|
|
13344
|
+
|
|
13345
|
+
def create_external_metadata(self, external_metadata: ExternalMetadata) -> ExternalMetadata:
|
|
13346
|
+
"""Creates a new external metadata object in the parent metastore if the caller is a metastore admin or
|
|
13347
|
+
has the **CREATE_EXTERNAL_METADATA** privilege. Grants **BROWSE** to all account users upon creation
|
|
13348
|
+
by default.
|
|
13349
|
+
|
|
13350
|
+
:param external_metadata: :class:`ExternalMetadata`
|
|
13351
|
+
|
|
13352
|
+
:returns: :class:`ExternalMetadata`
|
|
13353
|
+
"""
|
|
13354
|
+
body = external_metadata.as_dict()
|
|
13355
|
+
headers = {
|
|
13356
|
+
"Accept": "application/json",
|
|
13357
|
+
"Content-Type": "application/json",
|
|
13358
|
+
}
|
|
13359
|
+
|
|
13360
|
+
res = self._api.do("POST", "/api/2.0/lineage-tracking/external-metadata", body=body, headers=headers)
|
|
13361
|
+
return ExternalMetadata.from_dict(res)
|
|
13362
|
+
|
|
13363
|
+
def delete_external_metadata(self, name: str):
|
|
13364
|
+
"""Deletes the external metadata object that matches the supplied name. The caller must be a metastore
|
|
13365
|
+
admin, the owner of the external metadata object, or a user that has the **MANAGE** privilege.
|
|
13366
|
+
|
|
13367
|
+
:param name: str
|
|
13368
|
+
|
|
13369
|
+
|
|
13370
|
+
"""
|
|
13371
|
+
|
|
13372
|
+
headers = {
|
|
13373
|
+
"Accept": "application/json",
|
|
13374
|
+
}
|
|
13375
|
+
|
|
13376
|
+
self._api.do("DELETE", f"/api/2.0/lineage-tracking/external-metadata/{name}", headers=headers)
|
|
13377
|
+
|
|
13378
|
+
def get_external_metadata(self, name: str) -> ExternalMetadata:
|
|
13379
|
+
"""Gets the specified external metadata object in a metastore. The caller must be a metastore admin, the
|
|
13380
|
+
owner of the external metadata object, or a user that has the **BROWSE** privilege.
|
|
13381
|
+
|
|
13382
|
+
:param name: str
|
|
13383
|
+
|
|
13384
|
+
:returns: :class:`ExternalMetadata`
|
|
13385
|
+
"""
|
|
13386
|
+
|
|
13387
|
+
headers = {
|
|
13388
|
+
"Accept": "application/json",
|
|
13389
|
+
}
|
|
13390
|
+
|
|
13391
|
+
res = self._api.do("GET", f"/api/2.0/lineage-tracking/external-metadata/{name}", headers=headers)
|
|
13392
|
+
return ExternalMetadata.from_dict(res)
|
|
13393
|
+
|
|
13394
|
+
def list_external_metadata(
|
|
13395
|
+
self, *, page_size: Optional[int] = None, page_token: Optional[str] = None
|
|
13396
|
+
) -> Iterator[ExternalMetadata]:
|
|
13397
|
+
"""Gets an array of external metadata objects in the metastore. If the caller is the metastore admin, all
|
|
13398
|
+
external metadata objects will be retrieved. Otherwise, only external metadata objects that the caller
|
|
13399
|
+
has **BROWSE** on will be retrieved. There is no guarantee of a specific ordering of the elements in
|
|
13400
|
+
the array.
|
|
13401
|
+
|
|
13402
|
+
:param page_size: int (optional)
|
|
13403
|
+
:param page_token: str (optional)
|
|
13404
|
+
|
|
13405
|
+
:returns: Iterator over :class:`ExternalMetadata`
|
|
13406
|
+
"""
|
|
13407
|
+
|
|
13408
|
+
query = {}
|
|
13409
|
+
if page_size is not None:
|
|
13410
|
+
query["page_size"] = page_size
|
|
13411
|
+
if page_token is not None:
|
|
13412
|
+
query["page_token"] = page_token
|
|
13413
|
+
headers = {
|
|
13414
|
+
"Accept": "application/json",
|
|
13415
|
+
}
|
|
13416
|
+
|
|
13417
|
+
while True:
|
|
13418
|
+
json = self._api.do("GET", "/api/2.0/lineage-tracking/external-metadata", query=query, headers=headers)
|
|
13419
|
+
if "external_metadata" in json:
|
|
13420
|
+
for v in json["external_metadata"]:
|
|
13421
|
+
yield ExternalMetadata.from_dict(v)
|
|
13422
|
+
if "next_page_token" not in json or not json["next_page_token"]:
|
|
13423
|
+
return
|
|
13424
|
+
query["page_token"] = json["next_page_token"]
|
|
13425
|
+
|
|
13426
|
+
def update_external_metadata(
|
|
13427
|
+
self, name: str, external_metadata: ExternalMetadata, update_mask: str
|
|
13428
|
+
) -> ExternalMetadata:
|
|
13429
|
+
"""Updates the external metadata object that matches the supplied name. The caller can only update either
|
|
13430
|
+
the owner or other metadata fields in one request. The caller must be a metastore admin, the owner of
|
|
13431
|
+
the external metadata object, or a user that has the **MODIFY** privilege. If the caller is updating
|
|
13432
|
+
the owner, they must also have the **MANAGE** privilege.
|
|
13433
|
+
|
|
13434
|
+
:param name: str
|
|
13435
|
+
Name of the external metadata object.
|
|
13436
|
+
:param external_metadata: :class:`ExternalMetadata`
|
|
13437
|
+
:param update_mask: str
|
|
13438
|
+
The field mask must be a single string, with multiple fields separated by commas (no spaces). The
|
|
13439
|
+
field path is relative to the resource object, using a dot (`.`) to navigate sub-fields (e.g.,
|
|
13440
|
+
`author.given_name`). Specification of elements in sequence or map fields is not allowed, as only
|
|
13441
|
+
the entire collection field can be specified. Field names must exactly match the resource field
|
|
13442
|
+
names.
|
|
13443
|
+
|
|
13444
|
+
A field mask of `*` indicates full replacement. It’s recommended to always explicitly list the
|
|
13445
|
+
fields being updated and avoid using `*` wildcards, as it can lead to unintended results if the API
|
|
13446
|
+
changes in the future.
|
|
13447
|
+
|
|
13448
|
+
:returns: :class:`ExternalMetadata`
|
|
13449
|
+
"""
|
|
13450
|
+
body = external_metadata.as_dict()
|
|
13451
|
+
query = {}
|
|
13452
|
+
if update_mask is not None:
|
|
13453
|
+
query["update_mask"] = update_mask
|
|
13454
|
+
headers = {
|
|
13455
|
+
"Accept": "application/json",
|
|
13456
|
+
"Content-Type": "application/json",
|
|
13457
|
+
}
|
|
13458
|
+
|
|
13459
|
+
res = self._api.do(
|
|
13460
|
+
"PATCH", f"/api/2.0/lineage-tracking/external-metadata/{name}", query=query, body=body, headers=headers
|
|
13461
|
+
)
|
|
13462
|
+
return ExternalMetadata.from_dict(res)
|
|
13463
|
+
|
|
13464
|
+
|
|
11968
13465
|
class FunctionsAPI:
|
|
11969
13466
|
"""Functions implement User-Defined Functions (UDFs) in Unity Catalog.
|
|
11970
13467
|
|
|
@@ -11976,9 +13473,7 @@ class FunctionsAPI:
|
|
|
11976
13473
|
self._api = api_client
|
|
11977
13474
|
|
|
11978
13475
|
def create(self, function_info: CreateFunction) -> FunctionInfo:
|
|
11979
|
-
"""
|
|
11980
|
-
|
|
11981
|
-
**WARNING: This API is experimental and will change in future versions**
|
|
13476
|
+
"""**WARNING: This API is experimental and will change in future versions**
|
|
11982
13477
|
|
|
11983
13478
|
Creates a new function
|
|
11984
13479
|
|
|
@@ -12003,9 +13498,7 @@ class FunctionsAPI:
|
|
|
12003
13498
|
return FunctionInfo.from_dict(res)
|
|
12004
13499
|
|
|
12005
13500
|
def delete(self, name: str, *, force: Optional[bool] = None):
|
|
12006
|
-
"""
|
|
12007
|
-
|
|
12008
|
-
Deletes the function that matches the supplied name. For the deletion to succeed, the user must
|
|
13501
|
+
"""Deletes the function that matches the supplied name. For the deletion to succeed, the user must
|
|
12009
13502
|
satisfy one of the following conditions: - Is the owner of the function's parent catalog - Is the
|
|
12010
13503
|
owner of the function's parent schema and have the **USE_CATALOG** privilege on its parent catalog -
|
|
12011
13504
|
Is the owner of the function itself and have both the **USE_CATALOG** privilege on its parent catalog
|
|
@@ -12030,9 +13523,7 @@ class FunctionsAPI:
|
|
|
12030
13523
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/functions/{name}", query=query, headers=headers)
|
|
12031
13524
|
|
|
12032
13525
|
def get(self, name: str, *, include_browse: Optional[bool] = None) -> FunctionInfo:
|
|
12033
|
-
"""
|
|
12034
|
-
|
|
12035
|
-
Gets a function from within a parent catalog and schema. For the fetch to succeed, the user must
|
|
13526
|
+
"""Gets a function from within a parent catalog and schema. For the fetch to succeed, the user must
|
|
12036
13527
|
satisfy one of the following requirements: - Is a metastore admin - Is an owner of the function's
|
|
12037
13528
|
parent catalog - Have the **USE_CATALOG** privilege on the function's parent catalog and be the owner
|
|
12038
13529
|
of the function - Have the **USE_CATALOG** privilege on the function's parent catalog, the
|
|
@@ -12068,9 +13559,7 @@ class FunctionsAPI:
|
|
|
12068
13559
|
max_results: Optional[int] = None,
|
|
12069
13560
|
page_token: Optional[str] = None,
|
|
12070
13561
|
) -> Iterator[FunctionInfo]:
|
|
12071
|
-
"""List functions.
|
|
12072
|
-
|
|
12073
|
-
List functions within the specified parent catalog and schema. If the user is a metastore admin, all
|
|
13562
|
+
"""List functions within the specified parent catalog and schema. If the user is a metastore admin, all
|
|
12074
13563
|
functions are returned in the output list. Otherwise, the user must have the **USE_CATALOG** privilege
|
|
12075
13564
|
on the catalog and the **USE_SCHEMA** privilege on the schema, and the output list contains only
|
|
12076
13565
|
functions for which either the user has the **EXECUTE** privilege or the user is the owner. There is
|
|
@@ -12119,9 +13608,7 @@ class FunctionsAPI:
|
|
|
12119
13608
|
query["page_token"] = json["next_page_token"]
|
|
12120
13609
|
|
|
12121
13610
|
def update(self, name: str, *, owner: Optional[str] = None) -> FunctionInfo:
|
|
12122
|
-
"""
|
|
12123
|
-
|
|
12124
|
-
Updates the function that matches the supplied name. Only the owner of the function can be updated. If
|
|
13611
|
+
"""Updates the function that matches the supplied name. Only the owner of the function can be updated. If
|
|
12125
13612
|
the user is not a metastore admin, the user must be a member of the group that is the new function
|
|
12126
13613
|
owner. - Is a metastore admin - Is the owner of the function's parent catalog - Is the owner of the
|
|
12127
13614
|
function's parent schema and has the **USE_CATALOG** privilege on its parent catalog - Is the owner of
|
|
@@ -12171,9 +13658,7 @@ class GrantsAPI:
|
|
|
12171
13658
|
page_token: Optional[str] = None,
|
|
12172
13659
|
principal: Optional[str] = None,
|
|
12173
13660
|
) -> GetPermissionsResponse:
|
|
12174
|
-
"""
|
|
12175
|
-
|
|
12176
|
-
Gets the permissions for a securable. Does not include inherited permissions.
|
|
13661
|
+
"""Gets the permissions for a securable. Does not include inherited permissions.
|
|
12177
13662
|
|
|
12178
13663
|
:param securable_type: str
|
|
12179
13664
|
Type of securable.
|
|
@@ -12222,9 +13707,7 @@ class GrantsAPI:
|
|
|
12222
13707
|
page_token: Optional[str] = None,
|
|
12223
13708
|
principal: Optional[str] = None,
|
|
12224
13709
|
) -> EffectivePermissionsList:
|
|
12225
|
-
"""
|
|
12226
|
-
|
|
12227
|
-
Gets the effective permissions for a securable. Includes inherited permissions from any parent
|
|
13710
|
+
"""Gets the effective permissions for a securable. Includes inherited permissions from any parent
|
|
12228
13711
|
securables.
|
|
12229
13712
|
|
|
12230
13713
|
:param securable_type: str
|
|
@@ -12273,9 +13756,7 @@ class GrantsAPI:
|
|
|
12273
13756
|
def update(
|
|
12274
13757
|
self, securable_type: str, full_name: str, *, changes: Optional[List[PermissionsChange]] = None
|
|
12275
13758
|
) -> UpdatePermissionsResponse:
|
|
12276
|
-
"""
|
|
12277
|
-
|
|
12278
|
-
Updates the permissions for a securable.
|
|
13759
|
+
"""Updates the permissions for a securable.
|
|
12279
13760
|
|
|
12280
13761
|
:param securable_type: str
|
|
12281
13762
|
Type of securable.
|
|
@@ -12317,9 +13798,7 @@ class MetastoresAPI:
|
|
|
12317
13798
|
self._api = api_client
|
|
12318
13799
|
|
|
12319
13800
|
def assign(self, workspace_id: int, metastore_id: str, default_catalog_name: str):
|
|
12320
|
-
"""
|
|
12321
|
-
|
|
12322
|
-
Creates a new metastore assignment. If an assignment for the same __workspace_id__ exists, it will be
|
|
13801
|
+
"""Creates a new metastore assignment. If an assignment for the same __workspace_id__ exists, it will be
|
|
12323
13802
|
overwritten by the new __metastore_id__ and __default_catalog_name__. The caller must be an account
|
|
12324
13803
|
admin.
|
|
12325
13804
|
|
|
@@ -12346,9 +13825,7 @@ class MetastoresAPI:
|
|
|
12346
13825
|
self._api.do("PUT", f"/api/2.1/unity-catalog/workspaces/{workspace_id}/metastore", body=body, headers=headers)
|
|
12347
13826
|
|
|
12348
13827
|
def create(self, name: str, *, region: Optional[str] = None, storage_root: Optional[str] = None) -> MetastoreInfo:
|
|
12349
|
-
"""
|
|
12350
|
-
|
|
12351
|
-
Creates a new metastore based on a provided name and optional storage root path. By default (if the
|
|
13828
|
+
"""Creates a new metastore based on a provided name and optional storage root path. By default (if the
|
|
12352
13829
|
__owner__ field is not set), the owner of the new metastore is the user calling the
|
|
12353
13830
|
__createMetastore__ API. If the __owner__ field is set to the empty string (**""**), the ownership is
|
|
12354
13831
|
assigned to the System User instead.
|
|
@@ -12378,9 +13855,8 @@ class MetastoresAPI:
|
|
|
12378
13855
|
return MetastoreInfo.from_dict(res)
|
|
12379
13856
|
|
|
12380
13857
|
def current(self) -> MetastoreAssignment:
|
|
12381
|
-
"""
|
|
13858
|
+
"""Gets the metastore assignment for the workspace being accessed.
|
|
12382
13859
|
|
|
12383
|
-
Gets the metastore assignment for the workspace being accessed.
|
|
12384
13860
|
|
|
12385
13861
|
:returns: :class:`MetastoreAssignment`
|
|
12386
13862
|
"""
|
|
@@ -12393,9 +13869,7 @@ class MetastoresAPI:
|
|
|
12393
13869
|
return MetastoreAssignment.from_dict(res)
|
|
12394
13870
|
|
|
12395
13871
|
def delete(self, id: str, *, force: Optional[bool] = None):
|
|
12396
|
-
"""
|
|
12397
|
-
|
|
12398
|
-
Deletes a metastore. The caller must be a metastore admin.
|
|
13872
|
+
"""Deletes a metastore. The caller must be a metastore admin.
|
|
12399
13873
|
|
|
12400
13874
|
:param id: str
|
|
12401
13875
|
Unique ID of the metastore.
|
|
@@ -12415,9 +13889,7 @@ class MetastoresAPI:
|
|
|
12415
13889
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/metastores/{id}", query=query, headers=headers)
|
|
12416
13890
|
|
|
12417
13891
|
def get(self, id: str) -> MetastoreInfo:
|
|
12418
|
-
"""
|
|
12419
|
-
|
|
12420
|
-
Gets a metastore that matches the supplied ID. The caller must be a metastore admin to retrieve this
|
|
13892
|
+
"""Gets a metastore that matches the supplied ID. The caller must be a metastore admin to retrieve this
|
|
12421
13893
|
info.
|
|
12422
13894
|
|
|
12423
13895
|
:param id: str
|
|
@@ -12434,9 +13906,7 @@ class MetastoresAPI:
|
|
|
12434
13906
|
return MetastoreInfo.from_dict(res)
|
|
12435
13907
|
|
|
12436
13908
|
def list(self, *, max_results: Optional[int] = None, page_token: Optional[str] = None) -> Iterator[MetastoreInfo]:
|
|
12437
|
-
"""
|
|
12438
|
-
|
|
12439
|
-
Gets an array of the available metastores (as __MetastoreInfo__ objects). The caller must be an admin
|
|
13909
|
+
"""Gets an array of the available metastores (as __MetastoreInfo__ objects). The caller must be an admin
|
|
12440
13910
|
to retrieve this info. There is no guarantee of a specific ordering of the elements in the array.
|
|
12441
13911
|
|
|
12442
13912
|
:param max_results: int (optional)
|
|
@@ -12472,11 +13942,10 @@ class MetastoresAPI:
|
|
|
12472
13942
|
query["page_token"] = json["next_page_token"]
|
|
12473
13943
|
|
|
12474
13944
|
def summary(self) -> GetMetastoreSummaryResponse:
|
|
12475
|
-
"""
|
|
12476
|
-
|
|
12477
|
-
Gets information about a metastore. This summary includes the storage credential, the cloud vendor,
|
|
13945
|
+
"""Gets information about a metastore. This summary includes the storage credential, the cloud vendor,
|
|
12478
13946
|
the cloud region, and the global metastore ID.
|
|
12479
13947
|
|
|
13948
|
+
|
|
12480
13949
|
:returns: :class:`GetMetastoreSummaryResponse`
|
|
12481
13950
|
"""
|
|
12482
13951
|
|
|
@@ -12488,9 +13957,7 @@ class MetastoresAPI:
|
|
|
12488
13957
|
return GetMetastoreSummaryResponse.from_dict(res)
|
|
12489
13958
|
|
|
12490
13959
|
def unassign(self, workspace_id: int, metastore_id: str):
|
|
12491
|
-
"""
|
|
12492
|
-
|
|
12493
|
-
Deletes a metastore assignment. The caller must be an account administrator.
|
|
13960
|
+
"""Deletes a metastore assignment. The caller must be an account administrator.
|
|
12494
13961
|
|
|
12495
13962
|
:param workspace_id: int
|
|
12496
13963
|
A workspace ID.
|
|
@@ -12523,9 +13990,7 @@ class MetastoresAPI:
|
|
|
12523
13990
|
privilege_model_version: Optional[str] = None,
|
|
12524
13991
|
storage_root_credential_id: Optional[str] = None,
|
|
12525
13992
|
) -> MetastoreInfo:
|
|
12526
|
-
"""
|
|
12527
|
-
|
|
12528
|
-
Updates information for a specific metastore. The caller must be a metastore admin. If the __owner__
|
|
13993
|
+
"""Updates information for a specific metastore. The caller must be a metastore admin. If the __owner__
|
|
12529
13994
|
field is set to the empty string (**""**), the ownership is updated to the System User.
|
|
12530
13995
|
|
|
12531
13996
|
:param id: str
|
|
@@ -12576,9 +14041,7 @@ class MetastoresAPI:
|
|
|
12576
14041
|
def update_assignment(
|
|
12577
14042
|
self, workspace_id: int, *, default_catalog_name: Optional[str] = None, metastore_id: Optional[str] = None
|
|
12578
14043
|
):
|
|
12579
|
-
"""
|
|
12580
|
-
|
|
12581
|
-
Updates a metastore assignment. This operation can be used to update __metastore_id__ or
|
|
14044
|
+
"""Updates a metastore assignment. This operation can be used to update __metastore_id__ or
|
|
12582
14045
|
__default_catalog_name__ for a specified Workspace, if the Workspace is already assigned a metastore.
|
|
12583
14046
|
The caller must be an account admin to update __metastore_id__; otherwise, the caller can be a
|
|
12584
14047
|
Workspace admin.
|
|
@@ -12618,9 +14081,7 @@ class ModelVersionsAPI:
|
|
|
12618
14081
|
self._api = api_client
|
|
12619
14082
|
|
|
12620
14083
|
def delete(self, full_name: str, version: int):
|
|
12621
|
-
"""
|
|
12622
|
-
|
|
12623
|
-
Deletes a model version from the specified registered model. Any aliases assigned to the model version
|
|
14084
|
+
"""Deletes a model version from the specified registered model. Any aliases assigned to the model version
|
|
12624
14085
|
will also be deleted.
|
|
12625
14086
|
|
|
12626
14087
|
The caller must be a metastore admin or an owner of the parent registered model. For the latter case,
|
|
@@ -12647,9 +14108,7 @@ class ModelVersionsAPI:
|
|
|
12647
14108
|
include_aliases: Optional[bool] = None,
|
|
12648
14109
|
include_browse: Optional[bool] = None,
|
|
12649
14110
|
) -> ModelVersionInfo:
|
|
12650
|
-
"""Get a
|
|
12651
|
-
|
|
12652
|
-
Get a model version.
|
|
14111
|
+
"""Get a model version.
|
|
12653
14112
|
|
|
12654
14113
|
The caller must be a metastore admin or an owner of (or have the **EXECUTE** privilege on) the parent
|
|
12655
14114
|
registered model. For the latter case, the caller must also be the owner or have the **USE_CATALOG**
|
|
@@ -12683,9 +14142,7 @@ class ModelVersionsAPI:
|
|
|
12683
14142
|
return ModelVersionInfo.from_dict(res)
|
|
12684
14143
|
|
|
12685
14144
|
def get_by_alias(self, full_name: str, alias: str, *, include_aliases: Optional[bool] = None) -> ModelVersionInfo:
|
|
12686
|
-
"""Get
|
|
12687
|
-
|
|
12688
|
-
Get a model version by alias.
|
|
14145
|
+
"""Get a model version by alias.
|
|
12689
14146
|
|
|
12690
14147
|
The caller must be a metastore admin or an owner of (or have the **EXECUTE** privilege on) the
|
|
12691
14148
|
registered model. For the latter case, the caller must also be the owner or have the **USE_CATALOG**
|
|
@@ -12721,9 +14178,7 @@ class ModelVersionsAPI:
|
|
|
12721
14178
|
max_results: Optional[int] = None,
|
|
12722
14179
|
page_token: Optional[str] = None,
|
|
12723
14180
|
) -> Iterator[ModelVersionInfo]:
|
|
12724
|
-
"""List
|
|
12725
|
-
|
|
12726
|
-
List model versions. You can list model versions under a particular schema, or list all model versions
|
|
14181
|
+
"""List model versions. You can list model versions under a particular schema, or list all model versions
|
|
12727
14182
|
in the current metastore.
|
|
12728
14183
|
|
|
12729
14184
|
The returned models are filtered based on the privileges of the calling user. For example, the
|
|
@@ -12775,9 +14230,7 @@ class ModelVersionsAPI:
|
|
|
12775
14230
|
query["page_token"] = json["next_page_token"]
|
|
12776
14231
|
|
|
12777
14232
|
def update(self, full_name: str, version: int, *, comment: Optional[str] = None) -> ModelVersionInfo:
|
|
12778
|
-
"""
|
|
12779
|
-
|
|
12780
|
-
Updates the specified model version.
|
|
14233
|
+
"""Updates the specified model version.
|
|
12781
14234
|
|
|
12782
14235
|
The caller must be a metastore admin or an owner of the parent registered model. For the latter case,
|
|
12783
14236
|
the caller must also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the
|
|
@@ -12844,12 +14297,10 @@ class OnlineTablesAPI:
|
|
|
12844
14297
|
raise TimeoutError(f"timed out after {timeout}: {status_message}")
|
|
12845
14298
|
|
|
12846
14299
|
def create(self, table: OnlineTable) -> Wait[OnlineTable]:
|
|
12847
|
-
"""Create
|
|
12848
|
-
|
|
12849
|
-
Create a new Online Table.
|
|
14300
|
+
"""Create a new Online Table.
|
|
12850
14301
|
|
|
12851
14302
|
:param table: :class:`OnlineTable`
|
|
12852
|
-
|
|
14303
|
+
Specification of the online table to be created.
|
|
12853
14304
|
|
|
12854
14305
|
:returns:
|
|
12855
14306
|
Long-running operation waiter for :class:`OnlineTable`.
|
|
@@ -12870,9 +14321,7 @@ class OnlineTablesAPI:
|
|
|
12870
14321
|
return self.create(table=table).result(timeout=timeout)
|
|
12871
14322
|
|
|
12872
14323
|
def delete(self, name: str):
|
|
12873
|
-
"""Delete an
|
|
12874
|
-
|
|
12875
|
-
Delete an online table. Warning: This will delete all the data in the online table. If the source
|
|
14324
|
+
"""Delete an online table. Warning: This will delete all the data in the online table. If the source
|
|
12876
14325
|
Delta table was deleted or modified since this Online Table was created, this will lose the data
|
|
12877
14326
|
forever!
|
|
12878
14327
|
|
|
@@ -12889,9 +14338,7 @@ class OnlineTablesAPI:
|
|
|
12889
14338
|
self._api.do("DELETE", f"/api/2.0/online-tables/{name}", headers=headers)
|
|
12890
14339
|
|
|
12891
14340
|
def get(self, name: str) -> OnlineTable:
|
|
12892
|
-
"""Get an
|
|
12893
|
-
|
|
12894
|
-
Get information about an existing online table and its status.
|
|
14341
|
+
"""Get information about an existing online table and its status.
|
|
12895
14342
|
|
|
12896
14343
|
:param name: str
|
|
12897
14344
|
Full three-part (catalog, schema, table) name of the table.
|
|
@@ -12919,9 +14366,7 @@ class QualityMonitorsAPI:
|
|
|
12919
14366
|
self._api = api_client
|
|
12920
14367
|
|
|
12921
14368
|
def cancel_refresh(self, table_name: str, refresh_id: str):
|
|
12922
|
-
"""Cancel refresh.
|
|
12923
|
-
|
|
12924
|
-
Cancel an active monitor refresh for the given refresh ID.
|
|
14369
|
+
"""Cancel an active monitor refresh for the given refresh ID.
|
|
12925
14370
|
|
|
12926
14371
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
12927
14372
|
table's parent catalog and be an owner of the table's parent schema 3. have the following permissions:
|
|
@@ -12962,9 +14407,7 @@ class QualityMonitorsAPI:
|
|
|
12962
14407
|
time_series: Optional[MonitorTimeSeries] = None,
|
|
12963
14408
|
warehouse_id: Optional[str] = None,
|
|
12964
14409
|
) -> MonitorInfo:
|
|
12965
|
-
"""
|
|
12966
|
-
|
|
12967
|
-
Creates a new monitor for the specified table.
|
|
14410
|
+
"""Creates a new monitor for the specified table.
|
|
12968
14411
|
|
|
12969
14412
|
The caller must either: 1. be an owner of the table's parent catalog, have **USE_SCHEMA** on the
|
|
12970
14413
|
table's parent schema, and have **SELECT** access on the table 2. have **USE_CATALOG** on the table's
|
|
@@ -13046,9 +14489,7 @@ class QualityMonitorsAPI:
|
|
|
13046
14489
|
return MonitorInfo.from_dict(res)
|
|
13047
14490
|
|
|
13048
14491
|
def delete(self, table_name: str):
|
|
13049
|
-
"""
|
|
13050
|
-
|
|
13051
|
-
Deletes a monitor for the specified table.
|
|
14492
|
+
"""Deletes a monitor for the specified table.
|
|
13052
14493
|
|
|
13053
14494
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
13054
14495
|
table's parent catalog and be an owner of the table's parent schema 3. have the following permissions:
|
|
@@ -13071,9 +14512,7 @@ class QualityMonitorsAPI:
|
|
|
13071
14512
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/tables/{table_name}/monitor", headers=headers)
|
|
13072
14513
|
|
|
13073
14514
|
def get(self, table_name: str) -> MonitorInfo:
|
|
13074
|
-
"""
|
|
13075
|
-
|
|
13076
|
-
Gets a monitor for the specified table.
|
|
14515
|
+
"""Gets a monitor for the specified table.
|
|
13077
14516
|
|
|
13078
14517
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
13079
14518
|
table's parent catalog and be an owner of the table's parent schema. 3. have the following
|
|
@@ -13098,9 +14537,7 @@ class QualityMonitorsAPI:
|
|
|
13098
14537
|
return MonitorInfo.from_dict(res)
|
|
13099
14538
|
|
|
13100
14539
|
def get_refresh(self, table_name: str, refresh_id: str) -> MonitorRefreshInfo:
|
|
13101
|
-
"""
|
|
13102
|
-
|
|
13103
|
-
Gets info about a specific monitor refresh using the given refresh ID.
|
|
14540
|
+
"""Gets info about a specific monitor refresh using the given refresh ID.
|
|
13104
14541
|
|
|
13105
14542
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
13106
14543
|
table's parent catalog and be an owner of the table's parent schema 3. have the following permissions:
|
|
@@ -13127,9 +14564,7 @@ class QualityMonitorsAPI:
|
|
|
13127
14564
|
return MonitorRefreshInfo.from_dict(res)
|
|
13128
14565
|
|
|
13129
14566
|
def list_refreshes(self, table_name: str) -> MonitorRefreshListResponse:
|
|
13130
|
-
"""
|
|
13131
|
-
|
|
13132
|
-
Gets an array containing the history of the most recent refreshes (up to 25) for this table.
|
|
14567
|
+
"""Gets an array containing the history of the most recent refreshes (up to 25) for this table.
|
|
13133
14568
|
|
|
13134
14569
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
13135
14570
|
table's parent catalog and be an owner of the table's parent schema 3. have the following permissions:
|
|
@@ -13154,9 +14589,7 @@ class QualityMonitorsAPI:
|
|
|
13154
14589
|
def regenerate_dashboard(
|
|
13155
14590
|
self, table_name: str, *, warehouse_id: Optional[str] = None
|
|
13156
14591
|
) -> RegenerateDashboardResponse:
|
|
13157
|
-
"""
|
|
13158
|
-
|
|
13159
|
-
Regenerates the monitoring dashboard for the specified table.
|
|
14592
|
+
"""Regenerates the monitoring dashboard for the specified table.
|
|
13160
14593
|
|
|
13161
14594
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
13162
14595
|
table's parent catalog and be an owner of the table's parent schema 3. have the following permissions:
|
|
@@ -13188,9 +14621,7 @@ class QualityMonitorsAPI:
|
|
|
13188
14621
|
return RegenerateDashboardResponse.from_dict(res)
|
|
13189
14622
|
|
|
13190
14623
|
def run_refresh(self, table_name: str) -> MonitorRefreshInfo:
|
|
13191
|
-
"""
|
|
13192
|
-
|
|
13193
|
-
Queues a metric refresh on the monitor for the specified table. The refresh will execute in the
|
|
14624
|
+
"""Queues a metric refresh on the monitor for the specified table. The refresh will execute in the
|
|
13194
14625
|
background.
|
|
13195
14626
|
|
|
13196
14627
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
@@ -13229,9 +14660,7 @@ class QualityMonitorsAPI:
|
|
|
13229
14660
|
snapshot: Optional[MonitorSnapshot] = None,
|
|
13230
14661
|
time_series: Optional[MonitorTimeSeries] = None,
|
|
13231
14662
|
) -> MonitorInfo:
|
|
13232
|
-
"""
|
|
13233
|
-
|
|
13234
|
-
Updates a monitor for the specified table.
|
|
14663
|
+
"""Updates a monitor for the specified table.
|
|
13235
14664
|
|
|
13236
14665
|
The caller must either: 1. be an owner of the table's parent catalog 2. have **USE_CATALOG** on the
|
|
13237
14666
|
table's parent catalog and be an owner of the table's parent schema 3. have the following permissions:
|
|
@@ -13345,9 +14774,7 @@ class RegisteredModelsAPI:
|
|
|
13345
14774
|
comment: Optional[str] = None,
|
|
13346
14775
|
storage_location: Optional[str] = None,
|
|
13347
14776
|
) -> RegisteredModelInfo:
|
|
13348
|
-
"""
|
|
13349
|
-
|
|
13350
|
-
Creates a new registered model in Unity Catalog.
|
|
14777
|
+
"""Creates a new registered model in Unity Catalog.
|
|
13351
14778
|
|
|
13352
14779
|
File storage for model versions in the registered model will be located in the default location which
|
|
13353
14780
|
is specified by the parent schema, or the parent catalog, or the Metastore.
|
|
@@ -13390,9 +14817,7 @@ class RegisteredModelsAPI:
|
|
|
13390
14817
|
return RegisteredModelInfo.from_dict(res)
|
|
13391
14818
|
|
|
13392
14819
|
def delete(self, full_name: str):
|
|
13393
|
-
"""
|
|
13394
|
-
|
|
13395
|
-
Deletes a registered model and all its model versions from the specified parent catalog and schema.
|
|
14820
|
+
"""Deletes a registered model and all its model versions from the specified parent catalog and schema.
|
|
13396
14821
|
|
|
13397
14822
|
The caller must be a metastore admin or an owner of the registered model. For the latter case, the
|
|
13398
14823
|
caller must also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the
|
|
@@ -13409,9 +14834,7 @@ class RegisteredModelsAPI:
|
|
|
13409
14834
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/models/{full_name}", headers=headers)
|
|
13410
14835
|
|
|
13411
14836
|
def delete_alias(self, full_name: str, alias: str):
|
|
13412
|
-
"""
|
|
13413
|
-
|
|
13414
|
-
Deletes a registered model alias.
|
|
14837
|
+
"""Deletes a registered model alias.
|
|
13415
14838
|
|
|
13416
14839
|
The caller must be a metastore admin or an owner of the registered model. For the latter case, the
|
|
13417
14840
|
caller must also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the
|
|
@@ -13432,9 +14855,7 @@ class RegisteredModelsAPI:
|
|
|
13432
14855
|
def get(
|
|
13433
14856
|
self, full_name: str, *, include_aliases: Optional[bool] = None, include_browse: Optional[bool] = None
|
|
13434
14857
|
) -> RegisteredModelInfo:
|
|
13435
|
-
"""Get a
|
|
13436
|
-
|
|
13437
|
-
Get a registered model.
|
|
14858
|
+
"""Get a registered model.
|
|
13438
14859
|
|
|
13439
14860
|
The caller must be a metastore admin or an owner of (or have the **EXECUTE** privilege on) the
|
|
13440
14861
|
registered model. For the latter case, the caller must also be the owner or have the **USE_CATALOG**
|
|
@@ -13472,9 +14893,7 @@ class RegisteredModelsAPI:
|
|
|
13472
14893
|
page_token: Optional[str] = None,
|
|
13473
14894
|
schema_name: Optional[str] = None,
|
|
13474
14895
|
) -> Iterator[RegisteredModelInfo]:
|
|
13475
|
-
"""List
|
|
13476
|
-
|
|
13477
|
-
List registered models. You can list registered models under a particular schema, or list all
|
|
14896
|
+
"""List registered models. You can list registered models under a particular schema, or list all
|
|
13478
14897
|
registered models in the current metastore.
|
|
13479
14898
|
|
|
13480
14899
|
The returned models are filtered based on the privileges of the calling user. For example, the
|
|
@@ -13539,9 +14958,7 @@ class RegisteredModelsAPI:
|
|
|
13539
14958
|
query["page_token"] = json["next_page_token"]
|
|
13540
14959
|
|
|
13541
14960
|
def set_alias(self, full_name: str, alias: str, version_num: int) -> RegisteredModelAlias:
|
|
13542
|
-
"""Set
|
|
13543
|
-
|
|
13544
|
-
Set an alias on the specified registered model.
|
|
14961
|
+
"""Set an alias on the specified registered model.
|
|
13545
14962
|
|
|
13546
14963
|
The caller must be a metastore admin or an owner of the registered model. For the latter case, the
|
|
13547
14964
|
caller must also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the
|
|
@@ -13577,9 +14994,7 @@ class RegisteredModelsAPI:
|
|
|
13577
14994
|
new_name: Optional[str] = None,
|
|
13578
14995
|
owner: Optional[str] = None,
|
|
13579
14996
|
) -> RegisteredModelInfo:
|
|
13580
|
-
"""
|
|
13581
|
-
|
|
13582
|
-
Updates the specified registered model.
|
|
14997
|
+
"""Updates the specified registered model.
|
|
13583
14998
|
|
|
13584
14999
|
The caller must be a metastore admin or an owner of the registered model. For the latter case, the
|
|
13585
15000
|
caller must also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the
|
|
@@ -13627,9 +15042,7 @@ class ResourceQuotasAPI:
|
|
|
13627
15042
|
self._api = api_client
|
|
13628
15043
|
|
|
13629
15044
|
def get_quota(self, parent_securable_type: str, parent_full_name: str, quota_name: str) -> GetQuotaResponse:
|
|
13630
|
-
"""
|
|
13631
|
-
|
|
13632
|
-
The GetQuota API returns usage information for a single resource quota, defined as a child-parent
|
|
15045
|
+
"""The GetQuota API returns usage information for a single resource quota, defined as a child-parent
|
|
13633
15046
|
pair. This API also refreshes the quota count if it is out of date. Refreshes are triggered
|
|
13634
15047
|
asynchronously. The updated count might not be returned in the first call.
|
|
13635
15048
|
|
|
@@ -13657,9 +15070,7 @@ class ResourceQuotasAPI:
|
|
|
13657
15070
|
def list_quotas(
|
|
13658
15071
|
self, *, max_results: Optional[int] = None, page_token: Optional[str] = None
|
|
13659
15072
|
) -> Iterator[QuotaInfo]:
|
|
13660
|
-
"""
|
|
13661
|
-
|
|
13662
|
-
ListQuotas returns all quota values under the metastore. There are no SLAs on the freshness of the
|
|
15073
|
+
"""ListQuotas returns all quota values under the metastore. There are no SLAs on the freshness of the
|
|
13663
15074
|
counts returned. This API does not trigger a refresh of quota counts.
|
|
13664
15075
|
|
|
13665
15076
|
:param max_results: int (optional)
|
|
@@ -13709,9 +15120,7 @@ class SchemasAPI:
|
|
|
13709
15120
|
properties: Optional[Dict[str, str]] = None,
|
|
13710
15121
|
storage_root: Optional[str] = None,
|
|
13711
15122
|
) -> SchemaInfo:
|
|
13712
|
-
"""
|
|
13713
|
-
|
|
13714
|
-
Creates a new schema for catalog in the Metatastore. The caller must be a metastore admin, or have the
|
|
15123
|
+
"""Creates a new schema for catalog in the Metatastore. The caller must be a metastore admin, or have the
|
|
13715
15124
|
**CREATE_SCHEMA** privilege in the parent catalog.
|
|
13716
15125
|
|
|
13717
15126
|
:param name: str
|
|
@@ -13747,9 +15156,7 @@ class SchemasAPI:
|
|
|
13747
15156
|
return SchemaInfo.from_dict(res)
|
|
13748
15157
|
|
|
13749
15158
|
def delete(self, full_name: str, *, force: Optional[bool] = None):
|
|
13750
|
-
"""
|
|
13751
|
-
|
|
13752
|
-
Deletes the specified schema from the parent catalog. The caller must be the owner of the schema or an
|
|
15159
|
+
"""Deletes the specified schema from the parent catalog. The caller must be the owner of the schema or an
|
|
13753
15160
|
owner of the parent catalog.
|
|
13754
15161
|
|
|
13755
15162
|
:param full_name: str
|
|
@@ -13770,9 +15177,7 @@ class SchemasAPI:
|
|
|
13770
15177
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/schemas/{full_name}", query=query, headers=headers)
|
|
13771
15178
|
|
|
13772
15179
|
def get(self, full_name: str, *, include_browse: Optional[bool] = None) -> SchemaInfo:
|
|
13773
|
-
"""
|
|
13774
|
-
|
|
13775
|
-
Gets the specified schema within the metastore. The caller must be a metastore admin, the owner of the
|
|
15180
|
+
"""Gets the specified schema within the metastore. The caller must be a metastore admin, the owner of the
|
|
13776
15181
|
schema, or a user that has the **USE_SCHEMA** privilege on the schema.
|
|
13777
15182
|
|
|
13778
15183
|
:param full_name: str
|
|
@@ -13802,9 +15207,7 @@ class SchemasAPI:
|
|
|
13802
15207
|
max_results: Optional[int] = None,
|
|
13803
15208
|
page_token: Optional[str] = None,
|
|
13804
15209
|
) -> Iterator[SchemaInfo]:
|
|
13805
|
-
"""
|
|
13806
|
-
|
|
13807
|
-
Gets an array of schemas for a catalog in the metastore. If the caller is the metastore admin or the
|
|
15210
|
+
"""Gets an array of schemas for a catalog in the metastore. If the caller is the metastore admin or the
|
|
13808
15211
|
owner of the parent catalog, all schemas for the catalog will be retrieved. Otherwise, only schemas
|
|
13809
15212
|
owned by the caller (or for which the caller has the **USE_SCHEMA** privilege) will be retrieved.
|
|
13810
15213
|
There is no guarantee of a specific ordering of the elements in the array.
|
|
@@ -13857,9 +15260,7 @@ class SchemasAPI:
|
|
|
13857
15260
|
owner: Optional[str] = None,
|
|
13858
15261
|
properties: Optional[Dict[str, str]] = None,
|
|
13859
15262
|
) -> SchemaInfo:
|
|
13860
|
-
"""
|
|
13861
|
-
|
|
13862
|
-
Updates a schema for a catalog. The caller must be the owner of the schema or a metastore admin. If
|
|
15263
|
+
"""Updates a schema for a catalog. The caller must be the owner of the schema or a metastore admin. If
|
|
13863
15264
|
the caller is a metastore admin, only the __owner__ field can be changed in the update. If the
|
|
13864
15265
|
__name__ field must be updated, the caller must be a metastore admin or have the **CREATE_SCHEMA**
|
|
13865
15266
|
privilege on the parent catalog.
|
|
@@ -13927,12 +15328,14 @@ class StorageCredentialsAPI:
|
|
|
13927
15328
|
read_only: Optional[bool] = None,
|
|
13928
15329
|
skip_validation: Optional[bool] = None,
|
|
13929
15330
|
) -> StorageCredentialInfo:
|
|
13930
|
-
"""
|
|
15331
|
+
"""Creates a new storage credential.
|
|
13931
15332
|
|
|
13932
|
-
|
|
15333
|
+
The caller must be a metastore admin or have the **CREATE_STORAGE_CREDENTIAL** privilege on the
|
|
15334
|
+
metastore.
|
|
13933
15335
|
|
|
13934
15336
|
:param name: str
|
|
13935
|
-
The credential name. The name must be unique within the
|
|
15337
|
+
The credential name. The name must be unique among storage and service credentials within the
|
|
15338
|
+
metastore.
|
|
13936
15339
|
:param aws_iam_role: :class:`AwsIamRoleRequest` (optional)
|
|
13937
15340
|
The AWS IAM role configuration.
|
|
13938
15341
|
:param azure_managed_identity: :class:`AzureManagedIdentityRequest` (optional)
|
|
@@ -13946,7 +15349,8 @@ class StorageCredentialsAPI:
|
|
|
13946
15349
|
:param databricks_gcp_service_account: :class:`DatabricksGcpServiceAccountRequest` (optional)
|
|
13947
15350
|
The Databricks managed GCP service account configuration.
|
|
13948
15351
|
:param read_only: bool (optional)
|
|
13949
|
-
Whether the
|
|
15352
|
+
Whether the credential is usable only for read operations. Only applicable when purpose is
|
|
15353
|
+
**STORAGE**.
|
|
13950
15354
|
:param skip_validation: bool (optional)
|
|
13951
15355
|
Supplying true to this argument skips validation of the created credential.
|
|
13952
15356
|
|
|
@@ -13980,15 +15384,14 @@ class StorageCredentialsAPI:
|
|
|
13980
15384
|
return StorageCredentialInfo.from_dict(res)
|
|
13981
15385
|
|
|
13982
15386
|
def delete(self, name: str, *, force: Optional[bool] = None):
|
|
13983
|
-
"""
|
|
13984
|
-
|
|
13985
|
-
Deletes a storage credential from the metastore. The caller must be an owner of the storage
|
|
15387
|
+
"""Deletes a storage credential from the metastore. The caller must be an owner of the storage
|
|
13986
15388
|
credential.
|
|
13987
15389
|
|
|
13988
15390
|
:param name: str
|
|
13989
15391
|
Name of the storage credential.
|
|
13990
15392
|
:param force: bool (optional)
|
|
13991
|
-
Force
|
|
15393
|
+
Force an update even if there are dependent external locations or external tables (when purpose is
|
|
15394
|
+
**STORAGE**) or dependent services (when purpose is **SERVICE**).
|
|
13992
15395
|
|
|
13993
15396
|
|
|
13994
15397
|
"""
|
|
@@ -14003,9 +15406,7 @@ class StorageCredentialsAPI:
|
|
|
14003
15406
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/storage-credentials/{name}", query=query, headers=headers)
|
|
14004
15407
|
|
|
14005
15408
|
def get(self, name: str) -> StorageCredentialInfo:
|
|
14006
|
-
"""
|
|
14007
|
-
|
|
14008
|
-
Gets a storage credential from the metastore. The caller must be a metastore admin, the owner of the
|
|
15409
|
+
"""Gets a storage credential from the metastore. The caller must be a metastore admin, the owner of the
|
|
14009
15410
|
storage credential, or have some permission on the storage credential.
|
|
14010
15411
|
|
|
14011
15412
|
:param name: str
|
|
@@ -14024,9 +15425,7 @@ class StorageCredentialsAPI:
|
|
|
14024
15425
|
def list(
|
|
14025
15426
|
self, *, max_results: Optional[int] = None, page_token: Optional[str] = None
|
|
14026
15427
|
) -> Iterator[StorageCredentialInfo]:
|
|
14027
|
-
"""
|
|
14028
|
-
|
|
14029
|
-
Gets an array of storage credentials (as __StorageCredentialInfo__ objects). The array is limited to
|
|
15428
|
+
"""Gets an array of storage credentials (as __StorageCredentialInfo__ objects). The array is limited to
|
|
14030
15429
|
only those storage credentials the caller has permission to access. If the caller is a metastore
|
|
14031
15430
|
admin, retrieval of credentials is unrestricted. There is no guarantee of a specific ordering of the
|
|
14032
15431
|
elements in the array.
|
|
@@ -14052,8 +15451,6 @@ class StorageCredentialsAPI:
|
|
|
14052
15451
|
"Accept": "application/json",
|
|
14053
15452
|
}
|
|
14054
15453
|
|
|
14055
|
-
if "max_results" not in query:
|
|
14056
|
-
query["max_results"] = 0
|
|
14057
15454
|
while True:
|
|
14058
15455
|
json = self._api.do("GET", "/api/2.1/unity-catalog/storage-credentials", query=query, headers=headers)
|
|
14059
15456
|
if "storage_credentials" in json:
|
|
@@ -14080,9 +15477,10 @@ class StorageCredentialsAPI:
|
|
|
14080
15477
|
read_only: Optional[bool] = None,
|
|
14081
15478
|
skip_validation: Optional[bool] = None,
|
|
14082
15479
|
) -> StorageCredentialInfo:
|
|
14083
|
-
"""
|
|
15480
|
+
"""Updates a storage credential on the metastore.
|
|
14084
15481
|
|
|
14085
|
-
|
|
15482
|
+
The caller must be the owner of the storage credential or a metastore admin. If the caller is a
|
|
15483
|
+
metastore admin, only the **owner** field can be changed.
|
|
14086
15484
|
|
|
14087
15485
|
:param name: str
|
|
14088
15486
|
Name of the storage credential.
|
|
@@ -14101,12 +15499,14 @@ class StorageCredentialsAPI:
|
|
|
14101
15499
|
:param force: bool (optional)
|
|
14102
15500
|
Force update even if there are dependent external locations or external tables.
|
|
14103
15501
|
:param isolation_mode: :class:`IsolationMode` (optional)
|
|
15502
|
+
Whether the current securable is accessible from all workspaces or a specific set of workspaces.
|
|
14104
15503
|
:param new_name: str (optional)
|
|
14105
15504
|
New name for the storage credential.
|
|
14106
15505
|
:param owner: str (optional)
|
|
14107
15506
|
Username of current owner of credential.
|
|
14108
15507
|
:param read_only: bool (optional)
|
|
14109
|
-
Whether the
|
|
15508
|
+
Whether the credential is usable only for read operations. Only applicable when purpose is
|
|
15509
|
+
**STORAGE**.
|
|
14110
15510
|
:param skip_validation: bool (optional)
|
|
14111
15511
|
Supplying true to this argument skips validation of the updated credential.
|
|
14112
15512
|
|
|
@@ -14158,9 +15558,7 @@ class StorageCredentialsAPI:
|
|
|
14158
15558
|
storage_credential_name: Optional[str] = None,
|
|
14159
15559
|
url: Optional[str] = None,
|
|
14160
15560
|
) -> ValidateStorageCredentialResponse:
|
|
14161
|
-
"""
|
|
14162
|
-
|
|
14163
|
-
Validates a storage credential. At least one of __external_location_name__ and __url__ need to be
|
|
15561
|
+
"""Validates a storage credential. At least one of __external_location_name__ and __url__ need to be
|
|
14164
15562
|
provided. If only one of them is provided, it will be used for validation. And if both are provided,
|
|
14165
15563
|
the __url__ will be used for validation, and __external_location_name__ will be ignored when checking
|
|
14166
15564
|
overlapping urls.
|
|
@@ -14185,7 +15583,7 @@ class StorageCredentialsAPI:
|
|
|
14185
15583
|
:param read_only: bool (optional)
|
|
14186
15584
|
Whether the storage credential is only usable for read operations.
|
|
14187
15585
|
:param storage_credential_name: str (optional)
|
|
14188
|
-
The name of
|
|
15586
|
+
Required. The name of an existing credential or long-lived cloud credential to validate.
|
|
14189
15587
|
:param url: str (optional)
|
|
14190
15588
|
The external location url to validate.
|
|
14191
15589
|
|
|
@@ -14227,9 +15625,7 @@ class SystemSchemasAPI:
|
|
|
14227
15625
|
self._api = api_client
|
|
14228
15626
|
|
|
14229
15627
|
def disable(self, metastore_id: str, schema_name: str):
|
|
14230
|
-
"""
|
|
14231
|
-
|
|
14232
|
-
Disables the system schema and removes it from the system catalog. The caller must be an account admin
|
|
15628
|
+
"""Disables the system schema and removes it from the system catalog. The caller must be an account admin
|
|
14233
15629
|
or a metastore admin.
|
|
14234
15630
|
|
|
14235
15631
|
:param metastore_id: str
|
|
@@ -14249,9 +15645,7 @@ class SystemSchemasAPI:
|
|
|
14249
15645
|
)
|
|
14250
15646
|
|
|
14251
15647
|
def enable(self, metastore_id: str, schema_name: str, *, catalog_name: Optional[str] = None):
|
|
14252
|
-
"""
|
|
14253
|
-
|
|
14254
|
-
Enables the system schema and adds it to the system catalog. The caller must be an account admin or a
|
|
15648
|
+
"""Enables the system schema and adds it to the system catalog. The caller must be an account admin or a
|
|
14255
15649
|
metastore admin.
|
|
14256
15650
|
|
|
14257
15651
|
:param metastore_id: str
|
|
@@ -14281,9 +15675,7 @@ class SystemSchemasAPI:
|
|
|
14281
15675
|
def list(
|
|
14282
15676
|
self, metastore_id: str, *, max_results: Optional[int] = None, page_token: Optional[str] = None
|
|
14283
15677
|
) -> Iterator[SystemSchemaInfo]:
|
|
14284
|
-
"""
|
|
14285
|
-
|
|
14286
|
-
Gets an array of system schemas for a metastore. The caller must be an account admin or a metastore
|
|
15678
|
+
"""Gets an array of system schemas for a metastore. The caller must be an account admin or a metastore
|
|
14287
15679
|
admin.
|
|
14288
15680
|
|
|
14289
15681
|
:param metastore_id: str
|
|
@@ -14336,9 +15728,7 @@ class TableConstraintsAPI:
|
|
|
14336
15728
|
self._api = api_client
|
|
14337
15729
|
|
|
14338
15730
|
def create(self, full_name_arg: str, constraint: TableConstraint) -> TableConstraint:
|
|
14339
|
-
"""
|
|
14340
|
-
|
|
14341
|
-
Creates a new table constraint.
|
|
15731
|
+
"""Creates a new table constraint.
|
|
14342
15732
|
|
|
14343
15733
|
For the table constraint creation to succeed, the user must satisfy both of these conditions: - the
|
|
14344
15734
|
user must have the **USE_CATALOG** privilege on the table's parent catalog, the **USE_SCHEMA**
|
|
@@ -14350,8 +15740,6 @@ class TableConstraintsAPI:
|
|
|
14350
15740
|
:param full_name_arg: str
|
|
14351
15741
|
The full name of the table referenced by the constraint.
|
|
14352
15742
|
:param constraint: :class:`TableConstraint`
|
|
14353
|
-
A table constraint, as defined by *one* of the following fields being set:
|
|
14354
|
-
__primary_key_constraint__, __foreign_key_constraint__, __named_table_constraint__.
|
|
14355
15743
|
|
|
14356
15744
|
:returns: :class:`TableConstraint`
|
|
14357
15745
|
"""
|
|
@@ -14369,9 +15757,7 @@ class TableConstraintsAPI:
|
|
|
14369
15757
|
return TableConstraint.from_dict(res)
|
|
14370
15758
|
|
|
14371
15759
|
def delete(self, full_name: str, constraint_name: str, cascade: bool):
|
|
14372
|
-
"""
|
|
14373
|
-
|
|
14374
|
-
Deletes a table constraint.
|
|
15760
|
+
"""Deletes a table constraint.
|
|
14375
15761
|
|
|
14376
15762
|
For the table constraint deletion to succeed, the user must satisfy both of these conditions: - the
|
|
14377
15763
|
user must have the **USE_CATALOG** privilege on the table's parent catalog, the **USE_SCHEMA**
|
|
@@ -14417,9 +15803,7 @@ class TablesAPI:
|
|
|
14417
15803
|
self._api = api_client
|
|
14418
15804
|
|
|
14419
15805
|
def delete(self, full_name: str):
|
|
14420
|
-
"""
|
|
14421
|
-
|
|
14422
|
-
Deletes a table from the specified parent catalog and schema. The caller must be the owner of the
|
|
15806
|
+
"""Deletes a table from the specified parent catalog and schema. The caller must be the owner of the
|
|
14423
15807
|
parent catalog, have the **USE_CATALOG** privilege on the parent catalog and be the owner of the
|
|
14424
15808
|
parent schema, or be the owner of the table and have the **USE_CATALOG** privilege on the parent
|
|
14425
15809
|
catalog and the **USE_SCHEMA** privilege on the parent schema.
|
|
@@ -14437,9 +15821,7 @@ class TablesAPI:
|
|
|
14437
15821
|
self._api.do("DELETE", f"/api/2.1/unity-catalog/tables/{full_name}", headers=headers)
|
|
14438
15822
|
|
|
14439
15823
|
def exists(self, full_name: str) -> TableExistsResponse:
|
|
14440
|
-
"""
|
|
14441
|
-
|
|
14442
|
-
Gets if a table exists in the metastore for a specific catalog and schema. The caller must satisfy one
|
|
15824
|
+
"""Gets if a table exists in the metastore for a specific catalog and schema. The caller must satisfy one
|
|
14443
15825
|
of the following requirements: * Be a metastore admin * Be the owner of the parent catalog * Be the
|
|
14444
15826
|
owner of the parent schema and have the USE_CATALOG privilege on the parent catalog * Have the
|
|
14445
15827
|
**USE_CATALOG** privilege on the parent catalog and the **USE_SCHEMA** privilege on the parent schema,
|
|
@@ -14467,9 +15849,7 @@ class TablesAPI:
|
|
|
14467
15849
|
include_delta_metadata: Optional[bool] = None,
|
|
14468
15850
|
include_manifest_capabilities: Optional[bool] = None,
|
|
14469
15851
|
) -> TableInfo:
|
|
14470
|
-
"""
|
|
14471
|
-
|
|
14472
|
-
Gets a table from the metastore for a specific catalog and schema. The caller must satisfy one of the
|
|
15852
|
+
"""Gets a table from the metastore for a specific catalog and schema. The caller must satisfy one of the
|
|
14473
15853
|
following requirements: * Be a metastore admin * Be the owner of the parent catalog * Be the owner of
|
|
14474
15854
|
the parent schema and have the USE_CATALOG privilege on the parent catalog * Have the **USE_CATALOG**
|
|
14475
15855
|
privilege on the parent catalog and the **USE_SCHEMA** privilege on the parent schema, and either be
|
|
@@ -14479,11 +15859,11 @@ class TablesAPI:
|
|
|
14479
15859
|
Full name of the table.
|
|
14480
15860
|
:param include_browse: bool (optional)
|
|
14481
15861
|
Whether to include tables in the response for which the principal can only access selective metadata
|
|
14482
|
-
for
|
|
15862
|
+
for.
|
|
14483
15863
|
:param include_delta_metadata: bool (optional)
|
|
14484
15864
|
Whether delta metadata should be included in the response.
|
|
14485
15865
|
:param include_manifest_capabilities: bool (optional)
|
|
14486
|
-
Whether to include a manifest containing capabilities the
|
|
15866
|
+
Whether to include a manifest containing table capabilities in the response.
|
|
14487
15867
|
|
|
14488
15868
|
:returns: :class:`TableInfo`
|
|
14489
15869
|
"""
|
|
@@ -14508,7 +15888,6 @@ class TablesAPI:
|
|
|
14508
15888
|
schema_name: str,
|
|
14509
15889
|
*,
|
|
14510
15890
|
include_browse: Optional[bool] = None,
|
|
14511
|
-
include_delta_metadata: Optional[bool] = None,
|
|
14512
15891
|
include_manifest_capabilities: Optional[bool] = None,
|
|
14513
15892
|
max_results: Optional[int] = None,
|
|
14514
15893
|
omit_columns: Optional[bool] = None,
|
|
@@ -14516,9 +15895,7 @@ class TablesAPI:
|
|
|
14516
15895
|
omit_username: Optional[bool] = None,
|
|
14517
15896
|
page_token: Optional[str] = None,
|
|
14518
15897
|
) -> Iterator[TableInfo]:
|
|
14519
|
-
"""
|
|
14520
|
-
|
|
14521
|
-
Gets an array of all tables for the current metastore under the parent catalog and schema. The caller
|
|
15898
|
+
"""Gets an array of all tables for the current metastore under the parent catalog and schema. The caller
|
|
14522
15899
|
must be a metastore admin or an owner of (or have the **SELECT** privilege on) the table. For the
|
|
14523
15900
|
latter case, the caller must also be the owner or have the **USE_CATALOG** privilege on the parent
|
|
14524
15901
|
catalog and the **USE_SCHEMA** privilege on the parent schema. There is no guarantee of a specific
|
|
@@ -14530,11 +15907,9 @@ class TablesAPI:
|
|
|
14530
15907
|
Parent schema of tables.
|
|
14531
15908
|
:param include_browse: bool (optional)
|
|
14532
15909
|
Whether to include tables in the response for which the principal can only access selective metadata
|
|
14533
|
-
for
|
|
14534
|
-
:param include_delta_metadata: bool (optional)
|
|
14535
|
-
Whether delta metadata should be included in the response.
|
|
15910
|
+
for.
|
|
14536
15911
|
:param include_manifest_capabilities: bool (optional)
|
|
14537
|
-
Whether to include a manifest containing capabilities the
|
|
15912
|
+
Whether to include a manifest containing table capabilities in the response.
|
|
14538
15913
|
:param max_results: int (optional)
|
|
14539
15914
|
Maximum number of tables to return. If not set, all the tables are returned (not recommended). -
|
|
14540
15915
|
when set to a value greater than 0, the page length is the minimum of this value and a server
|
|
@@ -14558,8 +15933,6 @@ class TablesAPI:
|
|
|
14558
15933
|
query["catalog_name"] = catalog_name
|
|
14559
15934
|
if include_browse is not None:
|
|
14560
15935
|
query["include_browse"] = include_browse
|
|
14561
|
-
if include_delta_metadata is not None:
|
|
14562
|
-
query["include_delta_metadata"] = include_delta_metadata
|
|
14563
15936
|
if include_manifest_capabilities is not None:
|
|
14564
15937
|
query["include_manifest_capabilities"] = include_manifest_capabilities
|
|
14565
15938
|
if max_results is not None:
|
|
@@ -14578,8 +15951,6 @@ class TablesAPI:
|
|
|
14578
15951
|
"Accept": "application/json",
|
|
14579
15952
|
}
|
|
14580
15953
|
|
|
14581
|
-
if "max_results" not in query:
|
|
14582
|
-
query["max_results"] = 0
|
|
14583
15954
|
while True:
|
|
14584
15955
|
json = self._api.do("GET", "/api/2.1/unity-catalog/tables", query=query, headers=headers)
|
|
14585
15956
|
if "tables" in json:
|
|
@@ -14599,9 +15970,7 @@ class TablesAPI:
|
|
|
14599
15970
|
schema_name_pattern: Optional[str] = None,
|
|
14600
15971
|
table_name_pattern: Optional[str] = None,
|
|
14601
15972
|
) -> Iterator[TableSummary]:
|
|
14602
|
-
"""
|
|
14603
|
-
|
|
14604
|
-
Gets an array of summaries for tables for a schema and catalog within the metastore. The table
|
|
15973
|
+
"""Gets an array of summaries for tables for a schema and catalog within the metastore. The table
|
|
14605
15974
|
summaries returned are either:
|
|
14606
15975
|
|
|
14607
15976
|
* summaries for tables (within the current metastore and parent catalog and schema), when the user is
|
|
@@ -14615,7 +15984,7 @@ class TablesAPI:
|
|
|
14615
15984
|
:param catalog_name: str
|
|
14616
15985
|
Name of parent catalog for tables of interest.
|
|
14617
15986
|
:param include_manifest_capabilities: bool (optional)
|
|
14618
|
-
Whether to include a manifest containing capabilities the
|
|
15987
|
+
Whether to include a manifest containing table capabilities in the response.
|
|
14619
15988
|
:param max_results: int (optional)
|
|
14620
15989
|
Maximum number of summaries for tables to return. If not set, the page length is set to a server
|
|
14621
15990
|
configured value (10000, as of 1/5/2024). - when set to a value greater than 0, the page length is
|
|
@@ -14649,8 +16018,6 @@ class TablesAPI:
|
|
|
14649
16018
|
"Accept": "application/json",
|
|
14650
16019
|
}
|
|
14651
16020
|
|
|
14652
|
-
if "max_results" not in query:
|
|
14653
|
-
query["max_results"] = 0
|
|
14654
16021
|
while True:
|
|
14655
16022
|
json = self._api.do("GET", "/api/2.1/unity-catalog/table-summaries", query=query, headers=headers)
|
|
14656
16023
|
if "tables" in json:
|
|
@@ -14661,9 +16028,7 @@ class TablesAPI:
|
|
|
14661
16028
|
query["page_token"] = json["next_page_token"]
|
|
14662
16029
|
|
|
14663
16030
|
def update(self, full_name: str, *, owner: Optional[str] = None):
|
|
14664
|
-
"""
|
|
14665
|
-
|
|
14666
|
-
Change the owner of the table. The caller must be the owner of the parent catalog, have the
|
|
16031
|
+
"""Change the owner of the table. The caller must be the owner of the parent catalog, have the
|
|
14667
16032
|
**USE_CATALOG** privilege on the parent catalog and be the owner of the parent schema, or be the owner
|
|
14668
16033
|
of the table and have the **USE_CATALOG** privilege on the parent catalog and the **USE_SCHEMA**
|
|
14669
16034
|
privilege on the parent schema.
|
|
@@ -14671,6 +16036,7 @@ class TablesAPI:
|
|
|
14671
16036
|
:param full_name: str
|
|
14672
16037
|
Full name of the table.
|
|
14673
16038
|
:param owner: str (optional)
|
|
16039
|
+
Username of current owner of table.
|
|
14674
16040
|
|
|
14675
16041
|
|
|
14676
16042
|
"""
|
|
@@ -14705,9 +16071,7 @@ class TemporaryTableCredentialsAPI:
|
|
|
14705
16071
|
def generate_temporary_table_credentials(
|
|
14706
16072
|
self, *, operation: Optional[TableOperation] = None, table_id: Optional[str] = None
|
|
14707
16073
|
) -> GenerateTemporaryTableCredentialResponse:
|
|
14708
|
-
"""
|
|
14709
|
-
|
|
14710
|
-
Get a short-lived credential for directly accessing the table data on cloud storage. The metastore
|
|
16074
|
+
"""Get a short-lived credential for directly accessing the table data on cloud storage. The metastore
|
|
14711
16075
|
must have external_access_enabled flag set to true (default false). The caller must have
|
|
14712
16076
|
EXTERNAL_USE_SCHEMA privilege on the parent schema and this privilege can only be granted by catalog
|
|
14713
16077
|
owners.
|
|
@@ -14755,9 +16119,7 @@ class VolumesAPI:
|
|
|
14755
16119
|
comment: Optional[str] = None,
|
|
14756
16120
|
storage_location: Optional[str] = None,
|
|
14757
16121
|
) -> VolumeInfo:
|
|
14758
|
-
"""
|
|
14759
|
-
|
|
14760
|
-
Creates a new volume.
|
|
16122
|
+
"""Creates a new volume.
|
|
14761
16123
|
|
|
14762
16124
|
The user could create either an external volume or a managed volume. An external volume will be
|
|
14763
16125
|
created in the specified external location, while a managed volume will be located in the default
|
|
@@ -14780,11 +16142,6 @@ class VolumesAPI:
|
|
|
14780
16142
|
:param name: str
|
|
14781
16143
|
The name of the volume
|
|
14782
16144
|
:param volume_type: :class:`VolumeType`
|
|
14783
|
-
The type of the volume. An external volume is located in the specified external location. A managed
|
|
14784
|
-
volume is located in the default location which is specified by the parent schema, or the parent
|
|
14785
|
-
catalog, or the Metastore. [Learn more]
|
|
14786
|
-
|
|
14787
|
-
[Learn more]: https://docs.databricks.com/aws/en/volumes/managed-vs-external
|
|
14788
16145
|
:param comment: str (optional)
|
|
14789
16146
|
The comment attached to the volume
|
|
14790
16147
|
:param storage_location: str (optional)
|
|
@@ -14814,9 +16171,7 @@ class VolumesAPI:
|
|
|
14814
16171
|
return VolumeInfo.from_dict(res)
|
|
14815
16172
|
|
|
14816
16173
|
def delete(self, name: str):
|
|
14817
|
-
"""
|
|
14818
|
-
|
|
14819
|
-
Deletes a volume from the specified parent catalog and schema.
|
|
16174
|
+
"""Deletes a volume from the specified parent catalog and schema.
|
|
14820
16175
|
|
|
14821
16176
|
The caller must be a metastore admin or an owner of the volume. For the latter case, the caller must
|
|
14822
16177
|
also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the **USE_SCHEMA**
|
|
@@ -14841,9 +16196,7 @@ class VolumesAPI:
|
|
|
14841
16196
|
max_results: Optional[int] = None,
|
|
14842
16197
|
page_token: Optional[str] = None,
|
|
14843
16198
|
) -> Iterator[VolumeInfo]:
|
|
14844
|
-
"""
|
|
14845
|
-
|
|
14846
|
-
Gets an array of volumes for the current metastore under the parent catalog and schema.
|
|
16199
|
+
"""Gets an array of volumes for the current metastore under the parent catalog and schema.
|
|
14847
16200
|
|
|
14848
16201
|
The returned volumes are filtered based on the privileges of the calling user. For example, the
|
|
14849
16202
|
metastore admin is able to list all the volumes. A regular user needs to be the owner or have the
|
|
@@ -14904,9 +16257,7 @@ class VolumesAPI:
|
|
|
14904
16257
|
query["page_token"] = json["next_page_token"]
|
|
14905
16258
|
|
|
14906
16259
|
def read(self, name: str, *, include_browse: Optional[bool] = None) -> VolumeInfo:
|
|
14907
|
-
"""
|
|
14908
|
-
|
|
14909
|
-
Gets a volume from the metastore for a specific catalog and schema.
|
|
16260
|
+
"""Gets a volume from the metastore for a specific catalog and schema.
|
|
14910
16261
|
|
|
14911
16262
|
The caller must be a metastore admin or an owner of (or have the **READ VOLUME** privilege on) the
|
|
14912
16263
|
volume. For the latter case, the caller must also be the owner or have the **USE_CATALOG** privilege
|
|
@@ -14934,9 +16285,7 @@ class VolumesAPI:
|
|
|
14934
16285
|
def update(
|
|
14935
16286
|
self, name: str, *, comment: Optional[str] = None, new_name: Optional[str] = None, owner: Optional[str] = None
|
|
14936
16287
|
) -> VolumeInfo:
|
|
14937
|
-
"""
|
|
14938
|
-
|
|
14939
|
-
Updates the specified volume under the specified parent catalog and schema.
|
|
16288
|
+
"""Updates the specified volume under the specified parent catalog and schema.
|
|
14940
16289
|
|
|
14941
16290
|
The caller must be a metastore admin or an owner of the volume. For the latter case, the caller must
|
|
14942
16291
|
also be the owner or have the **USE_CATALOG** privilege on the parent catalog and the **USE_SCHEMA**
|
|
@@ -14991,9 +16340,7 @@ class WorkspaceBindingsAPI:
|
|
|
14991
16340
|
self._api = api_client
|
|
14992
16341
|
|
|
14993
16342
|
def get(self, name: str) -> GetCatalogWorkspaceBindingsResponse:
|
|
14994
|
-
"""
|
|
14995
|
-
|
|
14996
|
-
Gets workspace bindings of the catalog. The caller must be a metastore admin or an owner of the
|
|
16343
|
+
"""Gets workspace bindings of the catalog. The caller must be a metastore admin or an owner of the
|
|
14997
16344
|
catalog.
|
|
14998
16345
|
|
|
14999
16346
|
:param name: str
|
|
@@ -15017,9 +16364,7 @@ class WorkspaceBindingsAPI:
|
|
|
15017
16364
|
max_results: Optional[int] = None,
|
|
15018
16365
|
page_token: Optional[str] = None,
|
|
15019
16366
|
) -> Iterator[WorkspaceBinding]:
|
|
15020
|
-
"""
|
|
15021
|
-
|
|
15022
|
-
Gets workspace bindings of the securable. The caller must be a metastore admin or an owner of the
|
|
16367
|
+
"""Gets workspace bindings of the securable. The caller must be a metastore admin or an owner of the
|
|
15023
16368
|
securable.
|
|
15024
16369
|
|
|
15025
16370
|
:param securable_type: str
|
|
@@ -15068,9 +16413,7 @@ class WorkspaceBindingsAPI:
|
|
|
15068
16413
|
assign_workspaces: Optional[List[int]] = None,
|
|
15069
16414
|
unassign_workspaces: Optional[List[int]] = None,
|
|
15070
16415
|
) -> UpdateCatalogWorkspaceBindingsResponse:
|
|
15071
|
-
"""
|
|
15072
|
-
|
|
15073
|
-
Updates workspace bindings of the catalog. The caller must be a metastore admin or an owner of the
|
|
16416
|
+
"""Updates workspace bindings of the catalog. The caller must be a metastore admin or an owner of the
|
|
15074
16417
|
catalog.
|
|
15075
16418
|
|
|
15076
16419
|
:param name: str
|
|
@@ -15105,9 +16448,7 @@ class WorkspaceBindingsAPI:
|
|
|
15105
16448
|
add: Optional[List[WorkspaceBinding]] = None,
|
|
15106
16449
|
remove: Optional[List[WorkspaceBinding]] = None,
|
|
15107
16450
|
) -> UpdateWorkspaceBindingsResponse:
|
|
15108
|
-
"""
|
|
15109
|
-
|
|
15110
|
-
Updates workspace bindings of the securable. The caller must be a metastore admin or an owner of the
|
|
16451
|
+
"""Updates workspace bindings of the securable. The caller must be a metastore admin or an owner of the
|
|
15111
16452
|
securable.
|
|
15112
16453
|
|
|
15113
16454
|
:param securable_type: str
|