msfabricpysdkcore 0.0.13__py3-none-any.whl → 0.1.2__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/__init__.py +2 -1
- msfabricpysdkcore/admin_item.py +19 -45
- msfabricpysdkcore/admin_workspace.py +13 -60
- msfabricpysdkcore/adminapi.py +401 -476
- msfabricpysdkcore/auth.py +10 -6
- msfabricpysdkcore/client.py +124 -7
- msfabricpysdkcore/coreapi.py +2570 -822
- msfabricpysdkcore/deployment_pipeline.py +34 -146
- msfabricpysdkcore/domain.py +20 -219
- msfabricpysdkcore/environment.py +13 -172
- msfabricpysdkcore/fabric_azure_capacity.py +77 -0
- msfabricpysdkcore/fabric_azure_client.py +228 -0
- msfabricpysdkcore/item.py +55 -331
- msfabricpysdkcore/job_instance.py +8 -22
- msfabricpysdkcore/lakehouse.py +9 -118
- msfabricpysdkcore/long_running_operation.py +7 -37
- msfabricpysdkcore/onelakeshortcut.py +7 -21
- msfabricpysdkcore/otheritems.py +66 -91
- msfabricpysdkcore/spark_custom_pool.py +7 -47
- msfabricpysdkcore/tests/test_admin_apis.py +9 -10
- msfabricpysdkcore/tests/test_datapipelines.py +15 -18
- msfabricpysdkcore/tests/test_deployment_pipeline.py +3 -3
- msfabricpysdkcore/tests/test_domains.py +6 -5
- msfabricpysdkcore/tests/test_environments.py +54 -5
- msfabricpysdkcore/tests/test_evenhouses.py +47 -0
- msfabricpysdkcore/tests/test_evenstreams.py +20 -20
- msfabricpysdkcore/tests/test_external_data_shares.py +3 -3
- msfabricpysdkcore/tests/test_fabric_azure_client.py +78 -0
- msfabricpysdkcore/tests/test_git.py +8 -9
- msfabricpysdkcore/tests/test_items.py +81 -0
- msfabricpysdkcore/tests/test_jobs.py +2 -2
- msfabricpysdkcore/tests/test_kql_queryset.py +49 -0
- msfabricpysdkcore/tests/test_kqldatabases.py +3 -3
- msfabricpysdkcore/tests/test_lakehouse.py +84 -0
- msfabricpysdkcore/tests/test_ml_experiments.py +47 -0
- msfabricpysdkcore/tests/test_ml_models.py +47 -0
- msfabricpysdkcore/tests/test_notebooks.py +57 -0
- msfabricpysdkcore/tests/test_one_lake_data_access_security.py +2 -4
- msfabricpysdkcore/tests/test_other_items.py +45 -0
- msfabricpysdkcore/tests/test_reports.py +52 -0
- msfabricpysdkcore/tests/test_semantic_model.py +50 -0
- msfabricpysdkcore/tests/test_shortcuts.py +4 -4
- msfabricpysdkcore/tests/test_spark.py +9 -9
- msfabricpysdkcore/tests/test_sparkjobdefinition.py +2 -2
- msfabricpysdkcore/tests/test_warehouses.py +50 -0
- msfabricpysdkcore/tests/test_workspaces_capacities.py +16 -13
- msfabricpysdkcore/workspace.py +397 -1163
- {msfabricpysdkcore-0.0.13.dist-info → msfabricpysdkcore-0.1.2.dist-info}/METADATA +72 -10
- msfabricpysdkcore-0.1.2.dist-info/RECORD +55 -0
- {msfabricpysdkcore-0.0.13.dist-info → msfabricpysdkcore-0.1.2.dist-info}/WHEEL +1 -1
- msfabricpysdkcore-0.0.13.dist-info/RECORD +0 -41
- {msfabricpysdkcore-0.0.13.dist-info → msfabricpysdkcore-0.1.2.dist-info}/LICENSE +0 -0
- {msfabricpysdkcore-0.0.13.dist-info → msfabricpysdkcore-0.1.2.dist-info}/top_level.txt +0 -0
@@ -32,7 +32,7 @@ class TestFabricClientCore(unittest.TestCase):
|
|
32
32
|
self.assertEqual(pipe.display_name, 'sdkpipe')
|
33
33
|
self.assertEqual(pipe.id, pipe_id)
|
34
34
|
|
35
|
-
stages = fc.
|
35
|
+
stages = fc.list_deployment_pipeline_stages(pipe_id)
|
36
36
|
|
37
37
|
self.assertGreater(len(stages), 0)
|
38
38
|
names = [stage.display_name for stage in stages]
|
@@ -42,12 +42,12 @@ class TestFabricClientCore(unittest.TestCase):
|
|
42
42
|
dev_stage = [stage for stage in stages if stage.display_name == "Development"][0]
|
43
43
|
prod_stage = [stage for stage in stages if stage.display_name == "Production"][0]
|
44
44
|
|
45
|
-
items = fc.
|
45
|
+
items = fc.list_deployment_pipeline_stages_items(deployment_pipeline_id=pipe_id, stage_id=dev_stage.id)
|
46
46
|
|
47
47
|
self.assertGreater(len(items), 0)
|
48
48
|
self.assertIn("cicdlakehouse", [item["itemDisplayName"] for item in items])
|
49
49
|
|
50
|
-
items = [item for item in dev_stage.
|
50
|
+
items = [item for item in dev_stage.list_items() if item["itemDisplayName"] == 'cicdlakehouse']
|
51
51
|
item = items[0]
|
52
52
|
item = {"sourceItemId": item["itemId"],
|
53
53
|
"itemType": item["itemType"]}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import unittest
|
2
2
|
from dotenv import load_dotenv
|
3
|
+
from datetime import datetime
|
3
4
|
from msfabricpysdkcore import FabricClientCore, FabricClientAdmin
|
4
5
|
|
5
6
|
|
@@ -17,7 +18,7 @@ class TestFabricClientCore(unittest.TestCase):
|
|
17
18
|
|
18
19
|
ws = fcc.get_workspace_by_name("sdktestdomains")
|
19
20
|
cap = fcc.get_capacity(capacity_id=ws.capacity_id)
|
20
|
-
principal = {'id': '
|
21
|
+
principal = {'id': '1dc64c6e-7a10-4ea9-8488-85d0739a377d', 'type': 'User'}
|
21
22
|
|
22
23
|
# Delete if exists
|
23
24
|
try:
|
@@ -32,7 +33,7 @@ class TestFabricClientCore(unittest.TestCase):
|
|
32
33
|
pass
|
33
34
|
|
34
35
|
# Create domain
|
35
|
-
domain_name = "sdktestdomains"
|
36
|
+
domain_name = "sdktestdomains" + datetime.now().strftime("%Y%m%d%H%M%S")
|
36
37
|
domain = fca.create_domain(display_name=domain_name)
|
37
38
|
self.assertIsNotNone(domain.id)
|
38
39
|
self.assertEqual(domain.display_name, domain_name)
|
@@ -54,8 +55,8 @@ class TestFabricClientCore(unittest.TestCase):
|
|
54
55
|
self.assertIn(domain.id, domains_ids)
|
55
56
|
|
56
57
|
# Update domain
|
57
|
-
domain_new_name = "
|
58
|
-
domain_clone = fca.update_domain(domain.id, display_name=domain_new_name)
|
58
|
+
domain_new_name = f"{domain_name}2"
|
59
|
+
domain_clone = fca.update_domain(domain.id, display_name=domain_new_name, return_item=True)
|
59
60
|
self.assertEqual(domain_clone.display_name, domain_new_name)
|
60
61
|
|
61
62
|
# Assign domain workspaces by Ids
|
@@ -103,7 +104,7 @@ class TestFabricClientCore(unittest.TestCase):
|
|
103
104
|
|
104
105
|
# Role assignments bulk assign
|
105
106
|
|
106
|
-
principal_2 = {'id': '
|
107
|
+
principal_2 = {'id': 'e0505016-ef55-4ca7-b106-e085cc201823', 'type': 'User'}
|
107
108
|
principals = [principal, principal_2]
|
108
109
|
|
109
110
|
status_code = fca.role_assignments_bulk_assign(domain.id, "Contributors", principals)
|
@@ -14,7 +14,7 @@ class TestFabricClientCore(unittest.TestCase):
|
|
14
14
|
|
15
15
|
def test_environments_crudl(self):
|
16
16
|
fc = self.fc
|
17
|
-
workspace_id = '
|
17
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
18
18
|
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
19
19
|
|
20
20
|
env_name = "env" + datetime_str
|
@@ -30,7 +30,7 @@ class TestFabricClientCore(unittest.TestCase):
|
|
30
30
|
self.assertIsNotNone(env.id)
|
31
31
|
self.assertEqual(env.display_name, env_name)
|
32
32
|
new_name = env_name + "2"
|
33
|
-
env2 = fc.update_environment(workspace_id, env.id, display_name=new_name)
|
33
|
+
env2 = fc.update_environment(workspace_id, env.id, display_name=new_name, return_item=True)
|
34
34
|
|
35
35
|
env = fc.get_environment(workspace_id, environment_id=env.id)
|
36
36
|
self.assertEqual(env.display_name, new_name)
|
@@ -41,8 +41,8 @@ class TestFabricClientCore(unittest.TestCase):
|
|
41
41
|
|
42
42
|
def test_environment_details(self):
|
43
43
|
fc = FabricClientCore()
|
44
|
-
workspace_id = '
|
45
|
-
environment_id = '
|
44
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
45
|
+
environment_id = '5648be67-28fa-48b6-9d1f-3c87c3704d3c'
|
46
46
|
published_settings = fc.get_published_settings(workspace_id=workspace_id, environment_id=environment_id)
|
47
47
|
self.assertIsNotNone(published_settings)
|
48
48
|
self.assertIn("instancePool", published_settings)
|
@@ -62,4 +62,53 @@ class TestFabricClientCore(unittest.TestCase):
|
|
62
62
|
updated_settings = fc.get_staging_settings(workspace_id=workspace_id, environment_id=environment_id)
|
63
63
|
self.assertIn("instancePool", updated_settings)
|
64
64
|
self.assertIn("dynamicExecutorAllocation", updated_settings)
|
65
|
-
self.assertEqual(updated_settings["driverCores"], driver_cores)
|
65
|
+
self.assertEqual(updated_settings["driverCores"], driver_cores)
|
66
|
+
|
67
|
+
|
68
|
+
def test_environment_spark_libraries(self):
|
69
|
+
fc = self.fc
|
70
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
71
|
+
environment_id = '5648be67-28fa-48b6-9d1f-3c87c3704d3c'
|
72
|
+
|
73
|
+
resp = fc.get_published_libraries(workspace_id, environment_id)
|
74
|
+
self.assertIn('customLibraries', resp)
|
75
|
+
self.assertIn('wheelFiles', resp['customLibraries'])
|
76
|
+
self.assertIn('msfabricpysdkcore-0.1.1-py3-none-any.whl', resp['customLibraries']['wheelFiles'])
|
77
|
+
|
78
|
+
resp = fc.upload_staging_library(workspace_id, environment_id, 'dummy.whl')
|
79
|
+
self.assertEqual(resp.status_code, 200)
|
80
|
+
|
81
|
+
resp = fc.get_staging_libraries(workspace_id, environment_id)
|
82
|
+
|
83
|
+
self.assertIn('customLibraries', resp)
|
84
|
+
self.assertIn('wheelFiles', resp['customLibraries'])
|
85
|
+
self.assertIn('dummy.whl', resp['customLibraries']['wheelFiles'])
|
86
|
+
self.assertIn('staging.whl', resp['customLibraries']['wheelFiles'])
|
87
|
+
|
88
|
+
|
89
|
+
resp = fc.publish_environment(workspace_id, environment_id)
|
90
|
+
self.assertIn('publishDetails', resp)
|
91
|
+
self.assertIn('state', resp['publishDetails'])
|
92
|
+
self.assertEqual(resp['publishDetails']['state'], 'running')
|
93
|
+
|
94
|
+
|
95
|
+
resp = fc.cancel_publish(workspace_id, environment_id)
|
96
|
+
self.assertIn('publishDetails', resp)
|
97
|
+
self.assertIn('state', resp['publishDetails'])
|
98
|
+
self.assertEqual(resp['publishDetails']['state'], 'cancelled')
|
99
|
+
|
100
|
+
resp = fc.delete_staging_library(workspace_id, environment_id, 'dummy.whl')
|
101
|
+
self.assertEqual(resp.status_code, 200)
|
102
|
+
|
103
|
+
resp = fc.get_staging_libraries(workspace_id, environment_id)
|
104
|
+
|
105
|
+
self.assertIn('customLibraries', resp)
|
106
|
+
self.assertIn('wheelFiles', resp['customLibraries'])
|
107
|
+
self.assertNotIn('dummy.whl', resp['customLibraries']['wheelFiles'])
|
108
|
+
self.assertIn('staging.whl', resp['customLibraries']['wheelFiles'])
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
|
@@ -0,0 +1,47 @@
|
|
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
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
def test_eventhouses(self):
|
23
|
+
|
24
|
+
fc = self.fc
|
25
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
26
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
27
|
+
eventhouse_name = "evh" + datetime_str
|
28
|
+
eventhouse1 = fc.create_eventhouse(workspace_id, display_name=eventhouse_name)
|
29
|
+
self.assertEqual(eventhouse1.display_name, eventhouse_name)
|
30
|
+
|
31
|
+
eventhouses = fc.list_eventhouses(workspace_id)
|
32
|
+
eventhouse_names = [eh.display_name for eh in eventhouses]
|
33
|
+
self.assertGreater(len(eventhouses), 0)
|
34
|
+
self.assertIn(eventhouse_name, eventhouse_names)
|
35
|
+
|
36
|
+
eh = fc.get_eventhouse(workspace_id, eventhouse_name=eventhouse_name)
|
37
|
+
self.assertIsNotNone(eh.id)
|
38
|
+
self.assertEqual(eh.display_name, eventhouse_name)
|
39
|
+
new_display_name = eventhouse_name + "2"
|
40
|
+
eh2 = fc.update_eventhouse(workspace_id, eh.id, display_name=new_display_name, return_item=True)
|
41
|
+
|
42
|
+
eh = fc.get_eventhouse(workspace_id, eventhouse_id=eh.id)
|
43
|
+
self.assertEqual(eh.display_name, new_display_name)
|
44
|
+
self.assertEqual(eh.id, eh2.id)
|
45
|
+
|
46
|
+
status_code = fc.delete_eventhouse(workspace_id, eh.id)
|
47
|
+
self.assertEqual(status_code, 200)
|
@@ -15,30 +15,30 @@ class TestFabricClientCore(unittest.TestCase):
|
|
15
15
|
|
16
16
|
def test_eventstreams(self):
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
fc = self.fc
|
19
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
22
|
+
es_name = "es" + datetime_str
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
eventstream = fc.create_eventstream(workspace_id, display_name=es_name)
|
25
|
+
self.assertEqual(eventstream.display_name, es_name)
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
eventstreams = fc.list_eventstreams(workspace_id)
|
28
|
+
eventstream_names = [es.display_name for es in eventstreams]
|
29
|
+
self.assertGreater(len(eventstreams), 0)
|
30
|
+
self.assertIn(es_name, eventstream_names)
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
|
33
|
+
es = fc.get_eventstream(workspace_id, eventstream_name=es_name)
|
34
|
+
self.assertIsNotNone(es.id)
|
35
|
+
self.assertEqual(es.display_name, es_name)
|
36
36
|
|
37
|
-
|
37
|
+
es2 = fc.update_eventstream(workspace_id, es.id, display_name=f"{es_name}2", return_item=True)
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
es = fc.get_eventstream(workspace_id, eventstream_id=es.id)
|
40
|
+
self.assertEqual(es.display_name, f"{es_name}2")
|
41
|
+
self.assertEqual(es.id, es2.id)
|
42
42
|
|
43
|
-
|
44
|
-
|
43
|
+
status_code = fc.delete_eventstream(workspace_id, es.id)
|
44
|
+
self.assertEqual(status_code, 200)
|
@@ -14,13 +14,13 @@ class TestFabricClientCore(unittest.TestCase):
|
|
14
14
|
|
15
15
|
fc = self.fc
|
16
16
|
|
17
|
-
workspace_id = '
|
18
|
-
item_id =
|
17
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
18
|
+
item_id = "148ef579-4a5d-4048-8a48-0a703c5e3a1a"
|
19
19
|
|
20
20
|
recipient = {
|
21
21
|
"userPrincipalName": "lisa4@fabrikam.com"
|
22
22
|
}
|
23
|
-
paths=["Files/
|
23
|
+
paths=["Files/to_share"]
|
24
24
|
|
25
25
|
resp = fc.create_external_data_share(workspace_id, item_id, paths, recipient)
|
26
26
|
self.assertIsNotNone(resp)
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from datetime import datetime
|
4
|
+
from time import sleep
|
5
|
+
from msfabricpysdkcore import FabricAzureClient
|
6
|
+
|
7
|
+
load_dotenv()
|
8
|
+
|
9
|
+
|
10
|
+
class TestFabricClientCore(unittest.TestCase):
|
11
|
+
|
12
|
+
def __init__(self, *args, **kwargs):
|
13
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
14
|
+
#load_dotenv()
|
15
|
+
self.fac = FabricAzureClient()
|
16
|
+
|
17
|
+
def test_azure_capacity(self):
|
18
|
+
|
19
|
+
fac = self.fac
|
20
|
+
|
21
|
+
subscription_id = "c77cc8fc-43bb-4d44-bdc5-6e20511ed2a8"
|
22
|
+
resource_group_name = "fabricdemo"
|
23
|
+
capacity_name = "westeuropeajrederer"
|
24
|
+
capacity_name_new = "westeuropeajrederer" + datetime.now().strftime("%Y%m%d%H%M%S")
|
25
|
+
|
26
|
+
resp = fac.check_name_availability(subscription_id, "westeurope", capacity_name_new)
|
27
|
+
self.assertIn('nameAvailable', resp)
|
28
|
+
self.assertEqual(resp['nameAvailable'], True)
|
29
|
+
|
30
|
+
resp = fac.create_or_update_capacity(subscription_id, resource_group_name, capacity_name_new,
|
31
|
+
location="westeurope",
|
32
|
+
properties_administration={"members": ['admin@MngEnvMCAP065039.onmicrosoft.com']},
|
33
|
+
sku = "F2")
|
34
|
+
self.assertIsNotNone(resp.name)
|
35
|
+
self.assertEqual(resp.name, capacity_name_new)
|
36
|
+
|
37
|
+
resp = fac.get_capacity(subscription_id, resource_group_name, capacity_name_new)
|
38
|
+
self.assertIsNotNone(resp.name)
|
39
|
+
self.assertEqual(resp.name, capacity_name_new)
|
40
|
+
|
41
|
+
sku = resp.sku['name']
|
42
|
+
|
43
|
+
resp = fac.delete_capacity(subscription_id, resource_group_name, capacity_name_new)
|
44
|
+
self.assertEqual(resp.status_code, 202)
|
45
|
+
|
46
|
+
|
47
|
+
resp = fac.list_by_resource_group(subscription_id, resource_group_name)
|
48
|
+
cap_names = [cap["name"] for cap in resp]
|
49
|
+
self.assertIn(capacity_name, cap_names)
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
resp = fac.list_by_subscription(subscription_id)
|
54
|
+
cap_names = [cap["name"] for cap in resp]
|
55
|
+
self.assertIn(capacity_name, cap_names)
|
56
|
+
|
57
|
+
|
58
|
+
resp = fac.list_skus(subscription_id)
|
59
|
+
self.assertGreater(len(resp), 0, msg=f"No SKUs found: {resp}")
|
60
|
+
|
61
|
+
|
62
|
+
resp = fac.list_skus_for_capacity(subscription_id, resource_group_name, capacity_name)
|
63
|
+
self.assertGreater(len(resp), 0, msg=f"No SKUs found: {resp}")
|
64
|
+
|
65
|
+
resp = fac.resume_capacity(subscription_id, resource_group_name, capacity_name)
|
66
|
+
self.assertEqual(resp.status_code, 202)
|
67
|
+
|
68
|
+
sleep(30)
|
69
|
+
resp = fac.suspend_capacity(subscription_id, resource_group_name, capacity_name)
|
70
|
+
self.assertEqual(resp.status_code, 202)
|
71
|
+
sleep(30)
|
72
|
+
|
73
|
+
if sku != "F4":
|
74
|
+
resp = fac.update_capacity(subscription_id, resource_group_name, capacity_name, sku="F4")
|
75
|
+
self.assertEqual(resp.sku["name"], "F4")
|
76
|
+
else:
|
77
|
+
resp = fac.update_capacity(subscription_id, resource_group_name, capacity_name, sku="F2")
|
78
|
+
self.assertEqual(resp.sku["name"], "F2")
|
@@ -11,7 +11,6 @@ class TestFabricClientCore(unittest.TestCase):
|
|
11
11
|
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
12
12
|
#load_dotenv()
|
13
13
|
self.fc = FabricClientCore()
|
14
|
-
self.workspace_id = "fd3ba978-0b94-43e2-9f23-f65761e9ff34"
|
15
14
|
|
16
15
|
def test_git(self):
|
17
16
|
|
@@ -19,14 +18,14 @@ class TestFabricClientCore(unittest.TestCase):
|
|
19
18
|
ws2_name = "git" + datetime_str
|
20
19
|
self.fc.create_workspace(display_name=ws2_name)
|
21
20
|
ws2 = self.fc.get_workspace_by_name(name=ws2_name)
|
22
|
-
self.fc.assign_to_capacity(workspace_id=ws2.id, capacity_id="
|
23
|
-
|
24
|
-
git_provider_details = {'organizationName': '
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
self.fc.assign_to_capacity(workspace_id=ws2.id, capacity_id="840a6c1e-5289-4094-bbc8-716daabaeeba")
|
22
|
+
|
23
|
+
git_provider_details = {'organizationName': 'MngEnvMCAP065039',
|
24
|
+
'projectName': 'fabricdevops',
|
25
|
+
'gitProviderType': 'AzureDevOps',
|
26
|
+
'repositoryName': 'fabricdevops',
|
27
|
+
'branchName': 'main',
|
28
|
+
'directoryName': '/sdkdemoRTI'}
|
30
29
|
|
31
30
|
status_code = self.fc.git_connect(workspace_id=ws2.id, git_provider_details=git_provider_details)
|
32
31
|
|
@@ -0,0 +1,81 @@
|
|
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
|
+
self.workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
16
|
+
|
17
|
+
|
18
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
19
|
+
self.item_name = "testitem" + datetime_str
|
20
|
+
self.item_type = "Notebook"
|
21
|
+
|
22
|
+
def test_item_end_to_end(self):
|
23
|
+
|
24
|
+
item = self.fc.create_item(display_name=self.item_name, type=self.item_type, workspace_id=self.workspace_id)
|
25
|
+
self.assertEqual(item.display_name, self.item_name)
|
26
|
+
self.assertEqual(item.type, self.item_type)
|
27
|
+
self.assertEqual(item.workspace_id, self.workspace_id)
|
28
|
+
self.assertEqual(item.description, "")
|
29
|
+
|
30
|
+
item = self.fc.get_item(workspace_id=self.workspace_id, item_id=item.id)
|
31
|
+
item_ = self.fc.get_item(workspace_id=self.workspace_id,
|
32
|
+
item_name=self.item_name, item_type=self.item_type)
|
33
|
+
self.assertEqual(item.id, item_.id)
|
34
|
+
self.assertEqual(item.display_name, self.item_name)
|
35
|
+
self.assertEqual(item.type, self.item_type)
|
36
|
+
self.assertEqual(item.workspace_id, self.workspace_id)
|
37
|
+
self.assertEqual(item.description, "")
|
38
|
+
|
39
|
+
item_list = self.fc.list_items(workspace_id=self.workspace_id)
|
40
|
+
self.assertTrue(len(item_list) > 0)
|
41
|
+
|
42
|
+
item_ids = [item_.id for item_ in item_list]
|
43
|
+
self.assertIn(item.id, item_ids)
|
44
|
+
|
45
|
+
self.fc.update_item(workspace_id=self.workspace_id, item_id=item.id, display_name=f"u{self.item_name}", return_item=True)
|
46
|
+
item = self.fc.get_item(workspace_id=self.workspace_id, item_id=item.id)
|
47
|
+
self.assertEqual(item.display_name, f"u{self.item_name}")
|
48
|
+
|
49
|
+
status_code = self.fc.delete_item(workspace_id=self.workspace_id, item_id=item.id)
|
50
|
+
|
51
|
+
self.assertAlmostEqual(status_code, 200)
|
52
|
+
|
53
|
+
def test_item_definition(self):
|
54
|
+
|
55
|
+
sjd = self.fc.get_item(workspace_id=self.workspace_id, item_name="helloworld", item_type="SparkJobDefinition")
|
56
|
+
self.assertIsNotNone(sjd.definition)
|
57
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
58
|
+
blubb2 = "blubb2" + datetime_str
|
59
|
+
blubb3 = "blubb3" + datetime_str
|
60
|
+
blubb2 = self.fc.create_item(display_name=blubb2, type="SparkJobDefinition", workspace_id=self.workspace_id,
|
61
|
+
definition=sjd.definition)
|
62
|
+
|
63
|
+
blubb3 = self.fc.create_item(display_name=blubb3, type="SparkJobDefinition", workspace_id=self.workspace_id)
|
64
|
+
|
65
|
+
response = self.fc.update_item_definition(workspace_id=self.workspace_id,
|
66
|
+
item_id=blubb3.id, definition=sjd.definition)
|
67
|
+
|
68
|
+
self.assertEqual(response.status_code, 200)
|
69
|
+
blubb3 = self.fc.get_item(workspace_id=self.workspace_id, item_id=blubb3.id)
|
70
|
+
self.assertEqual(blubb3.definition, sjd.definition)
|
71
|
+
|
72
|
+
self.assertNotEqual(blubb2.id, sjd.id)
|
73
|
+
self.assertEqual(blubb2.definition, sjd.definition)
|
74
|
+
self.assertNotEqual(blubb2.id, blubb3.id)
|
75
|
+
|
76
|
+
blubb2.delete()
|
77
|
+
blubb3.delete()
|
78
|
+
|
79
|
+
|
80
|
+
if __name__ == "__main__":
|
81
|
+
unittest.main()
|
@@ -11,8 +11,8 @@ class TestFabricClientCore(unittest.TestCase):
|
|
11
11
|
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
12
12
|
#load_dotenv()
|
13
13
|
self.fc = FabricClientCore()
|
14
|
-
self.workspace_id =
|
15
|
-
self.item_id = "
|
14
|
+
self.workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
15
|
+
self.item_id = "38a1c15f-8a9e-49c5-8d05-a27cf9ce8b18"
|
16
16
|
|
17
17
|
|
18
18
|
def test_jobs_end_to_end(self):
|
@@ -0,0 +1,49 @@
|
|
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
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
def test_kql_querysets(self):
|
21
|
+
|
22
|
+
fc = self.fc
|
23
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
24
|
+
|
25
|
+
kql_queryset_name = "kqlqueryset1"
|
26
|
+
|
27
|
+
kql_querysets = fc.list_kql_querysets(workspace_id)
|
28
|
+
kql_queryset_names = [kqlq.display_name for kqlq in kql_querysets]
|
29
|
+
self.assertGreater(len(kql_querysets), 0)
|
30
|
+
self.assertIn(kql_queryset_name, kql_queryset_names)
|
31
|
+
|
32
|
+
kqlq = fc.get_kql_queryset(workspace_id, kql_queryset_name=kql_queryset_name)
|
33
|
+
self.assertIsNotNone(kqlq.id)
|
34
|
+
self.assertEqual(kqlq.display_name, kql_queryset_name)
|
35
|
+
|
36
|
+
kqlq2 = fc.update_kql_queryset(workspace_id, kqlq.id, display_name=f"{kql_queryset_name}2", return_item=True)
|
37
|
+
|
38
|
+
kqlq = fc.get_kql_queryset(workspace_id, kql_queryset_id=kqlq.id)
|
39
|
+
self.assertEqual(kqlq.display_name, f"{kql_queryset_name}2")
|
40
|
+
self.assertEqual(kqlq.id, kqlq2.id)
|
41
|
+
|
42
|
+
kqlq2 = fc.update_kql_queryset(workspace_id, kqlq.id, display_name=kql_queryset_name, return_item=True)
|
43
|
+
|
44
|
+
kqlq = fc.get_kql_queryset(workspace_id, kql_queryset_id=kqlq.id)
|
45
|
+
self.assertEqual(kqlq.display_name, kql_queryset_name)
|
46
|
+
self.assertEqual(kqlq.id, kqlq2.id)
|
47
|
+
|
48
|
+
# status_code = fc.delete_kql_queryset(workspace_id, kqlq.id)
|
49
|
+
# self.assertEqual(status_code, 200)
|
@@ -16,8 +16,8 @@ class TestFabricClientCore(unittest.TestCase):
|
|
16
16
|
def test_kql_database(self):
|
17
17
|
|
18
18
|
fc = self.fc
|
19
|
-
workspace_id = '
|
20
|
-
evenhouse_id = "
|
19
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
20
|
+
evenhouse_id = "f30ba76a-92c3-40d3-ad69-36db059c113d"
|
21
21
|
|
22
22
|
creation_payload = {"databaseType" : "ReadWrite",
|
23
23
|
"parentEventhouseItemId" : evenhouse_id}
|
@@ -38,7 +38,7 @@ class TestFabricClientCore(unittest.TestCase):
|
|
38
38
|
self.assertEqual(kqldb.display_name, kqldb_name)
|
39
39
|
|
40
40
|
new_name = kqldb_name+"2"
|
41
|
-
kqldb2 = fc.update_kql_database(workspace_id, kqldb.id, display_name=new_name)
|
41
|
+
kqldb2 = fc.update_kql_database(workspace_id, kqldb.id, display_name=new_name, return_item=True)
|
42
42
|
|
43
43
|
kqldb = fc.get_kql_database(workspace_id, kql_database_id=kqldb.id)
|
44
44
|
self.assertEqual(kqldb.display_name, new_name)
|
@@ -0,0 +1,84 @@
|
|
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
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
17
|
+
self.item_name = "testitem" + datetime_str
|
18
|
+
self.item_type = "Notebook"
|
19
|
+
|
20
|
+
def test_lakehouse(self):
|
21
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
22
|
+
|
23
|
+
lakehouse = self.fc.get_item(workspace_id=workspace_id, item_name="lakelhousewlabels", item_type="Lakehouse")
|
24
|
+
self.assertIsNotNone(lakehouse.properties)
|
25
|
+
lakehouse_id = lakehouse.id
|
26
|
+
date_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
27
|
+
table_name = f"table{date_str}"
|
28
|
+
|
29
|
+
|
30
|
+
status_code = self.fc.load_table(workspace_id=workspace_id, lakehouse_id=lakehouse_id, table_name=table_name,
|
31
|
+
path_type="File", relative_path="Files/to_share/titanic2.csv")
|
32
|
+
|
33
|
+
self.assertEqual(status_code, 202)
|
34
|
+
|
35
|
+
# Run on demand table maintenance
|
36
|
+
table_name_maintenance = "table20240515114529"
|
37
|
+
|
38
|
+
execution_data = {
|
39
|
+
"tableName": table_name_maintenance,
|
40
|
+
"optimizeSettings": {
|
41
|
+
"vOrder": True,
|
42
|
+
"zOrderBy": [
|
43
|
+
"tipAmount"
|
44
|
+
]
|
45
|
+
},
|
46
|
+
"vacuumSettings": {
|
47
|
+
"retentionPeriod": "7:01:00:00"
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
response = self.fc.run_on_demand_table_maintenance(workspace_id=workspace_id, lakehouse_id=lakehouse_id,
|
52
|
+
execution_data = execution_data,
|
53
|
+
job_type = "TableMaintenance", wait_for_completion = False)
|
54
|
+
self.assertIn(response.status_code, [200, 202])
|
55
|
+
|
56
|
+
table_list = self.fc.list_tables(workspace_id=workspace_id, lakehouse_id=lakehouse_id)
|
57
|
+
table_names = [table["name"] for table in table_list]
|
58
|
+
|
59
|
+
self.assertIn(table_name, table_names)
|
60
|
+
|
61
|
+
fc = self.fc
|
62
|
+
|
63
|
+
lakehouse = fc.create_lakehouse(workspace_id=workspace_id, display_name="lakehouse2")
|
64
|
+
self.assertIsNotNone(lakehouse.id)
|
65
|
+
|
66
|
+
lakehouses = fc.list_lakehouses(workspace_id)
|
67
|
+
lakehouse_names = [lh.display_name for lh in lakehouses]
|
68
|
+
self.assertGreater(len(lakehouse_names), 0)
|
69
|
+
self.assertIn("lakehouse2", lakehouse_names)
|
70
|
+
|
71
|
+
lakehouse2 = fc.get_lakehouse(workspace_id=workspace_id, lakehouse_id=lakehouse.id)
|
72
|
+
self.assertEqual(lakehouse.id, lakehouse2.id)
|
73
|
+
|
74
|
+
sleep(20)
|
75
|
+
lakehouse2 = fc.update_lakehouse(workspace_id=workspace_id, lakehouse_id=lakehouse.id, display_name="lakehouse3", return_item=True)
|
76
|
+
self.assertEqual(lakehouse2.display_name, "lakehouse3")
|
77
|
+
|
78
|
+
id = lakehouse2.id
|
79
|
+
|
80
|
+
lakehouse2 = fc.get_lakehouse(workspace_id=workspace_id, lakehouse_name="lakehouse3")
|
81
|
+
self.assertEqual(lakehouse2.id, id)
|
82
|
+
|
83
|
+
status_code = fc.delete_lakehouse(workspace_id=workspace_id, lakehouse_id=lakehouse.id)
|
84
|
+
self.assertEqual(status_code, 200)
|