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.
Files changed (53) hide show
  1. msfabricpysdkcore/__init__.py +2 -1
  2. msfabricpysdkcore/admin_item.py +19 -45
  3. msfabricpysdkcore/admin_workspace.py +13 -60
  4. msfabricpysdkcore/adminapi.py +401 -476
  5. msfabricpysdkcore/auth.py +10 -6
  6. msfabricpysdkcore/client.py +124 -7
  7. msfabricpysdkcore/coreapi.py +2570 -822
  8. msfabricpysdkcore/deployment_pipeline.py +34 -146
  9. msfabricpysdkcore/domain.py +20 -219
  10. msfabricpysdkcore/environment.py +13 -172
  11. msfabricpysdkcore/fabric_azure_capacity.py +77 -0
  12. msfabricpysdkcore/fabric_azure_client.py +228 -0
  13. msfabricpysdkcore/item.py +55 -331
  14. msfabricpysdkcore/job_instance.py +8 -22
  15. msfabricpysdkcore/lakehouse.py +9 -118
  16. msfabricpysdkcore/long_running_operation.py +7 -37
  17. msfabricpysdkcore/onelakeshortcut.py +7 -21
  18. msfabricpysdkcore/otheritems.py +66 -91
  19. msfabricpysdkcore/spark_custom_pool.py +7 -47
  20. msfabricpysdkcore/tests/test_admin_apis.py +9 -10
  21. msfabricpysdkcore/tests/test_datapipelines.py +15 -18
  22. msfabricpysdkcore/tests/test_deployment_pipeline.py +3 -3
  23. msfabricpysdkcore/tests/test_domains.py +6 -5
  24. msfabricpysdkcore/tests/test_environments.py +54 -5
  25. msfabricpysdkcore/tests/test_evenhouses.py +47 -0
  26. msfabricpysdkcore/tests/test_evenstreams.py +20 -20
  27. msfabricpysdkcore/tests/test_external_data_shares.py +3 -3
  28. msfabricpysdkcore/tests/test_fabric_azure_client.py +78 -0
  29. msfabricpysdkcore/tests/test_git.py +8 -9
  30. msfabricpysdkcore/tests/test_items.py +81 -0
  31. msfabricpysdkcore/tests/test_jobs.py +2 -2
  32. msfabricpysdkcore/tests/test_kql_queryset.py +49 -0
  33. msfabricpysdkcore/tests/test_kqldatabases.py +3 -3
  34. msfabricpysdkcore/tests/test_lakehouse.py +84 -0
  35. msfabricpysdkcore/tests/test_ml_experiments.py +47 -0
  36. msfabricpysdkcore/tests/test_ml_models.py +47 -0
  37. msfabricpysdkcore/tests/test_notebooks.py +57 -0
  38. msfabricpysdkcore/tests/test_one_lake_data_access_security.py +2 -4
  39. msfabricpysdkcore/tests/test_other_items.py +45 -0
  40. msfabricpysdkcore/tests/test_reports.py +52 -0
  41. msfabricpysdkcore/tests/test_semantic_model.py +50 -0
  42. msfabricpysdkcore/tests/test_shortcuts.py +4 -4
  43. msfabricpysdkcore/tests/test_spark.py +9 -9
  44. msfabricpysdkcore/tests/test_sparkjobdefinition.py +2 -2
  45. msfabricpysdkcore/tests/test_warehouses.py +50 -0
  46. msfabricpysdkcore/tests/test_workspaces_capacities.py +16 -13
  47. msfabricpysdkcore/workspace.py +397 -1163
  48. {msfabricpysdkcore-0.0.13.dist-info → msfabricpysdkcore-0.1.2.dist-info}/METADATA +72 -10
  49. msfabricpysdkcore-0.1.2.dist-info/RECORD +55 -0
  50. {msfabricpysdkcore-0.0.13.dist-info → msfabricpysdkcore-0.1.2.dist-info}/WHEEL +1 -1
  51. msfabricpysdkcore-0.0.13.dist-info/RECORD +0 -41
  52. {msfabricpysdkcore-0.0.13.dist-info → msfabricpysdkcore-0.1.2.dist-info}/LICENSE +0 -0
  53. {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.get_deployment_pipeline_stages(pipe_id)
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.get_deployment_pipeline_stages_items(pipeline_id=pipe_id, stage_id=dev_stage.id)
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.get_items() if item["itemDisplayName"] == 'cicdlakehouse']
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': 'b4f4e299-e6e1-4667-886c-57e4a8dde1c2', 'type': 'User'}
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 = "sdktestdomains2"
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': '6edbc444-16cd-43f4-ae48-cbe734b89657', 'type': 'User'}
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 = 'd8a5abe0-9eed-406d-ab46-343bc57ddbe5'
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 = 'd8a5abe0-9eed-406d-ab46-343bc57ddbe5'
45
- environment_id = 'fae6d1a7-d671-4091-89b1-f42626deb56f'
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
- fc = self.fc
19
- workspace_id = 'd8a5abe0-9eed-406d-ab46-343bc57ddbe5'
18
+ fc = self.fc
19
+ workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
20
20
 
21
- datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
22
- es_name = "es" + datetime_str
21
+ datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
22
+ es_name = "es" + datetime_str
23
23
 
24
- eventstream = fc.create_eventstream(workspace_id, display_name=es_name)
25
- self.assertEqual(eventstream.display_name, es_name)
24
+ eventstream = fc.create_eventstream(workspace_id, display_name=es_name)
25
+ self.assertEqual(eventstream.display_name, es_name)
26
26
 
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)
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
- es = fc.get_eventstream(workspace_id, eventstream_name=es_name)
34
- self.assertIsNotNone(es.id)
35
- self.assertEqual(es.display_name, es_name)
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
- es2 = fc.update_eventstream(workspace_id, es.id, display_name=f"{es_name}2")
37
+ es2 = fc.update_eventstream(workspace_id, es.id, display_name=f"{es_name}2", return_item=True)
38
38
 
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)
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
- status_code = fc.delete_eventstream(workspace_id, es.id)
44
- self.assertEqual(status_code, 200)
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 = 'c3352d34-0b54-40f0-b204-cc964b1beb8d'
18
- item_id = 'e2c09c89-bf97-4f71-bdeb-36338795ec36'
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/external"]
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="a089a991-221c-49be-a41e-9020198cf7af")
23
-
24
- git_provider_details = {'organizationName': 'dasenf1860',
25
- 'projectName': 'fabrictest',
26
- 'gitProviderType': 'AzureDevOps',
27
- 'repositoryName': 'fabrictest',
28
- 'branchName': 'main',
29
- 'directoryName': '/folder1'}
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 = "c3352d34-0b54-40f0-b204-cc964b1beb8d"
15
- self.item_id = "7e38f344-81df-4805-83b6-b9cc16830500"
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 = 'd8a5abe0-9eed-406d-ab46-343bc57ddbe5'
20
- evenhouse_id = "14822d45-5460-4efa-9b30-8628510a9197"
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)