pyegeria 5.4.0.28__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.
- commands/__init__.py +24 -0
- commands/cat/Dr-Egeria_md-orig.py +2 -2
- commands/cat/collection_actions.py +197 -0
- commands/cat/dr_egeria_command_help.py +137 -38
- commands/cat/dr_egeria_jupyter.py +7 -7
- commands/cat/dr_egeria_md.py +10 -267
- commands/cat/exp_list_glossaries.py +11 -14
- commands/cat/get_asset_graph.py +37 -267
- commands/cat/{get_collection.py → get_collection_tree.py} +10 -18
- commands/cat/get_project_dependencies.py +14 -14
- commands/cat/get_project_structure.py +15 -14
- commands/cat/get_tech_type_elements.py +16 -116
- commands/cat/glossary_actions.py +145 -298
- commands/cat/list_assets.py +3 -11
- commands/cat/list_cert_types.py +17 -63
- commands/cat/list_collections.py +17 -139
- commands/cat/list_deployed_catalogs.py +15 -27
- commands/cat/list_deployed_database_schemas.py +27 -43
- commands/cat/list_deployed_databases.py +16 -31
- commands/cat/list_deployed_servers.py +35 -54
- commands/cat/list_glossaries.py +18 -17
- commands/cat/list_projects.py +10 -12
- commands/cat/list_tech_type_elements.py +21 -37
- commands/cat/list_tech_types.py +13 -25
- commands/cat/list_terms.py +38 -79
- commands/cat/list_todos.py +4 -11
- commands/cat/list_user_ids.py +3 -10
- commands/cat/my_reports.py +559 -0
- commands/cat/run_report.py +394 -0
- commands/cat/{list_format_set.py → run_report_orig.py} +136 -44
- commands/cli/egeria.py +182 -219
- commands/cli/egeria_cat.py +32 -59
- commands/cli/egeria_my.py +13 -0
- commands/cli/egeria_ops.py +69 -74
- commands/cli/egeria_tech.py +17 -93
- commands/{cat → deprecated}/list_data_designer.py +2 -4
- commands/{cat → deprecated}/list_data_structures_full.py +3 -6
- commands/deprecated/old_get_asset_graph.py +315 -0
- commands/my/__init__.py +0 -2
- commands/my/list_my_profile.py +27 -34
- commands/my/list_my_roles.py +1 -7
- commands/my/monitor_my_todos.py +1 -7
- commands/my/monitor_open_todos.py +6 -7
- commands/my/todo_actions.py +4 -5
- commands/ops/__init__.py +0 -2
- commands/ops/gov_server_actions.py +17 -21
- commands/ops/list_archives.py +17 -38
- commands/ops/list_catalog_targets.py +33 -40
- commands/ops/load_archive.py +14 -11
- commands/ops/{monitor_engine_activity_c.py → monitor_active_engine_activity.py} +51 -82
- commands/ops/{monitor_integ_daemon_status.py → monitor_daemon_status.py} +35 -55
- commands/ops/monitor_engine_activity.py +79 -77
- commands/ops/{monitor_gov_eng_status.py → monitor_engine_status.py} +10 -7
- commands/ops/monitor_platform_status.py +38 -50
- commands/ops/monitor_server_startup.py +6 -11
- commands/ops/monitor_server_status.py +7 -11
- commands/ops/orig_monitor_server_list.py +8 -8
- commands/ops/orig_monitor_server_status.py +1 -5
- commands/ops/refresh_integration_daemon.py +5 -5
- commands/ops/restart_integration_daemon.py +5 -5
- commands/ops/table_integ_daemon_status.py +6 -6
- commands/ops/x_engine_actions.py +7 -7
- commands/tech/__init__.py +0 -2
- commands/tech/{generic_actions.py → element_actions.py} +6 -11
- commands/tech/get_element_info.py +20 -29
- commands/tech/get_guid_info.py +23 -42
- commands/tech/get_tech_details.py +20 -35
- commands/tech/get_tech_type_template.py +28 -39
- commands/tech/list_all_om_type_elements.py +24 -30
- commands/tech/list_all_om_type_elements_x.py +22 -28
- commands/tech/list_all_related_elements.py +19 -28
- commands/tech/list_anchored_elements.py +22 -30
- commands/tech/list_asset_types.py +19 -24
- commands/tech/list_elements_by_classification_by_property_value.py +26 -32
- commands/tech/list_elements_by_property_value.py +19 -25
- commands/tech/list_elements_by_property_value_x.py +20 -28
- commands/tech/list_elements_for_classification.py +28 -41
- commands/tech/list_gov_action_processes.py +16 -27
- commands/tech/list_information_supply_chains.py +22 -30
- commands/tech/list_registered_services.py +14 -26
- commands/tech/list_related_elements_with_prop_value.py +15 -25
- commands/tech/list_related_specification.py +1 -4
- commands/tech/list_relationship_types.py +15 -25
- commands/tech/list_relationships.py +20 -36
- commands/tech/list_solution_blueprints.py +28 -33
- commands/tech/list_solution_components.py +23 -29
- commands/tech/list_solution_roles.py +21 -32
- commands/tech/list_tech_templates.py +51 -54
- commands/tech/list_valid_metadata_values.py +5 -9
- commands/tech/table_tech_templates.py +2 -6
- commands/tech/x_list_related_elements.py +1 -4
- examples/GeoSpatial Products Example.py +524 -0
- examples/Jupyter Notebooks/P-egeria-server-config.ipynb +2137 -0
- examples/Jupyter Notebooks/README.md +2 -0
- examples/Jupyter Notebooks/common/P-environment-check.ipynb +115 -0
- examples/Jupyter Notebooks/common/__init__.py +14 -0
- examples/Jupyter Notebooks/common/common-functions.ipynb +4694 -0
- examples/Jupyter Notebooks/common/environment-check.ipynb +52 -0
- examples/Jupyter Notebooks/common/globals.ipynb +184 -0
- examples/Jupyter Notebooks/common/globals.py +154 -0
- examples/Jupyter Notebooks/common/orig_globals.py +152 -0
- examples/format_sets/all_format_sets.json +910 -0
- examples/format_sets/custom_format_sets.json +268 -0
- examples/format_sets/subset_format_sets.json +187 -0
- examples/format_sets_save_load_example.py +291 -0
- examples/jacquard_data_sets.py +129 -0
- examples/output_formats_example.py +193 -0
- examples/test_jacquard_data_sets.py +54 -0
- examples/test_jacquard_data_sets_scenarios.py +94 -0
- md_processing/__init__.py +33 -24
- md_processing/command_dispatcher.py +33 -0
- md_processing/command_mapping.py +221 -0
- md_processing/data/commands/commands_data_designer.json +537 -0
- md_processing/data/commands/commands_external_reference.json +733 -0
- md_processing/data/commands/commands_feedback.json +155 -0
- md_processing/data/commands/commands_general.json +204 -0
- md_processing/data/commands/commands_glossary.json +218 -0
- md_processing/data/commands/commands_governance.json +3678 -0
- md_processing/data/commands/commands_product_manager.json +865 -0
- md_processing/data/commands/commands_project.json +642 -0
- md_processing/data/commands/commands_solution_architect.json +366 -0
- md_processing/data/commands.json +6489 -30060
- md_processing/data/{commands-working.json → commands_working.json} +9304 -13513
- md_processing/data/gened_report_specs.py +6584 -0
- md_processing/data/generated_format_sets.json +6533 -0
- md_processing/data/generated_format_sets_old.json +4137 -0
- md_processing/data/generated_format_sets_old.py +45 -0
- md_processing/dr_egeria.py +182 -0
- md_processing/md_commands/data_designer_commands.py +195 -583
- md_processing/md_commands/ext_ref_commands.py +530 -0
- md_processing/md_commands/feedback_commands.py +726 -0
- md_processing/md_commands/glossary_commands.py +106 -490
- md_processing/md_commands/governance_officer_commands.py +129 -18
- md_processing/md_commands/product_manager_commands.py +362 -115
- md_processing/md_commands/project_commands.py +351 -134
- md_processing/md_commands/solution_architect_commands.py +276 -232
- md_processing/md_commands/view_commands.py +295 -0
- md_processing/md_processing_utils/common_md_proc_utils.py +258 -166
- md_processing/md_processing_utils/common_md_utils.py +138 -43
- md_processing/md_processing_utils/determine_width.py +103 -0
- md_processing/md_processing_utils/extraction_utils.py +100 -39
- md_processing/md_processing_utils/gen_report_specs.py +643 -0
- md_processing/md_processing_utils/generate_dr_help.py +61 -33
- md_processing/md_processing_utils/generate_md_cmd_templates.py +20 -19
- md_processing/md_processing_utils/generate_md_templates.py +3 -12
- md_processing/md_processing_utils/md_processing_constants.py +1053 -72
- pyegeria/__init__.py +203 -158
- pyegeria/core/__init__.py +40 -0
- pyegeria/core/_base_platform_client.py +574 -0
- pyegeria/core/_base_server_client.py +573 -0
- pyegeria/{_exceptions_new.py → core/_exceptions.py} +62 -30
- pyegeria/{_globals.py → core/_globals.py} +14 -3
- pyegeria/core/_server_client.py +6073 -0
- pyegeria/{_validators.py → core/_validators.py} +7 -8
- pyegeria/core/config.py +654 -0
- pyegeria/{create_tech_guid_lists.py → core/create_tech_guid_lists.py} +0 -1
- pyegeria/core/load_config.py +37 -0
- pyegeria/{logging_configuration.py → core/logging_configuration.py} +1 -1
- pyegeria/core/mcp_adapter.py +144 -0
- pyegeria/core/mcp_server.py +212 -0
- pyegeria/core/utils.py +405 -0
- pyegeria/{_client.py → deprecated/_client.py} +24 -25
- pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
- pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1987 -1877
- pyegeria/{output_formatter.py → deprecated/output_formatter_with_machine_keys.py} +298 -45
- pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +155 -171
- pyegeria/{valid_metadata_omvs.py → deprecated/valid_metadata_omvs.py} +93 -93
- pyegeria/{x_action_author_omvs.py → deprecated/x_action_author_omvs.py} +2 -3
- pyegeria/egeria_cat_client.py +26 -70
- pyegeria/egeria_client.py +130 -93
- pyegeria/egeria_config_client.py +40 -46
- pyegeria/egeria_tech_client.py +141 -54
- pyegeria/models/__init__.py +150 -0
- pyegeria/{models.py → models/models.py} +156 -20
- pyegeria/omvs/__init__.py +84 -0
- pyegeria/omvs/action_author.py +342 -0
- pyegeria/omvs/actor_manager.py +5980 -0
- pyegeria/omvs/asset_catalog.py +842 -0
- pyegeria/omvs/asset_maker.py +2736 -0
- pyegeria/omvs/automated_curation.py +4403 -0
- pyegeria/omvs/classification_manager.py +11213 -0
- pyegeria/{collection_manager.py → omvs/collection_manager.py} +1334 -1160
- pyegeria/omvs/community_matters_omvs.py +468 -0
- pyegeria/{core_omag_server_config.py → omvs/core_omag_server_config.py} +157 -157
- pyegeria/{data_designer.py → omvs/data_designer.py} +1115 -660
- pyegeria/omvs/data_discovery.py +869 -0
- pyegeria/omvs/data_engineer.py +372 -0
- pyegeria/omvs/digital_business.py +1133 -0
- pyegeria/omvs/external_links.py +1752 -0
- pyegeria/omvs/feedback_manager.py +834 -0
- pyegeria/{full_omag_server_config.py → omvs/full_omag_server_config.py} +73 -69
- pyegeria/{glossary_manager.py → omvs/glossary_manager.py} +857 -519
- pyegeria/{governance_officer.py → omvs/governance_officer.py} +964 -468
- pyegeria/omvs/lineage_linker.py +314 -0
- pyegeria/omvs/location_arena.py +1525 -0
- pyegeria/omvs/metadata_expert.py +668 -0
- pyegeria/omvs/metadata_explorer_omvs.py +2943 -0
- pyegeria/omvs/my_profile.py +1042 -0
- pyegeria/omvs/notification_manager.py +358 -0
- pyegeria/omvs/people_organizer.py +394 -0
- pyegeria/{platform_services.py → omvs/platform_services.py} +113 -193
- pyegeria/omvs/product_manager.py +1825 -0
- pyegeria/omvs/project_manager.py +1907 -0
- pyegeria/omvs/reference_data.py +1140 -0
- pyegeria/omvs/registered_info.py +334 -0
- pyegeria/omvs/runtime_manager.py +2817 -0
- pyegeria/omvs/schema_maker.py +446 -0
- pyegeria/{server_operations.py → omvs/server_operations.py} +27 -26
- pyegeria/{solution_architect_omvs.py → omvs/solution_architect.py} +1886 -1505
- pyegeria/omvs/specification_properties.py +37 -0
- pyegeria/omvs/subject_area.py +1042 -0
- pyegeria/omvs/template_manager_omvs.py +236 -0
- pyegeria/omvs/time_keeper.py +1761 -0
- pyegeria/omvs/valid_metadata.py +3221 -0
- pyegeria/omvs/valid_metadata_lists.py +37 -0
- pyegeria/omvs/valid_type_lists.py +37 -0
- pyegeria/view/__init__.py +28 -0
- pyegeria/{_output_format_models.py → view/_output_format_models.py} +160 -24
- pyegeria/view/_output_formats.py +14 -0
- pyegeria/view/base_report_formats.py +2719 -0
- pyegeria/view/dr_egeria_reports.py +56 -0
- pyegeria/view/format_set_executor.py +397 -0
- pyegeria/{md_processing_utils.py → view/md_processing_utils.py} +5 -5
- pyegeria/{mermaid_utilities.py → view/mermaid_utilities.py} +2 -154
- pyegeria/view/output_formatter.py +1297 -0
- pyegeria-5.5.3.3.dist-info/METADATA +218 -0
- pyegeria-5.5.3.3.dist-info/RECORD +241 -0
- {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info}/WHEEL +2 -1
- pyegeria-5.5.3.3.dist-info/entry_points.txt +103 -0
- pyegeria-5.5.3.3.dist-info/top_level.txt +4 -0
- commands/cat/.DS_Store +0 -0
- commands/cat/.env +0 -8
- commands/cat/README.md +0 -16
- commands/cat/debug_log +0 -1126
- commands/cat/debug_log.2025-08-18_11-34-38_088636.zip +0 -0
- commands/cat/list_categories.py +0 -192
- commands/cat/logs/pyegeria.log +0 -4
- commands/cli/debug_log +0 -0
- commands/cli/debug_log.log +0 -0
- commands/cli/txt_custom_v2.tcss +0 -19
- commands/my/README.md +0 -17
- commands/ops/README.md +0 -24
- commands/ops/logs/pyegeria.log +0 -0
- commands/ops/monitor_asset_events.py +0 -108
- commands/tech/README.md +0 -24
- md_processing/.DS_Store +0 -0
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +0 -163
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +0 -474
- md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
- md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
- md_processing/dr_egeria_inbox/arch_test.md +0 -57
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
- md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
- md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
- md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
- md_processing/dr_egeria_inbox/cat_test.md +0 -100
- md_processing/dr_egeria_inbox/collections.md +0 -39
- md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
- md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
- md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
- md_processing/dr_egeria_inbox/data_field.md +0 -54
- md_processing/dr_egeria_inbox/data_spec.md +0 -77
- md_processing/dr_egeria_inbox/data_spec_test.md +0 -2406
- md_processing/dr_egeria_inbox/data_test.md +0 -179
- md_processing/dr_egeria_inbox/data_test2.md +0 -429
- md_processing/dr_egeria_inbox/data_test3.md +0 -462
- md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
- md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
- md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
- md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
- md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
- md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
- md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
- md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb +0 -341
- md_processing/dr_egeria_inbox/glossary_list.md +0 -5
- md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
- md_processing/dr_egeria_inbox/glossary_test1.md +0 -324
- md_processing/dr_egeria_inbox/gov_def.md +0 -482
- md_processing/dr_egeria_inbox/gov_def2.md +0 -447
- md_processing/dr_egeria_inbox/img.png +0 -0
- md_processing/dr_egeria_inbox/product.md +0 -211
- md_processing/dr_egeria_inbox/rel.md +0 -8
- md_processing/dr_egeria_inbox/sb.md +0 -119
- md_processing/dr_egeria_inbox/solution-components.md +0 -136
- md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
- md_processing/dr_egeria_inbox/synonym_test.md +0 -42
- md_processing/dr_egeria_inbox/t2.md +0 -268
- md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -6
- md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -31
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
- md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
- md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -220
- md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
- md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:22-dr_egeria_intro_part1.md +0 -312
- md_processing/dr_egeria_outbox/friday/processed-2025-08-22 21:23-dr_egeria_intro_part1.md +0 -265
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:06-dr_egeria_intro_part1.md +0 -230
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:30-dr_egeria_intro_part1.md +0 -296
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 15:31-dr_egeria_intro_part1.md +0 -253
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:08-dr_egeria_intro_part2.md +0 -343
- md_processing/dr_egeria_outbox/friday/processed-2025-08-23 16:12-dr_egeria_intro_part2.md +0 -343
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:05-product.md +0 -426
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 07:56-product.md +0 -212
- md_processing/dr_egeria_outbox/monday/processed-2025-08-19 09:43-product.md +0 -201
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 14:55-product.md +0 -77
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:05-product.md +0 -75
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:11-product.md +0 -74
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 20:40-collections.md +0 -49
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-16 19:15-gov_def2.md +0 -527
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 12:08-gov_def2.md +0 -527
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 14:27-gov_def2.md +0 -485
- md_processing/dr_egeria_outbox/tuesday/processed-2025-08-19 10:55-product.md +0 -209
- md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
- md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
- md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
- md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
- md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
- md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
- md_processing/family_docs/Data Designer.md +0 -842
- md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
- md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
- md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
- md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
- md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
- md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
- md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
- md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
- md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
- md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
- md_processing/family_docs/Digital Product Manager.md +0 -668
- md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
- md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
- md_processing/family_docs/Glossary/Create_Category.md +0 -38
- md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
- md_processing/family_docs/Glossary/Create_Term.md +0 -70
- md_processing/family_docs/Glossary.md +0 -206
- md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
- md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
- md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
- md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
- md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
- md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
- md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
- md_processing/family_docs/Governance Officer.md +0 -2412
- md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
- md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
- md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
- md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
- md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
- md_processing/family_docs/Solution Architect.md +0 -490
- md_processing/md_processing_utils/debug_log +0 -574
- md_processing/md_processing_utils/debug_log.log +0 -0
- md_processing/md_processing_utils/dr-egeria-help-2025-07-17T17:22:09.md +0 -2065
- md_processing/md_processing_utils/generated_help_terms.md +0 -842
- pyegeria/.DS_Store +0 -0
- pyegeria/README.md +0 -35
- pyegeria/_client_new.py +0 -1102
- pyegeria/_output_formats.py +0 -730
- pyegeria/asset_catalog_omvs.py +0 -864
- pyegeria/automated_curation_omvs.py +0 -3765
- pyegeria/config.py +0 -523
- pyegeria/egeria_my_client.py +0 -91
- pyegeria/feedback_manager_omvs.py +0 -4573
- pyegeria/load_config_orig.py +0 -218
- pyegeria/md_processing_helpers.py +0 -58
- pyegeria/md_processing_utils_orig.py +0 -1103
- pyegeria/metadata_explorer_omvs.py +0 -2326
- pyegeria/my_profile_omvs.py +0 -1022
- pyegeria/project_manager.py +0 -1591
- pyegeria/registered_info.py +0 -167
- pyegeria/template_manager_omvs.py +0 -1414
- pyegeria/utils.py +0 -256
- pyegeria-5.4.0.28.dist-info/METADATA +0 -77
- pyegeria-5.4.0.28.dist-info/RECORD +0 -343
- pyegeria-5.4.0.28.dist-info/entry_points.txt +0 -105
- /commands/cat/debug_log.log → /pyegeria/deprecated/__init__.py +0 -0
- /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
- /pyegeria/{collection_models.py → models/collection_models.py} +0 -0
- {pyegeria-5.4.0.28.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
commands/cli/egeria_tech.py
CHANGED
|
@@ -53,7 +53,7 @@ from commands.tech.list_solution_components import solution_component_list
|
|
|
53
53
|
from commands.tech.list_solution_roles import solution_role_list
|
|
54
54
|
from commands.tech.list_tech_templates import display_templates_spec
|
|
55
55
|
from commands.tech.list_valid_metadata_values import display_metadata_values
|
|
56
|
-
from commands.tech.
|
|
56
|
+
from commands.tech.element_actions import delete_element
|
|
57
57
|
|
|
58
58
|
@tui()
|
|
59
59
|
@click.version_option("0.0.1", prog_name="egeria_ops")
|
|
@@ -360,17 +360,8 @@ def show_elements_by_classification_by_prop(
|
|
|
360
360
|
"""Show elements by classification and property value"""
|
|
361
361
|
c = ctx.obj
|
|
362
362
|
if extended:
|
|
363
|
-
find_elements_by_prop_value_x(
|
|
364
|
-
|
|
365
|
-
property_value,
|
|
366
|
-
[property_names],
|
|
367
|
-
c.view_server,
|
|
368
|
-
c.view_server_url,
|
|
369
|
-
c.userid,
|
|
370
|
-
c.password,
|
|
371
|
-
c.jupyter,
|
|
372
|
-
c.width,
|
|
373
|
-
)
|
|
363
|
+
find_elements_by_prop_value_x(om_type, property_value, [property_names], c.view_server, c.view_server_url,
|
|
364
|
+
c.userid, c.password, c.jupyter, c.width)
|
|
374
365
|
else:
|
|
375
366
|
find_elements_by_prop_value(
|
|
376
367
|
om_type,
|
|
@@ -404,17 +395,8 @@ def show_elements_by_classification_by_prop(
|
|
|
404
395
|
def show_related_elements(ctx, element_guid, om_type, rel_type):
|
|
405
396
|
"""Show all elements related to specified guid"""
|
|
406
397
|
c = ctx.obj
|
|
407
|
-
list_related_elements(
|
|
408
|
-
|
|
409
|
-
om_type,
|
|
410
|
-
rel_type,
|
|
411
|
-
c.view_server,
|
|
412
|
-
c.view_server_url,
|
|
413
|
-
c.userid,
|
|
414
|
-
c.password,
|
|
415
|
-
c.jupyter,
|
|
416
|
-
c.width,
|
|
417
|
-
)
|
|
398
|
+
list_related_elements(element_guid, om_type, rel_type, c.view_server, c.view_server_url, c.userid, c.password,
|
|
399
|
+
c.jupyter, c.width)
|
|
418
400
|
|
|
419
401
|
|
|
420
402
|
@show_elements.command("related-elements_by_prop")
|
|
@@ -491,9 +473,7 @@ def show_tech_types(ctx, search_string):
|
|
|
491
473
|
"""
|
|
492
474
|
|
|
493
475
|
c = ctx.obj
|
|
494
|
-
display_tech_types(
|
|
495
|
-
search_string, c.view_server, c.view_server_url, c.userid, c.password
|
|
496
|
-
)
|
|
476
|
+
display_tech_types(search_string, c.view_server, c.view_server_url, c.userid, c.password)
|
|
497
477
|
|
|
498
478
|
|
|
499
479
|
@show_tech.command("tech-details")
|
|
@@ -507,15 +487,7 @@ def show_tech_details(ctx, tech_name):
|
|
|
507
487
|
tech-name is a valid technology name (see 'show tech-types')
|
|
508
488
|
"""
|
|
509
489
|
c = ctx.obj
|
|
510
|
-
tech_details_viewer(
|
|
511
|
-
tech_name,
|
|
512
|
-
c.view_server,
|
|
513
|
-
c.view_server_url,
|
|
514
|
-
c.userid,
|
|
515
|
-
c.password,
|
|
516
|
-
c.jupyter,
|
|
517
|
-
c.width,
|
|
518
|
-
)
|
|
490
|
+
tech_details_viewer(tech_name, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
|
|
519
491
|
|
|
520
492
|
|
|
521
493
|
@show_tech.command("tech-type-templates")
|
|
@@ -552,7 +524,7 @@ def show_asset_types(ctx):
|
|
|
552
524
|
@show_info.command("registered-services")
|
|
553
525
|
@click.option(
|
|
554
526
|
"--services",
|
|
555
|
-
|
|
527
|
+
type_name = click.Choice(
|
|
556
528
|
[
|
|
557
529
|
"all",
|
|
558
530
|
"access-services",
|
|
@@ -571,15 +543,7 @@ def show_asset_types(ctx):
|
|
|
571
543
|
def show_registered_services(ctx, services):
|
|
572
544
|
"""Show information about a registered services"""
|
|
573
545
|
c = ctx.obj
|
|
574
|
-
display_registered_svcs(
|
|
575
|
-
services,
|
|
576
|
-
c.view_server,
|
|
577
|
-
c.view_server_url,
|
|
578
|
-
c.userid,
|
|
579
|
-
c.password,
|
|
580
|
-
c.jupyter,
|
|
581
|
-
c.width,
|
|
582
|
-
)
|
|
546
|
+
display_registered_svcs(services, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
|
|
583
547
|
|
|
584
548
|
|
|
585
549
|
@show_info.command("relationship-types")
|
|
@@ -592,16 +556,8 @@ def show_registered_services(ctx, services):
|
|
|
592
556
|
def show_relationship_types(ctx, rel_type):
|
|
593
557
|
"""Show information about the specified relationship type"""
|
|
594
558
|
c = ctx.obj
|
|
595
|
-
display_relationship_types(
|
|
596
|
-
|
|
597
|
-
c.view_server,
|
|
598
|
-
c.view_server_url,
|
|
599
|
-
c.userid,
|
|
600
|
-
c.password,
|
|
601
|
-
False,
|
|
602
|
-
c.jupyter,
|
|
603
|
-
c.width,
|
|
604
|
-
)
|
|
559
|
+
display_relationship_types(rel_type, c.view_server, c.view_server_url, c.userid, c.password, False, c.jupyter,
|
|
560
|
+
c.width)
|
|
605
561
|
|
|
606
562
|
|
|
607
563
|
@show_tech.command("tech-templates")
|
|
@@ -701,15 +657,7 @@ def list_element_info(ctx):
|
|
|
701
657
|
def get_element_info(ctx, om_type):
|
|
702
658
|
"""Display graph of elements for an Open Metadata Type"""
|
|
703
659
|
c = ctx.obj
|
|
704
|
-
display_elements(
|
|
705
|
-
om_type,
|
|
706
|
-
c.view_server,
|
|
707
|
-
c.view_server_url,
|
|
708
|
-
c.userid,
|
|
709
|
-
c.password,
|
|
710
|
-
c.jupyter,
|
|
711
|
-
c.width,
|
|
712
|
-
)
|
|
660
|
+
display_elements(om_type, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
|
|
713
661
|
|
|
714
662
|
|
|
715
663
|
@show_elements.command("elements")
|
|
@@ -752,15 +700,7 @@ def list_all_om_type_elements(ctx, om_type, extended):
|
|
|
752
700
|
def list_supply_chains(ctx, search_string):
|
|
753
701
|
"""Display supply chains"""
|
|
754
702
|
c = ctx.obj
|
|
755
|
-
supply_chain_viewer(
|
|
756
|
-
search_string,
|
|
757
|
-
c.view_server,
|
|
758
|
-
c.view_server_url,
|
|
759
|
-
c.userid,
|
|
760
|
-
c.password,
|
|
761
|
-
c.jupyter,
|
|
762
|
-
c.width,
|
|
763
|
-
)
|
|
703
|
+
supply_chain_viewer(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
|
|
764
704
|
|
|
765
705
|
|
|
766
706
|
@show_supply_chains.command("blueprints")
|
|
@@ -769,22 +709,14 @@ def list_supply_chains(ctx, search_string):
|
|
|
769
709
|
def list_blueprints(ctx, search_string):
|
|
770
710
|
"""Display solution blueprints"""
|
|
771
711
|
c = ctx.obj
|
|
772
|
-
blueprint_list(
|
|
773
|
-
search_string,
|
|
774
|
-
c.view_server,
|
|
775
|
-
c.view_server_url,
|
|
776
|
-
c.userid,
|
|
777
|
-
c.password,
|
|
778
|
-
c.jupyter,
|
|
779
|
-
c.width,
|
|
780
|
-
)
|
|
712
|
+
blueprint_list(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
|
|
781
713
|
|
|
782
714
|
|
|
783
|
-
@show_supply_chains.command("solution-
|
|
715
|
+
@show_supply_chains.command("solution-perspectives")
|
|
784
716
|
@click.option("--search-string", default="*", help="Search string")
|
|
785
717
|
@click.pass_context
|
|
786
718
|
def list_solution_roles(ctx, search_string):
|
|
787
|
-
"""Display solution
|
|
719
|
+
"""Display solution perspectives"""
|
|
788
720
|
c = ctx.obj
|
|
789
721
|
solution_role_list(
|
|
790
722
|
search_string,
|
|
@@ -803,15 +735,7 @@ def list_solution_roles(ctx, search_string):
|
|
|
803
735
|
def list_solution_components(ctx, search_string):
|
|
804
736
|
"""Display solution componentss"""
|
|
805
737
|
c = ctx.obj
|
|
806
|
-
solution_component_list(
|
|
807
|
-
search_string,
|
|
808
|
-
c.view_server,
|
|
809
|
-
c.view_server_url,
|
|
810
|
-
c.userid,
|
|
811
|
-
c.password,
|
|
812
|
-
c.jupyter,
|
|
813
|
-
c.width,
|
|
814
|
-
)
|
|
738
|
+
solution_component_list(search_string, c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width)
|
|
815
739
|
|
|
816
740
|
|
|
817
741
|
#
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
#!/usr/bin/env python3
|
|
2
3
|
"""
|
|
3
4
|
SPDX-License-Identifier: Apache-2.0
|
|
@@ -24,10 +25,7 @@ from rich.markdown import Markdown
|
|
|
24
25
|
|
|
25
26
|
from pyegeria import (
|
|
26
27
|
EgeriaTech,
|
|
27
|
-
|
|
28
|
-
PropertyServerException,
|
|
29
|
-
UserNotAuthorizedException,
|
|
30
|
-
print_exception_response,
|
|
28
|
+
PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table
|
|
31
29
|
NO_ELEMENTS_FOUND
|
|
32
30
|
)
|
|
33
31
|
|
|
@@ -19,10 +19,7 @@ from rich.text import Text
|
|
|
19
19
|
|
|
20
20
|
from pyegeria import (
|
|
21
21
|
EgeriaTech,
|
|
22
|
-
|
|
23
|
-
PropertyServerException,
|
|
24
|
-
UserNotAuthorizedException,
|
|
25
|
-
print_exception_response, NO_ELEMENTS_FOUND,
|
|
22
|
+
PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table NO_ELEMENTS_FOUND,
|
|
26
23
|
)
|
|
27
24
|
|
|
28
25
|
disable_ssl_warnings = True
|
|
@@ -89,7 +86,7 @@ def display_data_struct(
|
|
|
89
86
|
action = "Dict"
|
|
90
87
|
elif output_format == "MERMAID":
|
|
91
88
|
action = "Mermaid"
|
|
92
|
-
|
|
89
|
+
filter_string = search_string.strip() if search_string != "*" else None
|
|
93
90
|
|
|
94
91
|
body = {
|
|
95
92
|
"class": "FilterRequestBody",
|
|
@@ -100,7 +97,7 @@ def display_data_struct(
|
|
|
100
97
|
"limitResultsByStatus": ["ACTIVE"],
|
|
101
98
|
"sequencingOrder": "PROPERTY_ASCENDING",
|
|
102
99
|
"sequencingProperty": "qualifiedName",
|
|
103
|
-
"filter":
|
|
100
|
+
"filter": filter_string
|
|
104
101
|
}
|
|
105
102
|
|
|
106
103
|
if output_format != "TABLE":
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
5
|
+
|
|
6
|
+
Display the status of cataloged platforms and servers.
|
|
7
|
+
"""
|
|
8
|
+
import argparse
|
|
9
|
+
import os
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
from rich import print
|
|
13
|
+
from rich.console import Console
|
|
14
|
+
from rich.markdown import Markdown
|
|
15
|
+
from rich.panel import Panel
|
|
16
|
+
from rich.prompt import Prompt
|
|
17
|
+
from rich.tree import Tree
|
|
18
|
+
|
|
19
|
+
from pyegeria import (
|
|
20
|
+
AssetCatalog,
|
|
21
|
+
PyegeriaAPIException, PyegeriaClientException, print_basic_exception, print_exception_table UserNotAuthorizedException, PyegeriaException,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
|
25
|
+
EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
|
|
26
|
+
EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
|
|
27
|
+
EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
|
|
28
|
+
EGERIA_VIEW_SERVER_URL = os.environ.get(
|
|
29
|
+
"EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
|
|
30
|
+
)
|
|
31
|
+
EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
|
|
32
|
+
EGERIA_INTEGRATION_DAEMON_URL = os.environ.get(
|
|
33
|
+
"EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"
|
|
34
|
+
)
|
|
35
|
+
EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
|
|
36
|
+
EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
|
|
37
|
+
EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
38
|
+
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
|
39
|
+
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
|
40
|
+
EGERIA_WIDTH = int(os.environ.get("EGERIA_WIDTH", "200"))
|
|
41
|
+
|
|
42
|
+
disable_ssl_warnings = True
|
|
43
|
+
|
|
44
|
+
guid_list = []
|
|
45
|
+
|
|
46
|
+
console = Console(width=EGERIA_WIDTH, force_terminal=(not EGERIA_JUPYTER))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def asset_viewer(
|
|
50
|
+
asset_guid: str,
|
|
51
|
+
server_name: str,
|
|
52
|
+
platform_url: str,
|
|
53
|
+
user: str,
|
|
54
|
+
user_pass: str,
|
|
55
|
+
jupyter: bool = EGERIA_JUPYTER,
|
|
56
|
+
width: int = EGERIA_WIDTH,
|
|
57
|
+
):
|
|
58
|
+
def build_classifications(classification: dict) -> Markdown:
|
|
59
|
+
class_md = ""
|
|
60
|
+
for c in classification:
|
|
61
|
+
c_type = c["classificationName"]
|
|
62
|
+
if c_type == "Anchors":
|
|
63
|
+
continue
|
|
64
|
+
class_md += f"\n* Classification: {c_type}\n"
|
|
65
|
+
class_props = c.get("classificationProperties", "---")
|
|
66
|
+
if type(class_props) is dict:
|
|
67
|
+
for prop in class_props.keys():
|
|
68
|
+
class_md += f"\t* {prop}: {class_props[prop]}\n"
|
|
69
|
+
if class_md == "":
|
|
70
|
+
output = None
|
|
71
|
+
else:
|
|
72
|
+
output = class_md
|
|
73
|
+
return output
|
|
74
|
+
|
|
75
|
+
def build_nested_elements(nested_element: dict) -> Markdown:
|
|
76
|
+
ne_md = " "
|
|
77
|
+
ne_header = nested_element["elementHeader"]
|
|
78
|
+
ne_created_by = ne_header["versions"]["createdBy"]
|
|
79
|
+
ne_created_at = ne_header["versions"]["createTime"]
|
|
80
|
+
ne_guid = ne_header["guid"]
|
|
81
|
+
guid_list.append(ne_guid)
|
|
82
|
+
|
|
83
|
+
ne_type = ne_header["type"]["typeName"]
|
|
84
|
+
ne_classifications = ne_header["classifications"]
|
|
85
|
+
ne_class_md = build_classifications(ne_classifications)
|
|
86
|
+
# ne_class_md = " " if ne_class_md is None else ne_class_md
|
|
87
|
+
ne_props = nested_element.get("properties", "---")
|
|
88
|
+
ne_prop_md = "\n"
|
|
89
|
+
if type(ne_props) is dict:
|
|
90
|
+
for prop in ne_props.keys():
|
|
91
|
+
ne_prop_md += f"\t* {prop}: {ne_props[prop]}\n"
|
|
92
|
+
ne_md = (
|
|
93
|
+
f"Nested Element of Type: {ne_type} with GUID: {ne_guid} \n "
|
|
94
|
+
f"* created by {ne_created_by} at time {ne_created_at}\n"
|
|
95
|
+
f"\n* Properties:\n{ne_prop_md}\n"
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
if ne_class_md is not None:
|
|
99
|
+
ne_md += f"* {ne_class_md}"
|
|
100
|
+
|
|
101
|
+
output = Markdown(ne_md)
|
|
102
|
+
return output
|
|
103
|
+
|
|
104
|
+
try:
|
|
105
|
+
a_client = AssetCatalog(server_name, platform_url, user_id=user)
|
|
106
|
+
|
|
107
|
+
token = a_client.create_egeria_bearer_token(user, user_pass)
|
|
108
|
+
# asset_info = a_client.find_assets_in_domain(asset_name)
|
|
109
|
+
# if type(asset_info) is str:
|
|
110
|
+
# print("\n No Assets Found - Exiting\n")
|
|
111
|
+
# sys.exit(1)
|
|
112
|
+
#
|
|
113
|
+
# asset_guid = asset_info[0]['guid']
|
|
114
|
+
|
|
115
|
+
guid_list.append(asset_guid)
|
|
116
|
+
|
|
117
|
+
asset_graph = a_client.get_asset_graph(asset_guid, output_format="JSON")
|
|
118
|
+
if type(asset_graph) is not dict:
|
|
119
|
+
print(f"\n No Asset found for {asset_guid}")
|
|
120
|
+
sys.exit(1)
|
|
121
|
+
|
|
122
|
+
# print(f"\n{json.dumps(asset_graph, indent =2)}\n")
|
|
123
|
+
|
|
124
|
+
asset_display_name = asset_graph["properties"].get("displayName", "---")
|
|
125
|
+
asset_display_description = asset_graph["properties"].get(
|
|
126
|
+
"displayDescription", "---"
|
|
127
|
+
)
|
|
128
|
+
asset_name = asset_graph["properties"].get("name", "---")
|
|
129
|
+
asset_resource_name = asset_graph["properties"].get("resourceName", "---")
|
|
130
|
+
asset_resource_description = asset_graph["properties"].get(
|
|
131
|
+
"resourceDescription", "---"
|
|
132
|
+
)
|
|
133
|
+
qualified_name = asset_graph["properties"].get("qualifiedName", "---")
|
|
134
|
+
|
|
135
|
+
tree = Tree(
|
|
136
|
+
f"{asset_name} ({asset_guid})",
|
|
137
|
+
style="bold bright_white on black",
|
|
138
|
+
guide_style="bold bright_blue",
|
|
139
|
+
)
|
|
140
|
+
style = ""
|
|
141
|
+
asset_elements = asset_graph["elementHeader"]
|
|
142
|
+
asset_type = asset_elements["type"]["typeName"]
|
|
143
|
+
asset_deployed_imp_type = asset_graph["properties"].get(
|
|
144
|
+
"deployedImplementationType", "---"
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
asset_origin = asset_elements["origin"]["homeMetadataCollectionName"]
|
|
148
|
+
asset_creation = asset_elements["versions"]["createTime"]
|
|
149
|
+
asset_created_by = asset_elements["versions"]["createdBy"]
|
|
150
|
+
asset_classifications = asset_elements["classifications"]
|
|
151
|
+
asset_nested_elements = asset_graph.get("anchoredElements", "----")
|
|
152
|
+
asset_relationships = asset_graph["relationships"]
|
|
153
|
+
asset_class_md = build_classifications(asset_classifications)
|
|
154
|
+
|
|
155
|
+
additional_properties = asset_graph["properties"].get(
|
|
156
|
+
"additionalProperties", None
|
|
157
|
+
)
|
|
158
|
+
if additional_properties is not None:
|
|
159
|
+
add_prop_md = "\n* Additional Properties:\n"
|
|
160
|
+
for prop in additional_properties:
|
|
161
|
+
add_prop_md = (
|
|
162
|
+
f"{add_prop_md}\n\t* {prop}: {additional_properties[prop]}\n"
|
|
163
|
+
)
|
|
164
|
+
else:
|
|
165
|
+
add_prop_md = ""
|
|
166
|
+
|
|
167
|
+
extended_properties = asset_graph["properties"].get("extendedProperties", None)
|
|
168
|
+
if extended_properties is not None:
|
|
169
|
+
prop_md = "\n* Extended Properties:\n"
|
|
170
|
+
for prop in extended_properties:
|
|
171
|
+
prop_md = f"{prop_md}\n\t* {prop}: {extended_properties[prop]}\n"
|
|
172
|
+
else:
|
|
173
|
+
prop_md = ""
|
|
174
|
+
core_md = (
|
|
175
|
+
f"**Type: {asset_type} Created by: {asset_created_by} on {asset_creation}**\n"
|
|
176
|
+
f"* Deployed Implementation Type: {asset_deployed_imp_type}\n"
|
|
177
|
+
f"* Name: {asset_name}\n "
|
|
178
|
+
f"* Asset Resource Name: {asset_resource_name}\n"
|
|
179
|
+
f"* Asset Resource Description: {asset_resource_description}\n "
|
|
180
|
+
f"* Asset Display Name: {asset_display_name}\n"
|
|
181
|
+
f"* Asset Display Description: {asset_display_description}\n "
|
|
182
|
+
f"* Qualified Name: {qualified_name}\n "
|
|
183
|
+
f"* Asset Origin: {asset_origin}\n"
|
|
184
|
+
f" {prop_md}\n"
|
|
185
|
+
f" {add_prop_md}\n"
|
|
186
|
+
)
|
|
187
|
+
core_md = Markdown(core_md)
|
|
188
|
+
|
|
189
|
+
p1 = Panel.fit(core_md, style="bold bright_white")
|
|
190
|
+
l2 = tree.add(p1)
|
|
191
|
+
if asset_class_md is not None:
|
|
192
|
+
p2 = Panel.fit(
|
|
193
|
+
Markdown(asset_class_md),
|
|
194
|
+
style="bold bright_white",
|
|
195
|
+
title="Classifications",
|
|
196
|
+
)
|
|
197
|
+
l2 = tree.add(p2)
|
|
198
|
+
|
|
199
|
+
#
|
|
200
|
+
# Nested Assets
|
|
201
|
+
#
|
|
202
|
+
if type(asset_nested_elements) is list:
|
|
203
|
+
l2 = tree.add("Nested Elements", style="bold white")
|
|
204
|
+
for el in asset_nested_elements:
|
|
205
|
+
asset_ne_md = build_nested_elements(el)
|
|
206
|
+
p3 = Panel.fit(
|
|
207
|
+
asset_ne_md, style="bold bright_white", title="Nested Elements"
|
|
208
|
+
)
|
|
209
|
+
l2.add(p3)
|
|
210
|
+
|
|
211
|
+
#
|
|
212
|
+
# Now work on the Relationships
|
|
213
|
+
#
|
|
214
|
+
for relationship in asset_relationships:
|
|
215
|
+
# Find the end guids - if one isn't in our list then display
|
|
216
|
+
rel_end1 = relationship["end1"]
|
|
217
|
+
rel_end1_type = rel_end1["type"]["typeName"]
|
|
218
|
+
rel_end1_guid = rel_end1["guid"]
|
|
219
|
+
rel_end1_unique_name = rel_end1.get("uniqueName", "---")
|
|
220
|
+
|
|
221
|
+
rel_end2 = relationship["end2"]
|
|
222
|
+
rel_end2_type = rel_end2["type"]["typeName"]
|
|
223
|
+
rel_end2_guid = rel_end2["guid"]
|
|
224
|
+
rel_end2_unique_name = rel_end2.get("uniqueName", "---")
|
|
225
|
+
|
|
226
|
+
if (rel_end1_guid not in guid_list) or (rel_end2_guid not in guid_list):
|
|
227
|
+
# rel_end1_class_md = build_classifications(rel_end1["classifications"])
|
|
228
|
+
# rel_end2_class_md = build_classifications(rel_end2["classifications"])
|
|
229
|
+
|
|
230
|
+
relationship_guid = relationship["guid"]
|
|
231
|
+
relationship_type = relationship["type"]["typeName"]
|
|
232
|
+
relationship_created_by = relationship["versions"]["createdBy"]
|
|
233
|
+
relationship_creation_time = relationship["versions"]["createTime"]
|
|
234
|
+
relationship_properties = relationship.get("properties", "--- ")
|
|
235
|
+
relationship_md = (
|
|
236
|
+
f"Relationship Type {relationship_type}\n"
|
|
237
|
+
f"* GUID: {relationship_guid}\n* Created by: {relationship_created_by} \n"
|
|
238
|
+
f"* Creation Time: {relationship_creation_time}\n"
|
|
239
|
+
f"* Properties: {relationship_properties}\n"
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
rel_md = (
|
|
243
|
+
f"* Relationship Type: {relationship_type}\n"
|
|
244
|
+
f"* Relationship GUID: {relationship_guid}\n"
|
|
245
|
+
f"* Created by: {relationship_created_by} at time {relationship_creation_time}\n"
|
|
246
|
+
)
|
|
247
|
+
rel_end1_md = (
|
|
248
|
+
f"* End1:\n"
|
|
249
|
+
f"\t* Type: {rel_end1_type}\n"
|
|
250
|
+
f"\t* GUID: {rel_end1_guid}\n"
|
|
251
|
+
f"\t* Unique Name: {rel_end1_unique_name}\n"
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
# if rel_end1_class_md is not None:
|
|
255
|
+
# rel_end1_md = rel_end1_class_md + rel_end1_md
|
|
256
|
+
|
|
257
|
+
rel_end2_md = (
|
|
258
|
+
f"* End2:\n"
|
|
259
|
+
f"\t* Type: {rel_end2_type}\n"
|
|
260
|
+
f"\t* GUID: {rel_end2_guid}\n"
|
|
261
|
+
f"\t* Unique Name: {rel_end2_unique_name}\n"
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
# if rel_end2_class_md is not None:
|
|
265
|
+
# rel_end1_md = rel_end2_class_md + rel_end1_md
|
|
266
|
+
#
|
|
267
|
+
# for prop in relationship_properties.keys():
|
|
268
|
+
# relationship_md += f"* {prop}: {relationship_properties[prop]}\n"
|
|
269
|
+
|
|
270
|
+
relationship_md += rel_end1_md + rel_end2_md
|
|
271
|
+
|
|
272
|
+
relationship_panel = Panel.fit(
|
|
273
|
+
Markdown(relationship_md),
|
|
274
|
+
style="bold bright_white",
|
|
275
|
+
title="Asset Relationships",
|
|
276
|
+
)
|
|
277
|
+
tree.add(relationship_panel)
|
|
278
|
+
with console.screen():
|
|
279
|
+
print("\n\n")
|
|
280
|
+
print(tree)
|
|
281
|
+
|
|
282
|
+
except (
|
|
283
|
+
PyegeriaException
|
|
284
|
+
) as e:
|
|
285
|
+
console.print_exception()
|
|
286
|
+
console.print(
|
|
287
|
+
"\n\n ======> Most likely the GUID you provided is either incorrect or not an asset\n[red bold]"
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
def main():
|
|
292
|
+
parser = argparse.ArgumentParser()
|
|
293
|
+
|
|
294
|
+
parser.add_argument("--server", help="Name of the server to display status for")
|
|
295
|
+
parser.add_argument("--url", help="URL Platform to connect to")
|
|
296
|
+
parser.add_argument("--userid", help="User Id")
|
|
297
|
+
parser.add_argument("--password", help="User Password")
|
|
298
|
+
args = parser.parse_args()
|
|
299
|
+
|
|
300
|
+
server = args.server if args.server is not None else EGERIA_VIEW_SERVER
|
|
301
|
+
url = args.url if args.url is not None else EGERIA_PLATFORM_URL
|
|
302
|
+
userid = args.userid if args.userid is not None else EGERIA_USER
|
|
303
|
+
user_pass = args.password if args.password is not None else EGERIA_USER_PASSWORD
|
|
304
|
+
try:
|
|
305
|
+
asset_guid = Prompt.ask("Enter the Asset GUID to view:", default="")
|
|
306
|
+
asset_viewer(asset_guid, server, url, userid, user_pass)
|
|
307
|
+
except KeyboardInterrupt as e:
|
|
308
|
+
# console.print_exception()
|
|
309
|
+
pass
|
|
310
|
+
except Exception as e:
|
|
311
|
+
console.print_exception()
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
if __name__ == "__main__":
|
|
315
|
+
main()
|
commands/my/__init__.py
CHANGED
commands/my/list_my_profile.py
CHANGED
|
@@ -9,7 +9,6 @@ A simple display for my profile
|
|
|
9
9
|
import argparse
|
|
10
10
|
import os
|
|
11
11
|
import sys
|
|
12
|
-
import time
|
|
13
12
|
|
|
14
13
|
from rich import box, print
|
|
15
14
|
from rich.console import Console
|
|
@@ -18,13 +17,8 @@ from rich.panel import Panel
|
|
|
18
17
|
from rich.table import Table
|
|
19
18
|
from rich.tree import Tree
|
|
20
19
|
|
|
21
|
-
from pyegeria import
|
|
22
|
-
|
|
23
|
-
PropertyServerException,
|
|
24
|
-
UserNotAuthorizedException,
|
|
25
|
-
print_exception_response,
|
|
26
|
-
)
|
|
27
|
-
from pyegeria.my_profile_omvs import MyProfile
|
|
20
|
+
from pyegeria import print_basic_exception, PyegeriaException
|
|
21
|
+
from pyegeria.omvs.my_profile import MyProfile
|
|
28
22
|
|
|
29
23
|
disable_ssl_warnings = True
|
|
30
24
|
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
|
@@ -64,7 +58,7 @@ def display_my_profile(
|
|
|
64
58
|
|
|
65
59
|
console = Console(width=width, force_terminal=not jupyter, soft_wrap=True)
|
|
66
60
|
|
|
67
|
-
profile_props = my_profiles.get("
|
|
61
|
+
profile_props = my_profiles.get("properties", "---")
|
|
68
62
|
name = profile_props["fullName"]
|
|
69
63
|
|
|
70
64
|
tree = Tree(
|
|
@@ -93,14 +87,14 @@ def display_my_profile(
|
|
|
93
87
|
id_list_md = ""
|
|
94
88
|
for identities in my_profiles["userIdentities"]:
|
|
95
89
|
id_list_md += (
|
|
96
|
-
f"* {identities['
|
|
97
|
-
f"* {identities['
|
|
90
|
+
f"* {identities['relatedElement']['properties']['userId']}\n"
|
|
91
|
+
f"* {identities['relatedElement']['elementHeader']['guid']}\n"
|
|
98
92
|
)
|
|
99
93
|
t2 = tree.add(Panel(Markdown(id_list_md), title="Identities", expand=False))
|
|
100
94
|
|
|
101
|
-
contact_methods = my_profiles["
|
|
95
|
+
contact_methods = my_profiles["contactDetails"]
|
|
102
96
|
for method in contact_methods:
|
|
103
|
-
contact = method["properties"]
|
|
97
|
+
contact = method['relatedElement']["properties"]
|
|
104
98
|
contact_methods_md = ""
|
|
105
99
|
for key in contact.keys():
|
|
106
100
|
contact_methods_md += f"* {key}: {contact[key]}\n"
|
|
@@ -110,32 +104,31 @@ def display_my_profile(
|
|
|
110
104
|
)
|
|
111
105
|
)
|
|
112
106
|
|
|
113
|
-
my_roles = my_profiles
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
107
|
+
my_roles = my_profiles.get("performsRoles","No roles found")
|
|
108
|
+
if isinstance(my_roles, dict|list):
|
|
109
|
+
table = Table(
|
|
110
|
+
title=f" Roles of {name}",
|
|
111
|
+
show_lines=True,
|
|
112
|
+
box=box.ROUNDED,
|
|
113
|
+
expand=True,
|
|
114
|
+
)
|
|
115
|
+
table.add_column("Role Type")
|
|
116
|
+
table.add_column("Role")
|
|
117
|
+
table.add_column("Role GUID")
|
|
118
|
+
for a_role in my_roles:
|
|
119
|
+
my_role_props = a_role['relatedElement']["properties"]
|
|
120
|
+
role_type = my_role_props["typeName"]
|
|
121
|
+
role = my_role_props.get("displayName", " ")
|
|
122
|
+
role_guid = a_role['relatedElement']["elementHeader"]["guid"]
|
|
123
|
+
table.add_row(role_type, role, role_guid)
|
|
124
|
+
t4 = tree.add(Panel(table, title="Roles", expand=False), expanded=True)
|
|
130
125
|
|
|
131
126
|
print(tree)
|
|
132
127
|
|
|
133
128
|
except (
|
|
134
|
-
|
|
135
|
-
PropertyServerException,
|
|
136
|
-
UserNotAuthorizedException,
|
|
129
|
+
PyegeriaException,
|
|
137
130
|
) as e:
|
|
138
|
-
|
|
131
|
+
print_basic_exception(e)
|
|
139
132
|
finally:
|
|
140
133
|
m_client.close_session()
|
|
141
134
|
|
commands/my/list_my_roles.py
CHANGED
|
@@ -17,13 +17,7 @@ from rich import box
|
|
|
17
17
|
from rich.console import Console
|
|
18
18
|
from rich.table import Table
|
|
19
19
|
|
|
20
|
-
from pyegeria import
|
|
21
|
-
InvalidParameterException,
|
|
22
|
-
PropertyServerException,
|
|
23
|
-
UserNotAuthorizedException,
|
|
24
|
-
print_exception_response,
|
|
25
|
-
)
|
|
26
|
-
from pyegeria.my_profile_omvs import MyProfile
|
|
20
|
+
from pyegeria.omvs.my_profile import MyProfile
|
|
27
21
|
|
|
28
22
|
disable_ssl_warnings = True
|
|
29
23
|
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|