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,864 +0,0 @@
1
- """
2
- SPDX-License-Identifier: Apache-2.0
3
- Copyright Contributors to the ODPi Egeria project.
4
-
5
- Asset Catalog View Service Methods - Search for assets, retrieve their properties, lineage and related glossary
6
- information.
7
-
8
- This file is in active development...
9
-
10
- """
11
-
12
- import asyncio
13
- import json
14
-
15
- from httpx import Response
16
- from pyegeria.utils import body_slimmer
17
- from pyegeria._client import Client
18
- from pyegeria import TEMPLATE_GUIDS, max_paging_size
19
- from pyegeria._exceptions import InvalidParameterException
20
- from pyegeria._globals import NO_ELEMENTS_FOUND, NO_ASSETS_FOUND
21
- from ._validators import validate_search_string
22
-
23
-
24
- class AssetCatalog(Client):
25
- """Set up and maintain automation services in Egeria.
26
-
27
- Attributes:
28
- view_server : str
29
- The name of the View Server to use.
30
- platform_url : str
31
- URL of the server platform to connect to
32
- user_id : str
33
- The identity of the user calling the method - this sets a default optionally used by the methods
34
- when the user doesn't pass the user_id on a method call.
35
- user_pwd: str
36
- The password associated with the user_id. Defaults to None
37
-
38
- """
39
-
40
- def __init__(
41
- self,
42
- view_server: str,
43
- platform_url: str,
44
- user_id: str,
45
- user_pwd: str = None,
46
- token: str = None,
47
- ):
48
- self.view_server = view_server
49
- self.platform_url = platform_url
50
- self.user_id = user_id
51
- self.user_pwd = user_pwd
52
- Client.__init__(self, view_server, platform_url, user_id, user_pwd, token=token)
53
-
54
- async def _async_create_element_from_template(self, body: dict) -> str:
55
- """Create a new metadata element from a template. Async version.
56
- Parameters
57
- ----------
58
- body : str
59
- The json body used to instantiate the template.
60
-
61
- Returns
62
- -------
63
- Response
64
- The guid of the resulting element
65
-
66
- Raises
67
- ------
68
- InvalidParameterException
69
- PropertyServerException
70
- UserNotAuthorizedException
71
-
72
- Notes
73
- -----
74
- See also: https://egeria-project.org/features/templated-cataloguing/overview/
75
- The full description of the body is shown below:
76
- {
77
- "typeName" : "",
78
- "initialStatus" : "",
79
- "initialClassifications" : "",
80
- "anchorGUID" : "",
81
- "isOwnAnchor" : "",
82
- "effectiveFrom" : "",
83
- "effectiveTo" : "",
84
- "templateGUID" : "",
85
- "templateProperties" : {},
86
- "placeholderPropertyValues" : {
87
- "placeholderPropertyName1" : "placeholderPropertyValue1",
88
- "placeholderPropertyName2" : "placeholderPropertyValue2"
89
- },
90
- "parentGUID" : "",
91
- "parentRelationshipTypeName" : "",
92
- "parentRelationshipProperties" : "",
93
- "parentAtEnd1" : "",
94
- "effectiveTime" : ""
95
- }
96
- """
97
-
98
- url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/automated-curation/catalog-templates/new-element"
99
- response = await self._async_make_request("POST", url, body)
100
- return response.json().get("guid", "GUID failed to be returned")
101
-
102
- def create_element_from_template(self, body: dict) -> str:
103
- """Create a new metadata element from a template. Async version.
104
- Parameters
105
- ----------
106
- body : str
107
- The json body used to instantiate the template.
108
- server : str, optional
109
- The name of the view server to use. If not provided, the default server name will be used.
110
-
111
- Returns
112
- -------
113
- Response
114
- The guid of the resulting element
115
-
116
- Raises
117
- ------
118
- InvalidParameterException
119
- PropertyServerException
120
- UserNotAuthorizedException
121
-
122
- Notes
123
- -----
124
- See also: https://egeria-project.org/features/templated-cataloguing/overview/
125
- The full description of the body is shown below:
126
- {
127
- "typeName" : "",
128
- "initialStatus" : "",
129
- "initialClassifications" : "",
130
- "anchorGUID" : "",
131
- "isOwnAnchor" : "",
132
- "effectiveFrom" : "",
133
- "effectiveTo" : "",
134
- "templateGUID" : "",
135
- "templateProperties" : {},
136
- "placeholderPropertyValues" : {
137
- "placeholderPropertyName1" : "placeholderPropertyValue1",
138
- "placeholderPropertyName2" : "placeholderPropertyValue2"
139
- },
140
- "parentGUID" : "",
141
- "parentRelationshipTypeName" : "",
142
- "parentRelationshipProperties" : "",
143
- "parentAtEnd1" : "",
144
- "effectiveTime" : ""
145
- }
146
- """
147
- loop = asyncio.get_event_loop()
148
- response = loop.run_until_complete(
149
- self._async_create_element_from_template(body)
150
- )
151
- return response
152
-
153
- async def _async_create_kafka_server_element_from_template(
154
- self, kafka_server: str, host_name: str, port: str
155
- ) -> str:
156
- """Create a Kafka server element from a template. Async version.
157
-
158
- Parameters
159
- ----------
160
- kafka_server : str
161
- The name of the Kafka server.
162
-
163
- host_name : str
164
- The host name of the Kafka server.
165
-
166
- port : str
167
- The port number of the Kafka server.
168
-
169
- Returns
170
- -------
171
- str
172
- The GUID of the Kafka server element.
173
- """
174
-
175
- body = {
176
- "templateGUID": TEMPLATE_GUIDS["Apache Kafka Server"],
177
- "isOwnAnchor": "true",
178
- "placeholderPropertyValues": {
179
- "serverName": kafka_server,
180
- "hostIdentifier": host_name,
181
- "portNumber": port,
182
- },
183
- }
184
- response = await self._async_create_element_from_template(body)
185
- return response
186
-
187
- def create_kafka_server_element_from_template(
188
- self, kafka_server: str, host_name: str, port: str
189
- ) -> str:
190
- """Create a Kafka server element from a template.
191
-
192
- Parameters
193
- ----------
194
- kafka_server : str
195
- The name of the Kafka server.
196
-
197
- host_name : str
198
- The host name of the Kafka server.
199
-
200
- port : str
201
- The port number of the Kafka server.
202
-
203
- Returns
204
- -------
205
- str
206
- The GUID of the Kafka server element.
207
- """
208
- loop = asyncio.get_event_loop()
209
- response = loop.run_until_complete(
210
- self._async_create_kafka_server_element_from_template(
211
- kafka_server, host_name, port
212
- )
213
- )
214
- return response
215
-
216
- async def _async_create_postgres_server_element_from_template(
217
- self,
218
- postgres_server: str,
219
- host_name: str,
220
- port: str,
221
- db_user: str,
222
- db_pwd: str,
223
- ) -> str:
224
- """Create a Postgres server element from a template. Async version.
225
-
226
- Parameters
227
- ----------
228
- postgres_server : str
229
- The name of the Postgres server.
230
-
231
- host_name : str
232
- The host name of the Postgres server.
233
-
234
- port : str
235
- The port number of the Postgres server.
236
-
237
- db_user: str
238
- User name to connect to the database
239
-
240
- db_pwd: str
241
- User password to connect to the database
242
-
243
- Returns
244
- -------
245
- str
246
- The GUID of the Kafka server element.
247
- """
248
- body = {
249
- "templateGUID": TEMPLATE_GUIDS["PostgreSQL Server"],
250
- "isOwnAnchor": "true",
251
- "placeholderPropertyValues": {
252
- "serverName": postgres_server,
253
- "hostIdentifier": host_name,
254
- "portNumber": port,
255
- "databaseUserId": db_user,
256
- "databasePassword": db_pwd,
257
- },
258
- }
259
- response = await self._async_create_element_from_template(body)
260
- return response
261
-
262
- def create_postgres_server_element_from_template(
263
- self,
264
- postgres_server: str,
265
- host_name: str,
266
- port: str,
267
- db_user: str,
268
- db_pwd: str,
269
- ) -> str:
270
- """Create a Postgres server element from a template.
271
-
272
- Parameters
273
- ----------
274
- postgres_server : str
275
- The name of the Postgres server.
276
-
277
- host_name : str
278
- The host name of the Postgres server.
279
-
280
- port : str
281
- The port number of the Postgres server.
282
-
283
- db_user: str
284
- User name to connect to the database
285
-
286
- db_pwd: str
287
- User password to connect to the database
288
-
289
- Returns
290
- -------
291
- str
292
- The GUID of the Postgres server element.
293
- """
294
- loop = asyncio.get_event_loop()
295
- response = loop.run_until_complete(
296
- self._async_create_postgres_server_element_from_template(
297
- postgres_server, host_name, port, db_user, db_pwd
298
- )
299
- )
300
- return response
301
-
302
- #
303
- # Engine Actions
304
- #
305
-
306
- async def _async_find_in_asset_domain(
307
- self,
308
- search_string: str,
309
- start_from: int = 0,
310
- page_size: int = max_paging_size,
311
- starts_with: bool = True,
312
- ends_with: bool = False,
313
- ignore_case: bool = True,
314
- time_out: int = 60,
315
- ) -> list | str:
316
- """Locate string value in elements that are anchored to assets. Async Version.
317
- Asset: https: // egeria - project.org / concepts / asset /
318
-
319
- Parameters
320
- ----------
321
- search_string : str
322
- The string used for searching engine actions by name.
323
-
324
- starts_with : bool, optional
325
- Whether to search engine actions that start with the given search string. Default is False.
326
-
327
- ends_with : bool, optional
328
- Whether to search engine actions that end with the given search string. Default is False.
329
-
330
- ignore_case : bool, optional
331
- Whether to ignore case while searching engine actions. Default is False.
332
-
333
- start_from : int, optional
334
- The index from which to start fetching the engine actions. Default is 0.
335
-
336
- page_size : int, optional
337
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
338
-
339
- Returns
340
- -------
341
- List[dict] or str
342
- A list of dictionaries representing the engine actions found based on the search query.
343
- If no actions are found, returns the string "no actions".
344
-
345
- Raises:
346
- ------
347
- InvalidParameterException
348
- PropertyServerException
349
- UserNotAuthorizedException
350
-
351
- Notes
352
- -----
353
- For more information see: https://egeria-project.org/concepts/engine-action
354
- """
355
-
356
- validate_search_string(search_string)
357
-
358
- starts_with_s = str(starts_with).lower()
359
- ends_with_s = str(ends_with).lower()
360
- ignore_case_s = str(ignore_case).lower()
361
-
362
- url = (
363
- f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/in-domain/"
364
- f"by-search-string?startFrom={start_from}&pageSize={page_size}&startsWith={starts_with_s}&"
365
- f"endWith={ends_with_s}&ignoreCase={ignore_case_s}"
366
- )
367
- body = {"filter": search_string}
368
- response = await self._async_make_request("POST", url, body, time_out=time_out)
369
- return response.json().get("searchMatches", "NO_ASSETS_FOUND")
370
-
371
- def find_in_asset_domain(
372
- self,
373
- search_string: str,
374
- start_from: int = 0,
375
- page_size: int = max_paging_size,
376
- starts_with: bool = True,
377
- ends_with: bool = False,
378
- ignore_case: bool = True,
379
- time_out: int = 60,
380
- ) -> list | str:
381
- """Retrieve the list of engine action metadata elements that contain the search string. Async Version.
382
- Parameters
383
- ----------
384
- search_string : str
385
- The string used for searching engine actions by name.
386
-
387
- starts_with : bool, optional
388
- Whether to search engine actions that start with the given search string. Default is False.
389
-
390
- ends_with : bool, optional
391
- Whether to search engine actions that end with the given search string. Default is False.
392
-
393
- ignore_case : bool, optional
394
- Whether to ignore case while searching engine actions. Default is False.
395
-
396
- start_from : int, optional
397
- The index from which to start fetching the engine actions. Default is 0.
398
-
399
- page_size : int, optional
400
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
401
-
402
- Returns
403
- -------
404
- List[dict] or str
405
- A list of dictionaries representing the engine actions found based on the search query.
406
- If no actions are found, returns the string "no actions".
407
-
408
- Raises:
409
- ------
410
- InvalidParameterException
411
- PropertyServerException
412
- UserNotAuthorizedException
413
-
414
- Notes
415
- -----
416
- For more information see: https://egeria-project.org/concepts/engine-action
417
- """
418
- loop = asyncio.get_event_loop()
419
- response = loop.run_until_complete(
420
- self._async_find_in_asset_domain(
421
- search_string,
422
- start_from,
423
- page_size,
424
- starts_with,
425
- ends_with,
426
- ignore_case,
427
- time_out,
428
- )
429
- )
430
- return response
431
-
432
- async def _async_get_asset_graph(
433
- self,
434
- asset_guid: str,
435
- start_from: int = 0,
436
- page_size: int = max_paging_size,
437
- ) -> str | dict:
438
- """Return all the elements that are anchored to an asset plus relationships between these elements and to
439
- other elements. Async Version.
440
- Parameters
441
- ----------
442
- asset_guid : str
443
- The unique identity of the asset to get the graph for.
444
-
445
- start_from : int, optional
446
- The index from which to start fetching the engine actions. Default is 0.
447
-
448
- page_size : int, optional
449
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
450
-
451
- Returns
452
- -------
453
- dict or str
454
- A dictionary of the asset graph.
455
-
456
- Raises:
457
- ------
458
- InvalidParameterException
459
- PropertyServerException
460
- UserNotAuthorizedException
461
-
462
- """
463
-
464
- url = (
465
- f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/{asset_guid}/"
466
- f"as-graph?startFrom={start_from}&pageSize={page_size}"
467
- )
468
-
469
- response = await self._async_make_request("GET", url)
470
- return response.json().get("assetGraph", NO_ASSETS_FOUND)
471
-
472
- def get_asset_graph(
473
- self,
474
- asset_guid: str,
475
- start_from: int = 0,
476
- page_size: int = max_paging_size,
477
- ) -> str | dict:
478
- """Return all the elements that are anchored to an asset plus relationships between these elements and to
479
- other elements.
480
- Parameters
481
- ----------
482
- asset_guid : str
483
- The unique identity of the asset to get the graph for.
484
-
485
- start_from : int, optional
486
- The index from which to start fetching the engine actions. Default is 0.
487
-
488
- page_size : int, optional
489
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
490
-
491
- Returns
492
- -------
493
- dict or str
494
- A dictionary of the asset graph.
495
-
496
- Raises:
497
- ------
498
- InvalidParameterException
499
- PropertyServerException
500
- UserNotAuthorizedException
501
-
502
- """
503
-
504
- loop = asyncio.get_event_loop()
505
- response = loop.run_until_complete(
506
- self._async_get_asset_graph(asset_guid, start_from, page_size)
507
- )
508
- return response
509
-
510
- def get_asset_mermaid_graph(
511
- self,
512
- asset_guid: str,
513
- start_from: int = 0,
514
- page_size: int = max_paging_size,
515
- ) -> str:
516
- """Return the asset graph as mermaid markdown string.
517
- Parameters
518
- ----------
519
- asset_guid : str
520
- The unique identity of the asset to get the graph for.
521
-
522
- start_from : int, optional
523
- The index from which to start fetching the engine actions. Default is 0.
524
-
525
- page_size : int, optional
526
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
527
-
528
- Returns
529
- -------
530
- str
531
- A mermaid string representing the asset graph.
532
-
533
- Raises:
534
- ------
535
- InvalidParameterException
536
- PropertyServerException
537
- UserNotAuthorizedException
538
-
539
- """
540
-
541
- asset_graph = self.get_asset_graph(asset_guid, start_from, page_size)
542
- return asset_graph.get("mermaidGraph")
543
-
544
- async def _async_get_asset_lineage_graph(
545
- self,
546
- asset_guid: str,
547
- effective_time: str = None,
548
- as_of_time: str = None,
549
- relationship_types: [str] = None,
550
- limit_to_isc_q_name: str = None,
551
- hilight_isc_q_name: str = None,
552
- start_from: int = 0,
553
- page_size: int = max_paging_size,
554
- ) -> str | dict:
555
- """Return the asset lineage including a mermaid markdown string. Async Version.
556
- Parameters
557
- ----------
558
- asset_guid : str
559
- The unique identity of the asset to get the graph for.
560
- effective_time: str, default is None
561
- Effective time to query on. If not specified, the current time is used.
562
- as_of_time: str = None
563
- as_of_time to query on. If not specified, the current time is used.
564
- relationship_types: [str], default is None,
565
- relationship types to include in the lineage graph. If not specified, all relationship types are included.
566
- limit_to_isc_q_name: str = None,
567
- if specified, filters results to only include information supply chains with the given name.
568
- hilight_isc_q_name: str = None,
569
- if specified, highlights the information supply chain with the given name.
570
-
571
- start_from : int, optional
572
- The index from which to start fetching the engine actions. Default is 0.
573
-
574
- page_size : int, optional
575
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
576
-
577
- Returns
578
- -------
579
- str | dict
580
- A dictionary of the asset graph that includes a mermaid markdown string.
581
-
582
- Raises:
583
- ------
584
- InvalidParameterException
585
- PropertyServerException
586
- UserNotAuthorizedException
587
-
588
- """
589
-
590
- url = (
591
- f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/{asset_guid}/"
592
- f"as-lineage-graph?startFrom={start_from}&pageSize={page_size}"
593
- )
594
- body = {
595
- "effectiveTime": effective_time,
596
- "asOfTime": as_of_time,
597
- "relationshipTypes": relationship_types,
598
- "limitToISCQualifiedName": limit_to_isc_q_name,
599
- "highlightISCQualifiedName": hilight_isc_q_name,
600
- }
601
- response = await self._async_make_request("POST", url, body_slimmer(body))
602
- return response.json().get("assetLineageGraph", NO_ASSETS_FOUND)
603
-
604
- def get_asset_lineage_graph(
605
- self,
606
- asset_guid: str,
607
- effective_time: str = None,
608
- as_of_time: str = None,
609
- relationship_types: [str] = None,
610
- limit_to_isc_q_name: str = None,
611
- hilight_isc_q_name: str = None,
612
- start_from: int = 0,
613
- page_size: int = max_paging_size,
614
- ) -> str | dict:
615
- """Return the asset lineage including a mermaid markdown string. Async Version.
616
- Parameters
617
- ----------
618
- asset_guid : str
619
- The unique identity of the asset to get the graph for.
620
- effective_time: str, default is None
621
- Effective time to query on. If not specified, the current time is used.
622
- as_of_time: str = None
623
- as_of_time to query on. If not specified, the current time is used.
624
- relationship_types: [str], default is None,
625
- relationship types to include in the lineage graph. If not specified, all relationship types are included.
626
- limit_to_isc_q_name: str = None,
627
- if specified, filters results to only include information supply chains with the given name.
628
- hilight_isc_q_name: str = None,
629
- if speficied, highlights the information supply chain with the given name.
630
-
631
- start_from : int, optional
632
- The index from which to start fetching the engine actions. Default is 0.
633
-
634
- page_size : int, optional
635
- The maximum number of elements to fetch in a single request. Default is `max_paging_size`.
636
-
637
- Returns
638
- -------
639
- dict or str
640
- A dictionary of the asset graph.
641
-
642
- Raises:
643
- ------
644
- InvalidParameterException
645
- PropertyServerException
646
- UserNotAuthorizedException
647
-
648
- """
649
-
650
- loop = asyncio.get_event_loop()
651
- response = loop.run_until_complete(
652
- self._async_get_asset_lineage_graph(asset_guid, effective_time, as_of_time, relationship_types,
653
- limit_to_isc_q_name, hilight_isc_q_name, start_from, page_size)
654
- )
655
- return response
656
-
657
- def get_asset_lineage_mermaid_graph(
658
- self,
659
- asset_guid: str,
660
- effective_time: str = None,
661
- as_of_time: str = None,
662
- relationship_types: [str] = None,
663
- limit_to_isc_q_name: str = None,
664
- hilight_isc_q_name: str = None,
665
- start_from: int = 0,
666
- page_size: int = max_paging_size,
667
- ) -> str:
668
- """Return the asset lineage including a mermaid markdown string. Async Version.
669
- Parameters
670
- ----------
671
- asset_guid : str
672
- The unique identity of the asset to get the graph for.
673
- effective_time: str, default is None
674
- Effective time to query on. If not specified, the current time is used.
675
- as_of_time: str = None
676
- as_of_time to query on. If not specified, the current time is used.
677
- relationship_types: [str], default is None,
678
- relationship types to include in the lineage graph. If not specified, all relationship types are included.
679
- limit_to_isc_q_name: str = None,
680
- if specified, filters results to only include information supply chains with the given name.
681
- hilight_isc_q_name: str = None,
682
- if specified, highlights the information supply chain with the given name.
683
-
684
- start_from : int, optional
685
- The index from which to start fetching the engine actions. Default is 0.
686
-
687
- page_size : int, optional
688
- The maximum number of elements to fetch in a single request.
689
- Default is `max_paging_size`.
690
-
691
- Returns
692
- -------
693
- str
694
- A mermaid string representing the lineage.
695
-
696
- Raises:
697
- ------
698
- InvalidParameterException
699
- PropertyServerException
700
- UserNotAuthorizedException
701
-
702
- """
703
-
704
- asset_graph = self.get_asset_lineage_graph(asset_guid, effective_time,
705
- as_of_time, relationship_types,
706
- limit_to_isc_q_name, hilight_isc_q_name,
707
- start_from, page_size)
708
- return asset_graph.get("mermaidGraph")
709
-
710
- async def _async_get_assets_by_metadata_collection_id(
711
- self,
712
- metadata_collection_id: str,
713
- type_name: str = None,
714
- effective_time: str = None,
715
- start_from: int = 0,
716
- page_size: int = max_paging_size,
717
- ) -> str | list:
718
- """Return a list of assets that come from the requested metadata collection. Can optionally
719
- specify an type name as a filter and an effective time. Async Version.
720
-
721
- Parameters
722
- ----------
723
- metadata_collection_id : str
724
- The unique identity of the metadata collection to return assets from.
725
-
726
- type_name: str, optional
727
- An asset type to optionally filter on. If not specified, all assets in the collection will be returned.
728
-
729
- effective_time: str, optional
730
- The effective time to filter on. If not specified, the current time is used.
731
-
732
- start_from : int, optional
733
- The index from which to start fetching the engine actions. Default is 0.
734
-
735
- page_size : int, optional
736
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
737
-
738
- Returns
739
- -------
740
- list or str
741
- A list of assets in a [dict].
742
-
743
- Raises:
744
- ------
745
- InvalidParameterException
746
- PropertyServerException
747
- UserNotAuthorizedException
748
-
749
- """
750
-
751
- url = (
752
- f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/by-metadata-collection-id/"
753
- f"{metadata_collection_id}?startFrom={start_from}&pageSize={page_size}"
754
- )
755
-
756
- body = {"filter": type_name, "effectiveTime": effective_time}
757
- body_s = body_slimmer(body)
758
- response = await self._async_make_request("POST", url, body_s)
759
- return response.json().get("assets", "NO_ASSETS_FOUND")
760
-
761
- def get_assets_by_metadata_collection_id(
762
- self,
763
- metadata_collection_id: str,
764
- type_name: str = None,
765
- effective_time: str = None,
766
- start_from: int = 0,
767
- page_size: int = max_paging_size,
768
- ) -> str | list:
769
- """Return a list of assets that come from the requested metadata collection. Can optionally
770
- specify an type name as a filter and an effective time. Async Version.
771
-
772
- Parameters
773
- ----------
774
- metadata_collection_id : str
775
- The unique identity of the metadata collection to return assets from.
776
-
777
- type_name: str, optional
778
- An asset type to optionally filter on. If not specified, all assets in the collection will be returned.
779
-
780
- effective_time: str, optional
781
- The effective time to filter on. If not specified, the current time is used.
782
-
783
- start_from : int, optional
784
- The index from which to start fetching the engine actions. Default is 0.
785
-
786
- page_size : int, optional
787
- The maximum number of engine actions to fetch in a single request. Default is `max_paging_size`.
788
-
789
- Returns
790
- -------
791
- list or str
792
- A list of assets in a [dict].
793
-
794
- Raises:
795
- ------
796
- InvalidParameterException
797
- PropertyServerException
798
- UserNotAuthorizedException
799
-
800
- """
801
-
802
- loop = asyncio.get_event_loop()
803
- response = loop.run_until_complete(
804
- self._async_get_assets_by_metadata_collection_id(
805
- metadata_collection_id,
806
- type_name,
807
- effective_time,
808
- start_from,
809
- page_size,
810
- )
811
- )
812
- return response
813
-
814
- async def _async_get_asset_types(self) -> str | dict:
815
- """Return all the elements that are anchored to an asset plus relationships between these elements and to
816
- other elements. Async Version.
817
- Parameters
818
- ----------
819
-
820
- Returns
821
- -------
822
- dict or str
823
- A dictionary of the asset graph.
824
-
825
- Raises:
826
- ------
827
- InvalidParameterException
828
- PropertyServerException
829
- UserNotAuthorizedException
830
-
831
- """
832
-
833
- url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/types"
834
-
835
- response = await self._async_make_request("GET", url)
836
-
837
- return response.json().get("types", "NO_ASSETS_FOUND")
838
-
839
- def get_asset_catalog_types(self) -> str | dict:
840
- """Return all the elements that are anchored to an asset plus relationships between these elements and to
841
- other elements.
842
- Parameters
843
- ----------
844
-
845
- Returns
846
- -------
847
- dict or str
848
- A dictionary of the asset graph.
849
-
850
- Raises:
851
- ------
852
- InvalidParameterException
853
- PropertyServerException
854
- UserNotAuthorizedException
855
-
856
- """
857
-
858
- loop = asyncio.get_event_loop()
859
- response = loop.run_until_complete(self._async_get_asset_types())
860
- return response
861
-
862
-
863
- if __name__ == "__main__":
864
- print("Main-asset-catalog")