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.
- commands/__init__.py +24 -0
- commands/cat/Dr-Egeria_md-orig.py +2 -2
- commands/cat/__init__.py +1 -17
- commands/cat/collection_actions.py +197 -0
- commands/cat/dr_egeria_command_help.py +372 -0
- commands/cat/dr_egeria_jupyter.py +7 -7
- commands/cat/dr_egeria_md.py +27 -182
- 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 +46 -138
- 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/run_report_orig.py +528 -0
- commands/cli/egeria.py +222 -247
- commands/cli/egeria_cat.py +68 -81
- commands/cli/egeria_my.py +13 -0
- commands/cli/egeria_ops.py +69 -74
- commands/cli/egeria_tech.py +17 -93
- commands/cli/ops_config.py +3 -6
- commands/{cat/list_categories.py → deprecated/list_data_designer.py} +53 -64
- commands/{cat/list_data_structures.py → 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 +35 -26
- 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 +90 -0
- 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 +17568 -0
- md_processing/data/commands_working.json +30641 -0
- 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/__init__.py +3 -0
- md_processing/md_commands/data_designer_commands.py +1276 -0
- 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 +684 -0
- md_processing/md_commands/governance_officer_commands.py +600 -0
- md_processing/md_commands/product_manager_commands.py +1266 -0
- md_processing/md_commands/project_commands.py +383 -0
- md_processing/md_commands/solution_architect_commands.py +1184 -0
- md_processing/md_commands/view_commands.py +295 -0
- md_processing/md_processing_utils/__init__.py +4 -0
- md_processing/md_processing_utils/common_md_proc_utils.py +1249 -0
- md_processing/md_processing_utils/common_md_utils.py +578 -0
- md_processing/md_processing_utils/determine_width.py +103 -0
- md_processing/md_processing_utils/extraction_utils.py +547 -0
- md_processing/md_processing_utils/gen_report_specs.py +643 -0
- md_processing/md_processing_utils/generate_dr_help.py +193 -0
- md_processing/md_processing_utils/generate_md_cmd_templates.py +144 -0
- md_processing/md_processing_utils/generate_md_templates.py +83 -0
- md_processing/md_processing_utils/md_processing_constants.py +1228 -0
- md_processing/md_processing_utils/message_constants.py +19 -0
- pyegeria/__init__.py +201 -443
- pyegeria/core/__init__.py +40 -0
- pyegeria/core/_base_platform_client.py +574 -0
- pyegeria/core/_base_server_client.py +573 -0
- pyegeria/core/_exceptions.py +457 -0
- pyegeria/core/_globals.py +60 -0
- pyegeria/core/_server_client.py +6073 -0
- pyegeria/core/_validators.py +257 -0
- 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/core/logging_configuration.py +207 -0
- pyegeria/core/mcp_adapter.py +144 -0
- pyegeria/core/mcp_server.py +212 -0
- pyegeria/core/utils.py +405 -0
- pyegeria/deprecated/__init__.py +0 -0
- pyegeria/{_client.py → deprecated/_client.py} +62 -24
- pyegeria/{_deprecated_gov_engine.py → deprecated/_deprecated_gov_engine.py} +16 -16
- pyegeria/{classification_manager_omvs.py → deprecated/classification_manager_omvs.py} +1988 -1878
- pyegeria/deprecated/output_formatter_with_machine_keys.py +1127 -0
- pyegeria/{runtime_manager_omvs.py → deprecated/runtime_manager_omvs.py} +216 -229
- 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 +25 -51
- pyegeria/egeria_client.py +140 -98
- pyegeria/egeria_config_client.py +48 -24
- pyegeria/egeria_tech_client.py +170 -83
- pyegeria/models/__init__.py +150 -0
- pyegeria/models/collection_models.py +168 -0
- pyegeria/models/models.py +654 -0
- 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/omvs/collection_manager.py +5780 -0
- 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_omvs.py → omvs/data_designer.py} +1991 -1691
- 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/omvs/glossary_manager.py +3231 -0
- pyegeria/omvs/governance_officer.py +3009 -0
- 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/omvs/solution_architect.py +6490 -0
- 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/view/_output_format_models.py +514 -0
- 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.3.9.9.3.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/README.md +0 -16
- commands/cli/txt_custom_v2.tcss +0 -19
- commands/my/README.md +0 -17
- commands/ops/README.md +0 -24
- commands/ops/monitor_asset_events.py +0 -108
- commands/tech/README.md +0 -24
- pyegeria/.DS_Store +0 -0
- pyegeria/README.md +0 -35
- pyegeria/_globals.py +0 -47
- pyegeria/_validators.py +0 -385
- pyegeria/asset_catalog_omvs.py +0 -864
- pyegeria/automated_curation_omvs.py +0 -3765
- pyegeria/collection_manager_omvs.py +0 -2744
- pyegeria/dr.egeria spec.md +0 -9
- pyegeria/egeria_my_client.py +0 -56
- pyegeria/feedback_manager_omvs.py +0 -4573
- pyegeria/glossary_browser_omvs.py +0 -3728
- pyegeria/glossary_manager_omvs.py +0 -2440
- pyegeria/m_test.py +0 -118
- 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/output_formatter.py +0 -389
- pyegeria/project_manager_omvs.py +0 -1933
- pyegeria/registered_info.py +0 -167
- pyegeria/solution_architect_omvs.py +0 -2156
- pyegeria/template_manager_omvs.py +0 -1414
- pyegeria/utils.py +0 -197
- pyegeria-5.3.9.9.3.dist-info/METADATA +0 -72
- pyegeria-5.3.9.9.3.dist-info/RECORD +0 -143
- pyegeria-5.3.9.9.3.dist-info/entry_points.txt +0 -99
- /pyegeria/{_exceptions.py → deprecated/_exceptions.py} +0 -0
- {pyegeria-5.3.9.9.3.dist-info → pyegeria-5.5.3.3.dist-info/licenses}/LICENSE +0 -0
commands/ops/README.md
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
|
|
2
|
-
<!-- Copyright Contributors to the Egeria project. -->
|
|
3
|
-
|
|
4
|
-
# Operational
|
|
5
|
-
|
|
6
|
-
These widgets display different kinds of information useful to monitor the status of different elements of an Egeria deployment.
|
|
7
|
-
Widgets will continue to be added over time to cover more facets of catalog use.
|
|
8
|
-
|
|
9
|
-
* get_eng_action_status.py - lists assets containing the user provided search string in the display name or qualified name. Search string must be a minimum of three characters.
|
|
10
|
-
* get_tech_type_elements.py - shows a tree view for the details of a supported technology type.
|
|
11
|
-
* get_tech_type_template.py - shows a tree view of the template associated with a supported technology type.
|
|
12
|
-
* view_coco_status.py - provides a tree view of a collection with all nested collections and items within the collection.
|
|
13
|
-
* view_eng_action_status.py - provides a live view of the status of engine actions.
|
|
14
|
-
* view_gov_eng_status.py - provides a live view of a governance engine status.
|
|
15
|
-
* view_integ_daemeon_status.py - provides a live view of an integration daemon status.
|
|
16
|
-
* view_platform_status.py - provides a live status view of the known servers on known platforms.
|
|
17
|
-
* view_server_list.py - provides a more detailed live status view of the servers on a single platform.
|
|
18
|
-
* view_server_status.py - provides a minimal live status view of the servers on a single platform.
|
|
19
|
-
* view_asset_changes.py - experiment in progress
|
|
20
|
-
* view_asset_events.py - experiment in progress
|
|
21
|
-
|
|
22
|
-
----
|
|
23
|
-
License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/),
|
|
24
|
-
Copyright Contributors to the Egeria project.
|
|
@@ -1,108 +0,0 @@
|
|
|
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 json
|
|
10
|
-
import os
|
|
11
|
-
import time
|
|
12
|
-
from datetime import datetime
|
|
13
|
-
|
|
14
|
-
from confluent_kafka import Consumer, KafkaException
|
|
15
|
-
from rich.console import Console
|
|
16
|
-
from rich.live import Live
|
|
17
|
-
from rich.markdown import Markdown
|
|
18
|
-
from rich.prompt import Prompt
|
|
19
|
-
from rich.table import Table
|
|
20
|
-
|
|
21
|
-
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
|
22
|
-
EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9192")
|
|
23
|
-
EGERIA_PLATFORM_URL = os.environ.get("EGERIA_PLATFORM_URL", "https://localhost:9443")
|
|
24
|
-
EGERIA_VIEW_SERVER = os.environ.get("EGERIA_VIEW_SERVER", "view-server")
|
|
25
|
-
EGERIA_VIEW_SERVER_URL = os.environ.get(
|
|
26
|
-
"EGERIA_VIEW_SERVER_URL", "https://localhost:9443"
|
|
27
|
-
)
|
|
28
|
-
EGERIA_INTEGRATION_DAEMON = os.environ.get("EGERIA_INTEGRATION_DAEMON", "integration-daemon")
|
|
29
|
-
EGERIA_ADMIN_USER = os.environ.get("ADMIN_USER", "garygeeke")
|
|
30
|
-
EGERIA_ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "secret")
|
|
31
|
-
EGERIA_USER = os.environ.get("EGERIA_USER", "erinoverview")
|
|
32
|
-
EGERIA_USER_PASSWORD = os.environ.get("EGERIA_USER_PASSWORD", "secret")
|
|
33
|
-
EGERIA_JUPYTER = os.environ.get("EGERIA_JUPYTER", False)
|
|
34
|
-
EGERIA_WIDTH = os.environ.get("EGERIA_WIDTH", 200)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def main(ep: str = EGERIA_KAFKA_ENDPOINT):
|
|
38
|
-
disable_ssl_warnings = True
|
|
39
|
-
console = Console(width=200)
|
|
40
|
-
now = datetime.now()
|
|
41
|
-
current_time = now.strftime("%H:%M:%S")
|
|
42
|
-
|
|
43
|
-
earliest_latest = Prompt.ask("Msgs from earliest or latest:", default="earliest")
|
|
44
|
-
|
|
45
|
-
# Define the Kafka consumer configuration.
|
|
46
|
-
config = {
|
|
47
|
-
"bootstrap.servers": ep, # replace with your Kafka broker(s)
|
|
48
|
-
"group.id": f"view_asset_events:{current_time}", # replace with your consumer group
|
|
49
|
-
"auto.offset.reset": earliest_latest, # can be set to 'earliest' or 'latest'
|
|
50
|
-
}
|
|
51
|
-
print(f"Kafka config is {json.dumps(config)}")
|
|
52
|
-
# Initialize a Kafka consumer.
|
|
53
|
-
consumer = Consumer(config)
|
|
54
|
-
|
|
55
|
-
# Subscribe to a Kafka topic.
|
|
56
|
-
consumer.subscribe(
|
|
57
|
-
["egeria.omag.server.active-metadata-store.omas.assetconsumer.outTopic"]
|
|
58
|
-
) # replace with your Kafka topic
|
|
59
|
-
|
|
60
|
-
try:
|
|
61
|
-
while True:
|
|
62
|
-
msg = consumer.poll(2.0) # timeout set to 1 second
|
|
63
|
-
|
|
64
|
-
if msg is None:
|
|
65
|
-
continue
|
|
66
|
-
elif msg.error():
|
|
67
|
-
raise KafkaException(msg.error())
|
|
68
|
-
else:
|
|
69
|
-
event = json.loads(msg.value())
|
|
70
|
-
event_time = event["eventTime"]
|
|
71
|
-
event_type = event["eventType"]
|
|
72
|
-
guid = event["elementHeader"]["guid"]
|
|
73
|
-
|
|
74
|
-
type_name = event["elementHeader"]["type"]["typeName"]
|
|
75
|
-
origin = event["elementHeader"]["origin"]["sourceServer"]
|
|
76
|
-
|
|
77
|
-
element_properties = event["elementProperties"]
|
|
78
|
-
element_properties_keys = element_properties.keys()
|
|
79
|
-
props = " "
|
|
80
|
-
for key in element_properties_keys:
|
|
81
|
-
value = element_properties[key]
|
|
82
|
-
props += f"* {key}: {value}\n"
|
|
83
|
-
console.rule(style="[bold red]")
|
|
84
|
-
console.rule(
|
|
85
|
-
f"\tMessage TimeStamp: {event_time}\t eventType: {event_type}\t typeName: {type_name}\t guid: {guid}"
|
|
86
|
-
)
|
|
87
|
-
msg = f"properties: \n[bright white on black]{props}\n\n"
|
|
88
|
-
msg = Markdown(msg)
|
|
89
|
-
|
|
90
|
-
console.print(msg)
|
|
91
|
-
|
|
92
|
-
except KeyboardInterrupt:
|
|
93
|
-
pass
|
|
94
|
-
|
|
95
|
-
finally:
|
|
96
|
-
# Close down consumer to commit final offsets.
|
|
97
|
-
consumer.close()
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if __name__ == "__main__":
|
|
101
|
-
parser = argparse.ArgumentParser()
|
|
102
|
-
|
|
103
|
-
parser.add_argument("--ep", help="Endpoint to connect to")
|
|
104
|
-
args = parser.parse_args()
|
|
105
|
-
|
|
106
|
-
ep = args.ep if args.ep is not None else EGERIA_KAFKA_ENDPOINT
|
|
107
|
-
|
|
108
|
-
main(ep)
|
commands/tech/README.md
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
|
|
2
|
-
<!-- Copyright Contributors to the Egeria project. -->
|
|
3
|
-
|
|
4
|
-
# Developer
|
|
5
|
-
|
|
6
|
-
These widgets display different kinds of information useful to developers. Widgets
|
|
7
|
-
will continue to be added over time to cover more facets. Useful developer information
|
|
8
|
-
can also be found on [Egeria Project](https://egeria-project.org) and in [Egeria Explorers](https://egeria-project.org/release-notes/june-2024/?h=brain#egeria-explorers).
|
|
9
|
-
|
|
10
|
-
* get_guid_info.py - lists information about the metadata element specified by the Egeria guid.
|
|
11
|
-
* get_tech_details.py - shows a tree view showing the Egeria support for a particular technology (e.g PostgreSQL Server).
|
|
12
|
-
* list_asset_types.py - provides a tree view of a collection with all nested collections and items within the collection.
|
|
13
|
-
* list_registered_services.py - lists the services available on an Egeria platform.
|
|
14
|
-
* list_relationship_types.py - list the relationships details for a specified Egeria type.
|
|
15
|
-
* list_tech_templates.py - list template details for technology types
|
|
16
|
-
* list_tech_types.py - list the technology types that Egeria currently supports
|
|
17
|
-
* list_valid_metadata_values.py - list valid metadata values for a particular property and category.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
----
|
|
23
|
-
License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/),
|
|
24
|
-
Copyright Contributors to the Egeria project.
|
pyegeria/.DS_Store
DELETED
|
Binary file
|
pyegeria/README.md
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<!-- SPDX-License-Identifier: CC-BY-4.0 -->
|
|
2
|
-
<!-- Copyright Contributors to the ODPi Egeria project. -->
|
|
3
|
-
|
|
4
|
-

