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
@@ -22,40 +22,27 @@ from rich.table import Table
22
22
 
23
23
  from pyegeria import (
24
24
  ClassificationManager,
25
- InvalidParameterException,
26
- ProjectManager,
27
- PropertyServerException,
28
- UserNotAuthorizedException,
29
- print_exception_response,
25
+ PyegeriaException,
26
+ print_basic_exception,
27
+ settings,
28
+ config_logging
30
29
  )
31
30
 
32
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
33
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
34
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
35
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
36
- EGERIA_VIEW_SERVER_URL = os.environ.get(
37
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
38
- )
39
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
40
- EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
41
- "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
42
- )
43
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
44
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
45
31
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
46
32
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
47
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
48
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
49
33
 
34
+ app_config = settings.Environment
35
+ config_logging()
36
+ console = Console(width = app_config.console_width)
50
37
 
51
38
  def display_archive_list(
52
39
  server: str,
53
40
  url: str,
54
41
  username: str,
55
42
  user_pass: str,
56
- save_output: bool,
57
- jupyter: bool = EGERIA_JUPYTER,
58
- width: int = EGERIA_WIDTH,
43
+ save_output: bool = False,
44
+ jupyter: bool = app_config.egeria_jupyter,
45
+ width: int = app_config.console_width
59
46
  ) -> object:
60
47
  c_client = ClassificationManager(server, url, user_id=username)
61
48
  token = c_client.create_egeria_bearer_token(username, user_pass)
