msfabricpysdkcore 0.2.5__py3-none-any.whl → 0.2.7__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.
- msfabricpysdkcore/coreapi.py +742 -32
- msfabricpysdkcore/otheritems.py +61 -1
- msfabricpysdkcore/workspace.py +161 -9
- {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/METADATA +4 -2
- msfabricpysdkcore-0.2.7.dist-info/RECORD +30 -0
- msfabricpysdkcore/tests/__init__.py +0 -0
- msfabricpysdkcore/tests/test_admin_apis.py +0 -174
- msfabricpysdkcore/tests/test_admin_tags.py +0 -46
- msfabricpysdkcore/tests/test_connection.py +0 -111
- msfabricpysdkcore/tests/test_copy_jobs.py +0 -60
- msfabricpysdkcore/tests/test_dataflows.py +0 -60
- msfabricpysdkcore/tests/test_datapipelines.py +0 -60
- msfabricpysdkcore/tests/test_deployment_pipeline.py +0 -63
- msfabricpysdkcore/tests/test_deployment_pipelinev2.py +0 -135
- msfabricpysdkcore/tests/test_domains.py +0 -126
- msfabricpysdkcore/tests/test_environments.py +0 -114
- msfabricpysdkcore/tests/test_evenhouses.py +0 -56
- msfabricpysdkcore/tests/test_evenstreams.py +0 -52
- msfabricpysdkcore/tests/test_eventstream_topology.py +0 -82
- msfabricpysdkcore/tests/test_external_data_shares.py +0 -51
- msfabricpysdkcore/tests/test_fabric_azure_client.py +0 -80
- msfabricpysdkcore/tests/test_folders.py +0 -53
- msfabricpysdkcore/tests/test_gateways.py +0 -99
- msfabricpysdkcore/tests/test_git.py +0 -66
- msfabricpysdkcore/tests/test_graphqlapi.py +0 -44
- msfabricpysdkcore/tests/test_items.py +0 -97
- msfabricpysdkcore/tests/test_jobs.py +0 -96
- msfabricpysdkcore/tests/test_kql_dashboards.py +0 -63
- msfabricpysdkcore/tests/test_kql_queryset.py +0 -64
- msfabricpysdkcore/tests/test_kqldatabases.py +0 -56
- msfabricpysdkcore/tests/test_lakehouse.py +0 -93
- msfabricpysdkcore/tests/test_managed_private_endpoints.py +0 -61
- msfabricpysdkcore/tests/test_mirroreddatabases.py +0 -80
- msfabricpysdkcore/tests/test_ml_experiments.py +0 -47
- msfabricpysdkcore/tests/test_ml_models.py +0 -47
- msfabricpysdkcore/tests/test_mounted_adf.py +0 -64
- msfabricpysdkcore/tests/test_notebooks.py +0 -57
- msfabricpysdkcore/tests/test_one_lake_data_access_security.py +0 -63
- msfabricpysdkcore/tests/test_other_items.py +0 -45
- msfabricpysdkcore/tests/test_reflex.py +0 -57
- msfabricpysdkcore/tests/test_reports.py +0 -56
- msfabricpysdkcore/tests/test_semantic_model.py +0 -56
- msfabricpysdkcore/tests/test_shortcuts.py +0 -60
- msfabricpysdkcore/tests/test_spark.py +0 -91
- msfabricpysdkcore/tests/test_sparkjobdefinition.py +0 -55
- msfabricpysdkcore/tests/test_sqldatabases.py +0 -45
- msfabricpysdkcore/tests/test_tags.py +0 -28
- msfabricpysdkcore/tests/test_variable_libary.py +0 -61
- msfabricpysdkcore/tests/test_warehouses.py +0 -50
- msfabricpysdkcore/tests/test_workspaces_capacities.py +0 -159
- msfabricpysdkcore-0.2.5.dist-info/RECORD +0 -75
- {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/WHEEL +0 -0
- {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/licenses/LICENSE +0 -0
- {msfabricpysdkcore-0.2.5.dist-info → msfabricpysdkcore-0.2.7.dist-info}/top_level.txt +0 -0
msfabricpysdkcore/otheritems.py
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
from msfabricpysdkcore.item import Item
|
2
2
|
|
3
|
+
class ApacheAirflowJob(Item):
|
4
|
+
"""Class to represent a ApacheAirflowJob in Microsoft Fabric"""
|
5
|
+
|
6
|
+
def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
|
7
|
+
super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
|
8
|
+
|
9
|
+
def from_dict(item_dict, core_client):
|
10
|
+
return ApacheAirflowJob(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
|
11
|
+
properties=item_dict.get('properties', None),
|
12
|
+
definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
|
3
13
|
|
4
14
|
class CopyJob(Item):
|
5
15
|
"""Class to represent a copy job in Microsoft Fabric"""
|
@@ -36,7 +46,44 @@ class DataPipeline(Item):
|
|
36
46
|
|
37
47
|
def run_on_demand_item_job(self, execution_data=None):
|
38
48
|
return self.core_client.run_on_demand_item_job(workspace_id=self.workspace_id, item_id=self.id, job_type="Pipeline", execution_data=execution_data)
|
49
|
+
|
50
|
+
class DigitalTwinBuilder(Item):
|
51
|
+
"""Class to represent a DigitalTwinBuilder in Microsoft Fabric"""
|
52
|
+
|
53
|
+
def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
|
54
|
+
super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
|
55
|
+
|
56
|
+
def from_dict(item_dict, core_client):
|
57
|
+
return DigitalTwinBuilder(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
|
58
|
+
properties=item_dict.get('properties', None),
|
59
|
+
definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
|
60
|
+
|
61
|
+
class DigitalTwinBuilderFlow(Item):
|
62
|
+
"""Class to represent a DigitalTwinBuilderFlow in Microsoft Fabric"""
|
63
|
+
|
64
|
+
def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
|
65
|
+
super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
|
66
|
+
|
67
|
+
def from_dict(item_dict, core_client):
|
68
|
+
return DigitalTwinBuilderFlow(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
|
69
|
+
properties=item_dict.get('properties', None),
|
70
|
+
definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
|
71
|
+
|
72
|
+
class MirroredAzureDatabricksCatalog(Item):
|
73
|
+
"""Class to represent a mirrored Azure Databricks catalog in Microsoft Fabric"""
|
74
|
+
|
75
|
+
def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
|
76
|
+
super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
|
77
|
+
|
78
|
+
def from_dict(item_dict, core_client):
|
79
|
+
return MirroredAzureDatabricksCatalog(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
|
80
|
+
properties=item_dict.get('properties', None),
|
81
|
+
definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
|
39
82
|
|
83
|
+
def refresh_catalog_metadata(self):
|
84
|
+
"""Method to refresh the metadata of the mirrored Azure Databricks catalog"""
|
85
|
+
return self.core_client.refresh_mirrored_azure_databricks_catalog_metadata(self.workspace_id, self.id)
|
86
|
+
|
40
87
|
class Eventhouse(Item):
|
41
88
|
"""Class to represent a eventhouse in Microsoft Fabric"""
|
42
89
|
|
@@ -110,6 +157,17 @@ class Warehouse(Item):
|
|
110
157
|
return Warehouse(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
|
111
158
|
properties=item_dict.get('properties', None),
|
112
159
|
definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
|
160
|
+
|
161
|
+
class WarehouseSnapshot(Item):
|
162
|
+
"""Class to represent a warehouse snapshot in Microsoft Fabric"""
|
163
|
+
|
164
|
+
def __init__(self, id, display_name, type, workspace_id, core_client, properties = None, definition=None, description=""):
|
165
|
+
super().__init__(id, display_name, type, workspace_id, core_client, properties, definition, description)
|
166
|
+
|
167
|
+
def from_dict(item_dict, core_client):
|
168
|
+
return WarehouseSnapshot(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
|
169
|
+
properties=item_dict.get('properties', None),
|
170
|
+
definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
|
113
171
|
|
114
172
|
class KQLDashboard(Item):
|
115
173
|
"""Class to represent a kql dashboard in Microsoft Fabric"""
|
@@ -180,7 +238,9 @@ class GraphQLApi(Item):
|
|
180
238
|
return GraphQLApi(id=item_dict['id'], display_name=item_dict['displayName'], type=item_dict['type'], workspace_id=item_dict['workspaceId'],
|
181
239
|
properties=item_dict.get('properties', None),
|
182
240
|
definition=item_dict.get('definition', None), description=item_dict.get('description', ""), core_client=core_client)
|
183
|
-
|
241
|
+
|
242
|
+
|
243
|
+
|
184
244
|
class MirroredDatabase(Item):
|
185
245
|
"""Class to represent a mirrored database in Microsoft Fabric"""
|
186
246
|
|
msfabricpysdkcore/workspace.py
CHANGED
@@ -184,6 +184,11 @@ class Workspace:
|
|
184
184
|
def revoke_external_data_share(self, item_id, external_data_share_id):
|
185
185
|
return self.core_client.revoke_external_data_share(workspace_id=self.id, item_id=item_id, external_data_share_id=external_data_share_id)
|
186
186
|
|
187
|
+
# delete
|
188
|
+
def delete_external_data_share(self, item_id, external_data_share_id):
|
189
|
+
"""Delete an external data share from an item in a workspace"""
|
190
|
+
return self.core_client.delete_external_data_share(workspace_id=self.id, item_id=item_id, external_data_share_id=external_data_share_id)
|
191
|
+
|
187
192
|
# Folders
|
188
193
|
# Folders
|
189
194
|
# POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/folders
|
@@ -423,6 +428,33 @@ class Workspace:
|
|
423
428
|
def list_mirrored_warehouses(self):
|
424
429
|
return self.core_client.list_mirrored_warehouses(workspace_id=self.id)
|
425
430
|
|
431
|
+
# apache airflow jobs
|
432
|
+
def create_apache_airflow_job(self, display_name, definition = None, description = None, folder_id = None):
|
433
|
+
return self.core_client.create_apache_airflow_job(workspace_id=self.id, display_name=display_name, description=description,
|
434
|
+
definition=definition, folder_id=folder_id)
|
435
|
+
|
436
|
+
def delete_apache_airflow_job(self, apache_airflow_job_id):
|
437
|
+
return self.core_client.delete_apache_airflow_job(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id)
|
438
|
+
|
439
|
+
def get_apache_airflow_job(self, apache_airflow_job_id = None, apache_airflow_job_name = None):
|
440
|
+
return self.core_client.get_apache_airflow_job(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id,
|
441
|
+
apache_airflow_job_name=apache_airflow_job_name)
|
442
|
+
|
443
|
+
# get_apache_airflow_job_definition
|
444
|
+
def get_apache_airflow_job_definition(self, apache_airflow_job_id, format = None):
|
445
|
+
return self.core_client.get_apache_airflow_job_definition(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id, format=format)
|
446
|
+
|
447
|
+
def list_apache_airflow_jobs(self, with_properties = False):
|
448
|
+
return self.core_client.list_apache_airflow_jobs(workspace_id=self.id, with_properties=with_properties)
|
449
|
+
|
450
|
+
def update_apache_airflow_job(self, apache_airflow_job_id, display_name = None, description = None):
|
451
|
+
return self.core_client.update_apache_airflow_job(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id,
|
452
|
+
display_name=display_name, description=description)
|
453
|
+
|
454
|
+
def update_apache_airflow_job_definition(self, apache_airflow_job_id, definition, update_metadata = None):
|
455
|
+
return self.core_client.update_apache_airflow_job_definition(workspace_id=self.id, apache_airflow_job_id=apache_airflow_job_id,
|
456
|
+
definition=definition, update_metadata=update_metadata)
|
457
|
+
|
426
458
|
# copy jobs
|
427
459
|
|
428
460
|
def create_copy_job(self, display_name, definition = None, description = None):
|
@@ -556,6 +588,40 @@ class Workspace:
|
|
556
588
|
return self.core_client.update_data_pipeline_definition(workspace_id=self.id, data_pipeline_id=data_pipeline_id,
|
557
589
|
definition=definition, update_metadata=update_metadata)
|
558
590
|
|
591
|
+
# digital twin builders
|
592
|
+
|
593
|
+
def create_digital_twin_builder(self, display_name, definition = None, description = None, folder_id = None):
|
594
|
+
"""Create a digital twin builder in a workspace"""
|
595
|
+
return self.core_client.create_digital_twin_builder(workspace_id=self.id, display_name=display_name,
|
596
|
+
definition=definition, description=description, folder_id=folder_id)
|
597
|
+
|
598
|
+
def delete_digital_twin_builder(self, digital_twin_builder_id):
|
599
|
+
"""Delete a digital twin builder from a workspace"""
|
600
|
+
return self.core_client.delete_digital_twin_builder(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id)
|
601
|
+
|
602
|
+
def get_digital_twin_builder(self, digital_twin_builder_id = None, digital_twin_builder_name = None):
|
603
|
+
"""Get a digital twin builder from a workspace"""
|
604
|
+
return self.core_client.get_digital_twin_builder(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id,
|
605
|
+
digital_twin_builder_name=digital_twin_builder_name)
|
606
|
+
|
607
|
+
def get_digital_twin_builder_definition(self, digital_twin_builder_id, format = None):
|
608
|
+
"""Get the definition of a digital twin builder from a workspace"""
|
609
|
+
return self.core_client.get_digital_twin_builder_definition(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id, format=format)
|
610
|
+
|
611
|
+
def list_digital_twin_builders(self, with_properties = False):
|
612
|
+
"""List digital twin builders in a workspace"""
|
613
|
+
return self.core_client.list_digital_twin_builders(workspace_id=self.id, with_properties=with_properties)
|
614
|
+
|
615
|
+
def update_digital_twin_builder(self, digital_twin_builder_id, display_name = None, description = None):
|
616
|
+
"""Update a digital twin builder in a workspace"""
|
617
|
+
return self.core_client.update_digital_twin_builder(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id,
|
618
|
+
display_name=display_name, description=description)
|
619
|
+
|
620
|
+
def update_digital_twin_builder_definition(self, digital_twin_builder_id, definition, update_metadata = None):
|
621
|
+
"""Update the definition of a digital twin builder in a workspace"""
|
622
|
+
return self.core_client.update_digital_twin_builder_definition(workspace_id=self.id, digital_twin_builder_id=digital_twin_builder_id,
|
623
|
+
definition=definition, update_metadata=update_metadata)
|
624
|
+
|
559
625
|
# environments
|
560
626
|
|
561
627
|
def list_environments(self, with_properties = False):
|
@@ -625,10 +691,10 @@ class Workspace:
|
|
625
691
|
"""List eventhouses in a workspace"""
|
626
692
|
return self.core_client.list_eventhouses(workspace_id=self.id, with_properties=with_properties)
|
627
693
|
|
628
|
-
def create_eventhouse(self, display_name, description = None):
|
694
|
+
def create_eventhouse(self, display_name, definition = None, creation_payload = None, description = None):
|
629
695
|
"""Create an eventhouse in a workspace"""
|
630
|
-
return self.core_client.create_eventhouse(workspace_id=self.id, display_name=display_name, description=description)
|
631
|
-
|
696
|
+
return self.core_client.create_eventhouse(workspace_id=self.id, display_name=display_name, description=description, definition=definition, creation_payload=creation_payload)
|
697
|
+
|
632
698
|
def get_eventhouse(self, eventhouse_id = None, eventhouse_name = None):
|
633
699
|
"""Get an eventhouse from a workspace"""
|
634
700
|
return self.core_client.get_eventhouse(workspace_id=self.id, eventhouse_id=eventhouse_id,
|
@@ -655,10 +721,11 @@ class Workspace:
|
|
655
721
|
# eventstreams
|
656
722
|
|
657
723
|
|
658
|
-
def create_eventstream(self, display_name, description = None):
|
724
|
+
def create_eventstream(self, display_name, description = None, definition = None, creation_payload = None):
|
659
725
|
"""Create an eventstream in a workspace"""
|
660
|
-
return self.core_client.create_eventstream(workspace_id=self.id, display_name=display_name,
|
661
|
-
|
726
|
+
return self.core_client.create_eventstream(workspace_id=self.id, display_name=display_name,
|
727
|
+
description=description, definition=definition, creation_payload=creation_payload)
|
728
|
+
|
662
729
|
def delete_eventstream(self, eventstream_id):
|
663
730
|
"""Delete an eventstream from a workspace"""
|
664
731
|
return self.core_client.delete_eventstream(workspace_id=self.id, eventstream_id=eventstream_id)
|
@@ -861,6 +928,62 @@ class Workspace:
|
|
861
928
|
return self.core_client.update_kql_queryset_definition(workspace_id=self.id, kql_queryset_id=kql_queryset_id,
|
862
929
|
definition=definition, update_metadata=update_metadata)
|
863
930
|
|
931
|
+
# mirrored Azure databricks catalog
|
932
|
+
def create_mirrored_azure_databricks_catalog(self, display_name, description = None, definition = None):
|
933
|
+
"""Create a mirrored Azure Databricks catalog in a workspace"""
|
934
|
+
return self.core_client.create_mirrored_azure_databricks_catalog(workspace_id=self.id, display_name=display_name,
|
935
|
+
description=description, definition=definition)
|
936
|
+
|
937
|
+
def delete_mirrored_azure_databricks_catalog(self, mirrored_azure_databricks_catalog_id):
|
938
|
+
"""Delete a mirrored Azure Databricks catalog from a workspace"""
|
939
|
+
return self.core_client.delete_mirrored_azure_databricks_catalog(workspace_id=self.id,
|
940
|
+
mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id)
|
941
|
+
def get_mirrored_azure_databricks_catalog(self, mirrored_azure_databricks_catalog_id = None,
|
942
|
+
mirrored_azure_databricks_catalog_name = None):
|
943
|
+
"""Get a mirrored Azure Databricks catalog from a workspace"""
|
944
|
+
return self.core_client.get_mirrored_azure_databricks_catalog(workspace_id=self.id,
|
945
|
+
mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
|
946
|
+
mirrored_azure_databricks_catalog_name=mirrored_azure_databricks_catalog_name)
|
947
|
+
def get_mirrored_azure_databricks_catalog_definition(self, mirrored_azure_databricks_catalog_id, format = None):
|
948
|
+
"""Get the definition of a mirrored Azure Databricks catalog from a workspace"""
|
949
|
+
return self.core_client.get_mirrored_azure_databricks_catalog_definition(workspace_id=self.id,
|
950
|
+
mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
|
951
|
+
format=format)
|
952
|
+
def list_mirrored_azure_databricks_catalogs(self, with_properties = False):
|
953
|
+
"""List mirrored Azure Databricks catalogs in a workspace"""
|
954
|
+
return self.core_client.list_mirrored_azure_databricks_catalogs(workspace_id=self.id, with_properties=with_properties)
|
955
|
+
|
956
|
+
def update_mirrored_azure_databricks_catalog(self, mirrored_azure_databricks_catalog_id, display_name = None,
|
957
|
+
description = None):
|
958
|
+
"""Update a mirrored Azure Databricks catalog in a workspace"""
|
959
|
+
return self.core_client.update_mirrored_azure_databricks_catalog(workspace_id=self.id,
|
960
|
+
mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
|
961
|
+
display_name=display_name, description=description)
|
962
|
+
def update_mirrored_azure_databricks_catalog_definition(self, mirrored_azure_databricks_catalog_id, definition,
|
963
|
+
update_metadata = None):
|
964
|
+
"""Update the definition of a mirrored Azure Databricks catalog in a workspace"""
|
965
|
+
return self.core_client.update_mirrored_azure_databricks_catalog_definition(workspace_id=self.id,
|
966
|
+
mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id,
|
967
|
+
definition=definition, update_metadata=update_metadata)
|
968
|
+
def refresh_mirrored_azure_databricks_catalog_metadata(self, mirrored_azure_databricks_catalog_id):
|
969
|
+
"""Refresh the metadata of a mirrored Azure Databricks catalog in a workspace"""
|
970
|
+
return self.core_client.refresh_mirrored_azure_databricks_catalog_metadata(workspace_id=self.id,
|
971
|
+
mirrored_azure_databricks_catalog_id=mirrored_azure_databricks_catalog_id)
|
972
|
+
|
973
|
+
def discover_mirrored_azure_databricks_catalogs(self, databricks_workspace_connection_id, max_results = None):
|
974
|
+
return self.core_client.discover_mirrored_azure_databricks_catalogs(workspace_id=self.id, databricks_workspace_connection_id=databricks_workspace_connection_id,
|
975
|
+
max_results=max_results)
|
976
|
+
|
977
|
+
def discover_mirrored_azure_databricks_catalog_schemas(self, catalog_name, databricks_workspace_connection_id, max_results = None):
|
978
|
+
return self.core_client.discover_mirrored_azure_databricks_catalog_schemas(workspace_id=self.id, catalog_name=catalog_name,
|
979
|
+
databricks_workspace_connection_id=databricks_workspace_connection_id,
|
980
|
+
max_results=max_results)
|
981
|
+
def discover_mirrored_azure_databricks_catalog_tables(self, catalog_name, schema_name, databricks_workspace_connection_id, max_results = None):
|
982
|
+
return self.core_client.discover_mirrored_azure_databricks_catalog_tables(workspace_id=self.id, catalog_name=catalog_name,
|
983
|
+
schema_name=schema_name,
|
984
|
+
databricks_workspace_connection_id=databricks_workspace_connection_id,
|
985
|
+
max_results=max_results)
|
986
|
+
|
864
987
|
# lakehouses
|
865
988
|
def run_on_demand_table_maintenance(self, lakehouse_id, execution_data,
|
866
989
|
job_type = "TableMaintenance", wait_for_completion = True):
|
@@ -869,10 +992,10 @@ class Workspace:
|
|
869
992
|
execution_data=execution_data, job_type=job_type,
|
870
993
|
wait_for_completion=wait_for_completion)
|
871
994
|
|
872
|
-
def create_lakehouse(self, display_name, description = None):
|
995
|
+
def create_lakehouse(self, display_name, description = None, creation_payload = None):
|
873
996
|
"""Create a lakehouse in a workspace"""
|
874
|
-
return self.core_client.create_lakehouse(workspace_id=self.id, display_name=display_name, description=description)
|
875
|
-
|
997
|
+
return self.core_client.create_lakehouse(workspace_id=self.id, display_name=display_name, description=description, creation_payload=creation_payload)
|
998
|
+
|
876
999
|
def delete_lakehouse(self, lakehouse_id):
|
877
1000
|
"""Delete a lakehouse from a workspace"""
|
878
1001
|
return self.core_client.delete_lakehouse(workspace_id=self.id, lakehouse_id=lakehouse_id)
|
@@ -1260,6 +1383,12 @@ class Workspace:
|
|
1260
1383
|
"""Get a livy session for a spark job definition from a workspace"""
|
1261
1384
|
return self.core_client.get_spark_job_definition_livy_session(workspace_id=self.id, spark_job_definition_id=spark_job_definition_id, livy_id=livy_id)
|
1262
1385
|
|
1386
|
+
# sql endpoint
|
1387
|
+
def refresh_sql_endpoint_metadata(self, sql_endpoint_id, preview = True, timeout = None, wait_for_completion = False):
|
1388
|
+
"""Refresh the metadata of a sql endpoint in a workspace"""
|
1389
|
+
return self.core_client.refresh_sql_endpoint_metadata(workspace_id=self.id, sql_endpoint_id=sql_endpoint_id,
|
1390
|
+
preview=preview, timeout=timeout, wait_for_completion=wait_for_completion)
|
1391
|
+
|
1263
1392
|
# sql databases
|
1264
1393
|
|
1265
1394
|
def create_sql_database(self, display_name, description = None):
|
@@ -1305,6 +1434,29 @@ class Workspace:
|
|
1305
1434
|
"""Update a warehouse in a workspace"""
|
1306
1435
|
return self.core_client.update_warehouse(workspace_id=self.id, warehouse_id=warehouse_id, display_name=display_name, description=description)
|
1307
1436
|
|
1437
|
+
def create_warehouse_snapshot(self, display_name, creation_payload, description = None, folder_id = None):
|
1438
|
+
return self.core_client.create_warehouse_snapshot(workspace_id=self.id, display_name=display_name,
|
1439
|
+
creation_payload=creation_payload, description=description,
|
1440
|
+
folder_id=folder_id)
|
1441
|
+
|
1442
|
+
def delete_warehouse_snapshot(self, warehouse_snapshot_id):
|
1443
|
+
"""Delete a warehouse snapshot from a workspace"""
|
1444
|
+
return self.core_client.delete_warehouse_snapshot(workspace_id=self.id, warehouse_snapshot_id=warehouse_snapshot_id)
|
1445
|
+
|
1446
|
+
def get_warehouse_snapshot(self, warehouse_snapshot_id = None, warehouse_snapshot_name = None):
|
1447
|
+
"""Get a warehouse snapshot from a workspace"""
|
1448
|
+
return self.core_client.get_warehouse_snapshot(workspace_id=self.id, warehouse_snapshot_id=warehouse_snapshot_id,
|
1449
|
+
warehouse_snapshot_name=warehouse_snapshot_name)
|
1450
|
+
|
1451
|
+
def list_warehouse_snapshots(self, with_properties = False):
|
1452
|
+
"""List warehouse snapshots in a workspace"""
|
1453
|
+
return self.core_client.list_warehouse_snapshots(workspace_id=self.id, with_properties=with_properties)
|
1454
|
+
|
1455
|
+
def update_warehouse_snapshot(self, warehouse_snapshot_id, display_name = None, description = None):
|
1456
|
+
"""Update a warehouse snapshot in a workspace"""
|
1457
|
+
return self.core_client.update_warehouse_snapshot(workspace_id=self.id, warehouse_snapshot_id=warehouse_snapshot_id,
|
1458
|
+
display_name=display_name, description=description)
|
1459
|
+
|
1308
1460
|
# variable libraries
|
1309
1461
|
|
1310
1462
|
def create_variable_library(self, display_name, definition = None, description = None):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: msfabricpysdkcore
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.7
|
4
4
|
Summary: A Python SDK for Microsoft Fabric
|
5
5
|
Author: Andreas Rederer
|
6
6
|
Project-URL: Homepage, https://github.com/DaSenf1860/ms-fabric-sdk-core
|
@@ -18,7 +18,7 @@ Dynamic: requires-dist
|
|
18
18
|
|
19
19
|
# Python SDK for Microsoft Fabric
|
20
20
|
|
21
|
-
This is a Python SDK for Microsoft Fabric. It is a wrapper around the REST APIs (v1) of Fabric*. It supports all Fabric REST APIs as well as Azure Resource Management APIs for Fabric (as of
|
21
|
+
This is a Python SDK for Microsoft Fabric. It is a wrapper around the REST APIs (v1) of Fabric*. It supports all Fabric REST APIs as well as Azure Resource Management APIs for Fabric (as of June 25, 2025).
|
22
22
|
|
23
23
|

|
24
24
|
|
@@ -460,6 +460,8 @@ data_share_ids = [ds['id'] for ds in data_share_list]
|
|
460
460
|
|
461
461
|
response_code = fc.revoke_external_data_share(workspace_id, item_id, data_share['id'])
|
462
462
|
|
463
|
+
# Delete
|
464
|
+
response_code = fc.delete_external_data_share(workspace_id, item_id, data_share['id'])
|
463
465
|
```
|
464
466
|
|
465
467
|
### External Data Shares Recipient
|
@@ -0,0 +1,30 @@
|
|
1
|
+
msfabricpysdkcore/__init__.py,sha256=ObRW5Q8IMqrvA6VH6zXSv3n01AzRCGjn5RojJXAR6VE,208
|
2
|
+
msfabricpysdkcore/admin_item.py,sha256=9L09Kb7kn7JW0bqVu1qPOMT6oHLduX4Q5_qhVJZTLxQ,3290
|
3
|
+
msfabricpysdkcore/admin_workspace.py,sha256=umNnIF8sf5Y8BDgfQdfG6sOZrQQc7RJINL9j8DPnm3c,3180
|
4
|
+
msfabricpysdkcore/adminapi.py,sha256=ldne1ML_t_o42WGwz9UNJM_qEaT9kjtmypexY3ECpZE,39930
|
5
|
+
msfabricpysdkcore/auth.py,sha256=Y9YUDqoArvkD7rLnbQvNBnCXqHJtw6PDRUHMx0CVMT0,4330
|
6
|
+
msfabricpysdkcore/capacity.py,sha256=Q_2-XrZtdf9F67fY0qU3D0ocEOGQq4KtIXAv9dXjQhI,1761
|
7
|
+
msfabricpysdkcore/client.py,sha256=KpHREbfzQRRighyJzyES3COZP3raK0C1-WhxGd07LHU,7890
|
8
|
+
msfabricpysdkcore/coreapi.py,sha256=NujzngKZcOEWUcd0ZRUouGbPeWnypmQCHNdtehKXhLk,302165
|
9
|
+
msfabricpysdkcore/deployment_pipeline.py,sha256=0yTLwSJZDSLF5LU882GuTs-_KZkMDP_k5l_GAV1nf-Y,10156
|
10
|
+
msfabricpysdkcore/domain.py,sha256=MAv7R64waQgI3OF1f5hmMdH98pJIb-BPTCZSvPZDzgU,7061
|
11
|
+
msfabricpysdkcore/environment.py,sha256=4k2Le1mAQIrfcpNc3n1DbgdCzAldGTSTCbiDQGk0DlA,2784
|
12
|
+
msfabricpysdkcore/eventstream.py,sha256=e9u16sVARI0yUktzY5oaj3R-QvJXGpP6lPH-TFzbVvU,4517
|
13
|
+
msfabricpysdkcore/fabric_azure_capacity.py,sha256=7JxMp9weiKG_mDjlRK-88oIXr0kdG0pzv-Ouycf3fus,2808
|
14
|
+
msfabricpysdkcore/fabric_azure_client.py,sha256=I7Z0Y8Xy_esQcPaXgPL7EAkQmoQkAklJO4hxk_90dno,10722
|
15
|
+
msfabricpysdkcore/folder.py,sha256=-nop7KsVr9Nha_tY1nlOwkpjzVd6QfaR2nZG7mgLcvU,2782
|
16
|
+
msfabricpysdkcore/item.py,sha256=75RphdDpMNMbF0Ajz35wkrpzmuLdoKeZiu671A-mw1E,9405
|
17
|
+
msfabricpysdkcore/job_instance.py,sha256=rtZp-OpuzfdMiQyuQLum38lgcfSZJTr3s9sECZglcWg,2389
|
18
|
+
msfabricpysdkcore/lakehouse.py,sha256=iYjj4EUJ9ylVw6f0BAguuFeHRxwSAIasFqbTlRIse7A,2081
|
19
|
+
msfabricpysdkcore/long_running_operation.py,sha256=XTlsueSZKVFICxhx99geEQ6btZFlFb8-lssigmQ9c6Y,2133
|
20
|
+
msfabricpysdkcore/onelakeshortcut.py,sha256=H02wR6Z86qTEJOwVRMKz1Ou3K88Y9pfJa91vizjprvo,1661
|
21
|
+
msfabricpysdkcore/otheritems.py,sha256=CXKobc2lqup3KOlqRp5yxYBM7Wvb0BLDe9F5iwEv1fc,26255
|
22
|
+
msfabricpysdkcore/spark_custom_pool.py,sha256=YsEULaQG-FO507aPIb-4kk93ZWBmDZj6fbOEHYoyxHE,3188
|
23
|
+
msfabricpysdkcore/workspace.py,sha256=YBkCK8MTIDdd_P2BGEh1JxkHb6jAolKEyOzH8STGAog,91984
|
24
|
+
msfabricpysdkcore/util/__init__.py,sha256=p-1dC4AurfKdIUppNVlRCIcmwHBTURqfgIwxcie3fEA,50
|
25
|
+
msfabricpysdkcore/util/logger.py,sha256=XXdeaqI-BhXZgacChKrWP88TPU4FTWvS8L0YWjCT54A,1166
|
26
|
+
msfabricpysdkcore-0.2.7.dist-info/licenses/LICENSE,sha256=1NrGuF-zOmzbwzk3iI6lsP9koyDeKO1B0-8OD_tTvOQ,1156
|
27
|
+
msfabricpysdkcore-0.2.7.dist-info/METADATA,sha256=dgK0MqK49iMDJMCU0MchNsouzY6ARAuN1SpFKvOoqy0,39852
|
28
|
+
msfabricpysdkcore-0.2.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
29
|
+
msfabricpysdkcore-0.2.7.dist-info/top_level.txt,sha256=3iRonu6ptDGQN4Yl6G76XGM7xbFNsskiEHW-P2gMQGY,18
|
30
|
+
msfabricpysdkcore-0.2.7.dist-info/RECORD,,
|
File without changes
|
@@ -1,174 +0,0 @@
|
|
1
|
-
import unittest
|
2
|
-
from dotenv import load_dotenv
|
3
|
-
from msfabricpysdkcore import FabricClientAdmin
|
4
|
-
|
5
|
-
load_dotenv()
|
6
|
-
|
7
|
-
class TestFabricClientCore(unittest.TestCase):
|
8
|
-
|
9
|
-
def __init__(self, *args, **kwargs):
|
10
|
-
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
11
|
-
self.fca = FabricClientAdmin()
|
12
|
-
|
13
|
-
def test_admin_api(self):
|
14
|
-
fca = self.fca
|
15
|
-
|
16
|
-
user_id = '1dc64c6e-7a10-4ea9-8488-85d0739a377d'
|
17
|
-
|
18
|
-
# List workspaces
|
19
|
-
ws = fca.list_workspaces(name="testitems")[0]
|
20
|
-
|
21
|
-
self.assertEqual(ws.name, "testitems")
|
22
|
-
|
23
|
-
# Get workspace
|
24
|
-
ws_clone = fca.get_workspace(workspace_id=ws.id)
|
25
|
-
|
26
|
-
self.assertEqual(ws.id, ws_clone.id)
|
27
|
-
|
28
|
-
# Discover git connections
|
29
|
-
|
30
|
-
git_connections = fca.discover_git_connections()
|
31
|
-
|
32
|
-
self.assertGreater(len(git_connections), 0)
|
33
|
-
|
34
|
-
git_conn = [g for g in git_connections if g['workspaceId'] == '63aa9e13-4912-4abe-9156-8a56e565b7a3'][0]
|
35
|
-
self.assertEqual(git_conn['gitProviderDetails']['ownerName'], 'DaSenf1860')
|
36
|
-
|
37
|
-
# List workspace access details
|
38
|
-
|
39
|
-
ws_access = fca.list_workspace_access_details(ws.id)
|
40
|
-
principials = ws_access["accessDetails"]
|
41
|
-
principials_ids = [p["principal"]["id"] for p in principials]
|
42
|
-
self.assertIn(user_id, principials_ids)
|
43
|
-
|
44
|
-
# Get access entities
|
45
|
-
|
46
|
-
access_entities = fca.list_access_entities(user_id, type="Notebook")
|
47
|
-
self.assertGreater(len(access_entities), 0)
|
48
|
-
|
49
|
-
# List tenant settings
|
50
|
-
|
51
|
-
settings = fca.list_tenant_settings()
|
52
|
-
monitoring_setting = [setting for setting in settings if setting['settingName'] == 'PlatformMonitoringTenantSetting'][0]
|
53
|
-
|
54
|
-
self.assertIsNotNone(monitoring_setting)
|
55
|
-
|
56
|
-
# List tenant settings capacity overrides
|
57
|
-
|
58
|
-
settings_capa = fca.list_capacities_tenant_settings_overrides()
|
59
|
-
setting = [s for s in settings_capa if s['id'] == '9E7E757D-D567-4FB3-BC4F-D230AABF2A00']
|
60
|
-
|
61
|
-
self.assertGreater(len(setting), 0)
|
62
|
-
|
63
|
-
|
64
|
-
# List tenant settings overrides on domains
|
65
|
-
|
66
|
-
domain_overrides = fca.list_domain_tenant_settings_overrides()
|
67
|
-
len(domain_overrides) == 0
|
68
|
-
self.assertEqual(len(domain_overrides), 0)
|
69
|
-
|
70
|
-
# List tenant settings overrides on workspaces
|
71
|
-
|
72
|
-
workspace_overrides = fca.list_workspace_tenant_settings_overrides()
|
73
|
-
wover = [w for w in workspace_overrides if w["id"] == "192333b2-5f89-4da5-ae69-64a3ee4c649c"]
|
74
|
-
self.assertIsNotNone(wover)
|
75
|
-
|
76
|
-
# Update tenant settings
|
77
|
-
|
78
|
-
if monitoring_setting["enabled"] == False:
|
79
|
-
changed_settings = fca.update_tenant_setting("PlatformMonitoringTenantSetting", enabled=True)
|
80
|
-
"tenantSettings" in changed_settings and len(changed_settings["tenantSettings"]) > 0 and changed_settings["tenantSettings"][0]["enabled"] == True
|
81
|
-
else:
|
82
|
-
changed_settings = fca.update_tenant_setting("PlatformMonitoringTenantSetting", enabled=False)
|
83
|
-
"tenantSettings" in changed_settings and len(changed_settings["tenantSettings"]) > 0 and changed_settings["tenantSettings"][0]["enabled"] == False
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
# Update tenant settings capacity overrides
|
88
|
-
|
89
|
-
|
90
|
-
enabledSecurityGroups = [{'graphId': '73ba0244-b701-41ed-96d9-79917b74f5f8', 'name': 'fabricadmins'}]
|
91
|
-
excludedSecurityGroups = [{'graphId': '16450670-829a-4b70-b80e-6524eea067cb', 'name': 'fabricuser'}]
|
92
|
-
feedback = fca.update_capacity_tenant_setting_override("9e7e757d-d567-4fb3-bc4f-d230aabf2a00",
|
93
|
-
"PlatformMonitoringTenantSetting",
|
94
|
-
enabled=True,
|
95
|
-
excluded_security_groups=excludedSecurityGroups,
|
96
|
-
enabled_security_groups=enabledSecurityGroups)
|
97
|
-
|
98
|
-
|
99
|
-
# List tenant settings overrides by capacity id
|
100
|
-
|
101
|
-
settings_capa = fca.list_capacity_tenant_settings_overrides_by_capacity_id("9e7e757d-d567-4fb3-bc4f-d230aabf2a00")
|
102
|
-
setting = [s for s in settings_capa if s['settingName'] == 'PlatformMonitoringTenantSetting']
|
103
|
-
|
104
|
-
self.assertGreater(len(setting), 0)
|
105
|
-
|
106
|
-
# Update tenant settings capacity overrides
|
107
|
-
|
108
|
-
status_code = fca.delete_capacity_tenant_setting_override("9e7e757d-d567-4fb3-bc4f-d230aabf2a00", "PlatformMonitoringTenantSetting")
|
109
|
-
|
110
|
-
self.assertEqual(status_code, 200)
|
111
|
-
|
112
|
-
settings = [set for set in fca.list_capacity_tenant_settings_overrides_by_capacity_id("9e7e757d-d567-4fb3-bc4f-d230aabf2a00") if set["settingName"] == "PlatformMonitoringTenantSetting"]
|
113
|
-
|
114
|
-
self.assertEqual(len(settings), 0)
|
115
|
-
|
116
|
-
self.assertIn("overrides", feedback)
|
117
|
-
self.assertGreater(len(feedback["overrides"]), 0)
|
118
|
-
self.assertEqual(feedback["overrides"][0]["enabled"], True)
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
# List items
|
127
|
-
|
128
|
-
item_list = fca.list_items(workspace_id=ws.id)
|
129
|
-
self.assertGreater(len(item_list), 0)
|
130
|
-
|
131
|
-
# Get item
|
132
|
-
|
133
|
-
item = fca.get_item(workspace_id=ws.id, item_id=item_list[0].id)
|
134
|
-
self.assertEqual(item.id, item_list[0].id)
|
135
|
-
|
136
|
-
# Get item access details
|
137
|
-
|
138
|
-
item_access = fca.list_item_access_details(workspace_id=ws.id, item_id=item_list[0].id)
|
139
|
-
principials = item_access["accessDetails"]
|
140
|
-
|
141
|
-
principials_ids = [p["principal"]["id"] for p in principials]
|
142
|
-
|
143
|
-
self.assertIn(user_id, principials_ids)
|
144
|
-
|
145
|
-
|
146
|
-
def test_labels(self):
|
147
|
-
|
148
|
-
fca = self.fca
|
149
|
-
|
150
|
-
items = [{"id": "9cdd3192-bcd0-4cbe-b945-29f5964e7ab7", "type": "Lakehouse"}]
|
151
|
-
label_id = "defa4170-0d19-0005-0007-bc88714345d2"
|
152
|
-
resp = fca.bulk_set_labels(items=items, label_id=label_id)
|
153
|
-
self.assertEqual(resp["itemsChangeLabelStatus"][0]["status"], "Succeeded")
|
154
|
-
resp = fca.bulk_remove_labels(items=items)
|
155
|
-
self.assertEqual(resp["itemsChangeLabelStatus"][0]["status"], "Succeeded")
|
156
|
-
|
157
|
-
def test_admin_external_data_shares(self):
|
158
|
-
|
159
|
-
fca = self.fca
|
160
|
-
|
161
|
-
data_shares = fca.list_external_data_shares()
|
162
|
-
ws_id = "63aa9e13-4912-4abe-9156-8a56e565b7a3"
|
163
|
-
|
164
|
-
data_shares = [d for d in data_shares if d['workspaceId'] == ws_id]
|
165
|
-
|
166
|
-
self.assertGreater(len(data_shares), 0)
|
167
|
-
# fca.revoke_external_data_share(external_data_share_id = data_shares[0]['id'],
|
168
|
-
# item_id = data_shares[0]['itemId'],
|
169
|
-
# workspace_id = data_shares[0]['workspaceId'])
|
170
|
-
# data_shares = fca.list_external_data_shares()
|
171
|
-
|
172
|
-
# data_shares = [d for d in data_shares if d['workspaceId'] == ws_id]
|
173
|
-
|
174
|
-
# self.assertEqual(data_shares[0]['status'], 'Revoked')
|
@@ -1,46 +0,0 @@
|
|
1
|
-
import unittest
|
2
|
-
from dotenv import load_dotenv
|
3
|
-
from msfabricpysdkcore import FabricClientAdmin
|
4
|
-
|
5
|
-
load_dotenv()
|
6
|
-
|
7
|
-
class TestFabricClientCore(unittest.TestCase):
|
8
|
-
|
9
|
-
def __init__(self, *args, **kwargs):
|
10
|
-
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
11
|
-
self.fca = FabricClientAdmin()
|
12
|
-
|
13
|
-
def test_admin_api(self):
|
14
|
-
fca = self.fca
|
15
|
-
|
16
|
-
sdk_tag = [tag for tag in fca.list_tags() if tag["displayName"] == "sdk_tag_temp"]
|
17
|
-
if len(sdk_tag) > 0:
|
18
|
-
sdk_tag = sdk_tag[0]
|
19
|
-
resp = fca.delete_tag(tag_id=sdk_tag["id"])
|
20
|
-
self.assertEqual(resp, 200)
|
21
|
-
|
22
|
-
new_tags = [{"displayName": "sdk_tag_temp"}]
|
23
|
-
resp = fca.bulk_create_tags(create_tags_request=new_tags)
|
24
|
-
self.assertEqual(len(resp["tags"]), 1)
|
25
|
-
resp = resp["tags"][0]
|
26
|
-
self.assertEqual(resp["displayName"], "sdk_tag_temp")
|
27
|
-
|
28
|
-
sdk_tag = [tag for tag in fca.list_tags() if tag["displayName"] == "sdk_tag_temp"]
|
29
|
-
self.assertEqual(len(sdk_tag), 1)
|
30
|
-
sdk_tag = sdk_tag[0]
|
31
|
-
|
32
|
-
self.assertIsNotNone(sdk_tag["id"])
|
33
|
-
|
34
|
-
resp = fca.update_tag(tag_id=sdk_tag["id"], display_name="sdk_tag_updated")
|
35
|
-
self.assertIsNotNone(resp["id"])
|
36
|
-
self.assertEqual(resp["displayName"], "sdk_tag_updated")
|
37
|
-
|
38
|
-
|
39
|
-
resp = fca.delete_tag(tag_id=resp["id"])
|
40
|
-
self.assertEqual(resp, 200)
|
41
|
-
|
42
|
-
sdk_tag = [tag for tag in fca.list_tags() if tag["displayName"] == "sdk_tag_temp"]
|
43
|
-
self.assertEqual(len(sdk_tag), 0)
|
44
|
-
|
45
|
-
|
46
|
-
|