msfabricpysdkcore 0.2.7__tar.gz → 0.2.8__tar.gz
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-0.2.7 → msfabricpysdkcore-0.2.8}/PKG-INFO +1 -1
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/coreapi.py +6 -6
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/__init__.py +0 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_admin_apis.py +174 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_admin_tags.py +46 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_apache_airflow_job.py +60 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_connection.py +111 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_copy_jobs.py +60 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_dataflows.py +60 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_datapipelines.py +60 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_deployment_pipelinev2.py +135 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_digital_twin_builder.py +60 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_domains.py +119 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_environments.py +121 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_evenstreams.py +57 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_eventhouses.py +63 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_eventstream_topology.py +82 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_external_data_shares.py +51 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_fabric_azure_client.py +80 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_folders.py +56 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_gateways.py +99 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_git.py +66 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_graphqlapi.py +44 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_items.py +97 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_jobs.py +98 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_kql_dashboards.py +63 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_kql_queryset.py +60 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_kqldatabases.py +56 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_lakehouse.py +89 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_managed_private_endpoints.py +62 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_mirrored_azuredatabricks_catalog.py +81 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_mirroreddatabases.py +80 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_ml_experiments.py +45 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_ml_models.py +46 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_mounted_adf.py +64 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_notebooks.py +58 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_one_lake_data_access_security.py +63 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_other_items.py +45 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_reflex.py +56 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_reports.py +56 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_semantic_model.py +56 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_shortcuts.py +59 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_spark.py +91 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_sparkjobdefinition.py +55 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_sql_endpoint.py +28 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_sqldatabases.py +45 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_tags.py +28 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_variable_libary.py +61 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_warehouses.py +50 -0
- msfabricpysdkcore-0.2.8/msfabricpysdkcore/tests/test_workspaces_capacities.py +159 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/workspace.py +22 -4
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore.egg-info/PKG-INFO +1 -1
- msfabricpysdkcore-0.2.8/msfabricpysdkcore.egg-info/SOURCES.txt +82 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/pyproject.toml +1 -1
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/setup.py +1 -1
- msfabricpysdkcore-0.2.7/msfabricpysdkcore.egg-info/SOURCES.txt +0 -34
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/LICENSE +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/README.md +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/__init__.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/admin_item.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/admin_workspace.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/adminapi.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/auth.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/capacity.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/client.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/deployment_pipeline.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/domain.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/environment.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/eventstream.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/fabric_azure_capacity.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/fabric_azure_client.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/folder.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/item.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/job_instance.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/lakehouse.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/long_running_operation.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/onelakeshortcut.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/otheritems.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/spark_custom_pool.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/util/__init__.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore/util/logger.py +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore.egg-info/dependency_links.txt +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore.egg-info/requires.txt +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/msfabricpysdkcore.egg-info/top_level.txt +0 -0
- {msfabricpysdkcore-0.2.7 → msfabricpysdkcore-0.2.8}/setup.cfg +0 -0
@@ -2267,7 +2267,7 @@ class FabricClientCore(FabricClient):
|
|
2267
2267
|
|
2268
2268
|
return response
|
2269
2269
|
|
2270
|
-
def get_workspace(self, id = None, name = None):
|
2270
|
+
def get_workspace(self, id = None, name = None, return_item=True):
|
2271
2271
|
"""Get workspace by id or name
|
2272
2272
|
Args:
|
2273
2273
|
id (str): The ID of the workspace
|
@@ -2278,12 +2278,12 @@ class FabricClientCore(FabricClient):
|
|
2278
2278
|
ValueError: If neither id nor name is provided
|
2279
2279
|
"""
|
2280
2280
|
if id:
|
2281
|
-
return self.get_workspace_by_id(id)
|
2281
|
+
return self.get_workspace_by_id(id, return_item=return_item)
|
2282
2282
|
if name:
|
2283
2283
|
return self.get_workspace_by_name(name)
|
2284
2284
|
raise ValueError("Either id or name must be provided")
|
2285
2285
|
|
2286
|
-
def get_workspace_by_id(self, id):
|
2286
|
+
def get_workspace_by_id(self, id, return_item=True):
|
2287
2287
|
"""Get workspace by id
|
2288
2288
|
Args:
|
2289
2289
|
id (str): The ID of the workspace
|
@@ -2296,9 +2296,9 @@ class FabricClientCore(FabricClient):
|
|
2296
2296
|
|
2297
2297
|
ws_dict = self.calling_routine(url, operation="GET", response_codes=[200, 404], error_message="Error getting workspace", return_format="json")
|
2298
2298
|
|
2299
|
-
|
2300
|
-
|
2301
|
-
return
|
2299
|
+
if return_item:
|
2300
|
+
return Workspace.from_dict(ws_dict, core_client=self)
|
2301
|
+
return ws_dict
|
2302
2302
|
|
2303
2303
|
def get_workspace_by_name(self, name):
|
2304
2304
|
"""Get workspace by name
|
File without changes
|
@@ -0,0 +1,174 @@
|
|
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": "e79d7a0e-1741-4ddf-a705-b861f2775f97", "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 = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
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')
|
@@ -0,0 +1,46 @@
|
|
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
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from msfabricpysdkcore import FabricClientCore
|
4
|
+
from datetime import datetime
|
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.fcc = FabricClientCore()
|
12
|
+
|
13
|
+
def test_apache_airflow_job(self):
|
14
|
+
fcc = self.fcc
|
15
|
+
|
16
|
+
workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
17
|
+
item_id = "4e685286-d909-4ccb-911f-590ee3c3df14"
|
18
|
+
|
19
|
+
apache_airflow_job = fcc.list_apache_airflow_jobs(workspace_id=workspace_id)
|
20
|
+
for apache_airflow_job in apache_airflow_job:
|
21
|
+
if apache_airflow_job.id != item_id:
|
22
|
+
resp = fcc.delete_apache_airflow_job(workspace_id=workspace_id, apache_airflow_job_id=apache_airflow_job.id)
|
23
|
+
self.assertEqual(resp, 200)
|
24
|
+
|
25
|
+
apache_airflow_job_definition = fcc.get_apache_airflow_job_definition(workspace_id=workspace_id, apache_airflow_job_id=item_id)
|
26
|
+
self.assertIn("definition", apache_airflow_job_definition)
|
27
|
+
definition = apache_airflow_job_definition["definition"]
|
28
|
+
|
29
|
+
date_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
30
|
+
date_str = date_str.replace(" ", "T").replace(":", "").replace("-", "")
|
31
|
+
date_str = f"copyjob{date_str}"
|
32
|
+
|
33
|
+
apache_airflow_job_new = fcc.create_apache_airflow_job(workspace_id=workspace_id, display_name=date_str, definition=definition)
|
34
|
+
|
35
|
+
self.assertEqual(apache_airflow_job_new.display_name, date_str)
|
36
|
+
|
37
|
+
apache_airflow_job_get = fcc.get_apache_airflow_job(workspace_id=workspace_id, apache_airflow_job_id=apache_airflow_job_new.id)
|
38
|
+
self.assertEqual(apache_airflow_job_get.display_name, date_str)
|
39
|
+
|
40
|
+
apache_airflow_job = fcc.list_apache_airflow_jobs(workspace_id=workspace_id)
|
41
|
+
self.assertEqual(len(apache_airflow_job), 2)
|
42
|
+
|
43
|
+
date_str_updated = date_str + "_updated"
|
44
|
+
apache_airflow_job_updated = fcc.update_apache_airflow_job(workspace_id=workspace_id, apache_airflow_job_id=apache_airflow_job_new.id, display_name=date_str_updated, return_item=True)
|
45
|
+
self.assertEqual(apache_airflow_job_updated.display_name, date_str_updated)
|
46
|
+
|
47
|
+
apache_airflow_job_updated = fcc.update_apache_airflow_job_definition(workspace_id=workspace_id, apache_airflow_job_id=apache_airflow_job_new.id, definition=definition)
|
48
|
+
self.assertEqual(apache_airflow_job_updated.status_code, 200)
|
49
|
+
|
50
|
+
for apache_airflow_job in apache_airflow_job:
|
51
|
+
if apache_airflow_job.id != item_id:
|
52
|
+
resp = fcc.delete_apache_airflow_job(workspace_id=workspace_id, apache_airflow_job_id=apache_airflow_job.id)
|
53
|
+
self.assertEqual(resp, 200)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,111 @@
|
|
1
|
+
import unittest
|
2
|
+
from datetime import datetime
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
class TestFabricClientCore(unittest.TestCase):
|
10
|
+
|
11
|
+
def __init__(self, *args, **kwargs):
|
12
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
13
|
+
#load_dotenv()
|
14
|
+
self.fc = FabricClientCore()
|
15
|
+
|
16
|
+
def test_connection(self):
|
17
|
+
|
18
|
+
datetime_str = datetime.now().strftime("%Y%m%H%M%S")
|
19
|
+
datetime_str
|
20
|
+
fc = self.fc
|
21
|
+
|
22
|
+
# display_name = "ContosoCloudConnection" + datetime_str
|
23
|
+
|
24
|
+
# cr = {"connectivityType": "ShareableCloud",
|
25
|
+
# "displayName": display_name,
|
26
|
+
# "connectionDetails": {
|
27
|
+
# 'type': "SQL",
|
28
|
+
# 'creationMethod': 'SQL',
|
29
|
+
# "parameters": [
|
30
|
+
# {
|
31
|
+
# "dataType": "Text",
|
32
|
+
# "name": "server",
|
33
|
+
# "value": "dfsdemo.database.windows.net"
|
34
|
+
# },
|
35
|
+
# {
|
36
|
+
# "dataType": "Text",
|
37
|
+
# "name": "database",
|
38
|
+
# "value": "dfsdemo"
|
39
|
+
# }
|
40
|
+
# ]},
|
41
|
+
# 'privacyLevel': 'Organizational',
|
42
|
+
# 'credentialDetails': {'credentials':{'credentialType': 'Basic',
|
43
|
+
# 'userName': 'new_user',
|
44
|
+
# 'password': 'StrongPassword123!'},
|
45
|
+
# 'singleSignOnType': 'None',
|
46
|
+
# 'connectionEncryption': 'NotEncrypted',
|
47
|
+
# 'skipTestConnection': False}
|
48
|
+
# }
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
# connection = fc.create_connection(connection_request=cr)
|
53
|
+
# self.assertIsNotNone(connection)
|
54
|
+
# self.assertIn('id', connection)
|
55
|
+
# self.assertIn('displayName', connection)
|
56
|
+
# self.assertEqual(connection['displayName'], display_name)
|
57
|
+
|
58
|
+
# connection2 = fc.get_connection(connection_name=display_name)
|
59
|
+
# self.assertEqual(connection['id'], connection2['id'])
|
60
|
+
|
61
|
+
|
62
|
+
# connections = fc.list_connections()
|
63
|
+
# connection_names = [conn['displayName'] for conn in connections]
|
64
|
+
# self.assertIn(display_name, connection_names)
|
65
|
+
|
66
|
+
# id = connection['id']
|
67
|
+
|
68
|
+
# role_assis = fc.list_connection_role_assignments(connection_id=id)
|
69
|
+
# self.assertEqual(len(role_assis), 1)
|
70
|
+
|
71
|
+
# principal = {"id" : "755f273c-98f8-408c-a886-691794938bd8",
|
72
|
+
# "type" : "ServicePrincipal"}
|
73
|
+
|
74
|
+
# add_role_assi = fc.add_connection_role_assignment(connection_id=id, principal=principal, role='User')
|
75
|
+
# self.assertIsNotNone(add_role_assi)
|
76
|
+
# self.assertIn('id', add_role_assi)
|
77
|
+
# role_assi_id = add_role_assi['id']
|
78
|
+
|
79
|
+
# role_assis = fc.list_connection_role_assignments(connection_id=id)
|
80
|
+
# self.assertEqual(len(role_assis), 2)
|
81
|
+
|
82
|
+
# role_assi = fc.get_connection_role_assignment(connection_id=id,
|
83
|
+
# connection_role_assignment_id=role_assi_id)
|
84
|
+
# self.assertEqual(role_assi['id'], role_assi_id)
|
85
|
+
|
86
|
+
# role_assi = fc.update_connection_role_assignment(connection_id=id,
|
87
|
+
# connection_role_assignment_id=role_assi_id,
|
88
|
+
# role='UserWithReshare')
|
89
|
+
# self.assertEqual(role_assi['role'], 'UserWithReshare')
|
90
|
+
|
91
|
+
# status_code = fc.delete_connection_role_assignment(connection_id=id,
|
92
|
+
# connection_role_assignment_id=role_assi_id)
|
93
|
+
# self.assertEqual(status_code, 200)
|
94
|
+
|
95
|
+
|
96
|
+
# cr = {
|
97
|
+
# "connectivityType": "ShareableCloud",
|
98
|
+
# "displayName": f"sqlserver{datetime_str}"
|
99
|
+
# }
|
100
|
+
|
101
|
+
# updated_connection = fc.update_connection(connection_id=id, connection_request=cr)
|
102
|
+
# self.assertIsNotNone(updated_connection)
|
103
|
+
|
104
|
+
|
105
|
+
# connection2 = fc.get_connection(connection_id=id)
|
106
|
+
# self.assertEqual(connection['id'], connection2['id'])
|
107
|
+
# self.assertEqual(connection2['displayName'], f"sqlserver{datetime_str}")
|
108
|
+
|
109
|
+
# status_code = fc.delete_connection(connection_id=id)
|
110
|
+
# self.assertEqual(status_code, 200)
|
111
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from msfabricpysdkcore import FabricClientCore
|
4
|
+
from datetime import datetime
|
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.fcc = FabricClientCore()
|
12
|
+
|
13
|
+
def test_copy_jobs(self):
|
14
|
+
fcc = self.fcc
|
15
|
+
|
16
|
+
workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
17
|
+
item_id = "a9e59ec1-524b-49b1-a185-37e47dc0ceb9"
|
18
|
+
|
19
|
+
copy_jobs = fcc.list_copy_jobs(workspace_id=workspace_id)
|
20
|
+
for copy_job in copy_jobs:
|
21
|
+
if copy_job.id != item_id:
|
22
|
+
resp = fcc.delete_copy_job(workspace_id=workspace_id, copy_job_id=copy_job.id)
|
23
|
+
self.assertEqual(resp, 200)
|
24
|
+
|
25
|
+
copy_job_definition = fcc.get_copy_job_definition(workspace_id=workspace_id, copy_job_id=item_id)
|
26
|
+
self.assertIn("definition", copy_job_definition)
|
27
|
+
definition = copy_job_definition["definition"]
|
28
|
+
|
29
|
+
date_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
30
|
+
date_str = date_str.replace(" ", "T").replace(":", "").replace("-", "")
|
31
|
+
date_str = f"copyjob{date_str}"
|
32
|
+
|
33
|
+
copy_job_new = fcc.create_copy_job(workspace_id=workspace_id, display_name=date_str, definition=definition)
|
34
|
+
|
35
|
+
self.assertEqual(copy_job_new.display_name, date_str)
|
36
|
+
|
37
|
+
copy_job_get = fcc.get_copy_job(workspace_id=workspace_id, copy_job_id=copy_job_new.id)
|
38
|
+
self.assertEqual(copy_job_get.display_name, date_str)
|
39
|
+
|
40
|
+
copy_jobs = fcc.list_copy_jobs(workspace_id=workspace_id)
|
41
|
+
self.assertEqual(len(copy_jobs), 2)
|
42
|
+
|
43
|
+
date_str_updated = date_str + "_updated"
|
44
|
+
copy_job_updated = fcc.update_copy_job(workspace_id=workspace_id, copy_job_id=copy_job_new.id, display_name=date_str_updated, return_item=True)
|
45
|
+
self.assertEqual(copy_job_updated.display_name, date_str_updated)
|
46
|
+
|
47
|
+
copy_job_updated = fcc.update_copy_job_definition(workspace_id=workspace_id, copy_job_id=copy_job_new.id, definition=definition)
|
48
|
+
self.assertEqual(copy_job_updated.status_code, 200)
|
49
|
+
|
50
|
+
for copy_job in copy_jobs:
|
51
|
+
if copy_job.id != item_id:
|
52
|
+
resp = fcc.delete_copy_job(workspace_id=workspace_id, copy_job_id=copy_job.id)
|
53
|
+
self.assertEqual(resp, 200)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from msfabricpysdkcore import FabricClientCore
|
4
|
+
from datetime import datetime
|
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.fcc = FabricClientCore()
|
12
|
+
|
13
|
+
def test_dataflows(self):
|
14
|
+
fcc = self.fcc
|
15
|
+
|
16
|
+
workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
17
|
+
item_id = "8bc6f2f1-2ef9-4dc1-ab47-f55aa90e4088"
|
18
|
+
|
19
|
+
dataflows = fcc.list_dataflows(workspace_id=workspace_id)
|
20
|
+
for dataflow in dataflows:
|
21
|
+
if dataflow.id != item_id:
|
22
|
+
resp = fcc.delete_dataflow(workspace_id=workspace_id, dataflow_id=dataflow.id)
|
23
|
+
self.assertEqual(resp, 200)
|
24
|
+
|
25
|
+
dataflow_definition = fcc.get_dataflow_definition(workspace_id=workspace_id, dataflow_id=item_id)
|
26
|
+
self.assertIn("definition", dataflow_definition)
|
27
|
+
definition = dataflow_definition["definition"]
|
28
|
+
|
29
|
+
date_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
30
|
+
date_str = date_str.replace(" ", "T").replace(":", "").replace("-", "")
|
31
|
+
date_str = f"dataflow{date_str}"
|
32
|
+
|
33
|
+
dataflow_new = fcc.create_dataflow(workspace_id=workspace_id, display_name=date_str, definition=definition)
|
34
|
+
|
35
|
+
self.assertEqual(dataflow_new.display_name, date_str)
|
36
|
+
|
37
|
+
dataflow_get = fcc.get_dataflow(workspace_id=workspace_id, dataflow_id=dataflow_new.id)
|
38
|
+
self.assertEqual(dataflow_get.display_name, date_str)
|
39
|
+
|
40
|
+
dataflows = fcc.list_dataflows(workspace_id=workspace_id)
|
41
|
+
self.assertEqual(len(dataflows), 2)
|
42
|
+
|
43
|
+
date_str_updated = date_str + "_updated"
|
44
|
+
dataflow_updated = fcc.update_dataflow(workspace_id=workspace_id, dataflow_id=dataflow_new.id, display_name=date_str_updated, return_item=True)
|
45
|
+
self.assertEqual(dataflow_updated.display_name, date_str_updated)
|
46
|
+
|
47
|
+
dataflow_updated = fcc.update_dataflow_definition(workspace_id=workspace_id, dataflow_id=dataflow_new.id, definition=definition)
|
48
|
+
self.assertEqual(dataflow_updated.status_code, 200)
|
49
|
+
|
50
|
+
for dataflow in dataflows:
|
51
|
+
if dataflow.id != item_id:
|
52
|
+
resp = fcc.delete_dataflow(workspace_id=workspace_id, dataflow_id=dataflow.id)
|
53
|
+
self.assertEqual(resp, 200)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from msfabricpysdkcore import FabricClientCore
|
4
|
+
from datetime import datetime
|
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.fcc = FabricClientCore()
|
12
|
+
|
13
|
+
def test_data_pipelines(self):
|
14
|
+
fcc = self.fcc
|
15
|
+
|
16
|
+
workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
17
|
+
item_id = "b7746e38-5409-487a-969c-fb7cb026b5d3"
|
18
|
+
|
19
|
+
data_pipelines = fcc.list_data_pipelines(workspace_id=workspace_id)
|
20
|
+
for data_pipeline in data_pipelines:
|
21
|
+
if data_pipeline.id != item_id:
|
22
|
+
resp = fcc.delete_data_pipeline(workspace_id=workspace_id, data_pipeline_id=data_pipeline.id)
|
23
|
+
self.assertEqual(resp, 200)
|
24
|
+
|
25
|
+
data_pipeline_definition = fcc.get_data_pipeline_definition(workspace_id=workspace_id, data_pipeline_id=item_id)
|
26
|
+
self.assertIn("definition", data_pipeline_definition)
|
27
|
+
definition = data_pipeline_definition["definition"]
|
28
|
+
|
29
|
+
date_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
30
|
+
date_str = date_str.replace(" ", "T").replace(":", "").replace("-", "")
|
31
|
+
date_str = f"data_pipeline{date_str}"
|
32
|
+
|
33
|
+
data_pipeline_new = fcc.create_data_pipeline(workspace_id=workspace_id, display_name=date_str, definition=definition)
|
34
|
+
|
35
|
+
self.assertEqual(data_pipeline_new.display_name, date_str)
|
36
|
+
|
37
|
+
data_pipeline_get = fcc.get_data_pipeline(workspace_id=workspace_id, data_pipeline_id=data_pipeline_new.id)
|
38
|
+
self.assertEqual(data_pipeline_get.display_name, date_str)
|
39
|
+
|
40
|
+
data_pipelines = fcc.list_data_pipelines(workspace_id=workspace_id)
|
41
|
+
self.assertEqual(len(data_pipelines), 2)
|
42
|
+
|
43
|
+
date_str_updated = date_str + "_updated"
|
44
|
+
data_pipeline_updated = fcc.update_data_pipeline(workspace_id=workspace_id, data_pipeline_id=data_pipeline_new.id, display_name=date_str_updated, return_item=True)
|
45
|
+
self.assertEqual(data_pipeline_updated.display_name, date_str_updated)
|
46
|
+
|
47
|
+
data_pipeline_updated = fcc.update_data_pipeline_definition(workspace_id=workspace_id, data_pipeline_id=data_pipeline_new.id, definition=definition)
|
48
|
+
self.assertEqual(data_pipeline_updated.status_code, 200)
|
49
|
+
|
50
|
+
for data_pipeline in data_pipelines:
|
51
|
+
if data_pipeline.id != item_id:
|
52
|
+
resp = fcc.delete_data_pipeline(workspace_id=workspace_id, data_pipeline_id=data_pipeline.id)
|
53
|
+
self.assertEqual(resp, 200)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|