pyegeria 5.3.9.9.3__py3-none-any.whl → 5.5.3.3__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.

Potentially problematic release.


This version of pyegeria might be problematic. Click here for more details.

Files changed (272) hide show
  1. commands/__init__.py +24 -0
  2. commands/cat/Dr-Egeria_md-orig.py +2 -2
  3. commands/cat/__init__.py +1 -17
  4. commands/cat/collection_actions.py +197 -0
  5. commands/cat/dr_egeria_command_help.py +372 -0
  6. commands/cat/dr_egeria_jupyter.py +7 -7
  7. commands/cat/dr_egeria_md.py +27 -182
  8. commands/cat/exp_list_glossaries.py +11 -14
  9. commands/cat/get_asset_graph.py +37 -267
  10. commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
  11. commands/cat/get_project_dependencies.py +14 -14
  12. commands/cat/get_project_structure.py +15 -14
  13. commands/cat/get_tech_type_elements.py +16 -116
  14. commands/cat/glossary_actions.py +145 -298
  15. commands/cat/list_assets.py +3 -11
  16. commands/cat/list_cert_types.py +17 -63
  17. commands/cat/list_collections.py +46 -138
  18. commands/cat/list_deployed_catalogs.py +15 -27
  19. commands/cat/list_deployed_database_schemas.py +27 -43
  20. commands/cat/list_deployed_databases.py +16 -31
  21. commands/cat/list_deployed_servers.py +35 -54
  22. commands/cat/list_glossaries.py +18 -17
  23. commands/cat/list_projects.py +10 -12
  24. commands/cat/list_tech_type_elements.py +21 -37
  25. commands/cat/list_tech_types.py +13 -25
  26. commands/cat/list_terms.py +38 -79
  27. commands/cat/list_todos.py +4 -11
  28. commands/cat/list_user_ids.py +3 -10
  29. commands/cat/my_reports.py +559 -0
  30. commands/cat/run_report.py +394 -0
  31. commands/cat/run_report_orig.py +528 -0
  32. commands/cli/egeria.py +222 -247
  33. commands/cli/egeria_cat.py +68 -81
  34. commands/cli/egeria_my.py +13 -0
  35. commands/cli/egeria_ops.py +69 -74
  36. commands/cli/egeria_tech.py +17 -93
  37. commands/cli/ops_config.py +3 -6
  38. commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
  39. commands/{cat/list_data_structures.py → deprecated/list_data_structures_full.py} +3 -6
  40. commands/deprecated/old_get_asset_graph.py +315 -0
  41. commands/my/__init__.py +0 -2
  42. commands/my/list_my_profile.py +27 -34
  43. commands/my/list_my_roles.py +1 -7
  44. commands/my/monitor_my_todos.py +1 -7
  45. commands/my/monitor_open_todos.py +6 -7
  46. commands/my/todo_actions.py +4 -5
  47. commands/ops/__init__.py +0 -2
  48. commands/ops/gov_server_actions.py +17 -21
  49. commands/ops/list_archives.py +17 -38
  50. commands/ops/list_catalog_targets.py +33 -40
  51. commands/ops/load_archive.py +35 -26
  52. commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
  53. commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
  54. commands/ops/monitor_engine_activity.py +79 -77
  55. commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
  56. commands/ops/monitor_platform_status.py +38 -50
  57. commands/ops/monitor_server_startup.py +6 -11
  58. commands/ops/monitor_server_status.py +7 -11
  59. commands/ops/orig_monitor_server_list.py +8 -8
  60. commands/ops/orig_monitor_server_status.py +1 -5
  61. commands/ops/refresh_integration_daemon.py +5 -5
  62. commands/ops/restart_integration_daemon.py +5 -5
  63. commands/ops/table_integ_daemon_status.py +6 -6
  64. commands/ops/x_engine_actions.py +7 -7
  65. commands/tech/__init__.py +0 -2
  66. commands/tech/{generic_actions.py → element_actions.py} +6 -11
  67. commands/tech/get_element_info.py +20 -29
  68. commands/tech/get_guid_info.py +23 -42
  69. commands/tech/get_tech_details.py +20 -35
  70. commands/tech/get_tech_type_template.py +28 -39
  71. commands/tech/list_all_om_type_elements.py +24 -30
  72. commands/tech/list_all_om_type_elements_x.py +22 -28
  73. commands/tech/list_all_related_elements.py +19 -28
  74. commands/tech/list_anchored_elements.py +22 -30
  75. commands/tech/list_asset_types.py +19 -24
  76. commands/tech/list_elements_by_classification_by_property_value.py +26 -32
  77. commands/tech/list_elements_by_property_value.py +19 -25
  78. commands/tech/list_elements_by_property_value_x.py +20 -28
  79. commands/tech/list_elements_for_classification.py +28 -41
  80. commands/tech/list_gov_action_processes.py +16 -27
  81. commands/tech/list_information_supply_chains.py +22 -30
  82. commands/tech/list_registered_services.py +14 -26
  83. commands/tech/list_related_elements_with_prop_value.py +15 -25
  84. commands/tech/list_related_specification.py +1 -4
  85. commands/tech/list_relationship_types.py +15 -25
  86. commands/tech/list_relationships.py +20 -36
  87. commands/tech/list_solution_blueprints.py +28 -33
  88. commands/tech/list_solution_components.py +23 -29
  89. commands/tech/list_solution_roles.py +21 -32
  90. commands/tech/list_tech_templates.py +51 -54
  91. commands/tech/list_valid_metadata_values.py +5 -9
  92. commands/tech/table_tech_templates.py +2 -6
  93. commands/tech/x_list_related_elements.py +1 -4
  94. examples/GeoSpatial Products Example.py +524 -0
  95. examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
  96. examples/Jupyter Notebooks/README.md +2 -0
  97. examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
  98. examples/Jupyter Notebooks/common/__init__.py +14 -0
  99. examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
  100. examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
  101. examples/Jupyter Notebooks/common/globals.ipynb +184 -0
  102. examples/Jupyter Notebooks/common/globals.py +154 -0
  103. examples/Jupyter Notebooks/common/orig_globals.py +152 -0
  104. examples/format_sets/all_format_sets.json +910 -0
  105. examples/format_sets/custom_format_sets.json +268 -0
  106. examples/format_sets/subset_format_sets.json +187 -0
  107. examples/format_sets_save_load_example.py +291 -0
  108. examples/jacquard_data_sets.py +129 -0
  109. examples/output_formats_example.py +193 -0
  110. examples/test_jacquard_data_sets.py +54 -0
  111. examples/test_jacquard_data_sets_scenarios.py +94 -0
  112. md_processing/__init__.py +90 -0
  113. md_processing/command_dispatcher.py +33 -0
  114. md_processing/command_mapping.py +221 -0
  115. md_processing/data/commands/commands_data_designer.json +537 -0
  116. md_processing/data/commands/commands_external_reference.json +733 -0
  117. md_processing/data/commands/commands_feedback.json +155 -0
  118. md_processing/data/commands/commands_general.json +204 -0
  119. md_processing/data/commands/commands_glossary.json +218 -0
  120. md_processing/data/commands/commands_governance.json +3678 -0
  121. md_processing/data/commands/commands_product_manager.json +865 -0
  122. md_processing/data/commands/commands_project.json +642 -0
  123. md_processing/data/commands/commands_solution_architect.json +366 -0
  124. md_processing/data/commands.json +17568 -0
  125. md_processing/data/commands_working.json +30641 -0
  126. md_processing/data/gened_report_specs.py +6584 -0
  127. md_processing/data/generated_format_sets.json +6533 -0
  128. md_processing/data/generated_format_sets_old.json +4137 -0
  129. md_processing/data/generated_format_sets_old.py +45 -0
  130. md_processing/dr_egeria.py +182 -0
  131. md_processing/md_commands/__init__.py +3 -0
  132. md_processing/md_commands/data_designer_commands.py +1276 -0
  133. md_processing/md_commands/ext_ref_commands.py +530 -0
  134. md_processing/md_commands/feedback_commands.py +726 -0
  135. md_processing/md_commands/glossary_commands.py +684 -0
  136. md_processing/md_commands/governance_officer_commands.py +600 -0
  137. md_processing/md_commands/product_manager_commands.py +1266 -0
  138. md_processing/md_commands/project_commands.py +383 -0
  139. md_processing/md_commands/solution_architect_commands.py +1184 -0
  140. md_processing/md_commands/view_commands.py +295 -0
  141. md_processing/md_processing_utils/__init__.py +4 -0
  142. md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
  143. md_processing/md_processing_utils/common_md_utils.py +578 -0
  144. md_processing/md_processing_utils/determine_width.py +103 -0
  145. md_processing/md_processing_utils/extraction_utils.py +547 -0
  146. md_processing/md_processing_utils/gen_report_specs.py +643 -0
  147. md_processing/md_processing_utils/generate_dr_help.py +193 -0
  148. md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
  149. md_processing/md_processing_utils/generate_md_templates.py +83 -0
  150. md_processing/md_processing_utils/md_processing_constants.py +1228 -0
  151. md_processing/md_processing_utils/message_constants.py +19 -0
  152. pyegeria/__init__.py +201 -443
  153. pyegeria/core/__init__.py +40 -0
  154. pyegeria/core/_base_platform_client.py +574 -0
  155. pyegeria/core/_base_server_client.py +573 -0
  156. pyegeria/core/_exceptions.py +457 -0
  157. pyegeria/core/_globals.py +60 -0
  158. pyegeria/core/_server_client.py +6073 -0
  159. pyegeria/core/_validators.py +257 -0
  160. pyegeria/core/config.py +654 -0
  161. pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
  162. pyegeria/core/load_config.py +37 -0
  163. pyegeria/core/logging_configuration.py +207 -0
  164. pyegeria/core/mcp_adapter.py +144 -0
  165. pyegeria/core/mcp_server.py +212 -0
  166. pyegeria/core/utils.py +405 -0
  167. pyegeria/deprecated/__init__.py +0 -0
  168. pyegeria/{_client.py → deprecated/_client.py} +62 -24
  169. pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
  170. pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
  171. pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
  172. pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
  173. pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
  174. pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
  175. pyegeria/egeria_cat_client.py +25 -51
  176. pyegeria/egeria_client.py +140 -98
  177. pyegeria/egeria_config_client.py +48 -24
  178. pyegeria/egeria_tech_client.py +170 -83
  179. pyegeria/models/__init__.py +150 -0
  180. pyegeria/models/collection_models.py +168 -0
  181. pyegeria/models/models.py +654 -0
  182. pyegeria/omvs/__init__.py +84 -0
  183. pyegeria/omvs/action_author.py +342 -0
  184. pyegeria/omvs/actor_manager.py +5980 -0
  185. pyegeria/omvs/asset_catalog.py +842 -0
  186. pyegeria/omvs/asset_maker.py +2736 -0
  187. pyegeria/omvs/automated_curation.py +4403 -0
  188. pyegeria/omvs/classification_manager.py +11213 -0
  189. pyegeria/omvs/collection_manager.py +5780 -0
  190. pyegeria/omvs/community_matters_omvs.py +468 -0
  191. pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
  192. pyegeria/{data_designer_omvs.py → omvs/data_designer.py} +1991 -1691
  193. pyegeria/omvs/data_discovery.py +869 -0
  194. pyegeria/omvs/data_engineer.py +372 -0
  195. pyegeria/omvs/digital_business.py +1133 -0
  196. pyegeria/omvs/external_links.py +1752 -0
  197. pyegeria/omvs/feedback_manager.py +834 -0
  198. pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
  199. pyegeria/omvs/glossary_manager.py +3231 -0
  200. pyegeria/omvs/governance_officer.py +3009 -0
  201. pyegeria/omvs/lineage_linker.py +314 -0
  202. pyegeria/omvs/location_arena.py +1525 -0
  203. pyegeria/omvs/metadata_expert.py +668 -0
  204. pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
  205. pyegeria/omvs/my_profile.py +1042 -0
  206. pyegeria/omvs/notification_manager.py +358 -0
  207. pyegeria/omvs/people_organizer.py +394 -0
  208. pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
  209. pyegeria/omvs/product_manager.py +1825 -0
  210. pyegeria/omvs/project_manager.py +1907 -0
  211. pyegeria/omvs/reference_data.py +1140 -0
  212. pyegeria/omvs/registered_info.py +334 -0
  213. pyegeria/omvs/runtime_manager.py +2817 -0
  214. pyegeria/omvs/schema_maker.py +446 -0
  215. pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
  216. pyegeria/omvs/solution_architect.py +6490 -0
  217. pyegeria/omvs/specification_properties.py +37 -0
  218. pyegeria/omvs/subject_area.py +1042 -0
  219. pyegeria/omvs/template_manager_omvs.py +236 -0
  220. pyegeria/omvs/time_keeper.py +1761 -0
  221. pyegeria/omvs/valid_metadata.py +3221 -0
  222. pyegeria/omvs/valid_metadata_lists.py +37 -0
  223. pyegeria/omvs/valid_type_lists.py +37 -0
  224. pyegeria/view/__init__.py +28 -0
  225. pyegeria/view/_output_format_models.py +514 -0
  226. pyegeria/view/_output_formats.py +14 -0
  227. pyegeria/view/base_report_formats.py +2719 -0
  228. pyegeria/view/dr_egeria_reports.py +56 -0
  229. pyegeria/view/format_set_executor.py +397 -0
  230. pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
  231. pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
  232. pyegeria/view/output_formatter.py +1297 -0
  233. pyegeria-5.5.3.3.dist-info/METADATA +218 -0
  234. pyegeria-5.5.3.3.dist-info/RECORD +241 -0
  235. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
  236. pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
  237. pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
  238. commands/cat/.DS_Store +0 -0
  239. commands/cat/README.md +0 -16
  240. commands/cli/txt_custom_v2.tcss +0 -19
  241. commands/my/README.md +0 -17
  242. commands/ops/README.md +0 -24
  243. commands/ops/monitor_asset_events.py +0 -108
  244. commands/tech/README.md +0 -24
  245. pyegeria/.DS_Store +0 -0
  246. pyegeria/README.md +0 -35
  247. pyegeria/_globals.py +0 -47
  248. pyegeria/_validators.py +0 -385
  249. pyegeria/asset_catalog_omvs.py +0 -864
  250. pyegeria/automated_curation_omvs.py +0 -3765
  251. pyegeria/collection_manager_omvs.py +0 -2744
  252. pyegeria/dr.egeria spec.md +0 -9
  253. pyegeria/egeria_my_client.py +0 -56
  254. pyegeria/feedback_manager_omvs.py +0 -4573
  255. pyegeria/glossary_browser_omvs.py +0 -3728
  256. pyegeria/glossary_manager_omvs.py +0 -2440
  257. pyegeria/m_test.py +0 -118
  258. pyegeria/md_processing_helpers.py +0 -58
  259. pyegeria/md_processing_utils_orig.py +0 -1103
  260. pyegeria/metadata_explorer_omvs.py +0 -2326
  261. pyegeria/my_profile_omvs.py +0 -1022
  262. pyegeria/output_formatter.py +0 -389
  263. pyegeria/project_manager_omvs.py +0 -1933
  264. pyegeria/registered_info.py +0 -167
  265. pyegeria/solution_architect_omvs.py +0 -2156
  266. pyegeria/template_manager_omvs.py +0 -1414
  267. pyegeria/utils.py +0 -197
  268. pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
  269. pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
  270. pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
  271. /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
  272. {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
@@ -1,1414 +0,0 @@
1
- """
2
- SPDX-License-Identifier: Apache-2.0
3
- Copyright Contributors to the ODPi Egeria project.
4
-
5
- Template manager is a view service that supports managing metadata elements using templates.
6
-
7
- """
8
-
9
- import asyncio
10
-
11
- from pyegeria._client import Client
12
- from pyegeria._globals import default_time_out, NO_ELEMENTS_FOUND
13
- from pyegeria.utils import body_slimmer
14
-
15
-
16
- class TemplateManager(Client):
17
- """Client to issue Template Manager requests.
18
-
19
- Attributes:
20
-
21
- view_server : str
22
- Name of the server to use.
23
- platform_url : str
24
- URL of the server platform to connect to
25
- user_id : str
26
- The identity of the user calling the method - this sets a default optionally used by the methods
27
- when the user doesn't pass the user_id on a method call.
28
- user_pwd: str
29
- The password associated with the user_id. Defaults to None
30
- token: str, optional
31
- Bearer token
32
-
33
- Methods:
34
-
35
- """
36
-
37
- def __init__(
38
- self,
39
- view_server: str,
40
- platform_url: str,
41
- user_id: str,
42
- user_pwd: str = None,
43
- token: str = None,
44
- time_out: int = default_time_out,
45
- ):
46
- self.view_server = view_server
47
- self.time_out = time_out
48
- Client.__init__(self, view_server, platform_url, user_id, user_pwd, token=token)
49
- self.command_root = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/template-manager"
50
-
51
- #
52
- # Maintain the metadata elements that makes up the template
53
- #
54
- async def _async_create_metadata_element_in_store(self, body: dict) -> str:
55
- """Create a new metadata element in the metadata store. The type name comes from the open metadata types.
56
- The selected type also controls the names and types of the properties that are allowed.
57
- This version of the method allows access to advanced features such as multiple states and
58
- effectivity dates. Async version.
59
-
60
- Parameters
61
- ----------
62
- body : dict
63
- The definition of the element to create. A sample is below.
64
-
65
- Returns
66
- -------
67
- str: If successful, the GUID of the element created; otherwise None is returned.
68
-
69
- Raises
70
- ------
71
- InvalidParameterException
72
- PropertyServerException
73
- UserNotAuthorizedException
74
-
75
- Notes
76
- =====
77
-
78
- Example of the body:
79
-
80
- {
81
- "class" : "NewOpenMetadataElementRequestBody",
82
- "externalSourceGUID" : "666",
83
- "externalSourceName" : "radio1",
84
- "typeName" : "",
85
- "initialStatus" : "ACTIVE",
86
- "initialClassifications" : {},
87
- "anchorGUID" : "",
88
- "isOwnAnchor" : false,
89
- "effectiveFrom" : "{{$isoTimestamp}}",
90
- "effectiveTo": "{{$isoTimestamp}}",
91
- "properties" : {},
92
- "parentGUID" : "",
93
- "parentRelationshipTypeName" : "",
94
- "parentRelationshipProperties" : {},
95
- "parentAtEnd1" : true,
96
- "effectiveTime" : "{{$isoTimestamp}}"
97
- }
98
-
99
- """
100
-
101
- url = f"{self.command_root}/metadata-elements"
102
- response = await self._async_make_request("POST", url, body_slimmer(body))
103
- guid = response.json().get("guid", None)
104
- return guid
105
-
106
- def create_metadata_element_in_store(self, body: dict) -> str:
107
- """Create a new metadata element in the metadata store. The type name comes from the open metadata types.
108
- The selected type also controls the names and types of the properties that are allowed.
109
- This version of the method allows access to advanced features such as multiple states and
110
- effectivity dates.
111
-
112
- Parameters
113
- ----------
114
- body : dict
115
- The definition of the element to create. A sample is below.
116
-
117
- Returns
118
- -------
119
- str: If successful, the GUID of the element created; otherwise None is returned.
120
-
121
- Raises
122
- ------
123
- InvalidParameterException
124
- PropertyServerException
125
- UserNotAuthorizedException
126
-
127
- Notes
128
- =====
129
-
130
- Example of the body:
131
-
132
- {
133
- "class" : "NewOpenMetadataElementRequestBody",
134
- "externalSourceGUID" : "666",
135
- "externalSourceName" : "radio1",
136
- "typeName" : "",
137
- "initialStatus" : "ACTIVE",
138
- "initialClassifications" : {},
139
- "anchorGUID" : "",
140
- "isOwnAnchor" : false,
141
- "effectiveFrom" : "{{$isoTimestamp}}",
142
- "effectiveTo": "{{$isoTimestamp}}",
143
- "properties" : {},
144
- "parentGUID" : "",
145
- "parentRelationshipTypeName" : "",
146
- "parentRelationshipProperties" : {},
147
- "parentAtEnd1" : true,
148
- "effectiveTime" : "{{$isoTimestamp}}"
149
- }
150
-
151
- """
152
- loop = asyncio.get_event_loop()
153
- response = loop.run_until_complete(
154
- self._async_create_metadata_element_in_store(body)
155
- )
156
- return response
157
-
158
- async def _async_create_metadata_element_from_template(self, body: dict) -> str:
159
- """Create a new metadata element in the metadata store using a template. The type name comes from the
160
- open metadata types. The selected type also controls the names and types of the properties that are allowed.
161
- Async version.
162
-
163
- Parameters
164
- ----------
165
- body : dict
166
- The definition of the element to create. A sample is the notes below.
167
-
168
- Returns
169
- -------
170
- None
171
-
172
- Raises
173
- ------
174
- InvalidParameterException
175
- PropertyServerException
176
- UserNotAuthorizedException
177
-
178
- Notes
179
- -----
180
- Example of the body:
181
-
182
- {
183
- "class" : "TemplateRequestBody",
184
- "externalSourceGUID" : "",
185
- "externalSourceName" : "",
186
- "typeName" : "",
187
- "templateGUID" : "",
188
- "anchorGUID" : "",
189
- "isOwnAnchor" : false,
190
- "effectiveFrom" : "{{$isoTimestamp}}",
191
- "effectiveTo": "{{$isoTimestamp}}",
192
- "replacementProperties" : { },
193
- "placeholderProperties" : {
194
- "placeholderName1" : "placeholderValue1",
195
- "placeholderName2" : "placeholderValue2"
196
- },
197
- "parentGUID" : "",
198
- "parentRelationshipTypeName" : "",
199
- "parentRelationshipProperties" : {},
200
- "parentAtEnd1" : true,
201
- "effectiveTime" : "{{$isoTimestamp}}"
202
- }
203
-
204
- """
205
- url = f"{self.command_root}/metadata-elements/from-templates"
206
-
207
- response = await self._async_make_request("POST", url, body_slimmer(body))
208
- guid = response.json().get("guid", None)
209
- return guid
210
-
211
- def create_metadata_element_from_template(self, body: dict) -> str:
212
- """Create a new metadata element in the metadata store using a template. The type name comes from the
213
- open metadata types. The selected type also controls the names and types of the properties that are allowed.
214
-
215
- Parameters
216
- ----------
217
- body : dict
218
- dict containing the definition of the element to create. A sample is the notes below.
219
-
220
- Returns
221
- -------
222
- None
223
-
224
- Raises
225
- ------
226
- InvalidParameterException
227
- PropertyServerException
228
- UserNotAuthorizedException
229
-
230
- Notes
231
- -----
232
- Example of the body:
233
-
234
- {
235
- "class" : "UpdatePropertiesRequestBody",
236
- "externalSourceGUID" : "",
237
- "externalSourceName" : "",
238
- "forLineage" : false,
239
- "forDuplicateProcessing" : false,
240
- "effectiveTime" : "{{$isoTimestamp}}"
241
- }
242
-
243
- """
244
- loop = asyncio.get_event_loop()
245
- response = loop.run_until_complete(
246
- self._async_create_metadata_element_from_template(body)
247
- )
248
- return response
249
-
250
- async def _async_update_metadata_element_in_store(
251
- self, element_guid: str, body: dict
252
- ) -> None:
253
- """Update the properties of a specific metadata element. The properties must match the type definition
254
- associated with the metadata element when it was created. However, it is possible to update a few
255
- properties, or replace all them by the value used in the replaceProperties flag.
256
- Async version.
257
-
258
- Parameters
259
- ----------
260
- element_guid : str
261
- The identity of the metadata element to update.
262
- body : dict
263
- The definition of the element to create. A sample is the notes below.
264
-
265
- Returns
266
- -------
267
- None
268
-
269
- Raises
270
- ------
271
- InvalidParameterException
272
- PropertyServerException
273
- UserNotAuthorizedException
274
-
275
- Notes
276
- -----
277
- Example of the body:
278
-
279
- {
280
- "class" : "TemplateRequestBody",
281
- "externalSourceGUID" : "",
282
- "externalSourceName" : "",
283
- "typeName" : "",
284
- "templateGUID" : "",
285
- "anchorGUID" : "",
286
- "isOwnAnchor" : false,
287
- "effectiveFrom" : "{{$isoTimestamp}}",
288
- "effectiveTo": "{{$isoTimestamp}}",
289
- "replacementProperties" : { },
290
- "placeholderProperties" : {
291
- "placeholderName1" : "placeholderValue1",
292
- "placeholderName2" : "placeholderValue2"
293
- },
294
- "parentGUID" : "",
295
- "parentRelationshipTypeName" : "",
296
- "parentRelationshipProperties" : {},
297
- "parentAtEnd1" : true,
298
- "effectiveTime" : "{{$isoTimestamp}}"
299
- }
300
-
301
- """
302
- url = f"{self.command_root}/metadata-elements/{element_guid}/update-properties"
303
- await self._async_make_request("POST", url, body_slimmer(body))
304
- return
305
-
306
- def update_metadata_element_in_store(self, element_guid: str, body: dict) -> None:
307
- """Update the properties of a specific metadata element. The properties must match the type definition
308
- associated with the metadata element when it was created. However, it is possible to update a few
309
- properties, or replace all them by the value used in the replaceProperties flag.
310
-
311
- Parameters
312
- ----------
313
- element_guid : str
314
- The identity of the metadata element to update.
315
- body : dict
316
- The definition of the element to create. A sample is the notes below.
317
-
318
- Returns
319
- -------
320
- None
321
-
322
- Raises
323
- ------
324
- InvalidParameterException
325
- PropertyServerException
326
- UserNotAuthorizedException
327
-
328
- Notes
329
- -----
330
- Example of the body:
331
-
332
- {
333
- "class" : "TemplateRequestBody",
334
- "externalSourceGUID" : "",
335
- "externalSourceName" : "",
336
- "typeName" : "",
337
- "templateGUID" : "",
338
- "anchorGUID" : "",
339
- "isOwnAnchor" : false,
340
- "effectiveFrom" : "{{$isoTimestamp}}",
341
- "effectiveTo": "{{$isoTimestamp}}",
342
- "replacementProperties" : { },
343
- "placeholderProperties" : {
344
- "placeholderName1" : "placeholderValue1",
345
- "placeholderName2" : "placeholderValue2"
346
- },
347
- "parentGUID" : "",
348
- "parentRelationshipTypeName" : "",
349
- "parentRelationshipProperties" : {},
350
- "parentAtEnd1" : true,
351
- "effectiveTime" : "{{$isoTimestamp}}"
352
- }
353
-
354
- """
355
- loop = asyncio.get_event_loop()
356
- loop.run_until_complete(
357
- self._async_update_metadata_element_in_store(element_guid, body)
358
- )
359
- return
360
-
361
- async def _async_update_metadata_element_status_in_store(
362
- self, element_guid: str, body: dict
363
- ) -> None:
364
- """Update the status of a specific metadata element. The new status must match a status value that is defined
365
- for the element's type assigned when it was created. Async version.
366
-
367
- Parameters
368
- ----------
369
- element_guid : str
370
- The identity of the metadata element to update.
371
- body : dict
372
- The definition of the element to create. A sample is the notes below.
373
-
374
- Returns
375
- -------
376
- None
377
-
378
- Raises
379
- ------
380
- InvalidParameterException
381
- PropertyServerException
382
- UserNotAuthorizedException
383
-
384
- Notes
385
- -----
386
- Example of the body:
387
-
388
- {
389
- "class" : "UpdateStatusRequestBody",
390
- "externalSourceGUID" : "",
391
- "externalSourceName" : "",
392
- "forLineage" : false,
393
- "forDuplicateProcessing" : false,
394
- "effectiveTime" : "{{$isoTimestamp}}"
395
- }
396
-
397
- """
398
- url = f"{self.command_root}/metadata-elements/{element_guid}/update-status"
399
- await self._async_make_request("POST", url, body_slimmer(body))
400
- return
401
-
402
- def update_metadata_element_status_in_store(
403
- self, element_guid: str, body: dict
404
- ) -> None:
405
- """Update the status of a specific metadata element. The new status must match a status value that is defined
406
- for the element's type assigned when it was created.
407
-
408
- Parameters
409
- ----------
410
- element_guid : str
411
- The identity of the metadata element to update.
412
- body : dict
413
- The definition of the element to create. A sample is the notes below.
414
-
415
- Returns
416
- -------
417
- None
418
-
419
- Raises
420
- ------
421
- InvalidParameterException
422
- PropertyServerException
423
- UserNotAuthorizedException
424
-
425
- Notes
426
- -----
427
- Example of the body:
428
-
429
- {
430
- "class" : "UpdateStatusRequestBody",
431
- "externalSourceGUID" : "",
432
- "externalSourceName" : "",
433
- "forLineage" : false,
434
- "forDuplicateProcessing" : false,
435
- "effectiveTime" : "{{$isoTimestamp}}"
436
- }
437
-
438
- """
439
- loop = asyncio.get_event_loop()
440
- loop.run_until_complete(
441
- self._async_update_metadata_element_status_in_store(element_guid, body)
442
- )
443
- return
444
-
445
- async def _async_update_metadata_element_effectivity_in_store(
446
- self, element_guid: str, body: dict
447
- ) -> None:
448
- """Update the effectivity dates control the visibility of the element through specific APIs.
449
- Async version.
450
-
451
- Parameters
452
- ----------
453
- element_guid : str
454
- The identity of the metadata element to update.
455
- body : dict
456
- The definition of the element to create. A sample is the notes below.
457
-
458
- Returns
459
- -------
460
- None
461
-
462
- Raises
463
- ------
464
- InvalidParameterException
465
- PropertyServerException
466
- UserNotAuthorizedException
467
-
468
- Notes
469
- -----
470
- Example of the body:
471
-
472
- {
473
- "class" : "UpdateEffectivityDatesRequestBody",
474
- "externalSourceGUID" : "",
475
- "externalSourceName" : "",
476
- "effectiveFrom" : "{{$isoTimestamp}}",
477
- "effectiveTo": "{{$isoTimestamp}}",
478
- "forLineage" : false,
479
- "forDuplicateProcessing" : false,
480
- "effectiveTime" : "{{$isoTimestamp}}"
481
- }
482
-
483
- """
484
- url = f"{self.command_root}/metadata-elements/{element_guid}/update-effectivity"
485
- await self._async_make_request("POST", url, body_slimmer(body))
486
- return
487
-
488
- def update_metadata_element_effectivity_in_store(
489
- self, element_guid: str, body: dict
490
- ) -> None:
491
- """Update the effectivity dates control the visibility of the element through specific APIs.
492
- Async version.
493
-
494
- Parameters
495
- ----------
496
- element_guid : str
497
- The identity of the metadata element to update.
498
- body : dict
499
- The definition of the element to create. A sample is the notes below.
500
-
501
- Returns
502
- -------
503
- None
504
-
505
- Raises
506
- ------
507
- InvalidParameterException
508
- PropertyServerException
509
- UserNotAuthorizedException
510
-
511
- Notes
512
- -----
513
- Example of the body:
514
-
515
- {
516
- "class" : "UpdateEffectivityDatesRequestBody",
517
- "externalSourceGUID" : "",
518
- "externalSourceName" : "",
519
- "effectiveFrom" : "{{$isoTimestamp}}",
520
- "effectiveTo": "{{$isoTimestamp}}",
521
- "forLineage" : false,
522
- "forDuplicateProcessing" : false,
523
- "effectiveTime" : "{{$isoTimestamp}}"
524
- }
525
-
526
- """
527
- loop = asyncio.get_event_loop()
528
- loop.run_until_complete(
529
- self._async_update_metadata_element_effectivity_in_store(element_guid, body)
530
- )
531
- return
532
-
533
- async def _async_delete_metadata_element_in_store(
534
- self, element_guid: str, body: dict, cascade:bool = False
535
- ) -> None:
536
- """Delete a metadata element.
537
- Async version.
538
-
539
- Parameters
540
- ----------
541
- element_guid : str
542
- The identity of the metadata element to update.
543
- body : dict
544
- The definition of the element to create. A sample is the notes below.
545
- cascade : bool, optional, defaults to False
546
- If true, delete all anchored elements as well.
547
-
548
- Returns
549
- -------
550
- None
551
-
552
- Raises
553
- ------
554
- InvalidParameterException
555
- PropertyServerException
556
- UserNotAuthorizedException
557
-
558
- Notes
559
- -----
560
- Example of the body:
561
-
562
- {
563
- "class" : "UpdateRequestBody",
564
- "externalSourceGUID" : "",
565
- "externalSourceName" : "",
566
- "forLineage" : false,
567
- "forDuplicateProcessing" : false,
568
- "effectiveTime" : "{{$isoTimestamp}}"
569
- }
570
-
571
- """
572
- cascade_str = str(cascade).lower()
573
- url = f"{self.command_root}/metadata-elements/{element_guid}/delete?cascadedDelete={cascade_str}"
574
- await self._async_make_request("POST", url, body_slimmer(body))
575
- return
576
-
577
- def delete_metadata_element_in_store(self, element_guid: str, body: dict, cascade:bool = False) -> None:
578
- """Delete a metadata element.
579
-
580
- Parameters
581
- ----------
582
- element_guid : str
583
- The identity of the metadata element to update.
584
- body : dict
585
- The definition of the element to create. A sample is the notes below.
586
- cascade : bool, optional, defaults to False
587
- If true, delete all anchored elements as well.
588
-
589
- Returns
590
- -------
591
- None
592
-
593
- Raises
594
- ------
595
- InvalidParameterException
596
- PropertyServerException
597
- UserNotAuthorizedException
598
-
599
- Notes
600
- -----
601
- Example of the body:
602
-
603
- {
604
- "class" : "UpdateRequestBody",
605
- "externalSourceGUID" : "",
606
- "externalSourceName" : "",
607
- "forLineage" : false,
608
- "forDuplicateProcessing" : false,
609
- "effectiveTime" : "{{$isoTimestamp}}"
610
- }
611
-
612
- """
613
- loop = asyncio.get_event_loop()
614
- loop.run_until_complete(
615
- self._async_delete_metadata_element_in_store(element_guid, body, cascade)
616
- )
617
- return
618
-
619
- async def _async_archive_metadata_element_in_store(
620
- self, element_guid: str, body: dict
621
- ) -> None:
622
- """Archive a specific metadata element.
623
- Async version.
624
-
625
- Parameters
626
- ----------
627
- element_guid : str
628
- The identity of the metadata element to update.
629
- body : dict
630
- The definition of the element to create. A sample is the notes below.
631
-
632
- Returns
633
- -------
634
- None
635
-
636
- Raises
637
- ------
638
- InvalidParameterException
639
- PropertyServerException
640
- UserNotAuthorizedException
641
-
642
- Notes
643
- -----
644
- Example of the body:
645
-
646
- {
647
- "class" : "ArchiveRequestBody",
648
- "externalSourceGUID" : "",
649
- "externalSourceName" : "",
650
- "archiveProperties" : {
651
- "archiveDate" : "{{$isoTimestamp}}",
652
- "archiveProcess" : "",
653
- "archiveProperties": {
654
- "propertyName1" : "propertyValue1",
655
- "propertyName2" : "propertyValue2"
656
- }
657
- },
658
- "forLineage" : false,
659
- "forDuplicateProcessing" : false,
660
- "effectiveTime" : "{{$isoTimestamp}}"
661
- }
662
-
663
- """
664
- url = f"{self.command_root}/metadata-elements/{element_guid}/archive"
665
- await self._async_make_request("POST", url, body_slimmer(body))
666
- return
667
-
668
- def archive_metadata_element_in_store(self, element_guid: str, body: dict) -> None:
669
- """Archive a specific metadata element.
670
-
671
- Parameters
672
- ----------
673
- element_guid : str
674
- The identity of the metadata element to update.
675
- body : dict
676
- The definition of the element to create. A sample is the notes below.
677
-
678
- Returns
679
- -------
680
- None
681
-
682
- Raises
683
- ------
684
- InvalidParameterException
685
- PropertyServerException
686
- UserNotAuthorizedException
687
-
688
- Notes
689
- -----
690
- Example of the body:
691
-
692
- "class" : "ArchiveRequestBody",
693
- "externalSourceGUID" : "",
694
- "externalSourceName" : "",
695
- "archiveProperties" : {
696
- "archiveDate" : "{{$isoTimestamp}}",
697
- "archiveProcess" : "",
698
- "archiveProperties": {
699
- "propertyName1" : "propertyValue1",
700
- "propertyName2" : "propertyValue2"
701
- }
702
- },
703
- "forLineage" : false,
704
- "forDuplicateProcessing" : false,
705
- "effectiveTime" : "{{$isoTimestamp}}"
706
- }
707
-
708
- """
709
- loop = asyncio.get_event_loop()
710
- loop.run_until_complete(
711
- self._async_archive_metadata_element_in_store(element_guid, body)
712
- )
713
- return
714
-
715
- async def _async_classify_metadata_element_in_store(
716
- self, element_guid: str, classification: str, body: dict
717
- ) -> None:
718
- """Add a new classification to the metadata element. Note that only one classification with the same name can
719
- be attached to a metadata element. Async version.
720
-
721
- Parameters
722
- ----------
723
- element_guid : str
724
- The identity of the metadata element to update.
725
- classification : str
726
- The classification name to apply.
727
- body : dict
728
- The definition of the element to create. A sample is the notes below.
729
-
730
- Returns
731
- -------
732
- None
733
-
734
- Raises
735
- ------
736
- InvalidParameterException
737
- PropertyServerException
738
- UserNotAuthorizedException
739
-
740
- Notes
741
- -----
742
- Example of the body:
743
-
744
- {
745
- "class" : "NewClassificationRequestBody",
746
- "externalSourceGUID" : "",
747
- "externalSourceName" : "",
748
- "forLineage" : false,
749
- "forDuplicateProcessing" : false,
750
- "effectiveTime" : "{{$isoTimestamp}}"
751
- }
752
-
753
- """
754
- url = f"{self.command_root}/metadata-elements/{element_guid}/classifications/{classification}"
755
- await self._async_make_request("POST", url, body_slimmer(body))
756
- return
757
-
758
- def classify_metadata_element_in_store(
759
- self, element_guid: str, classification: str, body: dict
760
- ) -> None:
761
- """Add a new classification to the metadata element. Note that only one classification with the same name can
762
- be attached to a metadata element.
763
-
764
- Parameters
765
- ----------
766
- element_guid : str
767
- The identity of the metadata element to update.
768
- classification : str
769
- The classification name to apply.
770
- body : dict
771
- The definition of the element to create. A sample is the notes below.
772
-
773
- Returns
774
- -------
775
- None
776
-
777
- Raises
778
- ------
779
- InvalidParameterException
780
- PropertyServerException
781
- UserNotAuthorizedException
782
-
783
- Notes
784
- -----
785
- Example of the body:
786
-
787
- {
788
- "class" : "NewClassificationRequestBody",
789
- "externalSourceGUID" : "",
790
- "externalSourceName" : "",
791
- "forLineage" : false,
792
- "forDuplicateProcessing" : false,
793
- "effectiveTime" : "{{$isoTimestamp}}"
794
- }
795
-
796
- """
797
- loop = asyncio.get_event_loop()
798
- loop.run_until_complete(
799
- self._async_classify_metadata_element_in_store(
800
- element_guid, classification, body
801
- )
802
- )
803
- return
804
-
805
- async def _async_reclassify_metadata_element_in_store(
806
- self, element_guid: str, classification: str, body: dict
807
- ) -> None:
808
- """Update the properties of a classification that is currently attached to a specific metadata element.
809
- Async version.
810
-
811
- Parameters
812
- ----------
813
- element_guid : str
814
- The identity of the metadata element to update.
815
- classification: str
816
- The classification name to apply.
817
- body : dict
818
- The definition of the element to create. A sample is the notes below.
819
-
820
- Returns
821
- -------
822
- None
823
-
824
- Raises
825
- ------
826
- InvalidParameterException
827
- PropertyServerException
828
- UserNotAuthorizedException
829
-
830
- Notes
831
- -----
832
- Example of the body:
833
-
834
- {
835
- "class" : "UpdatePropertiesRequestBody",
836
- "externalSourceGUID" : "",
837
- "externalSourceName" : "",
838
- "forLineage" : false,
839
- "forDuplicateProcessing" : false,
840
- "effectiveTime" : "{{$isoTimestamp}}"
841
- }
842
-
843
- """
844
- url = f"{self.command_root}/metadata-elements/{element_guid}/classifications/{classification}/update-properties"
845
- await self._async_make_request("POST", url, body_slimmer(body))
846
- return
847
-
848
- def reclassify_metadata_element_in_store(
849
- self, element_guid: str, classification: str, body: dict
850
- ) -> None:
851
- """Update the properties of a classification that is currently attached to a specific metadata element.
852
-
853
- Parameters
854
- ----------
855
- element_guid : str
856
- The identity of the metadata element to update.
857
- classification: str
858
- The classification name to apply.
859
- body : dict
860
- The definition of the element to create. A sample is the notes below.
861
-
862
- Returns
863
- -------
864
- None
865
-
866
- Raises
867
- ------
868
- InvalidParameterException
869
- PropertyServerException
870
- UserNotAuthorizedException
871
-
872
- Notes
873
- -----
874
- Example of the body:
875
-
876
- {
877
- "class" : "UpdatePropertiesRequestBody",
878
- "externalSourceGUID" : "",
879
- "externalSourceName" : "",
880
- "forLineage" : false,
881
- "forDuplicateProcessing" : false,
882
- "effectiveTime" : "{{$isoTimestamp}}"
883
- }
884
-
885
- """
886
- loop = asyncio.get_event_loop()
887
- loop.run_until_complete(
888
- self._async_reclassify_metadata_element_in_store(
889
- element_guid, classification, body
890
- )
891
- )
892
- return
893
-
894
- async def _async_update_classification_effectivity_in_store(
895
- self, element_guid: str, classification: str, body: dict
896
- ) -> None:
897
- """Update the effectivity dates of a specific classification attached to a metadata element.
898
- The effectivity dates control the visibility of the classification through specific APIs.
899
- Async version.
900
-
901
- Parameters
902
- ----------
903
- element_guid : str
904
- The identity of the metadata element to update.
905
- classification: str
906
- The classification name to apply.
907
- body : dict
908
- The definition of the element to create. A sample is the notes below.
909
-
910
- Returns
911
- -------
912
- None
913
-
914
- Raises
915
- ------
916
- InvalidParameterException
917
- PropertyServerException
918
- UserNotAuthorizedException
919
-
920
- Notes
921
- -----
922
- Example of the body:
923
-
924
- {
925
- "class" : "UpdateEffectivityDatesRequestBody",
926
- "externalSourceGUID" : "",
927
- "externalSourceName" : "",
928
- "effectiveFrom" : "{{$isoTimestamp}}",
929
- "effectiveTo": "{{$isoTimestamp}}",
930
- "forLineage" : false,
931
- "forDuplicateProcessing" : false,
932
- "effectiveTime" : "{{$isoTimestamp}}"
933
- }
934
- """
935
- url = f"{self.command_root}/metadata-elements/{element_guid}/classifications/{classification}/update-effectivity"
936
- await self._async_make_request("POST", url, body_slimmer(body))
937
- return
938
-
939
- def update_classification_effectivity_in_store(
940
- self, element_guid: str, classification: str, body: dict
941
- ) -> None:
942
- """Update the effectivity dates of a specific classification attached to a metadata element.
943
- The effectivity dates control the visibility of the classification through specific APIs.
944
-
945
-
946
- Parameters
947
- ----------
948
- element_guid : str
949
- The identity of the metadata element to update.
950
- classification: str
951
- The classification name to apply.
952
- body : dict
953
- The definition of the element to create. A sample is the notes below.
954
-
955
- Returns
956
- -------
957
- None
958
-
959
- Raises
960
- ------
961
- InvalidParameterException
962
- PropertyServerException
963
- UserNotAuthorizedException
964
-
965
- Notes
966
- -----
967
- Example of the body:
968
-
969
- {
970
- "class" : "UpdateEffectivityDatesRequestBody",
971
- "externalSourceGUID" : "",
972
- "externalSourceName" : "",
973
- "effectiveFrom" : "{{$isoTimestamp}}",
974
- "effectiveTo": "{{$isoTimestamp}}",
975
- "forLineage" : false,
976
- "forDuplicateProcessing" : false,
977
- "effectiveTime" : "{{$isoTimestamp}}"
978
- }
979
- """
980
- loop = asyncio.get_event_loop()
981
- loop.run_until_complete(
982
- self._async_update_classification_effectivity_in_store(
983
- element_guid, classification, body
984
- )
985
- )
986
- return
987
-
988
- async def _async_declassify_metadata_element_in_store(
989
- self, element_guid: str, classification: str, body: dict
990
- ) -> None:
991
- """Remove the named classification from a specific metadata element. Async version.
992
-
993
- Parameters
994
- ----------
995
- element_guid : str
996
- The identity of the metadata element to update.
997
- classification: str
998
- The classification name to apply.
999
- body : dict
1000
- The definition of the element to create. A sample is the notes below.
1001
-
1002
- Returns
1003
- -------
1004
- None
1005
-
1006
- Raises
1007
- ------
1008
- InvalidParameterException
1009
- PropertyServerException
1010
- UserNotAuthorizedException
1011
-
1012
- Notes
1013
- -----
1014
- Example of the body:
1015
-
1016
- {
1017
- "class" : "UpdateRequestBody",
1018
- "externalSourceGUID" : "",
1019
- "externalSourceName" : "",
1020
- "forLineage" : false,
1021
- "forDuplicateProcessing" : false,
1022
- "effectiveTime" : "{{$isoTimestamp}}"
1023
- }
1024
- """
1025
- url = f"{self.command_root}/metadata-elements/{element_guid}/classifications/{classification}/delete"
1026
- await self._async_make_request("POST", url, body_slimmer(body))
1027
- return
1028
-
1029
- def declassify_metadata_element_in_store(
1030
- self, element_guid: str, classification: str, body: dict
1031
- ) -> None:
1032
- """Remove the named classification from a specific metadata element.
1033
-
1034
- Parameters
1035
- ----------
1036
- element_guid : str
1037
- The identity of the metadata element to update.
1038
- classification: str
1039
- The classification name to apply.
1040
- body : dict
1041
- The definition of the element to create. A sample is the notes below.
1042
-
1043
- Returns
1044
- -------
1045
- None
1046
-
1047
- Raises
1048
- ------
1049
- InvalidParameterException
1050
- PropertyServerException
1051
- UserNotAuthorizedException
1052
-
1053
- Notes
1054
- -----
1055
- Example of the body:
1056
-
1057
- {
1058
- "class" : "UpdateRequestBody",
1059
- "externalSourceGUID" : "",
1060
- "externalSourceName" : "",
1061
- "forLineage" : false,
1062
- "forDuplicateProcessing" : false,
1063
- "effectiveTime" : "{{$isoTimestamp}}"
1064
- }
1065
- """
1066
- loop = asyncio.get_event_loop()
1067
- loop.run_until_complete(
1068
- self._async_declassify_metadata_element_in_store(
1069
- element_guid, classification, body
1070
- )
1071
- )
1072
- return
1073
-
1074
- async def _async_create_related_elements_in_store(self, body: dict) -> str:
1075
- """Create a relationship between two metadata elements. It is important to put the right element at each end
1076
- of the relationship according to the type definition since this will affect how the relationship is
1077
- interpreted. Async version.
1078
-
1079
- Parameters
1080
- ----------
1081
- body : dict
1082
- The definition of the element to create. A sample is the notes below.
1083
-
1084
- Returns
1085
- -------
1086
- str containing the relationship GUID.
1087
-
1088
- Raises
1089
- ------
1090
- InvalidParameterException
1091
- PropertyServerException
1092
- UserNotAuthorizedException
1093
-
1094
- Notes
1095
- -----
1096
- Example of the body:
1097
-
1098
- {
1099
- "class" : "NewRelatedElementsRequestBody",
1100
- "externalSourceGUID" : "",
1101
- "externalSourceName" : "",
1102
- "forLineage" : false,
1103
- "forDuplicateProcessing" : false,
1104
- "effectiveTime" : "{{$isoTimestamp}}"
1105
- "typeName": "string",
1106
- "metadataElement1GUID": "string",
1107
- "metadataElement2GUID": "string",
1108
- }
1109
- """
1110
- url = f"{self.command_root}/related-elements"
1111
- response = await self._async_make_request("POST", url, body_slimmer(body))
1112
- guid = response.json().get("guid", None)
1113
- return guid
1114
-
1115
- def create_related_elements_in_store(self, body: dict) -> str:
1116
- """Create a relationship between two metadata elements. It is important to put the right element at each end
1117
- of the relationship according to the type definition since this will affect how the relationship is
1118
- interpreted.
1119
-
1120
- Parameters
1121
- ----------
1122
- body : dict
1123
- The definition of the element to create. A sample is the notes below.
1124
-
1125
- Returns
1126
- -------
1127
- str containing the relationship GUID.
1128
-
1129
- Raises
1130
- ------
1131
- InvalidParameterException
1132
- PropertyServerException
1133
- UserNotAuthorizedException
1134
-
1135
- Notes
1136
- -----
1137
- Example of the body:
1138
-
1139
- {
1140
- "class" : "NewRelatedElementsRequestBody",
1141
- "externalSourceGUID" : "",
1142
- "externalSourceName" : "",
1143
- "forLineage" : false,
1144
- "forDuplicateProcessing" : false,
1145
- "effectiveTime" : "{{$isoTimestamp}}"
1146
- "typeName": "string",
1147
- "metadataElement1GUID": "string",
1148
- "metadataElement2GUID": "string",
1149
- }
1150
- """
1151
- loop = asyncio.get_event_loop()
1152
- response = loop.run_until_complete(
1153
- self._async_create_related_elements_in_store(body)
1154
- )
1155
- return response
1156
-
1157
- async def _async_update_related_elements_in_store(
1158
- self, relationship_guid: str, body: dict
1159
- ) -> None:
1160
- """Update the properties associated with a relationship. Async version.
1161
-
1162
- Parameters
1163
- ----------
1164
- relationship_guid : str
1165
- The identity of the relationship to update.
1166
- body : dict
1167
- The definition of the element to create. A sample is the notes below.
1168
-
1169
- Returns
1170
- -------
1171
- None
1172
-
1173
- Raises
1174
- ------
1175
- InvalidParameterException
1176
- PropertyServerException
1177
- UserNotAuthorizedException
1178
-
1179
- Notes
1180
- -----
1181
- Example of the body:
1182
-
1183
- {
1184
- "class" : "UpdatePropertiesRequestBody",
1185
- "externalSourceGUID" : "",
1186
- "externalSourceName" : "",
1187
- "forLineage" : false,
1188
- "forDuplicateProcessing" : false,
1189
- "typeName": "string",
1190
- "metadataElement1GUID": "string",
1191
- "metadataElement2GUID": "string",
1192
- "effectiveTime" : "{{$isoTimestamp}}"
1193
- }
1194
- """
1195
- url = f"{self.command_root}/related-elements/{relationship_guid}/update-properties"
1196
- await self._async_make_request("POST", url, body_slimmer(body))
1197
- return
1198
-
1199
- def update_related_elements_in_store(
1200
- self, relationship_guid: str, body: dict
1201
- ) -> None:
1202
- """Update the properties associated with a relationship. Async version.
1203
-
1204
- Parameters
1205
- ----------
1206
- relationship_guid : str
1207
- The identity of the relationship to update.
1208
- body : dict
1209
- The definition of the element to create. A sample is the notes below.
1210
-
1211
- Returns
1212
- -------
1213
- None
1214
-
1215
- Raises
1216
- ------
1217
- InvalidParameterException
1218
- PropertyServerException
1219
- UserNotAuthorizedException
1220
-
1221
- Notes
1222
- -----
1223
- Example of the body:
1224
-
1225
- {
1226
- "class" : "UpdatePropertiesRequestBody",
1227
- "externalSourceGUID" : "",
1228
- "externalSourceName" : "",
1229
- "forLineage" : false,
1230
- "forDuplicateProcessing" : false,
1231
- "typeName": "string",
1232
- "metadataElement1GUID": "string",
1233
- "metadataElement2GUID": "string",
1234
- "effectiveTime" : "{{$isoTimestamp}}"
1235
- }
1236
- """
1237
- loop = asyncio.get_event_loop()
1238
- loop.run_until_complete(
1239
- self._async_update_related_elements_in_store(relationship_guid, body)
1240
- )
1241
- return
1242
-
1243
- async def _async_update_related_elements_effectivity_in_store(
1244
- self, relationship_guid: str, body: dict
1245
- ) -> None:
1246
- """Update the effectivity dates of a specific relationship between metadata elements.
1247
- The effectivity dates control the visibility of the classification through specific APIs.
1248
- Async version.
1249
-
1250
- Parameters
1251
- ----------
1252
- relationship_guid : str
1253
- The identity of the relationship to update.
1254
- body : dict
1255
- The definition of the element to create. A sample is the notes below.
1256
-
1257
- Returns
1258
- -------
1259
- None
1260
-
1261
- Raises
1262
- ------
1263
- InvalidParameterException
1264
- PropertyServerException
1265
- UserNotAuthorizedException
1266
-
1267
- Notes
1268
- -----
1269
- Example of the body:
1270
-
1271
- {
1272
- "class" : "UpdateEffectivityDatesRequestBody",
1273
- "externalSourceGUID" : "",
1274
- "externalSourceName" : "",
1275
- "effectiveFrom" : "{{$isoTimestamp}}",
1276
- "effectiveTo": "{{$isoTimestamp}}",
1277
- "forLineage" : false,
1278
- "forDuplicateProcessing" : false,
1279
- "effectiveTime" : "{{$isoTimestamp}}"
1280
- }
1281
- """
1282
- url = f"{self.command_root}/metadata-elements/related-elements/{relationship_guid}/update-effectivity"
1283
- await self._async_make_request("POST", url, body_slimmer(body))
1284
- return
1285
-
1286
- def update_related_elements_effectivity_in_store(
1287
- self, relationship_guid: str, body: dict
1288
- ) -> None:
1289
- """Update the effectivity dates of a specific relationship between metadata elements.
1290
- The effectivity dates control the visibility of the classification through specific APIs.
1291
-
1292
- Parameters
1293
- ----------
1294
- relationship_guid : str
1295
- The identity of the relationship to update.
1296
- body : dict
1297
- The definition of the element to create. A sample is the notes below.
1298
-
1299
- Returns
1300
- -------
1301
- None
1302
-
1303
- Raises
1304
- ------
1305
- InvalidParameterException
1306
- PropertyServerException
1307
- UserNotAuthorizedException
1308
-
1309
- Notes
1310
- -----
1311
- Example of the body:
1312
-
1313
- {
1314
- "class" : "UpdateEffectivityDatesRequestBody",
1315
- "externalSourceGUID" : "",
1316
- "externalSourceName" : "",
1317
- "effectiveFrom" : "{{$isoTimestamp}}",
1318
- "effectiveTo": "{{$isoTimestamp}}",
1319
- "forLineage" : false,
1320
- "forDuplicateProcessing" : false,
1321
- "effectiveTime" : "{{$isoTimestamp}}"
1322
- }
1323
- """
1324
- loop = asyncio.get_event_loop()
1325
- loop.run_until_complete(
1326
- self._async_update_related_elements_effectivity_in_store(
1327
- relationship_guid, body
1328
- )
1329
- )
1330
- return
1331
-
1332
- async def _async_delete_related_elements_in_store(
1333
- self, relationship_guid: str, body: dict
1334
- ) -> None:
1335
- """Delete a relationship between two metadata elements. Async version.
1336
-
1337
- Parameters
1338
- ----------
1339
- relationship_guid : str
1340
- The identity of the relationship to delete.
1341
- body : dict
1342
- The definition of the element to create. A sample is the notes below.
1343
-
1344
- Returns
1345
- -------
1346
- None
1347
-
1348
- Raises
1349
- ------
1350
- InvalidParameterException
1351
- PropertyServerException
1352
- UserNotAuthorizedException
1353
-
1354
- Notes
1355
- -----
1356
- Example of the body:
1357
-
1358
- {
1359
- "class" : "UpdateRequestBody",
1360
- "externalSourceGUID" : "",
1361
- "externalSourceName" : "",
1362
- "forLineage" : false,
1363
- "forDuplicateProcessing" : false,
1364
- "effectiveTime" : "{{$isoTimestamp}}"
1365
- }
1366
- """
1367
- url = f"{self.command_root}/metadata-elements/related-elements/{relationship_guid}/delete"
1368
- await self._async_make_request("POST", url, body_slimmer(body))
1369
- return
1370
-
1371
- def delete_related_elements_in_store(
1372
- self, relationship_guid: str, body: dict
1373
- ) -> None:
1374
- """Delete a relationship between two metadata elements.
1375
-
1376
- Parameters
1377
- ----------
1378
- relationship_guid : str
1379
- The identity of the relationship to delete.
1380
- body : dict
1381
- The definition of the element to create. A sample is the notes below.
1382
-
1383
- Returns
1384
- -------
1385
- None
1386
-
1387
- Raises
1388
- ------
1389
- InvalidParameterException
1390
- PropertyServerException
1391
- UserNotAuthorizedException
1392
-
1393
- Notes
1394
- -----
1395
- Example of the body:
1396
-
1397
- {
1398
- "class" : "UpdateRequestBody",
1399
- "externalSourceGUID" : "",
1400
- "externalSourceName" : "",
1401
- "forLineage" : false,
1402
- "forDuplicateProcessing" : false,
1403
- "effectiveTime" : "{{$isoTimestamp}}"
1404
- }
1405
- """
1406
- loop = asyncio.get_event_loop()
1407
- loop.run_until_complete(
1408
- self._async_delete_related_elements_in_store(relationship_guid, body)
1409
- )
1410
- return
1411
-
1412
-
1413
- if __name__ == "__main__":
1414
- print("Main-Template Manager")