msfabricpysdkcore 0.1.8__py3-none-any.whl → 0.2.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/adminapi.py +178 -12
- msfabricpysdkcore/coreapi.py +1479 -99
- msfabricpysdkcore/item.py +45 -6
- msfabricpysdkcore/job_instance.py +2 -1
- msfabricpysdkcore/otheritems.py +159 -10
- msfabricpysdkcore/tests/__init__.py +0 -0
- msfabricpysdkcore/tests/test_admin_apis.py +174 -0
- msfabricpysdkcore/tests/test_connection.py +111 -0
- msfabricpysdkcore/tests/test_datapipelines.py +45 -0
- msfabricpysdkcore/tests/test_deployment_pipeline.py +63 -0
- msfabricpysdkcore/tests/test_domains.py +126 -0
- msfabricpysdkcore/tests/test_environments.py +114 -0
- msfabricpysdkcore/tests/test_evenhouses.py +56 -0
- msfabricpysdkcore/tests/test_evenstreams.py +52 -0
- msfabricpysdkcore/tests/test_external_data_shares.py +51 -0
- msfabricpysdkcore/tests/test_fabric_azure_client.py +80 -0
- msfabricpysdkcore/tests/test_gateways.py +99 -0
- msfabricpysdkcore/tests/test_git.py +66 -0
- msfabricpysdkcore/tests/test_graphqlapi.py +44 -0
- msfabricpysdkcore/tests/test_items.py +97 -0
- msfabricpysdkcore/tests/test_jobs.py +96 -0
- msfabricpysdkcore/tests/test_kql_dashboards.py +63 -0
- msfabricpysdkcore/tests/test_kql_queryset.py +64 -0
- msfabricpysdkcore/tests/test_kqldatabases.py +56 -0
- msfabricpysdkcore/tests/test_lakehouse.py +93 -0
- msfabricpysdkcore/tests/test_managed_private_endpoints.py +61 -0
- msfabricpysdkcore/tests/test_mirroreddatabases.py +80 -0
- msfabricpysdkcore/tests/test_ml_experiments.py +47 -0
- msfabricpysdkcore/tests/test_ml_models.py +47 -0
- msfabricpysdkcore/tests/test_mounted_adf.py +64 -0
- msfabricpysdkcore/tests/test_notebooks.py +57 -0
- msfabricpysdkcore/tests/test_one_lake_data_access_security.py +63 -0
- msfabricpysdkcore/tests/test_other_items.py +45 -0
- msfabricpysdkcore/tests/test_reflex.py +57 -0
- msfabricpysdkcore/tests/test_reports.py +56 -0
- msfabricpysdkcore/tests/test_semantic_model.py +56 -0
- msfabricpysdkcore/tests/test_shortcuts.py +60 -0
- msfabricpysdkcore/tests/test_spark.py +91 -0
- msfabricpysdkcore/tests/test_sparkjobdefinition.py +55 -0
- msfabricpysdkcore/tests/test_sqldatabases.py +45 -0
- msfabricpysdkcore/tests/test_warehouses.py +50 -0
- msfabricpysdkcore/tests/test_workspaces_capacities.py +159 -0
- msfabricpysdkcore/workspace.py +295 -16
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/METADATA +261 -16
- msfabricpysdkcore-0.2.2.dist-info/RECORD +65 -0
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/WHEEL +1 -1
- msfabricpysdkcore-0.1.8.dist-info/RECORD +0 -28
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/LICENSE +0 -0
- {msfabricpysdkcore-0.1.8.dist-info → msfabricpysdkcore-0.2.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,45 @@
|
|
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_data_pipelines(self):
|
17
|
+
|
18
|
+
fc = self.fc
|
19
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
20
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
21
|
+
pipeline_name = f"pipeline_{datetime_str}"
|
22
|
+
|
23
|
+
dp = fc.create_data_pipeline(workspace_id, display_name=pipeline_name, description="asda")
|
24
|
+
dp.update_definition(dp.definition)
|
25
|
+
|
26
|
+
dps = fc.list_data_pipelines(workspace_id)
|
27
|
+
dp_names = [dp.display_name for dp in dps]
|
28
|
+
self.assertGreater(len(dps), 0)
|
29
|
+
self.assertIn(pipeline_name, dp_names)
|
30
|
+
|
31
|
+
self.assertEqual(dp.display_name, pipeline_name)
|
32
|
+
pipeline_name2 = f"pipeline_{datetime_str}_2"
|
33
|
+
dp2 = fc.update_data_pipeline(workspace_id, dp.id, display_name=pipeline_name2, return_item=True)
|
34
|
+
|
35
|
+
dp = fc.get_data_pipeline(workspace_id, data_pipeline_id=dp.id)
|
36
|
+
self.assertEqual(dp.display_name, pipeline_name2)
|
37
|
+
self.assertEqual(dp.id, dp2.id)
|
38
|
+
|
39
|
+
dp2 = fc.update_data_pipeline(workspace_id, dp.id, display_name=pipeline_name, return_item=True)
|
40
|
+
|
41
|
+
dp = fc.get_data_pipeline(workspace_id, data_pipeline_id=dp.id)
|
42
|
+
self.assertEqual(dp.display_name, pipeline_name)
|
43
|
+
self.assertEqual(dp.id, dp2.id)
|
44
|
+
status_code = fc.delete_data_pipeline(workspace_id, dp.id)
|
45
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import unittest
|
2
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
3
|
+
from dotenv import load_dotenv
|
4
|
+
|
5
|
+
load_dotenv()
|
6
|
+
|
7
|
+
|
8
|
+
class TestFabricClientCore(unittest.TestCase):
|
9
|
+
|
10
|
+
def __init__(self, *args, **kwargs):
|
11
|
+
super(TestFabricClientCore, self).__init__(*args, **kwargs)
|
12
|
+
self.fc = FabricClientCore()
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
def test_spark_workspace_custom_pools(self):
|
17
|
+
fc = self.fc
|
18
|
+
|
19
|
+
dep_pipes = fc.list_deployment_pipelines()
|
20
|
+
|
21
|
+
self.assertGreater(len(dep_pipes), 0)
|
22
|
+
|
23
|
+
self.assertIn("sdkpipe", [pipe.display_name for pipe in dep_pipes])
|
24
|
+
|
25
|
+
for pipe in dep_pipes:
|
26
|
+
if pipe.display_name == 'sdkpipe':
|
27
|
+
pipe_id = pipe.id
|
28
|
+
break
|
29
|
+
|
30
|
+
pipe = fc.get_deployment_pipeline(pipe_id)
|
31
|
+
|
32
|
+
self.assertEqual(pipe.display_name, 'sdkpipe')
|
33
|
+
self.assertEqual(pipe.id, pipe_id)
|
34
|
+
|
35
|
+
stages = fc.list_deployment_pipeline_stages(pipe_id)
|
36
|
+
|
37
|
+
self.assertGreater(len(stages), 0)
|
38
|
+
names = [stage.display_name for stage in stages]
|
39
|
+
self.assertIn("Development", names)
|
40
|
+
self.assertIn("Production", names)
|
41
|
+
|
42
|
+
dev_stage = [stage for stage in stages if stage.display_name == "Development"][0]
|
43
|
+
prod_stage = [stage for stage in stages if stage.display_name == "Production"][0]
|
44
|
+
|
45
|
+
items = fc.list_deployment_pipeline_stages_items(deployment_pipeline_id=pipe_id, stage_id=dev_stage.id)
|
46
|
+
|
47
|
+
self.assertGreater(len(items), 0)
|
48
|
+
self.assertIn("cicdlakehouse", [item["itemDisplayName"] for item in items])
|
49
|
+
|
50
|
+
items = [item for item in dev_stage.list_items() if item["itemDisplayName"] == 'cicdlakehouse']
|
51
|
+
item = items[0]
|
52
|
+
item = {"sourceItemId": item["itemId"],
|
53
|
+
"itemType": item["itemType"]}
|
54
|
+
items = [item]
|
55
|
+
|
56
|
+
response = fc.deploy_stage_content(deployment_pipeline_id=pipe_id, source_stage_id=dev_stage.id,target_stage_id=prod_stage.id, items=items)
|
57
|
+
|
58
|
+
self.assertEqual(response["status"], "Succeeded")
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
@@ -0,0 +1,126 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from datetime import datetime
|
4
|
+
from msfabricpysdkcore import FabricClientCore, FabricClientAdmin
|
5
|
+
|
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
|
+
|
14
|
+
|
15
|
+
def test_domains(self):
|
16
|
+
fcc = FabricClientCore()
|
17
|
+
fca = FabricClientAdmin()
|
18
|
+
|
19
|
+
ws = fcc.get_workspace_by_name("sdktestdomains")
|
20
|
+
cap = fcc.get_capacity(capacity_id=ws.capacity_id)
|
21
|
+
principal = {'id': '1dc64c6e-7a10-4ea9-8488-85d0739a377d', 'type': 'User'}
|
22
|
+
|
23
|
+
# Delete if exists
|
24
|
+
try:
|
25
|
+
domain = fca.get_domain_by_name("sdktestdomains")
|
26
|
+
domain.delete()
|
27
|
+
except:
|
28
|
+
pass
|
29
|
+
try:
|
30
|
+
domain = fca.get_domain_by_name("sdktestdomains2")
|
31
|
+
domain.delete()
|
32
|
+
except:
|
33
|
+
pass
|
34
|
+
|
35
|
+
# Create domain
|
36
|
+
domain_name = "sdktestdomains" + datetime.now().strftime("%Y%m%d%H%M%S")
|
37
|
+
domain = fca.create_domain(display_name=domain_name)
|
38
|
+
self.assertIsNotNone(domain.id)
|
39
|
+
self.assertEqual(domain.display_name, domain_name)
|
40
|
+
|
41
|
+
# Get domain by name
|
42
|
+
domain_clone = fca.get_domain_by_name(domain_name)
|
43
|
+
self.assertIsNotNone(domain_clone.id)
|
44
|
+
self.assertEqual(domain_clone.display_name, domain_name)
|
45
|
+
|
46
|
+
# Get domain by id
|
47
|
+
domain_clone = fca.get_domain_by_id(domain.id)
|
48
|
+
self.assertIsNotNone(domain_clone.id)
|
49
|
+
self.assertEqual(domain_clone.display_name, domain_name)
|
50
|
+
|
51
|
+
# List domains
|
52
|
+
domains = fca.list_domains()
|
53
|
+
self.assertGreater(len(domains), 0)
|
54
|
+
domains_ids = [d.id for d in domains]
|
55
|
+
self.assertIn(domain.id, domains_ids)
|
56
|
+
|
57
|
+
# Update domain
|
58
|
+
domain_new_name = f"{domain_name}2"
|
59
|
+
domain_clone = fca.update_domain(domain.id, display_name=domain_new_name, return_item=True)
|
60
|
+
self.assertEqual(domain_clone.display_name, domain_new_name)
|
61
|
+
|
62
|
+
# Assign domain workspaces by Ids
|
63
|
+
status_code = fca.assign_domain_workspaces_by_ids(domain.id, [ws.id])
|
64
|
+
self.assertEqual(status_code, 200)
|
65
|
+
|
66
|
+
# List domain workspaces
|
67
|
+
workspaces = fca.list_domain_workspaces(domain.id, workspace_objects=True)
|
68
|
+
self.assertGreater(len(workspaces), 0)
|
69
|
+
workspaces_ids = [w.id for w in workspaces]
|
70
|
+
self.assertIn(ws.id, workspaces_ids)
|
71
|
+
|
72
|
+
# Unassign domain workspaces by ids
|
73
|
+
status_code = fca.unassign_domain_workspaces_by_ids(domain.id, [ws.id])
|
74
|
+
self.assertEqual(status_code, 200)
|
75
|
+
|
76
|
+
workspaces = fca.list_domain_workspaces(domain.id)
|
77
|
+
self.assertEqual(len(workspaces), 0)
|
78
|
+
|
79
|
+
# Assign domain workspaces by capacities
|
80
|
+
status_code = fca.assign_domain_workspaces_by_capacities(domain.id, [cap.id])
|
81
|
+
self.assertEqual(status_code, 202)
|
82
|
+
|
83
|
+
workspaces = fca.list_domain_workspaces(domain.id, workspace_objects=True)
|
84
|
+
self.assertGreater(len(workspaces), 0)
|
85
|
+
workspaces_ids = [w.id for w in workspaces]
|
86
|
+
self.assertIn(ws.id, workspaces_ids)
|
87
|
+
|
88
|
+
# Unassign all domain workspaces
|
89
|
+
status_code = fca.unassign_all_domain_workspaces(domain.id)
|
90
|
+
self.assertEqual(status_code, 200)
|
91
|
+
|
92
|
+
workspaces = fca.list_domain_workspaces(domain.id)
|
93
|
+
self.assertEqual(len(workspaces), 0)
|
94
|
+
|
95
|
+
# Assign domain workspaces by principals
|
96
|
+
status_code = fca.assign_domains_workspaces_by_principals(domain.id, [principal], wait_for_completion=True)
|
97
|
+
|
98
|
+
self.assertEqual(status_code, 202)
|
99
|
+
|
100
|
+
workspaces = fca.list_domain_workspaces(domain.id, workspace_objects=True)
|
101
|
+
self.assertGreater(len(workspaces), 0)
|
102
|
+
workspaces_ids = [w.id for w in workspaces]
|
103
|
+
self.assertIn(ws.id, workspaces_ids)
|
104
|
+
|
105
|
+
# Role assignments bulk assign
|
106
|
+
|
107
|
+
principal_2 = {'id': 'e0505016-ef55-4ca7-b106-e085cc201823', 'type': 'User'}
|
108
|
+
principals = [principal, principal_2]
|
109
|
+
|
110
|
+
status_code = fca.role_assignments_bulk_assign(domain.id, "Contributors", principals)
|
111
|
+
|
112
|
+
self.assertEqual(status_code, 200)
|
113
|
+
|
114
|
+
# Role assignments bulk unassign
|
115
|
+
status_code = fca.role_assignments_bulk_unassign(domain.id, "Contributors", [principal_2])
|
116
|
+
|
117
|
+
self.assertEqual(status_code, 200)
|
118
|
+
|
119
|
+
# Delete domain
|
120
|
+
status_code = fca.delete_domain(domain.id)
|
121
|
+
|
122
|
+
self.assertEqual(status_code, 200)
|
123
|
+
|
124
|
+
domains = fca.list_domains()
|
125
|
+
domains_ids = [d.id for d in domains]
|
126
|
+
self.assertNotIn(domain.id, domains_ids)
|
@@ -0,0 +1,114 @@
|
|
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
|
+
self.fc = FabricClientCore()
|
14
|
+
|
15
|
+
def test_environments_crudl(self):
|
16
|
+
fc = self.fc
|
17
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
18
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
19
|
+
|
20
|
+
env_name = "env" + datetime_str
|
21
|
+
environment1 = fc.create_environment(workspace_id, display_name=env_name)
|
22
|
+
self.assertEqual(environment1.display_name, env_name)
|
23
|
+
|
24
|
+
environments = fc.list_environments(workspace_id)
|
25
|
+
environment_names = [env.display_name for env in environments]
|
26
|
+
self.assertGreater(len(environments), 0)
|
27
|
+
self.assertIn(env_name, environment_names)
|
28
|
+
|
29
|
+
env = fc.get_environment(workspace_id, environment_name=env_name)
|
30
|
+
self.assertIsNotNone(env.id)
|
31
|
+
self.assertEqual(env.display_name, env_name)
|
32
|
+
new_name = env_name + "2"
|
33
|
+
env2 = fc.update_environment(workspace_id, env.id, display_name=new_name, return_item=True)
|
34
|
+
|
35
|
+
env = fc.get_environment(workspace_id, environment_id=env.id)
|
36
|
+
self.assertEqual(env.display_name, new_name)
|
37
|
+
self.assertEqual(env.id, env2.id)
|
38
|
+
|
39
|
+
status_code = fc.delete_environment(workspace_id, env.id)
|
40
|
+
self.assertEqual(status_code, 200)
|
41
|
+
|
42
|
+
def test_environment_details(self):
|
43
|
+
fc = FabricClientCore()
|
44
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
45
|
+
environment_id = '5648be67-28fa-48b6-9d1f-3c87c3704d3c'
|
46
|
+
published_settings = fc.get_published_settings(workspace_id=workspace_id, environment_id=environment_id)
|
47
|
+
self.assertIsNotNone(published_settings)
|
48
|
+
self.assertIn("instancePool", published_settings)
|
49
|
+
self.assertIn("dynamicExecutorAllocation", published_settings)
|
50
|
+
staging_settings = fc.get_staging_settings(workspace_id=workspace_id, environment_id=environment_id)
|
51
|
+
self.assertIsNotNone(staging_settings)
|
52
|
+
self.assertIn("instancePool", staging_settings)
|
53
|
+
self.assertIn("dynamicExecutorAllocation", staging_settings)
|
54
|
+
if staging_settings["driverCores"] == 8:
|
55
|
+
driver_cores = 4
|
56
|
+
else:
|
57
|
+
driver_cores = 8
|
58
|
+
updated_settings = fc.update_staging_settings(workspace_id=workspace_id, environment_id=environment_id, driver_cores=driver_cores)
|
59
|
+
self.assertIn("instancePool", updated_settings)
|
60
|
+
self.assertIn("dynamicExecutorAllocation", updated_settings)
|
61
|
+
self.assertEqual(updated_settings["driverCores"], driver_cores)
|
62
|
+
updated_settings = fc.get_staging_settings(workspace_id=workspace_id, environment_id=environment_id)
|
63
|
+
self.assertIn("instancePool", updated_settings)
|
64
|
+
self.assertIn("dynamicExecutorAllocation", updated_settings)
|
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'].lower(), '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'].lower(), '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,56 @@
|
|
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
|
+
definition = fc.get_eventhouse_definition(workspace_id, eventhouse_id=eh.id)
|
43
|
+
|
44
|
+
self.assertIn("definition", definition)
|
45
|
+
self.assertIn("parts", definition["definition"])
|
46
|
+
self.assertGreaterEqual(len(definition["definition"]["parts"]), 2)
|
47
|
+
|
48
|
+
response = fc.update_eventhouse_definition(workspace_id, eventhouse_id=eh.id, definition=definition["definition"])
|
49
|
+
self.assertIn(response.status_code, [200, 202])
|
50
|
+
|
51
|
+
eh = fc.get_eventhouse(workspace_id, eventhouse_id=eh.id)
|
52
|
+
self.assertEqual(eh.display_name, new_display_name)
|
53
|
+
self.assertEqual(eh.id, eh2.id)
|
54
|
+
|
55
|
+
status_code = fc.delete_eventhouse(workspace_id, eh.id)
|
56
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,52 @@
|
|
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_eventstreams(self):
|
17
|
+
|
18
|
+
fc = self.fc
|
19
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
20
|
+
|
21
|
+
datetime_str = datetime.now().strftime("%Y%m%d%H%M%S")
|
22
|
+
es_name = "es" + datetime_str
|
23
|
+
|
24
|
+
eventstream = fc.create_eventstream(workspace_id, display_name=es_name)
|
25
|
+
self.assertEqual(eventstream.display_name, es_name)
|
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)
|
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)
|
36
|
+
|
37
|
+
es2 = fc.update_eventstream(workspace_id, es.id, display_name=f"{es_name}2", return_item=True)
|
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)
|
42
|
+
|
43
|
+
response = fc.update_eventstream_definition(workspace_id, eventstream_id=es.id, definition=es.definition)
|
44
|
+
self.assertIn(response.status_code, [200, 202])
|
45
|
+
|
46
|
+
definition = fc.get_eventstream_definition(workspace_id, eventstream_id=es.id)
|
47
|
+
self.assertIn("definition", definition)
|
48
|
+
self.assertIn("parts", definition["definition"])
|
49
|
+
self.assertGreaterEqual(len(definition["definition"]["parts"]), 3)
|
50
|
+
|
51
|
+
status_code = fc.delete_eventstream(workspace_id, es.id)
|
52
|
+
self.assertEqual(status_code, 200)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import unittest
|
2
|
+
from dotenv import load_dotenv
|
3
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
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.fc = FabricClientCore()
|
12
|
+
|
13
|
+
def test_external_data_shares(self):
|
14
|
+
|
15
|
+
fc = self.fc
|
16
|
+
|
17
|
+
workspace_id = '63aa9e13-4912-4abe-9156-8a56e565b7a3'
|
18
|
+
item_id = "148ef579-4a5d-4048-8a48-0a703c5e3a1a"
|
19
|
+
|
20
|
+
recipient = {
|
21
|
+
"userPrincipalName": "lisa4@fabrikam.com"
|
22
|
+
}
|
23
|
+
paths=["Files/to_share"]
|
24
|
+
|
25
|
+
resp = fc.create_external_data_share(workspace_id, item_id, paths, recipient)
|
26
|
+
self.assertIsNotNone(resp)
|
27
|
+
self.assertIn('id', resp)
|
28
|
+
|
29
|
+
|
30
|
+
get = fc.get_external_data_share(workspace_id, item_id, resp['id'])
|
31
|
+
self.assertIsNotNone(get)
|
32
|
+
self.assertEqual(get['id'], resp['id'])
|
33
|
+
|
34
|
+
|
35
|
+
resp = fc.list_external_data_shares_in_item(workspace_id, item_id)
|
36
|
+
self.assertGreater(len(resp), 0)
|
37
|
+
|
38
|
+
data_share_ids = [ds['id'] for ds in resp]
|
39
|
+
self.assertIn(get['id'], data_share_ids)
|
40
|
+
|
41
|
+
|
42
|
+
resp = fc.revoke_external_data_share(workspace_id, item_id, get['id'])
|
43
|
+
self.assertEqual(resp, 200)
|
44
|
+
|
45
|
+
get2 = fc.get_external_data_share(workspace_id, item_id, get['id'])
|
46
|
+
self.assertIsNotNone(get2)
|
47
|
+
|
48
|
+
self.assertEqual(get['id'], get2['id'])
|
49
|
+
self.assertEqual(get2['status'], 'Revoked')
|
50
|
+
|
51
|
+
|
@@ -0,0 +1,80 @@
|
|
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
|
+
sleep(60)
|
44
|
+
|
45
|
+
resp = fac.delete_capacity(subscription_id, resource_group_name, capacity_name_new)
|
46
|
+
self.assertEqual(resp.status_code, 202)
|
47
|
+
|
48
|
+
|
49
|
+
resp = fac.list_by_resource_group(subscription_id, resource_group_name)
|
50
|
+
cap_names = [cap["name"] for cap in resp]
|
51
|
+
self.assertIn(capacity_name, cap_names)
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
resp = fac.list_by_subscription(subscription_id)
|
56
|
+
cap_names = [cap["name"] for cap in resp]
|
57
|
+
self.assertIn(capacity_name, cap_names)
|
58
|
+
|
59
|
+
|
60
|
+
resp = fac.list_skus(subscription_id)
|
61
|
+
self.assertGreater(len(resp), 0, msg=f"No SKUs found: {resp}")
|
62
|
+
|
63
|
+
|
64
|
+
resp = fac.list_skus_for_capacity(subscription_id, resource_group_name, capacity_name)
|
65
|
+
self.assertGreater(len(resp), 0, msg=f"No SKUs found: {resp}")
|
66
|
+
|
67
|
+
resp = fac.resume_capacity(subscription_id, resource_group_name, capacity_name)
|
68
|
+
self.assertEqual(resp.status_code, 202)
|
69
|
+
|
70
|
+
sleep(60)
|
71
|
+
resp = fac.suspend_capacity(subscription_id, resource_group_name, capacity_name)
|
72
|
+
self.assertEqual(resp.status_code, 202)
|
73
|
+
sleep(60)
|
74
|
+
|
75
|
+
if sku != "F4":
|
76
|
+
resp = fac.update_capacity(subscription_id, resource_group_name, capacity_name, sku="F4")
|
77
|
+
self.assertEqual(resp.sku["name"], "F4")
|
78
|
+
else:
|
79
|
+
resp = fac.update_capacity(subscription_id, resource_group_name, capacity_name, sku="F2")
|
80
|
+
self.assertEqual(resp.sku["name"], "F2")
|