@@ -78,12 +65,10 @@ def display_archive_list(
78
65
  # table.add_column("Creator")
79
66
  # table.add_column("Description")
80
67
 
81
- open_metadata_type_name = None
68
+ metadata_element_type_name = None
82
69
  property_value = "omarchive"
83
70
  property_names = ["fileExtension"]
84
- archives = c_client.get_elements_by_property_value(
85
- property_value, property_names, open_metadata_type_name
86
- )
71
+ archives = c_client.get_elements_by_property_value(property_value, property_names, metadata_element_type_name)
87
72
 
88
73
  if type(archives) != list:
89
74
  raise ValueError("--> No archives found")
@@ -93,7 +78,7 @@ def display_archive_list(
93
78
  )
94
79
 
95
80
  for archive in sorted_archives:
96
- name = archive["properties"].get("name", "---")
81
+ name = archive["properties"].get("displayName", "---")
97
82
  path_name = archive["properties"].get("pathName", "---")
98
83
  description = archive["properties"].get("description", "---")
99
84
  creation_date_epoch = (
@@ -107,10 +92,6 @@ def display_archive_list(
107
92
  return table
108
93
 
109
94
  try:
110
- # with Live(generate_table(), refresh_per_second=4, screen=True) as live:
111
- # while True:
112
- # time.sleep(2)
113
- # live.update(generate_table())
114
95
  console = Console(
115
96
  record=True, width=width, force_terminal=not jupyter, soft_wrap=True
116
97
  )
@@ -120,15 +101,13 @@ def display_archive_list(
120
101
  console.save_html("archives.html")
121
102
 
122
103
  except (
123
- InvalidParameterException,
124
- PropertyServerException,
125
- UserNotAuthorizedException,
104
+ PyegeriaException,
126
105
  ValueError,
127
106
  ) as e:
128
107
  if type(e) is str:
129
108
  print(e)
130
109
  else:
131
- print_exception_response(e)
110
+ console.print_exception(show_locals=True)
132
111
  except KeyboardInterrupt:
133
112
  pass
134
113
  finally:
@@ -145,8 +124,8 @@ def main():
145
124
  # parser.add_argument("--sponsor", help="Name of sponsor to search")
146
125
  args = parser.parse_args()
147
126
 
148
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
149
- url = args.url if args.url is not None else EGERIA_PLATFORM_URL
127
+ server = args.server if args.server is not None else app_config.egeria_view_server
128
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
150
129
  userid = args.userid if args.userid is not None else EGERIA_USER
151
130
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
152
131
 
@@ -10,6 +10,7 @@ List catalog targets
10
10
  """
11
11
  import argparse
12
12
  import os
13
+ import sys
13
14
  import time
14
15
 
15
16
  from rich import box
@@ -18,40 +19,32 @@ from rich.markdown import Markdown
18
19
  from rich.prompt import Prompt
19
20
  from rich.table import Table
20
21
 
22
+
21
23
  from pyegeria import (
22
- INTEGRATION_GUIDS,
23
- AutomatedCuration,
24
- InvalidParameterException,
25
- PropertyServerException,
26
- UserNotAuthorizedException,
27
- print_exception_response,
24
+ EgeriaTech,
25
+ PyegeriaException,
26
+ print_basic_exception,
27
+ settings,
28
+ config_logging
28
29
  )
29
30
 
30
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
31
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
32
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
33
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
34
- EGERIA_VIEW_SERVER_URL = os.environ.get(
35
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
36
- )
37
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
38
- EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
39
- EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
40
31
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
41
32
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
42
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
43
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
33
+
34
+ app_config = settings.Environment
35
+ config_logging()
36
+ console = Console(width = app_config.console_width)
44
37
 
45
38
 
46
39
  def display_catalog_targets(
47
40
  connector: str,
48
- view_server: str = EGERIA_VIEW_SERVER,
49
- view_url: str = EGERIA_VIEW_SERVER_URL,
41
+ view_server: str = app_config.egeria_view_server,
42
+ view_url: str = app_config.egeria_view_server_url,
50
43
  user: str = EGERIA_USER,
51
44
  user_pass: str = EGERIA_USER_PASSWORD,
52
45
  paging: bool = True,
53
- jupyter: bool = EGERIA_JUPYTER,
54
- width: int = EGERIA_WIDTH,
46
+ jupyter: bool = app_config.egeria_jupyter,
47
+ width: int = app_config.console_width,
55
48
  ):
56
49
  """Display catalog targets for the specified connector as a table.
57
50
 
@@ -100,7 +93,7 @@ def display_catalog_targets(
100
93
 
101
94
  if type(cat_targets) is list:
102
95
  for target in cat_targets:
103
- target_name = target.get("catalogTargetName", "---")
96
+ target_name = target['properties'].get("catalogTargetName", "---")
104
97
  target_source = target.get("metadataSourceQualifiedName", "---")
105
98
  target_rel = target.get("relationshipGUID", "---")
106
99
  target_sync = target.get("permittedSynchronization")
@@ -144,26 +137,28 @@ def display_catalog_targets(
144
137
  return table
145
138
 
146
139
  try:
147
- a_client = AutomatedCuration(view_server, view_url, user)
140
+ a_client = EgeriaTech(view_server, view_url, user)
148
141
  token = a_client.create_egeria_bearer_token(user, user_pass)
149
142
  connector = connector.strip()
150
- if connector not in INTEGRATION_GUIDS.keys():
151
- raise Exception
152
143
 
153
- connector_guid = INTEGRATION_GUIDS[connector]
144
+
145
+ connector_guid = a_client.get_connector_guid(connector)
146
+ if connector_guid is None or connector_guid == "No connector found":
147
+ console.print(f"\n\n===> No connector found with name '{connector}'\n\n")
148
+ sys.exit(1)
149
+
154
150
  cat_targets = a_client.get_catalog_targets(connector_guid)
155
151
  console = Console(force_terminal=not jupyter, width=width, soft_wrap=True)
156
152
  with console.pager(styles=True):
157
153
  console.print(generate_table(), soft_wrap=True)
158
154
 
155
+
156
+ except PyegeriaException as e:
157
+ print(f"\n\n===> Perhaps integration connector {connector} is not known?\n\n")
158
+ print_basic_exception(e)
159
159
  except (
160
- InvalidParameterException,
161
- PropertyServerException,
162
- UserNotAuthorizedException,
160
+ Exception
163
161
  ) as e:
164
- print_exception_response(e)
165
- except Exception as e:
166
- print(f"\n\n===> Perhaps integration connector {connector} is not known?\n\n")
167
162
  console.print_exception()
168
163
  finally:
169
164
  a_client.close_session()
@@ -180,20 +175,18 @@ def main():
180
175
 
181
176
  args = parser.parse_args()
182
177
 
183
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
184
- url = args.url if args.url is not None else EGERIA_VIEW_SERVER_URL
178
+ server = args.server if args.server is not None else app_config.egeria_view_server
179
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
185
180
  userid = args.userid if args.userid is not None else EGERIA_USER
186
181
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
187
- jupyter = args.jupyter if args.jupyter is not None else EGERIA_JUPYTER
188
- width = args.width if args.width is not None else EGERIA_WIDTH
182
+ jupyter = args.jupyter if args.jupyter is not None else app_config.egeria_jupyter
183
+ width = args.width if args.width is not None else app_config.console_width
189
184
 
190
185
  try:
191
186
  connector = Prompt.ask(
192
187
  "Enter the Integration Connector to list catalog targets for"
193
188
  ).strip()
194
- display_catalog_targets(
195
- connector, server, url, userid, user_pass, jupyter, width=width
196
- )
189
+ display_catalog_targets(connector, server, url, userid, user_pass, jupyter, width=width)
197
190
 
198
191
  except KeyboardInterrupt:
199
192
  pass
@@ -9,30 +9,35 @@ This script refreshed an integration daemon.
9
9
  """
10
10
 
11
11
  import os
12
+ import sys
12
13
 
13
14
  import click
14
-
15
- from pyegeria import AutomatedCuration, EgeriaTech
16
- from pyegeria._exceptions import (
17
- InvalidParameterException,
18
- PropertyServerException,
19
- UserNotAuthorizedException,
20
- print_exception_response,
15
+ from pyegeria import EgeriaTech, PyegeriaAPIException
16
+ from pyegeria.core.config import settings
17
+ from pyegeria.core.logging_configuration import config_logging
18
+ from pyegeria.core._exceptions import (
19
+ PyegeriaException, print_basic_exception
21
20
  )
22
21
 
23
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
24
- EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
25
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
26
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
27
- EGERIA_VIEW_SERVER_URL = os.environ.get(
28
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
29
- )
30
- EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
31
- EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
32
- "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
33
- )
22
+ # EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
23
+ # EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
24
+ # EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
25
+ # EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
26
+ # EGERIA_VIEW_SERVER_URL = os.environ.get(
27
+ # "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
28
+ # )
29
+ # EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
30
+ # EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
31
+ # "EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
32
+ # )
33
+
34
+
35
+
34
36
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
35
37
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
38
+ app_settings = settings
39
+ app_config = app_settings.Environment
40
+ config_logging()
36
41
 
37
42
 
38
43
  @click.command("load-archive")
@@ -42,13 +47,13 @@ EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
42
47
  help="Full path on the Metadata Server to the archive file to load",
43
48
  )
44
49
  @click.option(
45
- "--server_name", default=EGERIA_METADATA_STORE, help="Egeria metadata store to load"
50
+ "--server_name", default=app_config.egeria_metadata_store, help="Egeria metadata store to load"
46
51
  )
47
52
  @click.option(
48
- "--view-server", default=EGERIA_VIEW_SERVER, help="Egeria view server to connect to"
53
+ "--view-server", default=app_config.egeria_view_server, help="Egeria view server to connect to"
49
54
  )
50
55
  @click.option(
51
- "--url", default=EGERIA_PLATFORM_URL, help="URL of Egeria platform to connect to"
56
+ "--url", default=app_config.egeria_platform_url, help="URL of Egeria platform to connect to"
52
57
  )
53
58
  @click.option("--userid", default=EGERIA_USER, help="Egeria admin user")
54
59
  @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria admin password")
@@ -59,18 +64,22 @@ def load_archive(file_name, server_name, view_server, url, userid, password, tim
59
64
  try:
60
65
  s_client = EgeriaTech(view_server, url, userid, password)
61
66
  token = s_client.create_egeria_bearer_token()
62
- server_guid = None
67
+ server_guid = s_client.__get_guid__(display_name = server_name, property_name = "resourceName", tech_type = "MetadataStore")
63
68
  file_name = file_name.strip()
69
+ if server_guid == "No elements found":
70
+ print("Didn't find the metadata store")
71
+ sys.exit(0)
72
+
64
73
  s_client.add_archive_file(file_name, server_guid, server_name, time_out=timeout)
65
74
 
66
75
  click.echo(f"Loaded archive: {file_name}")
67
76
 
68
- except (InvalidParameterException, PropertyServerException) as e:
77
+ except (PyegeriaException, PyegeriaAPIException) as e:
69
78
  print(
70
- f"Perhaps there was a timeout? If so, the command will complete despite the exception\n"
71
- f"===> You can check by rerunning the command in a few minutes"
79
+ "Perhaps there was a timeout? If so, the command will complete despite the exception\n"
80
+ "===> You can check by rerunning the command in a few minutes"
72
81
  )
73
- print_exception_response(e)
82
+ print_basic_exception(e)
74
83
 
75
84
 
76
85
  if __name__ == "__main__":
@@ -18,50 +18,34 @@ import time
18
18
  from rich import box
19
19
  from rich.console import Console
20
20
  from rich.live import Live
21
- from rich.markdown import Markdown
22
21
  from rich.table import Table
23
22
 
24
23
  from pyegeria import (
25
- AutomatedCuration,
26
- InvalidParameterException,
27
- PropertyServerException,
28
- UserNotAuthorizedException,
29
- print_exception_response,
24
+ EgeriaTech,
25
+ PyegeriaException,
26
+ print_basic_exception,
27
+ settings,
28
+ config_logging
30
29
  )
31
30
 
32
- EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
33
- EGERIA_KAFKA_ENDPOINT = os.environ.get("EGERIA_KAFKA_ENDPOINT", "localhost:9092")
34
- EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
35
- EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
36
- EGERIA_VIEW_SERVER_URL = os.environ.get(
37
- "EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
38
- )
39
- EGERIA_ENGINE_HOST = os.environ.get("EGERIA_ENGINE_HOST", "engine-host")
40
- EGERIA_ENGINE_HOST_URL = os.environ.get(
41
- "EGERIA_ENGINE_HOST_URL", "https://localhost:9443"
42
- )
43
- EGERIA_INTEGRATION_DAEMON = os.environ.get(
44
- "EGERIA_INTEGRATION_DAEMON", "integration_daemon"
45
- )
46
- EGERIA_ADMIN_USER = os.environ.get("EGERIA_ADMIN_USER", "garygeeke")
47
- EGERIA_ADMIN_PASSWORD = os.environ.get("EGERIA_ADMIN_PASSWORD", "secret")
31
+
48
32
  EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
49
33
  EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
50
- EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
51
- EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
52
34
 
53
- disable_ssl_warnings = True
35
+ app_config = settings.Environment
36
+ config_logging()
37
+ console = Console(width = app_config.console_width)
54
38
 
55
39
 
56
- def display_engine_activity_c(
40
+ def display_engine_activity(
57
41
  row_limit: int = 0,
58
- view_server: str = EGERIA_VIEW_SERVER,
59
- view_url: str = EGERIA_VIEW_SERVER_URL,
42
+ view_server: str = app_config.egeria_view_server,
43
+ view_url: str = app_config.egeria_view_server_url,
60
44
  user: str = EGERIA_USER,
61
45
  user_pass: str = EGERIA_USER_PASSWORD,
62
46
  paging: bool = True,
63
- jupyter: bool = EGERIA_JUPYTER,
64
- width: int = EGERIA_WIDTH,
47
+ jupyter: bool = app_config.egeria_jupyter,
48
+ width: int = app_config.console_width,
65
49
  ):
66
50
  """Display governance engine activity as a table.
67
51
 
@@ -84,7 +68,7 @@ def display_engine_activity_c(
84
68
  width : int
85
69
  The width of the console for table printing.
86
70
  """
87
- g_client = AutomatedCuration(view_server, view_url, user, user_pwd=user_pass)
71
+ g_client = EgeriaTech(view_server, view_url, user, user_pwd=user_pass)
88
72
  token = g_client.create_egeria_bearer_token()
89
73
 
90
74
  def generate_table() -> Table:
@@ -102,15 +86,17 @@ def display_engine_activity_c(
102
86
  expand=True,
103
87
  )
104
88
  table.add_column("Requested Time")
105
- table.add_column("Core Info")
106
- table.add_column("Target Elements")
107
-
89
+ table.add_column("Start Time")
90
+ table.add_column("Action GUID", no_wrap=True)
91
+ table.add_column("Engine Name")
92
+ table.add_column("Request Type")
108
93
  table.add_column("Action Status")
94
+ table.add_column("Target Element")
109
95
  table.add_column("Completion Time")
110
- table.add_column("Core Results")
111
- # table.add_column("Completion Message")
96
+ table.add_column("Process Name")
97
+ table.add_column("Completion Message")
112
98
 
113
- action_status = g_client.get_engine_actions()
99
+ action_status = g_client.get_active_engine_actions()
114
100
 
115
101
  if type(action_status) is str:
116
102
  requested_time = " "
@@ -133,10 +119,9 @@ def display_engine_activity_c(
133
119
  if row_limit > 0 and row_count >= row_limit:
134
120
  break
135
121
  row_count += 1
136
- requested_time = action.get("requestedTime", " ")[:-10]
137
- start_time = action.get("startTime", " ")[:-10]
138
- completion_time = action.get("completionTime", " ")[:-10]
139
- completion_guards = action.get("completionGuards", " ")
122
+ requested_time = action.get("requestedTime", " ")
123
+ start_time = action.get("startTime", " ")
124
+ completion_time = action.get("completionTime", " ")
140
125
 
141
126
  engine_name = action["governanceEngineName"]
142
127
  request_type = action["requestType"]
@@ -148,57 +133,42 @@ def display_engine_activity_c(
148
133
  "ACTIVATING",
149
134
  ):
150
135
  action_status = f"[yellow]{action['actionStatus']}"
151
- elif action["actionStatus"] in ("IN_PROGRESS", "ACTIONED"):
136
+ elif action["actionStatus"] in ("IN_PROGRESS", "COMPLETED"):
152
137
  action_status = f"[green]{action['actionStatus']}"
153
138
  else:
154
139
  action_status = f"[red]{action['actionStatus']}"
155
140
 
156
- request_parameters_md = " "
157
- request_parameters = action.get("requestParameters", "Empty")
158
- if type(request_parameters) is dict:
159
- for key, value in request_parameters.items():
160
- request_parameters_md += f"\t* {key}: {value}\n"
161
-
162
141
  targets = action.get("actionTargetElements", "Empty")
163
142
  if type(targets) is list:
143
+ tgt_tab = Table()
144
+ tgt_tab.add_column("name")
145
+ tgt_tab.add_column("guid", no_wrap=True)
146
+ tgt_tab.add_column("type_name")
164
147
  targets_md = ""
165
148
  for target in targets:
166
149
  t_name = target["actionTargetName"]
167
150
  t_guid = target["actionTargetGUID"]
168
151
  t_type = target["targetElement"]["type"]["typeName"]
169
- targets_md += (
170
- f"* Target Name: {t_name}\n"
171
- f" * Target GUID: {t_guid}\n"
172
- f" * Target Type: {t_type}\n"
173
- )
174
-
152
+ tgt_tab.add_row(t_name, t_guid, t_type)
175
153
  # target_element = json.dumps(target[0]["targetElement"]["elementProperties"]["propertiesAsStrings"])
176
- target_element = Markdown(f"{targets_md} ---\n")
154
+ target_element = tgt_tab
177
155
  else:
178
156
  target_element = " "
179
157
 
180
- process_name = action.get("processName", "Null")
158
+ process_name = action.get("processName", " ")
181
159
  completion_message = action.get("completionMessage", " ")
182
- core_results_md = (
183
- f"* Completion Guards: {completion_guards}\n"
184
- f"* Completion Message: {completion_message}"
185
- )
186
- core_results_out = Markdown(core_results_md)
187
- core_info_md = (
188
- f"* Start Time: {start_time}\n* Engine Name: {engine_name}\n* GUID: {action_guid}\n"
189
- f"* Request Type: {request_type}\n"
190
- f"* Process Name: {process_name}\n"
191
- f"---\n"
192
- f"* Request Parameters: \n{request_parameters_md}\n"
193
- )
194
- core_info_out = Markdown(core_info_md)
160
+
195
161
  table.add_row(
196
162
  requested_time,
197
- core_info_out,
198
- target_element,
163
+ start_time,
164
+ action_guid,
165
+ engine_name,
166
+ request_type,
199
167
  action_status,
168
+ target_element,
200
169
  completion_time,
201
- core_results_out,
170
+ process_name,
171
+ completion_message,
202
172
  )
203
173
  else:
204
174
  print("Egeria integration daemon not running")
@@ -223,11 +193,9 @@ def display_engine_activity_c(
223
193
  live.update(generate_table())
224
194
 
225
195
  except (
226
- InvalidParameterException,
227
- PropertyServerException,
228
- UserNotAuthorizedException,
196
+ PyegeriaException
229
197
  ) as e:
230
- print_exception_response(e)
198
+ print_basic_exception(e)
231
199
  except KeyboardInterrupt:
232
200
  pass
233
201
  finally:
@@ -246,12 +214,13 @@ def main_live():
246
214
 
247
215
  args = parser.parse_args()
248
216
 
249
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
250
- url = args.url if args.url is not None else EGERIA_VIEW_SERVER_URL
217
+ server = args.server if args.server is not None else app_config.egeria_view_server
218
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
251
219
  userid = args.userid if args.userid is not None else EGERIA_USER
252
220
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
253
221
  rowlimit = int(args.rowlimit) if args.rowlimit is not None else 0
254
- display_engine_activity_c(
222
+
223
+ display_engine_activity(
255
224
  rowlimit, server, url, user=userid, user_pass=user_pass, paging=False
256
225
  )
257
226
 
@@ -268,13 +237,13 @@ def main_paging():
268
237
 
269
238
  args = parser.parse_args()
270
239
 
271
- server = args.server if args.server is not None else EGERIA_VIEW_SERVER
272
- url = args.url if args.url is not None else EGERIA_VIEW_SERVER_URL
240
+ server = args.server if args.server is not None else app_config.egeria_view_server
241
+ url = args.url if args.url is not None else app_config.egeria_view_server_url
273
242
  userid = args.userid if args.userid is not None else EGERIA_USER
274
243
  user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
275
244
  rowlimit = int(args.rowlimit) if args.rowlimit is not None else 0
276
245
 
277
- display_engine_activity_c(
246
+ display_engine_activity(
278
247
  rowlimit, server, url, user=userid, user_pass=user_pass, paging=True
279
248
  )
280
249