|
|
5
|
-
|
|
6
|
-
[](LICENSE)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# pyegeria: a python client for Egeria
|
|
10
|
-
|
|
11
|
-
This is a package for easily using the Egeria
|
|
12
|
-
open metadata environment from python. Details about the
|
|
13
|
-
open source Egeria project can be found at [Egeria Project](https://egeria-project.org).
|
|
14
|
-
|
|
15
|
-
This package is in active development. There is initial
|
|
16
|
-
support for many of Egeria's services including configuration and operation. This client depends on
|
|
17
|
-
This release supports Egeria 5.1 and above - although most of the functions may work on earlier versions of Egeria as well.
|
|
18
|
-
|
|
19
|
-
The code is organized to mimic the existing Egeria Java Client structure.
|
|
20
|
-
|
|
21
|
-
WARNING: files that start with "X" are in-progress placeholders that are not meant to be used..they will mature and
|
|
22
|
-
evolve.
|
|
23
|
-
|
|
24
|
-
All feedback is welcome. Please engage via our [community](http://egeria-project.org/guides/community/),
|
|
25
|
-
team calls, or via github issues in this repo. If interested in contributing,
|
|
26
|
-
you can engage via the community or directly reach out to
|
|
27
|
-
[dan.wolfson\@pdr-associates.com](mailto:dan.wolfson@pdr-associates.com?subject=pyegeria).
|
|
28
|
-
|
|
29
|
-
This is a learning experience.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
----
|
|
34
|
-
License: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/),
|
|
35
|
-
Copyright Contributors to the ODPi Egeria project.
|
pyegeria/_globals.py
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
"""
|
|
7
|
-
This common file is used to set some global values and enumerations used by the overall package.
|
|
8
|
-
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
is_debug = False
|
|
13
|
-
disable_ssl_warnings = True
|
|
14
|
-
enable_ssl_check = False
|
|
15
|
-
max_paging_size = 500
|
|
16
|
-
default_time_out = 30
|
|
17
|
-
DEBUG_LEVEL = "quiet"
|
|
18
|
-
comment_types = (
|
|
19
|
-
"ANSWER",
|
|
20
|
-
"OTHER",
|
|
21
|
-
"QUESTION",
|
|
22
|
-
"STANDARD_COMMENT",
|
|
23
|
-
"SUGGESTION",
|
|
24
|
-
"USAGE_EXPERIENCE",
|
|
25
|
-
)
|
|
26
|
-
star_ratings = (
|
|
27
|
-
"FIVE_STARS",
|
|
28
|
-
"FOUR_STARS",
|
|
29
|
-
"NO_RECOMMENDATION",
|
|
30
|
-
"ONE_STAR",
|
|
31
|
-
"THREE_STARS",
|
|
32
|
-
"TWO_STARS",
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
TEMPLATE_GUIDS: dict = {}
|
|
36
|
-
INTEGRATION_GUIDS: dict = {}
|
|
37
|
-
|
|
38
|
-
NO_ELEMENTS_FOUND = "No elements found"
|
|
39
|
-
NO_ASSETS_FOUND = "No assets found"
|
|
40
|
-
NO_SERVERS_FOUND = "No servers found"
|
|
41
|
-
NO_CATALOGS_FOUND = "No catalogs found"
|
|
42
|
-
NO_GLOSSARIES_FOUND = "No glossaries found"
|
|
43
|
-
NO_TERMS_FOUND = "No terms found"
|
|
44
|
-
NO_CATEGORIES_FOUND = "No categories found"
|
|
45
|
-
NO_ELEMENT_FOUND = "No element found"
|
|
46
|
-
NO_PROJECTS_FOUND = "No projects found"
|
|
47
|
-
NO_COLLECTION_FOUND = "No collection found"
|
pyegeria/_validators.py
DELETED
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
import inspect
|
|
7
|
-
import json
|
|
8
|
-
from json import JSONDecodeError
|
|
9
|
-
|
|
10
|
-
import validators
|
|
11
|
-
|
|
12
|
-
from pyegeria._exceptions import InvalidParameterException, OMAGCommonErrorCode
|
|
13
|
-
|
|
14
|
-
"""
|
|
15
|
-
This package contains internally used validators.
|
|
16
|
-
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def validate_user_id(user_id: str) -> bool:
|
|
21
|
-
"""
|
|
22
|
-
Validate that the provided user id is neither null nor empty.
|
|
23
|
-
|
|
24
|
-
Parameters
|
|
25
|
-
----------
|
|
26
|
-
user_id : str The user id string to validate
|
|
27
|
-
|
|
28
|
-
Returns
|
|
29
|
-
-------
|
|
30
|
-
bool: True if valid, If invalid an InvalidParameterException is raised.
|
|
31
|
-
|
|
32
|
-
Raises
|
|
33
|
-
------
|
|
34
|
-
InvalidParameterException
|
|
35
|
-
If the provided user id is null or empty
|
|
36
|
-
"""
|
|
37
|
-
if (user_id is None) or len(user_id) == 0:
|
|
38
|
-
msg = str(OMAGCommonErrorCode.NULL_USER_ID.value["message_template"]).format(
|
|
39
|
-
"user_id"
|
|
40
|
-
)
|
|
41
|
-
calling_frame = inspect.currentframe().f_back
|
|
42
|
-
caller_method = inspect.getframeinfo(calling_frame).function
|
|
43
|
-
|
|
44
|
-
exc_msg = json.dumps(
|
|
45
|
-
{
|
|
46
|
-
"class": "VoidResponse",
|
|
47
|
-
"relatedHTTPCode": 400,
|
|
48
|
-
"exceptionClassName": "InvalidParameterException",
|
|
49
|
-
"actionDescription": caller_method,
|
|
50
|
-
"exceptionErrorMessage": msg,
|
|
51
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
52
|
-
"message_id"
|
|
53
|
-
],
|
|
54
|
-
"exceptionErrorMessageParameters": user_id,
|
|
55
|
-
"exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
56
|
-
"system_action"
|
|
57
|
-
],
|
|
58
|
-
"exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
59
|
-
"user_action"
|
|
60
|
-
],
|
|
61
|
-
"exceptionProperties": {"user_id": user_id},
|
|
62
|
-
}
|
|
63
|
-
)
|
|
64
|
-
raise InvalidParameterException(exc_msg)
|
|
65
|
-
else:
|
|
66
|
-
return True
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def validate_server_name(server_name: str) -> bool:
|
|
70
|
-
"""
|
|
71
|
-
Validate that the provided server name is neither null nor empty.
|
|
72
|
-
|
|
73
|
-
Parameters
|
|
74
|
-
----------
|
|
75
|
-
server_name : str The user id string to validate
|
|
76
|
-
|
|
77
|
-
Returns
|
|
78
|
-
-------
|
|
79
|
-
bool - True if valid, If invalid an InvalidParameterException is raised.
|
|
80
|
-
|
|
81
|
-
"""
|
|
82
|
-
calling_frame = inspect.currentframe().f_back
|
|
83
|
-
caller_method = inspect.getframeinfo(calling_frame).function
|
|
84
|
-
|
|
85
|
-
if (server_name is None) or (len(server_name) == 0):
|
|
86
|
-
msg = str(
|
|
87
|
-
OMAGCommonErrorCode.SERVER_NAME_NOT_SPECIFIED.value["message_template"]
|
|
88
|
-
)
|
|
89
|
-
exc_msg = json.dumps(
|
|
90
|
-
{
|
|
91
|
-
"class": "VoidResponse",
|
|
92
|
-
"relatedHTTPCode": 400,
|
|
93
|
-
"exceptionClassName": "InvalidParameterException",
|
|
94
|
-
"actionDescription": caller_method,
|
|
95
|
-
"exceptionErrorMessage": msg,
|
|
96
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
97
|
-
"message_id"
|
|
98
|
-
],
|
|
99
|
-
"exceptionErrorMessageParameters": server_name,
|
|
100
|
-
"exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
101
|
-
"system_action"
|
|
102
|
-
],
|
|
103
|
-
"exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
104
|
-
"user_action"
|
|
105
|
-
],
|
|
106
|
-
"exceptionProperties": {"view_server": server_name},
|
|
107
|
-
}
|
|
108
|
-
)
|
|
109
|
-
raise InvalidParameterException(exc_msg)
|
|
110
|
-
else:
|
|
111
|
-
return True
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
def validate_guid(guid: str) -> bool:
|
|
115
|
-
"""
|
|
116
|
-
Validate that the provided guid is neither null nor empty.
|
|
117
|
-
|
|
118
|
-
Parameters
|
|
119
|
-
----------
|
|
120
|
-
guid : str The user id string to validate
|
|
121
|
-
|
|
122
|
-
Returns
|
|
123
|
-
-------
|
|
124
|
-
bool - True if valid, If invalid an InvalidParameterException is raised.
|
|
125
|
-
|
|
126
|
-
"""
|
|
127
|
-
calling_frame = inspect.currentframe().f_back
|
|
128
|
-
caller_method = inspect.getframeinfo(calling_frame).function
|
|
129
|
-
|
|
130
|
-
if (guid is None) or (len(guid) == 0) or (type(guid) is not str):
|
|
131
|
-
msg = str(OMAGCommonErrorCode.NULL_GUID.value["message_template"])
|
|
132
|
-
exc_msg = json.dumps(
|
|
133
|
-
{
|
|
134
|
-
"class": "VoidResponse",
|
|
135
|
-
"relatedHTTPCode": 400,
|
|
136
|
-
"exceptionClassName": "InvalidParameterException",
|
|
137
|
-
"actionDescription": caller_method,
|
|
138
|
-
"exceptionErrorMessage": msg,
|
|
139
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
140
|
-
"message_id"
|
|
141
|
-
],
|
|
142
|
-
"exceptionErrorMessageParameters": guid,
|
|
143
|
-
"exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
144
|
-
"system_action"
|
|
145
|
-
],
|
|
146
|
-
"exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
147
|
-
"user_action"
|
|
148
|
-
],
|
|
149
|
-
"exceptionProperties": {"guid": guid},
|
|
150
|
-
}
|
|
151
|
-
)
|
|
152
|
-
raise InvalidParameterException(exc_msg)
|
|
153
|
-
else:
|
|
154
|
-
return True
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
def validate_name(name: str) -> bool:
|
|
158
|
-
"""
|
|
159
|
-
Validate that the provided name is neither null nor empty.
|
|
160
|
-
|
|
161
|
-
Parameters
|
|
162
|
-
----------
|
|
163
|
-
name: str The user id string to validate
|
|
164
|
-
|
|
165
|
-
Returns
|
|
166
|
-
-------
|
|
167
|
-
bool - True if valid, If invalid an InvalidParameterException is raised.
|
|
168
|
-
|
|
169
|
-
"""
|
|
170
|
-
calling_frame = inspect.currentframe().f_back
|
|
171
|
-
caller_method = inspect.getframeinfo(calling_frame).function
|
|
172
|
-
|
|
173
|
-
if (name is None) or (len(name) == 0):
|
|
174
|
-
msg = str(OMAGCommonErrorCode.NULL_NAME.value["message_template"])
|
|
175
|
-
exc_msg = json.dumps(
|
|
176
|
-
{
|
|
177
|
-
"class": "VoidResponse",
|
|
178
|
-
"relatedHTTPCode": 400,
|
|
179
|
-
"exceptionClassName": "InvalidParameterException",
|
|
180
|
-
"actionDescription": caller_method,
|
|
181
|
-
"exceptionErrorMessage": msg,
|
|
182
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
183
|
-
"message_id"
|
|
184
|
-
],
|
|
185
|
-
"exceptionErrorMessageParameters": name,
|
|
186
|
-
"exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
187
|
-
"system_action"
|
|
188
|
-
],
|
|
189
|
-
"exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
190
|
-
"user_action"
|
|
191
|
-
],
|
|
192
|
-
"exceptionProperties": {"name": name},
|
|
193
|
-
}
|
|
194
|
-
)
|
|
195
|
-
raise InvalidParameterException(exc_msg)
|
|
196
|
-
else:
|
|
197
|
-
return True
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
def validate_search_string(search_string: str) -> bool:
|
|
201
|
-
"""
|
|
202
|
-
Validate that the provided search string is neither null nor empty.
|
|
203
|
-
|
|
204
|
-
Parameters
|
|
205
|
-
----------
|
|
206
|
-
search_string : str The user id string to validate
|
|
207
|
-
|
|
208
|
-
Returns
|
|
209
|
-
-------
|
|
210
|
-
bool - True if valid, If invalid an InvalidParameterException is raised.
|
|
211
|
-
|
|
212
|
-
"""
|
|
213
|
-
calling_frame = inspect.currentframe().f_back
|
|
214
|
-
caller_method = inspect.getframeinfo(calling_frame).function
|
|
215
|
-
|
|
216
|
-
if (search_string is None) or (len(search_string) == 0):
|
|
217
|
-
msg = str(
|
|
218
|
-
OMAGCommonErrorCode.NULL_SEARCH_STRING.value["message_template"].format(
|
|
219
|
-
"search_string", caller_method
|
|
220
|
-
)
|
|
221
|
-
)
|
|
222
|
-
exc_msg = json.dumps(
|
|
223
|
-
{
|
|
224
|
-
"class": "VoidResponse",
|
|
225
|
-
"relatedHTTPCode": 400,
|
|
226
|
-
"exceptionClassName": "InvalidParameterException",
|
|
227
|
-
"actionDescription": caller_method,
|
|
228
|
-
"exceptionErrorMessage": msg,
|
|
229
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
230
|
-
"message_id"
|
|
231
|
-
],
|
|
232
|
-
"exceptionErrorMessageParameters": [search_string, caller_method],
|
|
233
|
-
"exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
234
|
-
"system_action"
|
|
235
|
-
],
|
|
236
|
-
"exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
237
|
-
"user_action"
|
|
238
|
-
],
|
|
239
|
-
"exceptionProperties": {"search_string": search_string},
|
|
240
|
-
}
|
|
241
|
-
)
|
|
242
|
-
raise InvalidParameterException(exc_msg)
|
|
243
|
-
else:
|
|
244
|
-
return True
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
def validate_public(is_public: bool) -> bool:
|
|
248
|
-
"""
|
|
249
|
-
Validate that the provided flag is boolean.
|
|
250
|
-
|
|
251
|
-
Parameters
|
|
252
|
-
----------
|
|
253
|
-
is_public : bool The flag must be boolean
|
|
254
|
-
|
|
255
|
-
Returns
|
|
256
|
-
-------
|
|
257
|
-
bool - True if valid, If invalid an InvalidParameterException is raised.
|
|
258
|
-
|
|
259
|
-
"""
|
|
260
|
-
calling_frame = inspect.currentframe().f_back
|
|
261
|
-
caller_method = inspect.getframeinfo(calling_frame).function
|
|
262
|
-
|
|
263
|
-
if is_public is None:
|
|
264
|
-
msg = str(OMAGCommonErrorCode.NULL_OBJECT.value["message_template"])
|
|
265
|
-
exc_msg = json.dumps(
|
|
266
|
-
{
|
|
267
|
-
"class": "VoidResponse",
|
|
268
|
-
"relatedHTTPCode": 400,
|
|
269
|
-
"exceptionClassName": "InvalidParameterException",
|
|
270
|
-
"actionDescription": caller_method,
|
|
271
|
-
"exceptionErrorMessage": msg,
|
|
272
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
273
|
-
"message_id"
|
|
274
|
-
],
|
|
275
|
-
"exceptionErrorMessageParameters": is_public,
|
|
276
|
-
"exceptionSystemAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
277
|
-
"system_action"
|
|
278
|
-
],
|
|
279
|
-
"exceptionUserAction": OMAGCommonErrorCode.NULL_USER_ID.value[
|
|
280
|
-
"user_action"
|
|
281
|
-
],
|
|
282
|
-
"exceptionProperties": {"is_public": is_public},
|
|
283
|
-
}
|
|
284
|
-
)
|
|
285
|
-
raise InvalidParameterException(exc_msg)
|
|
286
|
-
else:
|
|
287
|
-
return True
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
def validate_url(url: str) -> bool:
|
|
291
|
-
"""
|
|
292
|
-
Validate that the provided url is neither null nor empty. The syntax of the url
|
|
293
|
-
string is also checked to see that it conforms to standards.
|
|
294
|
-
|
|
295
|
-
Parameters
|
|
296
|
-
----------
|
|
297
|
-
url : str The url string to validate.
|
|
298
|
-
|
|
299
|
-
Returns
|
|
300
|
-
-------
|
|
301
|
-
bool - True if valid, If invalid an InvalidParameterException is raised.
|
|
302
|
-
|
|
303
|
-
"""
|
|
304
|
-
calling_frame = inspect.currentframe().f_back
|
|
305
|
-
caller_method = inspect.getframeinfo(calling_frame).function
|
|
306
|
-
|
|
307
|
-
if (url is None) or (len(url) == 0):
|
|
308
|
-
msg = str(
|
|
309
|
-
OMAGCommonErrorCode.SERVER_URL_NOT_SPECIFIED.value["message_template"]
|
|
310
|
-
)
|
|
311
|
-
exc_msg = json.dumps(
|
|
312
|
-
{
|
|
313
|
-
"class": "VoidResponse",
|
|
314
|
-
"relatedHTTPCode": 400,
|
|
315
|
-
"exceptionClassName": "InvalidParameterException",
|
|
316
|
-
"actionDescription": caller_method,
|
|
317
|
-
"exceptionErrorMessage": msg,
|
|
318
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
|
|
319
|
-
"message_id"
|
|
320
|
-
],
|
|
321
|
-
"exceptionErrorMessageParameters": url,
|
|
322
|
-
"exceptionSystemAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
|
|
323
|
-
"system_action"
|
|
324
|
-
],
|
|
325
|
-
"exceptionUserAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
|
|
326
|
-
"user_action"
|
|
327
|
-
],
|
|
328
|
-
"exceptionProperties": {"url": url},
|
|
329
|
-
}
|
|
330
|
-
)
|
|
331
|
-
raise InvalidParameterException(exc_msg)
|
|
332
|
-
|
|
333
|
-
# The following hack allows localhost to be used as a hostname - which is disallowed by the
|
|
334
|
-
# validations package
|
|
335
|
-
if ("localhost" in url) and ("localhost." not in url):
|
|
336
|
-
url = url.replace("localhost", "127.0.0.1")
|
|
337
|
-
|
|
338
|
-
result = validators.url(url)
|
|
339
|
-
if result is not True:
|
|
340
|
-
msg = OMAGCommonErrorCode.SERVER_URL_MALFORMED.value["message_template"].format(
|
|
341
|
-
url
|
|
342
|
-
)
|
|
343
|
-
exc_msg = json.dumps(
|
|
344
|
-
{
|
|
345
|
-
"class": "VoidResponse",
|
|
346
|
-
"relatedHTTPCode": 400,
|
|
347
|
-
"exceptionClassName": "InvalidParameterException",
|
|
348
|
-
"actionDescription": caller_method,
|
|
349
|
-
"exceptionErrorMessage": msg,
|
|
350
|
-
"exceptionErrorMessageId": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
|
|
351
|
-
"message_id"
|
|
352
|
-
],
|
|
353
|
-
"exceptionErrorMessageParameters": url,
|
|
354
|
-
"exceptionSystemAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
|
|
355
|
-
"system_action"
|
|
356
|
-
],
|
|
357
|
-
"exceptionUserAction": OMAGCommonErrorCode.SERVER_URL_MALFORMED.value[
|
|
358
|
-
"user_action"
|
|
359
|
-
],
|
|
360
|
-
"exceptionProperties": {"url": url},
|
|
361
|
-
}
|
|
362
|
-
)
|
|
363
|
-
raise InvalidParameterException(exc_msg)
|
|
364
|
-
else:
|
|
365
|
-
return True
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
def is_json(txt: str) -> bool:
|
|
369
|
-
"""
|
|
370
|
-
Parameters
|
|
371
|
-
----------
|
|
372
|
-
txt : str
|
|
373
|
-
The string to check if it is a valid JSON.
|
|
374
|
-
|
|
375
|
-
Returns
|
|
376
|
-
-------
|
|
377
|
-
bool
|
|
378
|
-
True if the string is a valid JSON, False otherwise.
|
|
379
|
-
"""
|
|
380
|
-
try:
|
|
381
|
-
json.loads(txt)
|
|
382
|
-
return True
|
|
383
|
-
except (ValueError, JSONDecodeError) as e:
|
|
384
|
-
print(e)
|
|
385
|
-
return False
|