pyegeria 0.2.4__py3-none-any.whl → 5.3.0.dev3__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.
- pyegeria/README.md +35 -0
- pyegeria/__init__.py +345 -14
- pyegeria/_client.py +376 -126
- pyegeria/_deprecated_gov_engine.py +451 -0
- pyegeria/_exceptions.py +6 -6
- pyegeria/_globals.py +7 -1
- pyegeria/_validators.py +9 -6
- pyegeria/asset_catalog_omvs.py +807 -0
- pyegeria/automated_curation_omvs.py +3760 -0
- pyegeria/classification_manager_omvs.py +5238 -0
- pyegeria/collection_manager_omvs.py +2727 -0
- pyegeria/commands/README.md +47 -0
- pyegeria/commands/__init__.py +22 -0
- pyegeria/commands/cat/README.md +16 -0
- pyegeria/commands/cat/__init__.py +1 -0
- pyegeria/commands/cat/exp_list_glossaries.py +156 -0
- pyegeria/commands/cat/get_asset_graph.py +319 -0
- pyegeria/commands/cat/get_collection.py +148 -0
- pyegeria/commands/cat/get_project_dependencies.py +168 -0
- pyegeria/commands/cat/get_project_structure.py +168 -0
- pyegeria/commands/cat/get_tech_type_elements.py +174 -0
- pyegeria/commands/cat/glossary_actions.py +362 -0
- pyegeria/commands/cat/list_assets.py +176 -0
- pyegeria/commands/cat/list_cert_types.py +194 -0
- pyegeria/commands/cat/list_collections.py +162 -0
- pyegeria/commands/cat/list_deployed_catalogs.py +217 -0
- pyegeria/commands/cat/list_deployed_database_schemas.py +251 -0
- pyegeria/commands/cat/list_deployed_databases.py +202 -0
- pyegeria/commands/cat/list_glossaries.py +150 -0
- pyegeria/commands/cat/list_projects.py +221 -0
- pyegeria/commands/cat/list_servers_deployed_imp.py +158 -0
- pyegeria/commands/cat/list_tech_type_elements.py +190 -0
- pyegeria/commands/cat/list_tech_types.py +140 -0
- pyegeria/commands/cat/list_terms.py +242 -0
- pyegeria/commands/cat/list_todos.py +189 -0
- pyegeria/commands/cat/list_user_ids.py +145 -0
- pyegeria/commands/cli/__init__.py +13 -0
- pyegeria/commands/cli/egeria.py +1844 -0
- pyegeria/commands/cli/egeria_cat.py +638 -0
- pyegeria/commands/cli/egeria_login_tui.py +313 -0
- pyegeria/commands/cli/egeria_my.py +248 -0
- pyegeria/commands/cli/egeria_ops.py +502 -0
- pyegeria/commands/cli/egeria_tech.py +618 -0
- pyegeria/commands/cli/ops_config.py +45 -0
- pyegeria/commands/cli/txt_custom_v2.tcss +19 -0
- pyegeria/commands/doc/README.md +145 -0
- pyegeria/commands/doc/Visual Command Reference/README.md +511 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/assets/asset-graph 2024-11-20 at 15.56.42.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/assets/assets-in-domain 2024-11-20 at 15.49.55@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/assets/elements-of-type 2024-11-20 at 16.01.35.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/assets/tech-type-elements 2024-11-20 at 16.05.05.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs 2024-12-17 at 15.43.27@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-data-catalogs-2024-11-20 at 16.17.43@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-11-25 at 20.14.50@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-schemas 2024-12-17 at 15.48.38@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-11-25 at 20.21.25@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed-servers 2024-12-17 at 15.52.16@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/deployed-data/deployed_databases 2024-12-16 at 16.40.31@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/glossary/list-glossaries 2024-11-25 at 20.30.02.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/glossary/list-terms 2024-11-25 at 20.32.11.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/info/asset-types 2024-11-25 at 20.34.19@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/info/certification-types 2024-11-25 at 20.37.07.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/info/collection-graph 2024-12-12 at 11.33.18@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-collections 2024-12-10 at 14.25.51@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-todos 2024-12-12 at 11.46.30@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/info/list-user-ids 2024-12-12 at 11.51.09@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/info/tech-types 2024-12-12 at 11.37.20@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/projects/project_dependencies 2024-12-14 at 16.24.39@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/projects/project_structure 2024-12-14 at 16.21.35@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/cat/show/projects/projects 2024-12-14 at 16.18.10@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/hey_egeria tui 2024-12-16 at 16.58.22@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/my/show/my_profile 2024-12-14 at 16.29.27@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/my/show/my_roles 2024-12-14 at 16.32.10@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/my/show/my_todos 2024-12-15 at 16.24.13@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/my/show/open_todos 2024-12-14 at 16.36.12@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/engines/list_engine_activity compressed 2024-12-15 at 16.48.48@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity 2024-12-15 at 16.32.55@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_activity compressed 2024-12-15 at 16.38.29@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/engines/monitor_engine_status 2024-12-15 at 16.51.26.jpeg +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_daemon_status 2024-12-15 at 16.57.12@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/integrations/monitor_integration_targets 2024-12-15 at 17.02.19@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/platforms/monitor_platform_status 2024-12-15 at 19.53.18@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status 2024-12-15 at 19.59.39@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_server_status full 2024-12-15 at 20.01.57@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/ops/show/servers/monitor_startup_servers 2024-12-15 at 19.56.07@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/get_anchored_elements 2024-12-15 at 21.25.41@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/get_elements_of_om_type 2024-12-16 at 14.39.59@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/info_for_guid 2024-12-16 at 11.35.29@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type 2024-12-16 at 14.24.18@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_by_om-type extended 2024-12-16 at 14.28.46@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/list_elements_of_om_type_by_classification 2024-12-16 at 14.35.26@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/related_elements 2024-12-16 at 14.55.01@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/elements/show_related_specifications 2024-12-16 at 15.04.55@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/asset_types 2024-12-16 at 15.10.16@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/detailed_governance_action_processes 2024-12-16 at 15.16.26@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/governance_action_processes 2024-12-16 at 15.13.01@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/registered_services 2024-12-16 at 16.44.54@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-16 at 16.20.34@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/relationship_types 2024-12-19 at 10.51.54@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-info/valid_metadata_values 2024-12-16 at 15.31.56@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/list_tech_type_template_specs 2024-12-16 at 16.03.22@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/list_technology_types 2024-12-16 at 15.39.20@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_details 2024-12-16 at 15.37.21@2x.png +0 -0
- pyegeria/commands/doc/Visual Command Reference/tech/show/tech-types/tech_type_templates 2024-12-16 at 16.11.48@2x.png +0 -0
- pyegeria/commands/doc/glossary/basic-glossary-tui.md +109 -0
- pyegeria/commands/doc/glossary/images/delete-glossary-step1 2024-11-06 at 15.47.23@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/delete-glossary-step2 2024-11-06 at 15.51.29@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/delete-glossary-step3 2024-11-06 at 15.53.19@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/delete-glossary-step4 2024-11-06 at 15.55.11@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/out-create-glossary example 2024-11-05 at 20.38.04@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/out-create-term 2024-11-06 at 20.48.29.png +0 -0
- pyegeria/commands/doc/glossary/images/out-delete-term 2024-11-07 at 03.57.25.png +0 -0
- pyegeria/commands/doc/glossary/images/out-display-terms-for-glossary-test 2024-11-06 at 20.51.28.png +0 -0
- pyegeria/commands/doc/glossary/images/out-export-example 2024-11-07 at 09.54.57.png +0 -0
- pyegeria/commands/doc/glossary/images/out-exported-terms 2024-11-06 at 21.06.32.png +0 -0
- pyegeria/commands/doc/glossary/images/out-glossary-list example 2024-11-05 at 20.41.02@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/out-import-terms 2024-11-07 at 08.15.18.png +0 -0
- pyegeria/commands/doc/glossary/images/out-list-all-terms 2024-11-06 at 16.22.20@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/out-list-terms-for-example 2024-11-06 at 16.40.12.png +0 -0
- pyegeria/commands/doc/glossary/images/out-list-terms-second 2024-11-06 at 16.45.13.png +0 -0
- pyegeria/commands/doc/glossary/images/out-pipx install pyegeria 2024-11-10 at 18.12.21.png +0 -0
- pyegeria/commands/doc/glossary/images/out-server-status-full 2024-11-10 at 18.25.14.png +0 -0
- pyegeria/commands/doc/glossary/images/out-servers-status 2024-11-10 at 18.15.42.png +0 -0
- pyegeria/commands/doc/glossary/images/out-upsert-import 2024-11-07 at 19.37.00.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-2024-11-10 at 18.26.29.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-create-glossary example 2024-11-05 at 20.34.24@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-create-term 2024-11-06 at 20.46.35.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-delete-term 2024-11-07 at 03.51.57.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-display-terms-for-example 2024-11-06 at 20.56.49.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-export-example 2024-11-07 at 09.52.59.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-hey-egeria 2024-11-10 at 18.31.01.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-import-upsert-example 2024-11-07 at 10.08.37.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-list-terms-second 2024-11-06 at 16.46.34.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-load-archive.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-server-status-full 2024-11-10 at 19.14.36.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-show-glossaries 2024-11-07 at 20.00.05.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-show-glossary-terms 2024-11-05 at 19.37.53@2x.png +0 -0
- pyegeria/commands/doc/glossary/images/tui-upsert 2024-11-07 at 11.49.04.png +0 -0
- pyegeria/commands/doc/glossary/images/upsert-example.om-terms 2024-11-07 at 11.44.05.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/README.md +346 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/CleanShot 2024-11-18 at 21.32.03@2x.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731421782704.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/Xmind 1731422134920.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria 2024-11-12 at 20.38.43.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/hey_egeria cat 2024-11-12 at 21.41.43.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-list 2024-11-12 at 16.45.26.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-integ-status-live 2024-11-12 at 16.44.12@2x.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status 2024-11-10 at 18.15.42@2x.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/out-server-status-full 2024-11-10 at 18.25.14@2x.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/short-cut commands 2024-11-12 at 22.22.13.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-hey-egeria.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-integration-status-paging.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-load-archive 2024-11-10 at 19.19.09@2x.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status 2024-11-10 at 18.52.01@2x.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-show-server-status-full 2024-11-10.png +0 -0
- pyegeria/commands/doc/hey_egeria: a pyegeria command line interface/images/tui-status-paging 2024-11-12 at 16.26.14@2x.png +0 -0
- pyegeria/commands/my/README.md +17 -0
- pyegeria/commands/my/__init__.py +0 -0
- pyegeria/commands/my/list_my_profile.py +163 -0
- pyegeria/commands/my/list_my_roles.py +151 -0
- pyegeria/commands/my/monitor_my_todos.py +205 -0
- pyegeria/commands/my/monitor_open_todos.py +175 -0
- pyegeria/commands/my/todo_actions.py +242 -0
- pyegeria/commands/ops/README.md +24 -0
- pyegeria/commands/ops/__init__.py +22 -0
- pyegeria/commands/ops/gov_server_actions.py +177 -0
- pyegeria/commands/ops/list_archives.py +161 -0
- pyegeria/commands/ops/list_catalog_targets.py +203 -0
- pyegeria/commands/ops/load_archive.py +75 -0
- pyegeria/commands/ops/monitor_asset_events.py +107 -0
- pyegeria/commands/ops/monitor_engine_activity.py +270 -0
- pyegeria/commands/ops/monitor_engine_activity_c.py +286 -0
- pyegeria/commands/ops/monitor_gov_eng_status.py +288 -0
- pyegeria/commands/ops/monitor_integ_daemon_status.py +321 -0
- pyegeria/commands/ops/monitor_platform_status.py +188 -0
- pyegeria/commands/ops/monitor_server_startup.py +117 -0
- pyegeria/commands/ops/monitor_server_status.py +182 -0
- pyegeria/commands/ops/orig_monitor_server_list.py +140 -0
- pyegeria/commands/ops/orig_monitor_server_status.py +124 -0
- pyegeria/commands/ops/refresh_integration_daemon.py +83 -0
- pyegeria/commands/ops/restart_integration_daemon.py +82 -0
- pyegeria/commands/ops/table_integ_daemon_status.py +237 -0
- pyegeria/commands/ops/x_engine_actions.py +76 -0
- pyegeria/commands/tech/README.md +24 -0
- pyegeria/commands/tech/__init__.py +0 -0
- pyegeria/commands/tech/get_element_info.py +144 -0
- pyegeria/commands/tech/get_guid_info.py +134 -0
- pyegeria/commands/tech/get_tech_details.py +173 -0
- pyegeria/commands/tech/get_tech_type_template.py +166 -0
- pyegeria/commands/tech/list_anchored_elements.py +205 -0
- pyegeria/commands/tech/list_asset_types.py +123 -0
- pyegeria/commands/tech/list_elements.py +168 -0
- pyegeria/commands/tech/list_elements_for_classification.py +171 -0
- pyegeria/commands/tech/list_elements_x.py +191 -0
- pyegeria/commands/tech/list_gov_action_processes.py +139 -0
- pyegeria/commands/tech/list_registered_services.py +180 -0
- pyegeria/commands/tech/list_related_elements.py +207 -0
- pyegeria/commands/tech/list_related_specification.py +169 -0
- pyegeria/commands/tech/list_relationship_types.py +164 -0
- pyegeria/commands/tech/list_relationships.py +179 -0
- pyegeria/commands/tech/list_tech_templates.py +360 -0
- pyegeria/commands/tech/list_valid_metadata_values.py +178 -0
- pyegeria/commands/tech/table_tech_templates.py +238 -0
- pyegeria/commands/tech/x_list_related_elements.py +165 -0
- pyegeria/core_omag_server_config.py +550 -313
- pyegeria/create_tech_guid_lists.py +105 -0
- pyegeria/egeria_cat_client.py +78 -0
- pyegeria/egeria_client.py +117 -0
- pyegeria/egeria_config_client.py +45 -0
- pyegeria/egeria_my_client.py +56 -0
- pyegeria/egeria_tech_client.py +93 -0
- pyegeria/feedback_manager_omvs.py +4573 -0
- pyegeria/full_omag_server_config.py +1337 -0
- pyegeria/glossary_browser_omvs.py +2507 -0
- pyegeria/glossary_manager_omvs.py +3597 -0
- pyegeria/mermaid_utilities.py +218 -0
- pyegeria/metadata_explorer_omvs.py +2371 -0
- pyegeria/my_profile_omvs.py +1021 -0
- pyegeria/platform_services.py +259 -218
- pyegeria/project_manager_omvs.py +1854 -0
- pyegeria/registered_info.py +111 -108
- pyegeria/runtime_manager_omvs.py +2299 -0
- pyegeria/server_operations.py +178 -71
- pyegeria/template_manager_omvs.py +1414 -0
- pyegeria/utils.py +75 -85
- pyegeria/valid_metadata_omvs.py +1911 -0
- pyegeria/x_action_author_omvs.py +200 -0
- pyegeria-5.3.0.dev3.dist-info/METADATA +70 -0
- pyegeria-5.3.0.dev3.dist-info/RECORD +232 -0
- {pyegeria-0.2.4.dist-info → pyegeria-5.3.0.dev3.dist-info}/WHEEL +1 -1
- pyegeria-5.3.0.dev3.dist-info/entry_points.txt +81 -0
- pyegeria/config.toml +0 -11
- pyegeria/curation_omvs.py +0 -458
- pyegeria/exceptions.py +0 -382
- pyegeria/glossary_omvs.py +0 -639
- pyegeria/gov_engine.py +0 -573
- pyegeria-0.2.4.dist-info/METADATA +0 -57
- pyegeria-0.2.4.dist-info/RECORD +0 -19
- {pyegeria-0.2.4.dist-info/licenses → pyegeria-5.3.0.dev3.dist-info}/LICENSE +0 -0
@@ -0,0 +1,313 @@
|
|
1
|
+
"""
|
2
|
+
SPDX-License-Identifier: Apache-2.0
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
4
|
+
|
5
|
+
A form exemplar for Egeria users to enter data into templates using Textual open source framework
|
6
|
+
|
7
|
+
Peter Coldicott
|
8
|
+
"""
|
9
|
+
|
10
|
+
import os
|
11
|
+
from os import system
|
12
|
+
import click
|
13
|
+
from textual.reactive import Reactive
|
14
|
+
|
15
|
+
from textual.app import App, ComposeResult
|
16
|
+
from textual.containers import (
|
17
|
+
Container,
|
18
|
+
Vertical,
|
19
|
+
HorizontalScroll,
|
20
|
+
VerticalScroll,
|
21
|
+
ScrollableContainer,
|
22
|
+
)
|
23
|
+
from textual import on, work
|
24
|
+
from textual.screen import ModalScreen, Screen
|
25
|
+
from textual.widgets import (
|
26
|
+
Input,
|
27
|
+
Static,
|
28
|
+
Button,
|
29
|
+
RichLog,
|
30
|
+
Label,
|
31
|
+
Tree,
|
32
|
+
Footer,
|
33
|
+
DataTable,
|
34
|
+
Header,
|
35
|
+
)
|
36
|
+
|
37
|
+
from typing import Any
|
38
|
+
|
39
|
+
|
40
|
+
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
41
|
+
EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
|
42
|
+
EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
|
43
|
+
EGERIA_VIEW_SERVER = os.environ.get("VIEW_SERVER", "view-server")
|
44
|
+
EGERIA_VIEW_SERVER_URL = os.environ.get(
|
45
|
+
"EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
|
46
|
+
)
|
47
|
+
EGERIA_INTEGRATION_DAEMON = os.environ.get("INTEGRATION_DAEMON", "integration-daemon")
|
48
|
+
EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
49
|
+
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
50
|
+
EGERIA_JUPYTER = bool(os.environ.get("EGERIA_JUPYTER", "False"))
|
51
|
+
|
52
|
+
disable_ssl_warnings = True
|
53
|
+
|
54
|
+
TITLE = "User Access"
|
55
|
+
|
56
|
+
|
57
|
+
class UserInfo(Screen):
|
58
|
+
"""A screen to request user access info - required
|
59
|
+
If no information is supplied the access defaults to a set of
|
60
|
+
demo/test values:
|
61
|
+
User: erinoverview
|
62
|
+
Password: Secret
|
63
|
+
Platform URL: https://localhost:9443
|
64
|
+
View Server Name: view-server"""
|
65
|
+
|
66
|
+
BINDINGS = [("d", "toggle_dark", "Toggle dark mode")]
|
67
|
+
|
68
|
+
def __init__(self) -> None:
|
69
|
+
"""Initialize the UserInfo Screen variables"""
|
70
|
+
self.app.dark = True
|
71
|
+
self.user = ""
|
72
|
+
self.password = ""
|
73
|
+
self.platformu = ""
|
74
|
+
self.view_server = ""
|
75
|
+
self.tech_type = ""
|
76
|
+
super().__init__()
|
77
|
+
|
78
|
+
def compose(self) -> ComposeResult:
|
79
|
+
self.log("In UserInfo - Compose ")
|
80
|
+
with VerticalScroll(id="user-container"):
|
81
|
+
yield Label("Username: ", classes="uprompt")
|
82
|
+
yield Input("", id="username", classes="uinput")
|
83
|
+
with VerticalScroll(id="pwd-container"):
|
84
|
+
yield Label("Password: ", classes="uprompt")
|
85
|
+
yield Input("", id="password", classes="uinput")
|
86
|
+
with VerticalScroll(id="platform-container"):
|
87
|
+
yield Label("Platform URL: ", classes="uprompt")
|
88
|
+
yield Input("", id="platform_url", classes="uinput")
|
89
|
+
with VerticalScroll(id="view-server-container"):
|
90
|
+
yield Label("View Server Name: ", classes="uprompt")
|
91
|
+
yield Input("", id="view_server", classes="uinput")
|
92
|
+
with HorizontalScroll(id="button-container"):
|
93
|
+
yield Button("Cancel", "warning", id="cancel")
|
94
|
+
yield Button("Submit", "primary", id="submit")
|
95
|
+
yield RichLog()
|
96
|
+
yield Footer()
|
97
|
+
|
98
|
+
def action_toggle_dark(self) -> None:
|
99
|
+
"""An action to toggle dark mode."""
|
100
|
+
|
101
|
+
self.app.dark = not self.app.dark
|
102
|
+
|
103
|
+
def on_input_changed(self, event: Input.Changed) -> None:
|
104
|
+
"""Detect input changed events and capture input value"""
|
105
|
+
|
106
|
+
try:
|
107
|
+
ivalue = str(event.value)
|
108
|
+
except ValueError:
|
109
|
+
return
|
110
|
+
else:
|
111
|
+
if event.input.id == "username":
|
112
|
+
self.user = ivalue
|
113
|
+
elif event.input.id == "password":
|
114
|
+
self.password = ivalue
|
115
|
+
elif event.input.id == "platform_url":
|
116
|
+
self.platformu = ivalue
|
117
|
+
elif event.input.id == "view_server":
|
118
|
+
self.view_server = ivalue
|
119
|
+
return
|
120
|
+
|
121
|
+
@on(Button.Pressed, "#submit")
|
122
|
+
async def on_submit(self) -> []:
|
123
|
+
"""This processes the user input."""
|
124
|
+
|
125
|
+
global EGERIA_USER
|
126
|
+
global EGERIA_USER_PASSWORD
|
127
|
+
global EGERIA_PLATFORM_URL
|
128
|
+
global EGERIA_VIEW_SERVER
|
129
|
+
|
130
|
+
result = [" meow", "woof", "neigh", "hoot"]
|
131
|
+
|
132
|
+
if self.user:
|
133
|
+
result[0] = self.user
|
134
|
+
else:
|
135
|
+
result[0] = "erinoverview"
|
136
|
+
if self.password:
|
137
|
+
result[1] = self.password
|
138
|
+
else:
|
139
|
+
result[1] = "secret"
|
140
|
+
if self.platformu:
|
141
|
+
result[2] = self.platformu
|
142
|
+
else:
|
143
|
+
result[2] = "https://localhost:9443"
|
144
|
+
if self.view_server:
|
145
|
+
result[3] = self.view_server
|
146
|
+
else:
|
147
|
+
result[3] = "view-server"
|
148
|
+
|
149
|
+
# Also store the input in global variables
|
150
|
+
|
151
|
+
EGERIA_USER = result[0]
|
152
|
+
EGERIA_USER_PASSWORD = result[1]
|
153
|
+
EGERIA_PLATFORM_URL = result[2]
|
154
|
+
EGERIA_VIEW_SERVER = result[3]
|
155
|
+
|
156
|
+
await self.action_dismiss(result)
|
157
|
+
|
158
|
+
@on(Button.Pressed, "#cancel")
|
159
|
+
def on_cancel(self) -> None:
|
160
|
+
self.action_dismiss()
|
161
|
+
|
162
|
+
|
163
|
+
class ExitScreen(ModalScreen):
|
164
|
+
"""App exit screen."""
|
165
|
+
|
166
|
+
DEFAULT_CSS = """
|
167
|
+
ExitScreen {
|
168
|
+
align: center middle;
|
169
|
+
}
|
170
|
+
|
171
|
+
ExitScreen > Container {
|
172
|
+
width: auto;
|
173
|
+
height: auto;
|
174
|
+
}
|
175
|
+
"""
|
176
|
+
|
177
|
+
BINDINGS = [("d", "toggle_dark", "Toggle dark mode")]
|
178
|
+
|
179
|
+
def __init__(self) -> None:
|
180
|
+
"""Initialize the UserInfo Screen variables"""
|
181
|
+
super().__init__()
|
182
|
+
|
183
|
+
def action_toggle_dark(self) -> None:
|
184
|
+
"""An action to toggle dark mode."""
|
185
|
+
self.app.dark = not self.app.dark
|
186
|
+
|
187
|
+
def compose(self) -> ComposeResult:
|
188
|
+
with Container():
|
189
|
+
yield Label("Are you sure you want to quit?")
|
190
|
+
yield Button("No", id="no", variant="error")
|
191
|
+
yield Button("Yes", id="yes", variant="success")
|
192
|
+
yield Footer()
|
193
|
+
yield RichLog()
|
194
|
+
|
195
|
+
@on(Button.Pressed, "#no")
|
196
|
+
def on_no(self) -> None:
|
197
|
+
"""No the user pressed the exit button in error"""
|
198
|
+
self.action_dismiss()
|
199
|
+
|
200
|
+
@on(Button.Pressed, "#yes")
|
201
|
+
def on_yes(self) -> None:
|
202
|
+
"""Yes the user wants to quit the app"""
|
203
|
+
self.app.exit()
|
204
|
+
|
205
|
+
|
206
|
+
class Egeria_login(App):
|
207
|
+
"""main app class"""
|
208
|
+
|
209
|
+
CSS_PATH = "txt_custom_v2.tcss"
|
210
|
+
|
211
|
+
BINDINGS = [("d", "toggle_dark", "Toggle dark mode")]
|
212
|
+
|
213
|
+
def __init__(self, *args, **kwargs) -> None:
|
214
|
+
super().__init__(*args, **kwargs)
|
215
|
+
dark = Reactive(True, compute=False)
|
216
|
+
self.app.dark = False
|
217
|
+
self.template: Any = None
|
218
|
+
|
219
|
+
def compose(self) -> ComposeResult:
|
220
|
+
"""Compose the main display"""
|
221
|
+
|
222
|
+
yield Label(f"User: {EGERIA_USER}, password: {EGERIA_USER_PASSWORD}")
|
223
|
+
yield Label(
|
224
|
+
f"Platform: {EGERIA_PLATFORM_URL}, View Server: {EGERIA_VIEW_SERVER}"
|
225
|
+
)
|
226
|
+
yield Button("Finish", "success", id="finish")
|
227
|
+
yield RichLog()
|
228
|
+
yield Footer()
|
229
|
+
|
230
|
+
def on_button_pressed(self, event: Button.Pressed) -> (str, str, str, str):
|
231
|
+
"""Yes the user wants to quit the app"""
|
232
|
+
|
233
|
+
self.exit(
|
234
|
+
(
|
235
|
+
EGERIA_USER,
|
236
|
+
EGERIA_USER_PASSWORD,
|
237
|
+
EGERIA_PLATFORM_URL,
|
238
|
+
EGERIA_VIEW_SERVER,
|
239
|
+
),
|
240
|
+
200,
|
241
|
+
"Finished",
|
242
|
+
)
|
243
|
+
|
244
|
+
def action_toggle_dark(self) -> None:
|
245
|
+
"""An action to toggle dark and light mode."""
|
246
|
+
self.app.dark = not self.app.dark
|
247
|
+
|
248
|
+
async def on_mount(self) -> None:
|
249
|
+
"""Main Program flow control start routine
|
250
|
+
Pushes the user info popup with an associated call back routine"""
|
251
|
+
|
252
|
+
global EGERIA_USER
|
253
|
+
global EGERIA_USER_PASSWORD
|
254
|
+
global EGERIA_PLATFORM_URL
|
255
|
+
global EGERIA_VIEW_SERVER
|
256
|
+
|
257
|
+
system("clear")
|
258
|
+
# Display User Info Screen
|
259
|
+
self.install_screen(UserInfo(), name="userinfo")
|
260
|
+
await self.push_screen(UserInfo(), self.input_userinfo_callback)
|
261
|
+
|
262
|
+
async def input_userinfo_callback(self, user_input) -> (str, str, str, str):
|
263
|
+
"""Prompt for user id and password, callback routine
|
264
|
+
This routine is invoked when user input is completed
|
265
|
+
"""
|
266
|
+
|
267
|
+
global EGERIA_USER
|
268
|
+
global EGERIA_USER_PASSWORD
|
269
|
+
global EGERIA_PLATFORM_URL
|
270
|
+
global EGERIA_VIEW_SERVER
|
271
|
+
global TECH_NAME
|
272
|
+
|
273
|
+
if user_input[0] != None:
|
274
|
+
EGERIA_USER = user_input[0]
|
275
|
+
else:
|
276
|
+
EGERIA_USER = "erinoverview"
|
277
|
+
if user_input[1] != None:
|
278
|
+
EGERIA_USER_PASSWORD = user_input[1]
|
279
|
+
else:
|
280
|
+
EGERIA_USER_PASSWORD = "secret"
|
281
|
+
if user_input[2] != None:
|
282
|
+
EGERIA_PLATFORM_URL = user_input[2]
|
283
|
+
else:
|
284
|
+
EGERIA_PLATFORM_URL = "https://localhost:9443"
|
285
|
+
if user_input[3] != None:
|
286
|
+
EGERIA_VIEW_SERVER = user_input[3]
|
287
|
+
else:
|
288
|
+
EGERIA_VIEW_SERVER = "view-server"
|
289
|
+
|
290
|
+
return (
|
291
|
+
EGERIA_USER,
|
292
|
+
EGERIA_USER_PASSWORD,
|
293
|
+
EGERIA_PLATFORM_URL,
|
294
|
+
EGERIA_VIEW_SERVER,
|
295
|
+
)
|
296
|
+
|
297
|
+
|
298
|
+
# @click.command("egeria-login")
|
299
|
+
# @click.option("--server", default=EGERIA_VIEW_SERVER, help="Egeria view server to use.")
|
300
|
+
# @click.option(
|
301
|
+
# "--url", default=EGERIA_VIEW_SERVER_URL, help="URL of Egeria platform to connect to"
|
302
|
+
# )
|
303
|
+
# @click.option("--userid", default=EGERIA_USER, help="Egeria user")
|
304
|
+
# @click.option("--password", default=EGERIA_USER_PASSWORD, help="Egeria user password")
|
305
|
+
def login(userid: str, password: str, server: str, url: str) -> None:
|
306
|
+
app = Egeria_login()
|
307
|
+
app.run()
|
308
|
+
return "peterprofile"
|
309
|
+
|
310
|
+
|
311
|
+
if __name__ == "__main__":
|
312
|
+
app = Egeria_login()
|
313
|
+
app.run()
|
@@ -0,0 +1,248 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
SPDX-License-Identifier: Apache-2.0
|
4
|
+
Copyright Contributors to the ODPi Egeria project.
|
5
|
+
|
6
|
+
|
7
|
+
A command line interface for Egeria Users - of individual relevance
|
8
|
+
|
9
|
+
This is an emerging capability based on the **click** package. Feedback welcome!
|
10
|
+
|
11
|
+
"""
|
12
|
+
import os
|
13
|
+
|
14
|
+
import click
|
15
|
+
from trogon import tui
|
16
|
+
|
17
|
+
from pyegeria.commands.cli.ops_config import Config
|
18
|
+
|
19
|
+
from pyegeria.commands.my.monitor_open_todos import display_todos
|
20
|
+
from pyegeria.commands.my.monitor_my_todos import display_my_todos
|
21
|
+
from pyegeria.commands.my.list_my_profile import display_my_profile
|
22
|
+
from pyegeria.commands.my.list_my_roles import display_my_roles
|
23
|
+
from pyegeria.commands.my.todo_actions import (
|
24
|
+
create_todo,
|
25
|
+
delete_todo,
|
26
|
+
change_todo_status,
|
27
|
+
mark_todo_complete,
|
28
|
+
reassign_todo,
|
29
|
+
)
|
30
|
+
|
31
|
+
|
32
|
+
# class Config(object):
|
33
|
+
# def __init__(self, server: str = None, url: str = None, userid:str = None, password:str = None,
|
34
|
+
# timeout:int = 30, paging: bool = False):
|
35
|
+
# self.server = server
|
36
|
+
# self.url = url
|
37
|
+
# self.userid = userid
|
38
|
+
# self.password = password
|
39
|
+
# self.timeout = timeout
|
40
|
+
# self.paging = paging
|
41
|
+
#
|
42
|
+
#
|
43
|
+
# pass_config = click.make_pass_decorator(Config)
|
44
|
+
|
45
|
+
|
46
|
+
@tui()
|
47
|
+
# @tui('menu', 'menu', 'A textual command line interface')
|
48
|
+
@click.version_option("0.0.1", prog_name="egeria_ops")
|
49
|
+
@click.group()
|
50
|
+
@click.option(
|
51
|
+
"--server",
|
52
|
+
default=os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store"),
|
53
|
+
help="Egeria metadata store to work with",
|
54
|
+
)
|
55
|
+
@click.option(
|
56
|
+
"--url",
|
57
|
+
default=os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443"),
|
58
|
+
help="URL of Egeria metadata store platform to connect to",
|
59
|
+
)
|
60
|
+
@click.option(
|
61
|
+
"--integration_daemon",
|
62
|
+
default=os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon"),
|
63
|
+
help="Egeria integration daemon to work with",
|
64
|
+
)
|
65
|
+
@click.option(
|
66
|
+
"--integration_daemon_url",
|
67
|
+
default=os.environ.get("EGERIA_INTEGRATION_DAEMON_URL", "https://localhost:9443"),
|
68
|
+
help="URL of Egeria integration daemon platform to connect to",
|
69
|
+
)
|
70
|
+
@click.option(
|
71
|
+
"--view_server",
|
72
|
+
default=os.environ.get("EGERIA_VIEW_SERVER", "view-server"),
|
73
|
+
help="Egeria view server to work with",
|
74
|
+
)
|
75
|
+
@click.option(
|
76
|
+
"--view_server_url",
|
77
|
+
default=os.environ.get("EGERIA_VIEW_SERVER_URL", "https://localhost:9443"),
|
78
|
+
help="URL of Egeria view server platform to connect to",
|
79
|
+
)
|
80
|
+
@click.option(
|
81
|
+
"--engine_host",
|
82
|
+
default=os.environ.get("EGERIA_ENGINE_HOST", "engine-host"),
|
83
|
+
help="Egeria engine host to work with",
|
84
|
+
)
|
85
|
+
@click.option(
|
86
|
+
"--engine_host_url",
|
87
|
+
default=os.environ.get("EGERIA_ENGINE_HOST_URL", "https://localhost:9443"),
|
88
|
+
help="URL of Egeria engine host platform to connect to",
|
89
|
+
)
|
90
|
+
@click.option(
|
91
|
+
"--admin_user",
|
92
|
+
default=os.environ.get("EGERIA_ADMIN_USER", "garygeeke"),
|
93
|
+
help="Egeria admin user",
|
94
|
+
)
|
95
|
+
@click.option(
|
96
|
+
"--admin_user_password",
|
97
|
+
default=os.environ.get("EGERIA_ADMIN_PASSWORD", "secret"),
|
98
|
+
help="Egeria admin password",
|
99
|
+
)
|
100
|
+
@click.option(
|
101
|
+
"--userid",
|
102
|
+
default=os.environ.get("EGERIA_USER", "peterprofile"),
|
103
|
+
help="Egeria user",
|
104
|
+
)
|
105
|
+
@click.option(
|
106
|
+
"--password",
|
107
|
+
default=os.environ.get("EGERIA_USER_PASSWORD", "secret"),
|
108
|
+
help="Egeria user password",
|
109
|
+
)
|
110
|
+
@click.option("--timeout", default=60, help="Number of seconds to wait")
|
111
|
+
@click.option(
|
112
|
+
"--jupyter",
|
113
|
+
is_flag=True,
|
114
|
+
default=os.environ.get("EGERIA_JUPYTER", "False"),
|
115
|
+
help="Enable for rendering in a Jupyter terminal",
|
116
|
+
)
|
117
|
+
@click.option(
|
118
|
+
"--width",
|
119
|
+
default=os.environ.get("EGERIA_WIDTH", "200"),
|
120
|
+
help="Screen width, in characters, to use",
|
121
|
+
)
|
122
|
+
@click.option(
|
123
|
+
"--home_glossary_guid",
|
124
|
+
default=os.environ.get("EGERIA_HOME_GLOSSARY_GUID", None),
|
125
|
+
help="Glossary guid to use as the home glossary",
|
126
|
+
)
|
127
|
+
@click.pass_context
|
128
|
+
def cli(
|
129
|
+
ctx,
|
130
|
+
server,
|
131
|
+
url,
|
132
|
+
view_server,
|
133
|
+
view_server_url,
|
134
|
+
integration_daemon,
|
135
|
+
integration_daemon_url,
|
136
|
+
engine_host,
|
137
|
+
engine_host_url,
|
138
|
+
admin_user,
|
139
|
+
admin_user_password,
|
140
|
+
userid,
|
141
|
+
password,
|
142
|
+
timeout,
|
143
|
+
jupyter,
|
144
|
+
width,
|
145
|
+
):
|
146
|
+
"""An Egeria Command Line interface for Operations"""
|
147
|
+
ctx.obj = Config(
|
148
|
+
server,
|
149
|
+
url,
|
150
|
+
view_server,
|
151
|
+
view_server_url,
|
152
|
+
integration_daemon,
|
153
|
+
integration_daemon_url,
|
154
|
+
engine_host,
|
155
|
+
engine_host_url,
|
156
|
+
admin_user,
|
157
|
+
admin_user_password,
|
158
|
+
userid,
|
159
|
+
password,
|
160
|
+
timeout,
|
161
|
+
jupyter,
|
162
|
+
width,
|
163
|
+
)
|
164
|
+
ctx.max_content_width = 200
|
165
|
+
ctx.ensure_object(Config)
|
166
|
+
|
167
|
+
|
168
|
+
@cli.group("show")
|
169
|
+
@click.pass_context
|
170
|
+
def show(ctx):
|
171
|
+
"""Display an Egeria Object"""
|
172
|
+
pass
|
173
|
+
|
174
|
+
|
175
|
+
@show.command("my-profile")
|
176
|
+
@click.pass_context
|
177
|
+
def show_my_profile(ctx):
|
178
|
+
"""Display my profiles
|
179
|
+
|
180
|
+
Usage: show my-profile
|
181
|
+
|
182
|
+
"""
|
183
|
+
c = ctx.obj
|
184
|
+
display_my_profile(
|
185
|
+
c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
|
186
|
+
)
|
187
|
+
|
188
|
+
|
189
|
+
@show.command("my-roles")
|
190
|
+
@click.pass_context
|
191
|
+
def show_my_roles(ctx):
|
192
|
+
"""Display my roles"""
|
193
|
+
c = ctx.obj
|
194
|
+
display_my_roles(
|
195
|
+
c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
|
196
|
+
)
|
197
|
+
|
198
|
+
|
199
|
+
@show.command("my-to-dos")
|
200
|
+
@click.pass_context
|
201
|
+
def show_my_todos(ctx):
|
202
|
+
"""Show my To-Dos
|
203
|
+
|
204
|
+
Usage: show my-to-dos
|
205
|
+
|
206
|
+
"""
|
207
|
+
c = ctx.obj
|
208
|
+
display_my_todos(
|
209
|
+
c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
|
210
|
+
)
|
211
|
+
|
212
|
+
|
213
|
+
@show.command("open-to-dos")
|
214
|
+
@click.pass_context
|
215
|
+
def show_open_todos(ctx):
|
216
|
+
"""Display a live status view of Egeria servers for the specified Egeria platform
|
217
|
+
|
218
|
+
Usage: show tech-details <tech-name>
|
219
|
+
|
220
|
+
tech-name is a valid technology name (see 'show tech-types')
|
221
|
+
"""
|
222
|
+
c = ctx.obj
|
223
|
+
display_todos(
|
224
|
+
c.view_server, c.view_server_url, c.userid, c.password, c.jupyter, c.width
|
225
|
+
)
|
226
|
+
|
227
|
+
|
228
|
+
#
|
229
|
+
# Tell
|
230
|
+
#
|
231
|
+
|
232
|
+
|
233
|
+
@cli.group("tell")
|
234
|
+
@click.pass_context
|
235
|
+
def tell(ctx):
|
236
|
+
"""Perform actions an Egeria Objects"""
|
237
|
+
pass
|
238
|
+
|
239
|
+
|
240
|
+
tell.add_command(create_todo)
|
241
|
+
tell.add_command(delete_todo)
|
242
|
+
tell.add_command(change_todo_status)
|
243
|
+
tell.add_command(mark_todo_complete)
|
244
|
+
tell.add_command(reassign_todo)
|
245
|
+
|
246
|
+
|
247
|
+
if __name__ == "__main__":
|
248
|
+
cli()
|