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
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
This module allows users to query the available (registered) capabilities of Egeria. Detailed information is returned
|
|
8
|
+
to provide both insight and understanding in how to use these capabilities. For example, when configuring an Egeria
|
|
9
|
+
integration service, it is import registered_info.pyant to know what companion service it depends on so that you can
|
|
10
|
+
make sure the companion service is also configured and running.
|
|
11
|
+
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
from pyegeria.core._server_client import ServerClient
|
|
17
|
+
from pyegeria.view.base_report_formats import select_report_spec, get_report_spec_match
|
|
18
|
+
from pyegeria.view.output_formatter import (
|
|
19
|
+
generate_output,
|
|
20
|
+
populate_columns_from_properties,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class RegisteredInfo(ServerClient):
|
|
25
|
+
"""Client to discover Egeria services and capabilities
|
|
26
|
+
|
|
27
|
+
Parameters:
|
|
28
|
+
----------
|
|
29
|
+
view_server: str
|
|
30
|
+
Name of the server to use.
|
|
31
|
+
platform_url : str
|
|
32
|
+
URL of the server platform to connect to
|
|
33
|
+
user_id : str
|
|
34
|
+
The identity of the user calling the method - this sets a default optionally used by the methods
|
|
35
|
+
when the user doesn't pass the user_id on a method call.
|
|
36
|
+
user_pwd: str
|
|
37
|
+
The password associated with the user_id. Defaults to None
|
|
38
|
+
verify_flag: bool
|
|
39
|
+
Flag to indicate if SSL Certificates should be verified in the HTTP requests.
|
|
40
|
+
Defaults to False.
|
|
41
|
+
|
|
42
|
+
Methods:
|
|
43
|
+
-------
|
|
44
|
+
list_registered_svcs(self, kind: Optional[str] = None, fmt: str = 'json', skinny: bool = True, wrap_len: int = 30)
|
|
45
|
+
-> list | str
|
|
46
|
+
Returns information about the different kinds of services as either JSON or a printable table.
|
|
47
|
+
|
|
48
|
+
list_severity_definitions(self, fmt: str = 'json', skinny: bool = True, wrap_len: int = 30) -> list | str
|
|
49
|
+
Returns a list of severity definitions for an OMAG Server used by the audit services.
|
|
50
|
+
|
|
51
|
+
list_asset_types(self, server: str = None) -> list | str
|
|
52
|
+
Lists the defined asset types.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
def __init__(
|
|
56
|
+
self,
|
|
57
|
+
view_server: str,
|
|
58
|
+
platform_url: str,
|
|
59
|
+
user_id: str,
|
|
60
|
+
user_pwd: Optional[str] = None,
|
|
61
|
+
token: Optional[str] = None,
|
|
62
|
+
):
|
|
63
|
+
if view_server is None:
|
|
64
|
+
server_name = "NA"
|
|
65
|
+
ServerClient.__init__(self, view_server, platform_url, user_id, user_pwd)
|
|
66
|
+
self.view_server = view_server
|
|
67
|
+
self.platform_url = platform_url
|
|
68
|
+
self.user_id = user_id
|
|
69
|
+
self.user_pwd = user_pwd
|
|
70
|
+
self.reg_command_root = (
|
|
71
|
+
f"{self.platform_url}/open-metadata/platform-services/users/"
|
|
72
|
+
f"{self.user_id}/server-platform/registered-services"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
def list_registered_svcs(
|
|
76
|
+
self,
|
|
77
|
+
kind: Optional[str] = None,
|
|
78
|
+
*,
|
|
79
|
+
output_format: str = "DICT",
|
|
80
|
+
report_spec: str | dict = None,
|
|
81
|
+
) -> list | str:
|
|
82
|
+
"""Get the registered services for the OMAG Server Platform
|
|
83
|
+
|
|
84
|
+
Parameters
|
|
85
|
+
----------
|
|
86
|
+
kind: str, optional
|
|
87
|
+
The kind of service to return information for. If None, then provide back a list of service kinds.
|
|
88
|
+
|
|
89
|
+
Returns
|
|
90
|
+
-------
|
|
91
|
+
dict | str
|
|
92
|
+
Returns JSON dict of the requested information or a help string if input is 'help'.
|
|
93
|
+
Raises
|
|
94
|
+
------
|
|
95
|
+
PyegeriaInvalidParameterException
|
|
96
|
+
If the response code is not 200.
|
|
97
|
+
PyegeriaAPIException:
|
|
98
|
+
Raised by the server when an issue arises in processing a valid request
|
|
99
|
+
NotAuthorizedException:
|
|
100
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
101
|
+
|
|
102
|
+
"""
|
|
103
|
+
if kind is None or kind == "help":
|
|
104
|
+
return """
|
|
105
|
+
The kinds of services that you can get more information include:
|
|
106
|
+
all.....................lists all registered services
|
|
107
|
+
access-services.........lists all registered access services
|
|
108
|
+
common-services.........lists all registered common services
|
|
109
|
+
engine-services.........lists all registered engine services
|
|
110
|
+
governance-services.....lists all registered governance services
|
|
111
|
+
integration-services....lists all registered integration services
|
|
112
|
+
view-services...........lists all registered view services
|
|
113
|
+
|
|
114
|
+
Pass in a parameter from the left-hand column into the function to
|
|
115
|
+
get more details on the specified service category.
|
|
116
|
+
"""
|
|
117
|
+
if kind == "all":
|
|
118
|
+
url = f"{self.reg_command_root}"
|
|
119
|
+
else:
|
|
120
|
+
url = f"{self.reg_command_root}/{kind}"
|
|
121
|
+
response = self.make_request("GET", url)
|
|
122
|
+
elements = response.json().get("services", [])
|
|
123
|
+
# Fallback to raw if no elements or output not requested
|
|
124
|
+
if output_format in (None, "JSON") and report_spec is None:
|
|
125
|
+
return elements or "No services found"
|
|
126
|
+
|
|
127
|
+
# Choose a report spec
|
|
128
|
+
columns_struct = None
|
|
129
|
+
if isinstance(report_spec, str):
|
|
130
|
+
columns_struct = select_report_spec(report_spec, output_format)
|
|
131
|
+
elif isinstance(report_spec, dict):
|
|
132
|
+
columns_struct = get_report_spec_match(report_spec, output_format)
|
|
133
|
+
else:
|
|
134
|
+
columns_struct = select_report_spec("Registered-Services", output_format)
|
|
135
|
+
if columns_struct is None:
|
|
136
|
+
columns_struct = select_report_spec("Default", output_format)
|
|
137
|
+
|
|
138
|
+
return self._generate_registered_info_output(
|
|
139
|
+
elements=elements,
|
|
140
|
+
filter=kind,
|
|
141
|
+
entity_type_name="Registered-Services",
|
|
142
|
+
output_format=output_format,
|
|
143
|
+
report_spec=columns_struct,
|
|
144
|
+
extract_func=self._extract_registered_service_properties,
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
def list_severity_definitions(
|
|
148
|
+
self,
|
|
149
|
+
*,
|
|
150
|
+
output_format: str = "DICT",
|
|
151
|
+
report_spec: str | dict = None,
|
|
152
|
+
) -> list | str:
|
|
153
|
+
"""Get the registered severities for the OMAG Server
|
|
154
|
+
|
|
155
|
+
Parameters
|
|
156
|
+
----------
|
|
157
|
+
|
|
158
|
+
Returns
|
|
159
|
+
-------
|
|
160
|
+
dict | str
|
|
161
|
+
Return a dictionary containing the registered services for the specified platform.
|
|
162
|
+
Raises
|
|
163
|
+
------
|
|
164
|
+
PyegeriaInvalidParameterException
|
|
165
|
+
If the response code is not 200.
|
|
166
|
+
PyegeriaAPIException:
|
|
167
|
+
Raised by the server when an issue arises in processing a valid request
|
|
168
|
+
NotAuthorizedException:
|
|
169
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
170
|
+
|
|
171
|
+
"""
|
|
172
|
+
url = (
|
|
173
|
+
f"{self.platform_url}/servers/{self.view_server}/open-metadata/repository-services"
|
|
174
|
+
f"/users/{self.user_id}/audit-log/severity-definitions"
|
|
175
|
+
)
|
|
176
|
+
response = self.make_request("GET", url)
|
|
177
|
+
elements = response.json().get("severities", [])
|
|
178
|
+
|
|
179
|
+
if output_format in (None, "JSON") and report_spec is None:
|
|
180
|
+
return elements or "No severities found"
|
|
181
|
+
|
|
182
|
+
columns_struct = None
|
|
183
|
+
if isinstance(report_spec, str):
|
|
184
|
+
columns_struct = select_report_spec(report_spec, output_format)
|
|
185
|
+
elif isinstance(report_spec, dict):
|
|
186
|
+
columns_struct = get_report_spec_match(report_spec, output_format)
|
|
187
|
+
else:
|
|
188
|
+
columns_struct = select_report_spec("Severity-Definitions", output_format)
|
|
189
|
+
if columns_struct is None:
|
|
190
|
+
columns_struct = select_report_spec("Default", output_format)
|
|
191
|
+
|
|
192
|
+
return self._generate_registered_info_output(
|
|
193
|
+
elements=elements,
|
|
194
|
+
filter=None,
|
|
195
|
+
entity_type_name="Severity-Definitions",
|
|
196
|
+
output_format=output_format,
|
|
197
|
+
report_spec=columns_struct,
|
|
198
|
+
extract_func=self._extract_severity_properties,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
def list_asset_types(
|
|
202
|
+
self,
|
|
203
|
+
*,
|
|
204
|
+
output_format: str = "DICT",
|
|
205
|
+
report_spec: str | dict = None,
|
|
206
|
+
) -> list | str:
|
|
207
|
+
"""Get the registered severities for the OMAG Server
|
|
208
|
+
|
|
209
|
+
Parameters
|
|
210
|
+
----------
|
|
211
|
+
|
|
212
|
+
Returns
|
|
213
|
+
-------
|
|
214
|
+
dict | str
|
|
215
|
+
Returns a list of the asset types.
|
|
216
|
+
|
|
217
|
+
Raises
|
|
218
|
+
------
|
|
219
|
+
PyegeriaInvalidParameterException
|
|
220
|
+
If the response code is not 200.
|
|
221
|
+
PyegeriaAPIException:
|
|
222
|
+
Raised by the server when an issue arises in processing a valid request
|
|
223
|
+
NotAuthorizedException:
|
|
224
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
225
|
+
|
|
226
|
+
"""
|
|
227
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/asset-catalog/assets/types"
|
|
228
|
+
|
|
229
|
+
response = self.make_request("GET", url)
|
|
230
|
+
elements = response.json().get("types", [])
|
|
231
|
+
|
|
232
|
+
if output_format in (None, "JSON") and report_spec is None:
|
|
233
|
+
return elements or "no types found"
|
|
234
|
+
|
|
235
|
+
columns_struct = None
|
|
236
|
+
if isinstance(report_spec, str):
|
|
237
|
+
columns_struct = select_report_spec(report_spec, output_format)
|
|
238
|
+
elif isinstance(report_spec, dict):
|
|
239
|
+
columns_struct = get_report_spec_match(report_spec, output_format)
|
|
240
|
+
else:
|
|
241
|
+
columns_struct = select_report_spec("Asset-Types", output_format)
|
|
242
|
+
if columns_struct is None:
|
|
243
|
+
columns_struct = select_report_spec("Default", output_format)
|
|
244
|
+
|
|
245
|
+
return self._generate_registered_info_output(
|
|
246
|
+
elements=elements,
|
|
247
|
+
filter=None,
|
|
248
|
+
entity_type_name="Asset-Types",
|
|
249
|
+
output_format=output_format,
|
|
250
|
+
report_spec=columns_struct,
|
|
251
|
+
extract_func=self._extract_asset_type_properties,
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
# -------------------------------
|
|
255
|
+
# Helpers for report generation
|
|
256
|
+
# -------------------------------
|
|
257
|
+
def _extract_registered_service_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
258
|
+
"""Populate values for a registered service element using the column spec keys.
|
|
259
|
+
|
|
260
|
+
The registered services payload is typically a flat dict of camelCase keys, so we can
|
|
261
|
+
rely on populate_columns_from_properties which maps our snake_case keys to camelCase.
|
|
262
|
+
"""
|
|
263
|
+
return populate_columns_from_properties(element, columns_struct)
|
|
264
|
+
|
|
265
|
+
def _extract_severity_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
266
|
+
"""Populate values for a severity definition element."""
|
|
267
|
+
return populate_columns_from_properties(element, columns_struct)
|
|
268
|
+
|
|
269
|
+
def _extract_asset_type_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
270
|
+
"""Populate values for an asset type listing element."""
|
|
271
|
+
# API may return simple strings (type names) or dicts; support both
|
|
272
|
+
if isinstance(element, str):
|
|
273
|
+
# Ensure the first attribute key named 'type_name' (snake) is populated
|
|
274
|
+
formats = columns_struct.get('formats') or {}
|
|
275
|
+
cols = formats.get('attributes') or []
|
|
276
|
+
for col in cols:
|
|
277
|
+
if isinstance(col, dict) and col.get('key') == 'type_name':
|
|
278
|
+
col['value'] = element
|
|
279
|
+
return columns_struct
|
|
280
|
+
return populate_columns_from_properties(element, columns_struct)
|
|
281
|
+
|
|
282
|
+
def _generate_registered_info_output(
|
|
283
|
+
self,
|
|
284
|
+
*,
|
|
285
|
+
elements: list[dict] | dict,
|
|
286
|
+
filter: Optional[str],
|
|
287
|
+
entity_type_name: Optional[str],
|
|
288
|
+
output_format: str = "DICT",
|
|
289
|
+
report_spec: dict | str | None = None,
|
|
290
|
+
extract_func=None,
|
|
291
|
+
) -> str | list[dict]:
|
|
292
|
+
"""Generate output for RegisteredInfo endpoints using the common formatter.
|
|
293
|
+
|
|
294
|
+
Args:
|
|
295
|
+
elements: list or dict of items returned from the endpoint
|
|
296
|
+
filter: optional filter string used in the request (for headings)
|
|
297
|
+
entity_type_name: logical report spec target name
|
|
298
|
+
output_format: desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID, HTML)
|
|
299
|
+
report_spec: a FormatSet dict or name resolved beforehand
|
|
300
|
+
extract_func: callable used to map element -> columns_struct values
|
|
301
|
+
"""
|
|
302
|
+
if entity_type_name is None:
|
|
303
|
+
entity_type = "Referenceable"
|
|
304
|
+
else:
|
|
305
|
+
entity_type = entity_type_name
|
|
306
|
+
|
|
307
|
+
columns_struct = None
|
|
308
|
+
if isinstance(report_spec, dict):
|
|
309
|
+
columns_struct = report_spec
|
|
310
|
+
elif isinstance(report_spec, str):
|
|
311
|
+
columns_struct = select_report_spec(report_spec, output_format)
|
|
312
|
+
else:
|
|
313
|
+
columns_struct = select_report_spec(entity_type, output_format)
|
|
314
|
+
|
|
315
|
+
if columns_struct is None:
|
|
316
|
+
columns_struct = select_report_spec("Default", output_format)
|
|
317
|
+
|
|
318
|
+
# Default extract function just maps columns by key
|
|
319
|
+
if extract_func is None:
|
|
320
|
+
extract_func = populate_columns_from_properties
|
|
321
|
+
|
|
322
|
+
return generate_output(
|
|
323
|
+
elements=elements,
|
|
324
|
+
search_string=filter or "All",
|
|
325
|
+
entity_type=entity_type,
|
|
326
|
+
output_format=output_format,
|
|
327
|
+
extract_properties_func=lambda e, cs=columns_struct: extract_func(e, cs),
|
|
328
|
+
get_additional_props_func=None,
|
|
329
|
+
columns_struct=columns_struct,
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
if __name__ == "__main__":
|
|
334
|
+
print("Main-Registered Info")
|