msfabricpysdkcore 0.2.7__py3-none-any.whl → 0.2.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- msfabricpysdkcore/coreapi.py +6 -6
- msfabricpysdkcore/tests/__init__.py +0 -0
- msfabricpysdkcore/tests/test_admin_apis.py +174 -0
- msfabricpysdkcore/tests/test_admin_tags.py +46 -0
- msfabricpysdkcore/tests/test_apache_airflow_job.py +60 -0
- msfabricpysdkcore/tests/test_connection.py +111 -0
- msfabricpysdkcore/tests/test_copy_jobs.py +60 -0
- msfabricpysdkcore/tests/test_dataflows.py +60 -0
- msfabricpysdkcore/tests/test_datapipelines.py +60 -0
- msfabricpysdkcore/tests/test_deployment_pipelinev2.py +135 -0
- msfabricpysdkcore/tests/test_digital_twin_builder.py +60 -0
- msfabricpysdkcore/tests/test_domains.py +119 -0
- msfabricpysdkcore/tests/test_environments.py +121 -0
- msfabricpysdkcore/tests/test_evenstreams.py +57 -0
- msfabricpysdkcore/tests/test_eventhouses.py +63 -0
- msfabricpysdkcore/tests/test_eventstream_topology.py +82 -0
- msfabricpysdkcore/tests/test_external_data_shares.py +51 -0
- msfabricpysdkcore/tests/test_fabric_azure_client.py +80 -0
- msfabricpysdkcore/tests/test_folders.py +56 -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 +98 -0
- msfabricpysdkcore/tests/test_kql_dashboards.py +63 -0
- msfabricpysdkcore/tests/test_kql_queryset.py +60 -0
- msfabricpysdkcore/tests/test_kqldatabases.py +56 -0
- msfabricpysdkcore/tests/test_lakehouse.py +89 -0
- msfabricpysdkcore/tests/test_managed_private_endpoints.py +62 -0
- msfabricpysdkcore/tests/test_mirrored_azuredatabricks_catalog.py +81 -0
- msfabricpysdkcore/tests/test_mirroreddatabases.py +80 -0
- msfabricpysdkcore/tests/test_ml_experiments.py +45 -0
- msfabricpysdkcore/tests/test_ml_models.py +46 -0
- msfabricpysdkcore/tests/test_mounted_adf.py +64 -0
- msfabricpysdkcore/tests/test_notebooks.py +58 -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 +56 -0
- msfabricpysdkcore/tests/test_reports.py +56 -0
- msfabricpysdkcore/tests/test_semantic_model.py +56 -0
- msfabricpysdkcore/tests/test_shortcuts.py +59 -0
- msfabricpysdkcore/tests/test_spark.py +91 -0
- msfabricpysdkcore/tests/test_sparkjobdefinition.py +55 -0
- msfabricpysdkcore/tests/test_sql_endpoint.py +28 -0
- msfabricpysdkcore/tests/test_sqldatabases.py +45 -0
- msfabricpysdkcore/tests/test_tags.py +28 -0
- msfabricpysdkcore/tests/test_variable_libary.py +61 -0
- msfabricpysdkcore/tests/test_warehouses.py +50 -0
- msfabricpysdkcore/tests/test_workspaces_capacities.py +159 -0
- msfabricpysdkcore/workspace.py +22 -4
- {msfabricpysdkcore-0.2.7.dist-info → msfabricpysdkcore-0.2.8.dist-info}/METADATA +1 -1
- msfabricpysdkcore-0.2.8.dist-info/RECORD +78 -0
- msfabricpysdkcore-0.2.7.dist-info/RECORD +0 -30
- {msfabricpysdkcore-0.2.7.dist-info → msfabricpysdkcore-0.2.8.dist-info}/WHEEL +0 -0
- {msfabricpysdkcore-0.2.7.dist-info → msfabricpysdkcore-0.2.8.dist-info}/licenses/LICENSE +0 -0
- {msfabricpysdkcore-0.2.7.dist-info → msfabricpysdkcore-0.2.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
import unittest
|
2
|
+
from msfabricpysdkcore.coreapi import FabricClientCore
|
3
|
+
from datetime import datetime
|
4
|
+
from dotenv import load_dotenv
|
5
|
+
import time
|
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_deployment_pipeline2(self):
|
17
|
+
fcc = self.fc
|
18
|
+
workspace_id = "72d9d955-bd1e-42c7-9746-208f7cbc8956"
|
19
|
+
|
20
|
+
user_id = "e0505016-ef55-4ca7-b106-e085cc201823"
|
21
|
+
capacity_id = "9e7e757d-d567-4fb3-bc4f-d230aabf2a00"
|
22
|
+
|
23
|
+
prod_workspace = fcc.create_workspace("sdkswedenproddeploy")
|
24
|
+
prod_workspace.assign_to_capacity(capacity_id)
|
25
|
+
|
26
|
+
stages = [
|
27
|
+
{
|
28
|
+
"displayName": "Development",
|
29
|
+
"description": "Development stage description",
|
30
|
+
"isPublic": False
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"displayName": "Production",
|
34
|
+
"description": "Production stage description",
|
35
|
+
"isPublic":True
|
36
|
+
}
|
37
|
+
]
|
38
|
+
|
39
|
+
pipes = fcc.list_deployment_pipelines(with_details=False)
|
40
|
+
for pipe in pipes:
|
41
|
+
if "sdk" in pipe["displayName"]:
|
42
|
+
fcc.delete_deployment_pipeline(deployment_pipeline_id=pipe["id"])
|
43
|
+
|
44
|
+
pipe =fcc.create_deployment_pipeline(display_name="sdktestpipeline",
|
45
|
+
description="Test Deployment Pipeline Description",
|
46
|
+
stages=stages)
|
47
|
+
|
48
|
+
self.assertIsNotNone(pipe.id)
|
49
|
+
pipe_id = pipe.id
|
50
|
+
|
51
|
+
for stage in pipe.stages:
|
52
|
+
if stage["displayName"] == "Development":
|
53
|
+
dev_stage = stage
|
54
|
+
else:
|
55
|
+
prod_stage = stage
|
56
|
+
|
57
|
+
stage = fcc.get_deployment_pipeline_stage(deployment_pipeline_id=pipe_id,
|
58
|
+
stage_id=dev_stage["id"])
|
59
|
+
self.assertIsNotNone(stage.id)
|
60
|
+
resp = fcc.assign_workspace_to_stage(deployment_pipeline_id=pipe_id,
|
61
|
+
stage_id=dev_stage["id"],
|
62
|
+
workspace_id=workspace_id)
|
63
|
+
self.assertEqual(resp, 200)
|
64
|
+
|
65
|
+
resp = fcc.assign_workspace_to_stage(deployment_pipeline_id=pipe_id,
|
66
|
+
stage_id=prod_stage["id"],
|
67
|
+
workspace_id=prod_workspace.id)
|
68
|
+
self.assertEqual(resp, 200)
|
69
|
+
principal = {
|
70
|
+
"id": user_id,
|
71
|
+
"type": "User"
|
72
|
+
}
|
73
|
+
|
74
|
+
resp = fcc.add_deployment_pipeline_role_assignment(deployment_pipeline_id=pipe_id,principal=principal, role="Admin")
|
75
|
+
self.assertEqual(resp, 200)
|
76
|
+
|
77
|
+
roles = fcc.list_deployment_pipeline_role_assignments(deployment_pipeline_id=pipe_id)
|
78
|
+
self.assertTrue(len(roles) == 2)
|
79
|
+
|
80
|
+
resp = fcc.delete_deployment_pipeline_role_assignment(deployment_pipeline_id=pipe_id, principal_id=user_id)
|
81
|
+
self.assertEqual(resp, 200)
|
82
|
+
|
83
|
+
roles = fcc.list_deployment_pipeline_role_assignments(deployment_pipeline_id=pipe_id)
|
84
|
+
self.assertTrue(len(roles) == 1)
|
85
|
+
|
86
|
+
pipes = fcc.list_deployment_pipelines(with_details=False)
|
87
|
+
sdk_pipes = [pipe for pipe in pipes if "sdk" in pipe["displayName"]]
|
88
|
+
self.assertTrue(len(sdk_pipes) > 0)
|
89
|
+
|
90
|
+
resp = fcc.deploy_stage_content(deployment_pipeline_id=pipe_id,
|
91
|
+
source_stage_id=dev_stage["id"],
|
92
|
+
target_stage_id=prod_stage["id"], wait_for_completion=False)
|
93
|
+
self.assertEqual(resp.status_code, 202)
|
94
|
+
|
95
|
+
ops = fcc.list_deployment_pipeline_operations(deployment_pipeline_id=pipe_id)
|
96
|
+
self.assertTrue(len(ops) > 0)
|
97
|
+
|
98
|
+
ops = fcc.get_deployment_pipeline_operation(deployment_pipeline_id=pipe_id, operation_id=ops[0]["id"])
|
99
|
+
self.assertIsNotNone(ops["id"])
|
100
|
+
|
101
|
+
stages = fcc.list_deployment_pipeline_stages(deployment_pipeline_id=pipe_id)
|
102
|
+
self.assertTrue(len(stages) == 2)
|
103
|
+
|
104
|
+
items = fcc.list_deployment_pipeline_stage_items(deployment_pipeline_id=pipe_id, stage_id=dev_stage["id"])
|
105
|
+
self.assertTrue(len(items) == 1)
|
106
|
+
|
107
|
+
updated_pipe = fcc.update_deployment_pipeline(deployment_pipeline_id=pipe.id, display_name="sdknewname", description="newdescription")
|
108
|
+
self.assertIsNotNone(updated_pipe.id)
|
109
|
+
|
110
|
+
pipe = fcc.get_deployment_pipeline(pipe_id)
|
111
|
+
self.assertIsNotNone(pipe.id)
|
112
|
+
self.assertTrue(pipe.display_name == "sdknewname")
|
113
|
+
|
114
|
+
updated_stage = fcc.update_deployment_pipeline_stage(deployment_pipeline_id=pipe_id, stage_id=prod_stage["id"],
|
115
|
+
display_name="newname", description="newdescription")
|
116
|
+
self.assertIsNotNone(updated_stage["id"])
|
117
|
+
|
118
|
+
stage = fcc.get_deployment_pipeline_stage(deployment_pipeline_id=pipe_id, stage_id=prod_stage["id"])
|
119
|
+
self.assertIsNotNone(stage.id)
|
120
|
+
self.assertTrue(stage.display_name == "newname")
|
121
|
+
|
122
|
+
for _ in range(10):
|
123
|
+
ops = fcc.get_deployment_pipeline_operation(deployment_pipeline_id=pipe_id, operation_id=ops["id"])
|
124
|
+
if ops["status"] != "Running":
|
125
|
+
break
|
126
|
+
else:
|
127
|
+
time.sleep(5)
|
128
|
+
|
129
|
+
resp = fcc.unassign_workspace_from_stage(deployment_pipeline_id=pipe_id,stage_id=prod_stage["id"])
|
130
|
+
self.assertEqual(resp, 200)
|
131
|
+
|
132
|
+
prod_workspace.delete()
|
133
|
+
|
134
|
+
resp = fcc.delete_deployment_pipeline(deployment_pipeline_id=pipe_id)
|
135
|
+
self.assertEqual(resp, 200)
|
@@ -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_digital_twin_builder(self):
|
14
|
+
fcc = self.fcc
|
15
|
+
|
16
|
+
workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
17
|
+
item_id = "d7260274-8038-44ec-b096-dec1723931d1"
|
18
|
+
|
19
|
+
digital_twin_builder = fcc.list_digital_twin_builders(workspace_id=workspace_id)
|
20
|
+
for digital_twin_builder in digital_twin_builder:
|
21
|
+
if digital_twin_builder.id != item_id:
|
22
|
+
resp = fcc.delete_digital_twin_builder(workspace_id=workspace_id, digital_twin_builder_id=digital_twin_builder.id)
|
23
|
+
self.assertEqual(resp, 200)
|
24
|
+
|
25
|
+
digital_twin_builder_definition = fcc.get_digital_twin_builder_definition(workspace_id=workspace_id, digital_twin_builder_id=item_id)
|
26
|
+
self.assertIn("definition", digital_twin_builder_definition)
|
27
|
+
definition = digital_twin_builder_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
|
+
digital_twin_builder_new = fcc.create_digital_twin_builder(workspace_id=workspace_id, display_name=date_str, definition=definition)
|
34
|
+
|
35
|
+
self.assertEqual(digital_twin_builder_new.display_name, date_str)
|
36
|
+
|
37
|
+
digital_twin_builder_get = fcc.get_digital_twin_builder(workspace_id=workspace_id, digital_twin_builder_id=digital_twin_builder_new.id)
|
38
|
+
self.assertEqual(digital_twin_builder_get.display_name, date_str)
|
39
|
+
|
40
|
+
digital_twin_builder = fcc.list_digital_twin_builders(workspace_id=workspace_id)
|
41
|
+
self.assertEqual(len(digital_twin_builder), 2)
|
42
|
+
|
43
|
+
date_str_updated = date_str + "_updated"
|
44
|
+
digital_twin_builder_updated = fcc.update_digital_twin_builder(workspace_id=workspace_id, digital_twin_builder_id=digital_twin_builder_new.id, display_name=date_str_updated, return_item=True)
|
45
|
+
self.assertEqual(digital_twin_builder_updated.display_name, date_str_updated)
|
46
|
+
|
47
|
+
digital_twin_builder_updated = fcc.update_digital_twin_builder_definition(workspace_id=workspace_id, digital_twin_builder_id=digital_twin_builder_new.id, definition=definition)
|
48
|
+
self.assertIn(digital_twin_builder_updated.status_code, [200,202])
|
49
|
+
|
50
|
+
for digital_twin_builder in digital_twin_builder:
|
51
|
+
if digital_twin_builder.id != item_id:
|
52
|
+
resp = fcc.delete_digital_twin_builder(workspace_id=workspace_id, digital_twin_builder_id=digital_twin_builder.id)
|
53
|
+
self.assertEqual(resp, 200)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,119 @@
|
|
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("sdkswedencentral")
|
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
|
+
for dom in fca.list_domains():
|
25
|
+
if "sdktestdomain" in dom.display_name:
|
26
|
+
dom.delete()
|
27
|
+
|
28
|
+
# Create domain
|
29
|
+
domain_name = "sdktestdomains" + datetime.now().strftime("%Y%m%d%H%M%S")
|
30
|
+
domain = fca.create_domain(display_name=domain_name)
|
31
|
+
self.assertIsNotNone(domain.id)
|
32
|
+
self.assertEqual(domain.display_name, domain_name)
|
33
|
+
|
34
|
+
# Get domain by name
|
35
|
+
domain_clone = fca.get_domain_by_name(domain_name)
|
36
|
+
self.assertIsNotNone(domain_clone.id)
|
37
|
+
self.assertEqual(domain_clone.display_name, domain_name)
|
38
|
+
|
39
|
+
# Get domain by id
|
40
|
+
domain_clone = fca.get_domain_by_id(domain.id)
|
41
|
+
self.assertIsNotNone(domain_clone.id)
|
42
|
+
self.assertEqual(domain_clone.display_name, domain_name)
|
43
|
+
|
44
|
+
# List domains
|
45
|
+
domains = fca.list_domains()
|
46
|
+
self.assertGreater(len(domains), 0)
|
47
|
+
domains_ids = [d.id for d in domains]
|
48
|
+
self.assertIn(domain.id, domains_ids)
|
49
|
+
|
50
|
+
# Update domain
|
51
|
+
domain_new_name = f"{domain_name}2"
|
52
|
+
domain_clone = fca.update_domain(domain.id, display_name=domain_new_name, return_item=True)
|
53
|
+
self.assertEqual(domain_clone.display_name, domain_new_name)
|
54
|
+
|
55
|
+
# Assign domain workspaces by Ids
|
56
|
+
status_code = fca.assign_domain_workspaces_by_ids(domain.id, [ws.id])
|
57
|
+
self.assertEqual(status_code, 200)
|
58
|
+
|
59
|
+
# List domain workspaces
|
60
|
+
workspaces = fca.list_domain_workspaces(domain.id, workspace_objects=False)
|
61
|
+
self.assertGreater(len(workspaces), 0)
|
62
|
+
workspaces_ids = [w["id"] for w in workspaces]
|
63
|
+
self.assertIn(ws.id, workspaces_ids)
|
64
|
+
|
65
|
+
# Unassign domain workspaces by ids
|
66
|
+
status_code = fca.unassign_domain_workspaces_by_ids(domain.id, [ws.id])
|
67
|
+
self.assertEqual(status_code, 200)
|
68
|
+
|
69
|
+
workspaces = fca.list_domain_workspaces(domain.id)
|
70
|
+
self.assertEqual(len(workspaces), 0)
|
71
|
+
|
72
|
+
# Assign domain workspaces by capacities
|
73
|
+
status_code = fca.assign_domain_workspaces_by_capacities(domain.id, [cap.id])
|
74
|
+
self.assertEqual(status_code, 202)
|
75
|
+
|
76
|
+
workspaces = fca.list_domain_workspaces(domain.id, workspace_objects=False)
|
77
|
+
self.assertGreater(len(workspaces), 0)
|
78
|
+
workspaces_ids = [w["id"] for w in workspaces]
|
79
|
+
self.assertIn(ws.id, workspaces_ids)
|
80
|
+
|
81
|
+
# Unassign all domain workspaces
|
82
|
+
status_code = fca.unassign_all_domain_workspaces(domain.id)
|
83
|
+
self.assertEqual(status_code, 200)
|
84
|
+
|
85
|
+
workspaces = fca.list_domain_workspaces(domain.id)
|
86
|
+
self.assertEqual(len(workspaces), 0)
|
87
|
+
|
88
|
+
# Assign domain workspaces by principals
|
89
|
+
status_code = fca.assign_domains_workspaces_by_principals(domain.id, [principal], wait_for_completion=False)
|
90
|
+
|
91
|
+
self.assertEqual(status_code, 202)
|
92
|
+
|
93
|
+
workspaces = fca.list_domain_workspaces(domain.id, workspace_objects=False)
|
94
|
+
self.assertGreater(len(workspaces), 0)
|
95
|
+
workspaces_ids = [w["id"] for w in workspaces]
|
96
|
+
self.assertIn(ws.id, workspaces_ids)
|
97
|
+
|
98
|
+
# Role assignments bulk assign
|
99
|
+
|
100
|
+
principal_2 = {'id': 'e0505016-ef55-4ca7-b106-e085cc201823', 'type': 'User'}
|
101
|
+
principals = [principal, principal_2]
|
102
|
+
|
103
|
+
status_code = fca.role_assignments_bulk_assign(domain.id, "Contributors", principals)
|
104
|
+
|
105
|
+
self.assertEqual(status_code, 200)
|
106
|
+
|
107
|
+
# Role assignments bulk unassign
|
108
|
+
status_code = fca.role_assignments_bulk_unassign(domain.id, "Contributors", [principal_2])
|
109
|
+
|
110
|
+
self.assertEqual(status_code, 200)
|
111
|
+
|
112
|
+
# Delete domain
|
113
|
+
status_code = fca.delete_domain(domain.id)
|
114
|
+
|
115
|
+
self.assertEqual(status_code, 200)
|
116
|
+
|
117
|
+
domains = fca.list_domains()
|
118
|
+
domains_ids = [d.id for d in domains]
|
119
|
+
self.assertNotIn(domain.id, domains_ids)
|
@@ -0,0 +1,121 @@
|
|
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
|
+
fcc = self.fc
|
17
|
+
workspace_id = '05bc5baa-ef02-4a31-ab20-158a478151d3'
|
18
|
+
item_id = '35a08bcb-ff8c-40f7-93ea-b86dc1affce5'
|
19
|
+
|
20
|
+
environments = fcc.list_environments(workspace_id=workspace_id)
|
21
|
+
for environment in environments:
|
22
|
+
if environment.id != item_id:
|
23
|
+
resp = fcc.delete_environment(workspace_id=workspace_id, environment_id=environment.id)
|
24
|
+
self.assertEqual(resp, 200)
|
25
|
+
|
26
|
+
|
27
|
+
date_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
28
|
+
date_str = date_str.replace(" ", "T").replace(":", "").replace("-", "")
|
29
|
+
date_str = f"environment{date_str}"
|
30
|
+
|
31
|
+
environment_new = fcc.create_environment(workspace_id=workspace_id, display_name=date_str)
|
32
|
+
|
33
|
+
self.assertEqual(environment_new.display_name, date_str)
|
34
|
+
|
35
|
+
environment_get = fcc.get_environment(workspace_id=workspace_id, environment_id=environment_new.id)
|
36
|
+
self.assertEqual(environment_get.display_name, date_str)
|
37
|
+
|
38
|
+
environments = fcc.list_environments(workspace_id=workspace_id)
|
39
|
+
self.assertEqual(len(environments), 2)
|
40
|
+
|
41
|
+
date_str_updated = date_str + "_updated"
|
42
|
+
environment_updated = fcc.update_environment(workspace_id=workspace_id, environment_id=environment_new.id, display_name=date_str_updated, return_item=True)
|
43
|
+
self.assertEqual(environment_updated.display_name, date_str_updated)
|
44
|
+
|
45
|
+
for environment in environments:
|
46
|
+
if environment.id != item_id:
|
47
|
+
resp = fcc.delete_environment(workspace_id=workspace_id, environment_id=environment.id)
|
48
|
+
self.assertEqual(resp, 200)
|
49
|
+
|
50
|
+
def test_environment_details(self):
|
51
|
+
fc = FabricClientCore()
|
52
|
+
workspace_id = '05bc5baa-ef02-4a31-ab20-158a478151d3'
|
53
|
+
environment_id = '35a08bcb-ff8c-40f7-93ea-b86dc1affce5'
|
54
|
+
|
55
|
+
published_settings = fc.get_published_settings(workspace_id=workspace_id, environment_id=environment_id)
|
56
|
+
self.assertIsNotNone(published_settings)
|
57
|
+
self.assertIn("instancePool", published_settings)
|
58
|
+
self.assertIn("dynamicExecutorAllocation", published_settings)
|
59
|
+
staging_settings = fc.get_staging_settings(workspace_id=workspace_id, environment_id=environment_id)
|
60
|
+
self.assertIsNotNone(staging_settings)
|
61
|
+
self.assertIn("instancePool", staging_settings)
|
62
|
+
self.assertIn("dynamicExecutorAllocation", staging_settings)
|
63
|
+
if staging_settings["driverCores"] == 8:
|
64
|
+
driver_cores = 4
|
65
|
+
else:
|
66
|
+
driver_cores = 8
|
67
|
+
updated_settings = fc.update_staging_settings(workspace_id=workspace_id, environment_id=environment_id, driver_cores=driver_cores)
|
68
|
+
self.assertIn("instancePool", updated_settings)
|
69
|
+
self.assertIn("dynamicExecutorAllocation", updated_settings)
|
70
|
+
self.assertEqual(updated_settings["driverCores"], driver_cores)
|
71
|
+
updated_settings = fc.get_staging_settings(workspace_id=workspace_id, environment_id=environment_id)
|
72
|
+
self.assertIn("instancePool", updated_settings)
|
73
|
+
self.assertIn("dynamicExecutorAllocation", updated_settings)
|
74
|
+
self.assertEqual(updated_settings["driverCores"], driver_cores)
|
75
|
+
|
76
|
+
|
77
|
+
def test_environment_spark_libraries(self):
|
78
|
+
fc = self.fc
|
79
|
+
workspace_id = '05bc5baa-ef02-4a31-ab20-158a478151d3'
|
80
|
+
environment_id = '35a08bcb-ff8c-40f7-93ea-b86dc1affce5'
|
81
|
+
|
82
|
+
resp = fc.get_published_libraries(workspace_id, environment_id)
|
83
|
+
self.assertIn('customLibraries', resp)
|
84
|
+
self.assertIn('wheelFiles', resp['customLibraries'])
|
85
|
+
self.assertIn('msfabricpysdkcore-0.2.6-py3-none-any.whl', resp['customLibraries']['wheelFiles'])
|
86
|
+
|
87
|
+
resp = fc.upload_staging_library(workspace_id, environment_id, 'dummy.whl')
|
88
|
+
self.assertEqual(resp.status_code, 200)
|
89
|
+
|
90
|
+
resp = fc.get_staging_libraries(workspace_id, environment_id)
|
91
|
+
|
92
|
+
self.assertIn('customLibraries', resp)
|
93
|
+
self.assertIn('wheelFiles', resp['customLibraries'])
|
94
|
+
self.assertIn('dummy.whl', resp['customLibraries']['wheelFiles'])
|
95
|
+
|
96
|
+
|
97
|
+
resp = fc.publish_environment(workspace_id, environment_id)
|
98
|
+
self.assertIn('publishDetails', resp)
|
99
|
+
self.assertIn('state', resp['publishDetails'])
|
100
|
+
self.assertEqual(resp['publishDetails']['state'].lower(), 'running')
|
101
|
+
|
102
|
+
|
103
|
+
resp = fc.cancel_publish(workspace_id, environment_id)
|
104
|
+
self.assertIn('publishDetails', resp)
|
105
|
+
self.assertIn('state', resp['publishDetails'])
|
106
|
+
self.assertEqual(resp['publishDetails']['state'].lower(), 'cancelled')
|
107
|
+
|
108
|
+
resp = fc.delete_staging_library(workspace_id, environment_id, 'dummy.whl')
|
109
|
+
self.assertEqual(resp.status_code, 200)
|
110
|
+
|
111
|
+
resp = fc.get_staging_libraries(workspace_id, environment_id)
|
112
|
+
|
113
|
+
self.assertIn('customLibraries', resp)
|
114
|
+
self.assertIn('wheelFiles', resp['customLibraries'])
|
115
|
+
self.assertNotIn('dummy.whl', resp['customLibraries']['wheelFiles'])
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
|
@@ -0,0 +1,57 @@
|
|
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
|
+
fcc = self.fc
|
19
|
+
|
20
|
+
workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
21
|
+
item_id = "94f4b54b-980b-43f9-8b67-ded8028cf1b9"
|
22
|
+
|
23
|
+
eventstreams = fcc.list_eventstreams(workspace_id=workspace_id)
|
24
|
+
for eventstream in eventstreams:
|
25
|
+
if eventstream.id != item_id:
|
26
|
+
resp = fcc.delete_eventstream(workspace_id=workspace_id, eventstream_id=eventstream.id)
|
27
|
+
self.assertEqual(resp, 200)
|
28
|
+
|
29
|
+
eventstream_definition = fcc.get_eventstream_definition(workspace_id=workspace_id, eventstream_id=item_id)
|
30
|
+
self.assertIn("definition", eventstream_definition)
|
31
|
+
definition = eventstream_definition["definition"]
|
32
|
+
|
33
|
+
date_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
34
|
+
date_str = date_str.replace(" ", "T").replace(":", "").replace("-", "")
|
35
|
+
date_str = f"eventstream{date_str}"
|
36
|
+
|
37
|
+
eventstream_new = fcc.create_eventstream(workspace_id=workspace_id, display_name=date_str, definition=definition)
|
38
|
+
|
39
|
+
self.assertEqual(eventstream_new.display_name, date_str)
|
40
|
+
|
41
|
+
eventstream_get = fcc.get_eventstream(workspace_id=workspace_id, eventstream_id=eventstream_new.id)
|
42
|
+
self.assertEqual(eventstream_get.display_name, date_str)
|
43
|
+
|
44
|
+
eventstreams = fcc.list_eventstreams(workspace_id=workspace_id)
|
45
|
+
self.assertEqual(len(eventstreams), 2)
|
46
|
+
|
47
|
+
date_str_updated = date_str + "_updated"
|
48
|
+
eventstream_updated = fcc.update_eventstream(workspace_id=workspace_id, eventstream_id=eventstream_new.id, display_name=date_str_updated, return_item=True)
|
49
|
+
self.assertEqual(eventstream_updated.display_name, date_str_updated)
|
50
|
+
|
51
|
+
eventstream_updated = fcc.update_eventstream_definition(workspace_id=workspace_id, eventstream_id=eventstream_new.id, definition=definition)
|
52
|
+
self.assertEqual(eventstream_updated.status_code, 200)
|
53
|
+
|
54
|
+
for eventstream in eventstreams:
|
55
|
+
if eventstream.id != item_id:
|
56
|
+
resp = fcc.delete_eventstream(workspace_id=workspace_id, eventstream_id=eventstream.id)
|
57
|
+
self.assertEqual(resp, 200)
|
@@ -0,0 +1,63 @@
|
|
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
|
+
fcc = self.fc
|
25
|
+
|
26
|
+
workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
27
|
+
item_id = "5d544ac1-c58d-4d3a-a032-f57dc4b5c2a7"
|
28
|
+
|
29
|
+
eventhouses = fcc.list_eventhouses(workspace_id=workspace_id)
|
30
|
+
for eventhouse in eventhouses:
|
31
|
+
if eventhouse.id != item_id:
|
32
|
+
resp = fcc.delete_eventhouse(workspace_id=workspace_id, eventhouse_id=eventhouse.id)
|
33
|
+
self.assertEqual(resp, 200)
|
34
|
+
|
35
|
+
eventhouse_definition = fcc.get_eventhouse_definition(workspace_id=workspace_id, eventhouse_id=item_id)
|
36
|
+
self.assertIn("definition", eventhouse_definition)
|
37
|
+
definition = eventhouse_definition["definition"]
|
38
|
+
|
39
|
+
date_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
40
|
+
date_str = date_str.replace(" ", "T").replace(":", "").replace("-", "")
|
41
|
+
date_str = f"eventhouse{date_str}"
|
42
|
+
|
43
|
+
eventhouse_new = fcc.create_eventhouse(workspace_id=workspace_id, display_name=date_str, definition=definition)
|
44
|
+
|
45
|
+
self.assertEqual(eventhouse_new.display_name, date_str)
|
46
|
+
|
47
|
+
eventhouse_get = fcc.get_eventhouse(workspace_id=workspace_id, eventhouse_id=eventhouse_new.id)
|
48
|
+
self.assertEqual(eventhouse_get.display_name, date_str)
|
49
|
+
|
50
|
+
eventhouses = fcc.list_eventhouses(workspace_id=workspace_id)
|
51
|
+
self.assertEqual(len(eventhouses), 2)
|
52
|
+
|
53
|
+
date_str_updated = date_str + "_updated"
|
54
|
+
eventhouse_updated = fcc.update_eventhouse(workspace_id=workspace_id, eventhouse_id=eventhouse_new.id, display_name=date_str_updated, return_item=True)
|
55
|
+
self.assertEqual(eventhouse_updated.display_name, date_str_updated)
|
56
|
+
|
57
|
+
eventhouse_updated = fcc.update_eventhouse_definition(workspace_id=workspace_id, eventhouse_id=eventhouse_new.id, definition=definition)
|
58
|
+
self.assertIn(eventhouse_updated.status_code, [200, 202])
|
59
|
+
|
60
|
+
for eventhouse in eventhouses:
|
61
|
+
if eventhouse.id != item_id:
|
62
|
+
resp = fcc.delete_eventhouse(workspace_id=workspace_id, eventhouse_id=eventhouse.id)
|
63
|
+
self.assertEqual(resp, 200)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
|
2
|
+
# import unittest
|
3
|
+
# from dotenv import load_dotenv
|
4
|
+
# from msfabricpysdkcore import FabricClientCore
|
5
|
+
# from datetime import datetime
|
6
|
+
# from time import sleep
|
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
|
+
# def test_eventstream_topology(self):
|
15
|
+
|
16
|
+
# fcc = FabricClientCore()
|
17
|
+
|
18
|
+
# workspace_id = "05bc5baa-ef02-4a31-ab20-158a478151d3"
|
19
|
+
|
20
|
+
# item_id = "94f4b54b-980b-43f9-8b67-ded8028cf1b9"
|
21
|
+
# custom_destination_id = "acd90d61-2792-4494-9f17-c822f2fb984d"
|
22
|
+
# custom_source_id = "9f382928-7d42-43f9-b02b-1b1352ad3ecd"
|
23
|
+
# source_id = "e58db369-e473-40f4-bedd-022b60540b17"
|
24
|
+
# destination_id = "2446e6cf-98c9-45cb-a102-78d2ca3eb257"
|
25
|
+
|
26
|
+
|
27
|
+
# topology = fcc.get_eventstream_topology(workspace_id, item_id)
|
28
|
+
# self.assertIsNotNone(topology)
|
29
|
+
# self.assertIn("sources", topology)
|
30
|
+
# self.assertIn("destinations", topology)
|
31
|
+
|
32
|
+
# destination = fcc.get_eventstream_destination(workspace_id, item_id, destination_id)
|
33
|
+
# self.assertIsNotNone(destination)
|
34
|
+
# self.assertEqual(destination["id"], destination_id)
|
35
|
+
|
36
|
+
# destination_conn = fcc.get_eventstream_destination_connection(workspace_id, item_id, custom_destination_id)
|
37
|
+
# self.assertIsNotNone(destination_conn)
|
38
|
+
# self.assertIn("fullyQualifiedNamespace", destination_conn)
|
39
|
+
|
40
|
+
# source = fcc.get_eventstream_source(workspace_id, item_id, source_id)
|
41
|
+
# self.assertIsNotNone(source)
|
42
|
+
# self.assertEqual(source["id"], source_id)
|
43
|
+
|
44
|
+
# source_conn = fcc.get_eventstream_source_connection(workspace_id, item_id, custom_source_id)
|
45
|
+
# self.assertIsNotNone(source_conn)
|
46
|
+
# self.assertIn("fullyQualifiedNamespace", source_conn)
|
47
|
+
|
48
|
+
# resp = fcc.pause_eventstream(workspace_id, item_id)
|
49
|
+
# self.assertEqual(resp, 200)
|
50
|
+
|
51
|
+
# def resume():
|
52
|
+
# resp = fcc.resume_eventstream(workspace_id, item_id, start_type="Now")
|
53
|
+
# self.assertEqual(resp, 200)
|
54
|
+
|
55
|
+
# for _ in range(12):
|
56
|
+
# try:
|
57
|
+
# resume()
|
58
|
+
# break
|
59
|
+
# except Exception as e:
|
60
|
+
# sleep(5)
|
61
|
+
|
62
|
+
# resp = fcc.pause_eventstream_source(workspace_id, item_id, source_id)
|
63
|
+
# self.assertEqual(resp, 200)
|
64
|
+
|
65
|
+
# resp = fcc.pause_eventstream_destination(workspace_id, item_id, destination_id)
|
66
|
+
# self.assertEqual(resp, 200)
|
67
|
+
|
68
|
+
# resp = fcc.resume_eventstream_source(workspace_id, item_id, source_id, start_type="Now")
|
69
|
+
# self.assertEqual(resp, 200)
|
70
|
+
|
71
|
+
# def resume():
|
72
|
+
# resp = fcc.resume_eventstream_destination(workspace_id, item_id, destination_id, start_type="Now")
|
73
|
+
# self.assertEqual(resp, 200)
|
74
|
+
|
75
|
+
# for _ in range(12):
|
76
|
+
# try:
|
77
|
+
# resume()
|
78
|
+
# break
|
79
|
+
# except Exception as e:
|
80
|
+
# sleep(5)
|
81
|
+
|
82
|
+
|