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,446 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PDX-License-Identifier: Apache-2.0
|
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
+
|
|
5
|
+
This module contains the Schema Maker View Service client.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import asyncio
|
|
9
|
+
from typing import Annotated, Literal, Optional
|
|
10
|
+
|
|
11
|
+
from pydantic import Field
|
|
12
|
+
|
|
13
|
+
from pyegeria.core._server_client import ServerClient
|
|
14
|
+
from pyegeria.models import (
|
|
15
|
+
NewElementRequestBody,
|
|
16
|
+
DeleteElementRequestBody,
|
|
17
|
+
UpdateElementRequestBody,
|
|
18
|
+
SearchStringRequestBody,
|
|
19
|
+
GetRequestBody,
|
|
20
|
+
ReferenceableProperties,
|
|
21
|
+
)
|
|
22
|
+
from pyegeria.view.output_formatter import (
|
|
23
|
+
generate_output,
|
|
24
|
+
populate_common_columns,
|
|
25
|
+
overlay_additional_values,
|
|
26
|
+
)
|
|
27
|
+
from pyegeria.core.utils import dynamic_catch
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class SchemaTypeProperties(ReferenceableProperties):
|
|
31
|
+
class_: Annotated[Literal["SchemaTypeProperties"], Field(alias="class")]
|
|
32
|
+
is_deprecated: Optional[bool] = None
|
|
33
|
+
author: Optional[str] = None
|
|
34
|
+
usage: Optional[str] = None
|
|
35
|
+
encoding_standard: Optional[str] = None
|
|
36
|
+
namespace: Optional[str] = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class SchemaAttributeProperties(ReferenceableProperties):
|
|
40
|
+
class_: Annotated[Literal["SchemaAttributeProperties"], Field(alias="class")]
|
|
41
|
+
element_position: Optional[int] = None
|
|
42
|
+
min_cardinality: Optional[int] = None
|
|
43
|
+
max_cardinality: Optional[int] = None
|
|
44
|
+
allows_duplicate_values: Optional[bool] = None
|
|
45
|
+
is_ordered_values: Optional[bool] = None
|
|
46
|
+
default_value_override: Optional[str] = None
|
|
47
|
+
anchor_guid: Optional[str] = None
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class SchemaMaker(ServerClient):
|
|
51
|
+
"""
|
|
52
|
+
Client for the Schema Maker View Service.
|
|
53
|
+
|
|
54
|
+
The Schema Maker View Service provides methods to manage schema types and schema attributes.
|
|
55
|
+
|
|
56
|
+
Attributes
|
|
57
|
+
----------
|
|
58
|
+
view_server : str
|
|
59
|
+
The name of the View Server to use.
|
|
60
|
+
platform_url : str
|
|
61
|
+
URL of the server platform to connect to.
|
|
62
|
+
user_id : str
|
|
63
|
+
The identity of the user calling the method.
|
|
64
|
+
user_pwd : str
|
|
65
|
+
The password associated with the user_id. Defaults to None.
|
|
66
|
+
"""
|
|
67
|
+
|
|
68
|
+
def __init__(
|
|
69
|
+
self,
|
|
70
|
+
view_server: str,
|
|
71
|
+
platform_url: str,
|
|
72
|
+
user_id: str,
|
|
73
|
+
user_pwd: Optional[str] = None,
|
|
74
|
+
token: Optional[str] = None,
|
|
75
|
+
):
|
|
76
|
+
super().__init__(view_server, platform_url, user_id, user_pwd, token)
|
|
77
|
+
self.view_server = view_server
|
|
78
|
+
self.platform_url = platform_url
|
|
79
|
+
self.user_id = user_id
|
|
80
|
+
self.user_pwd = user_pwd
|
|
81
|
+
self.url_marker = "schema-maker"
|
|
82
|
+
|
|
83
|
+
def _extract_schema_properties(self, element: dict, columns_struct: dict) -> dict:
|
|
84
|
+
col_data = populate_common_columns(element, columns_struct)
|
|
85
|
+
props = element.get("properties", {})
|
|
86
|
+
overlay_additional_values(col_data, props)
|
|
87
|
+
return col_data
|
|
88
|
+
|
|
89
|
+
def _generate_schema_output(
|
|
90
|
+
self,
|
|
91
|
+
elements: dict | list[dict],
|
|
92
|
+
filter: Optional[str],
|
|
93
|
+
element_type_name: Optional[str],
|
|
94
|
+
output_format: str = "DICT",
|
|
95
|
+
report_spec: dict | str = None,
|
|
96
|
+
) -> str | list[dict]:
|
|
97
|
+
return generate_output(
|
|
98
|
+
elements,
|
|
99
|
+
filter,
|
|
100
|
+
element_type_name,
|
|
101
|
+
output_format,
|
|
102
|
+
self._extract_schema_properties,
|
|
103
|
+
None,
|
|
104
|
+
report_spec,
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
# Schema Types
|
|
108
|
+
|
|
109
|
+
@dynamic_catch
|
|
110
|
+
async def _async_create_schema_type(self, body: dict | NewElementRequestBody) -> str:
|
|
111
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-types"
|
|
112
|
+
return await self._async_create_element_body_request(url, "SchemaTypeProperties", body)
|
|
113
|
+
|
|
114
|
+
def create_schema_type(self, body: dict | NewElementRequestBody) -> str:
|
|
115
|
+
loop = asyncio.get_event_loop()
|
|
116
|
+
return loop.run_until_complete(self._async_create_schema_type(body))
|
|
117
|
+
|
|
118
|
+
@dynamic_catch
|
|
119
|
+
async def _async_update_schema_type(
|
|
120
|
+
self, schema_type_guid: str, body: dict | UpdateElementRequestBody
|
|
121
|
+
) -> None:
|
|
122
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-types/{schema_type_guid}/update"
|
|
123
|
+
await self._async_update_element_body_request(url, body)
|
|
124
|
+
|
|
125
|
+
def update_schema_type(self, schema_type_guid: str, body: dict | UpdateElementRequestBody) -> None:
|
|
126
|
+
loop = asyncio.get_event_loop()
|
|
127
|
+
loop.run_until_complete(self._async_update_schema_type(schema_type_guid, body))
|
|
128
|
+
|
|
129
|
+
@dynamic_catch
|
|
130
|
+
async def _async_delete_schema_type(
|
|
131
|
+
self, schema_type_guid: str, body: dict | DeleteElementRequestBody
|
|
132
|
+
) -> None:
|
|
133
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-types/{schema_type_guid}/delete"
|
|
134
|
+
await self._async_delete_element_body_request(url, body)
|
|
135
|
+
|
|
136
|
+
def delete_schema_type(self, schema_type_guid: str, body: dict | DeleteElementRequestBody) -> None:
|
|
137
|
+
loop = asyncio.get_event_loop()
|
|
138
|
+
loop.run_until_complete(self._async_delete_schema_type(schema_type_guid, body))
|
|
139
|
+
|
|
140
|
+
# Schema Attributes
|
|
141
|
+
|
|
142
|
+
@dynamic_catch
|
|
143
|
+
async def _async_create_schema_attribute(self, body: dict | NewElementRequestBody) -> str:
|
|
144
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-attributes"
|
|
145
|
+
return await self._async_create_element_body_request(url, "SchemaAttributeProperties", body)
|
|
146
|
+
|
|
147
|
+
def create_schema_attribute(self, body: dict | NewElementRequestBody) -> str:
|
|
148
|
+
loop = asyncio.get_event_loop()
|
|
149
|
+
return loop.run_until_complete(self._async_create_schema_attribute(body))
|
|
150
|
+
|
|
151
|
+
@dynamic_catch
|
|
152
|
+
async def _async_update_schema_attribute(
|
|
153
|
+
self, schema_attribute_guid: str, body: dict | UpdateElementRequestBody
|
|
154
|
+
) -> None:
|
|
155
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-attributes/{schema_attribute_guid}/update"
|
|
156
|
+
await self._async_update_element_body_request(url, body)
|
|
157
|
+
|
|
158
|
+
def update_schema_attribute(
|
|
159
|
+
self, schema_attribute_guid: str, body: dict | UpdateElementRequestBody
|
|
160
|
+
) -> None:
|
|
161
|
+
loop = asyncio.get_event_loop()
|
|
162
|
+
loop.run_until_complete(self._async_update_schema_attribute(schema_attribute_guid, body))
|
|
163
|
+
|
|
164
|
+
@dynamic_catch
|
|
165
|
+
async def _async_delete_schema_attribute(
|
|
166
|
+
self, schema_attribute_guid: str, body: dict | DeleteElementRequestBody
|
|
167
|
+
) -> None:
|
|
168
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-attributes/{schema_attribute_guid}/delete"
|
|
169
|
+
await self._async_delete_element_body_request(url, body)
|
|
170
|
+
|
|
171
|
+
def delete_schema_attribute(
|
|
172
|
+
self, schema_attribute_guid: str, body: dict | DeleteElementRequestBody
|
|
173
|
+
) -> None:
|
|
174
|
+
loop = asyncio.get_event_loop()
|
|
175
|
+
loop.run_until_complete(self._async_delete_schema_attribute(schema_attribute_guid, body))
|
|
176
|
+
|
|
177
|
+
@dynamic_catch
|
|
178
|
+
async def _async_find_schema_types(self, search_string: str = "*",
|
|
179
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
180
|
+
ignore_case: bool = False,
|
|
181
|
+
anchor_domain: Optional[str] = None,
|
|
182
|
+
metadata_element_type: Optional[str] = None,
|
|
183
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
184
|
+
skip_relationships: Optional[list[str]] = None,
|
|
185
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
186
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
187
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
188
|
+
graph_query_depth: int = 3,
|
|
189
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
190
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
191
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
192
|
+
sequencing_property: Optional[str] = None,
|
|
193
|
+
output_format: str = "JSON",
|
|
194
|
+
report_spec: str | dict = "Referenceable",
|
|
195
|
+
start_from: int = 0, page_size: int = 100,
|
|
196
|
+
property_names: Optional[list[str]] = None,
|
|
197
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
198
|
+
""" Retrieve the list of schema type metadata elements that contain the search string. Async Version.
|
|
199
|
+
|
|
200
|
+
Parameters
|
|
201
|
+
----------
|
|
202
|
+
search_string: str
|
|
203
|
+
Search string to match against - None or '*' indicate match against all schema types.
|
|
204
|
+
starts_with : bool, [default=True], optional
|
|
205
|
+
Starts with the supplied string.
|
|
206
|
+
ends_with : bool, [default=False], optional
|
|
207
|
+
Ends with the supplied string
|
|
208
|
+
ignore_case : bool, [default=False], optional
|
|
209
|
+
Ignore case when searching
|
|
210
|
+
anchor_domain: str, optional
|
|
211
|
+
The anchor domain to search in.
|
|
212
|
+
metadata_element_type: str, optional
|
|
213
|
+
The type of metadata element to search for.
|
|
214
|
+
metadata_element_subtypes: list[str], optional
|
|
215
|
+
The subtypes of metadata element to search for.
|
|
216
|
+
skip_relationships: list[str], optional
|
|
217
|
+
The types of relationships to skip.
|
|
218
|
+
include_only_relationships: list[str], optional
|
|
219
|
+
The types of relationships to include.
|
|
220
|
+
skip_classified_elements: list[str], optional
|
|
221
|
+
The types of classified elements to skip.
|
|
222
|
+
include_only_classified_elements: list[str], optional
|
|
223
|
+
The types of classified elements to include.
|
|
224
|
+
graph_query_depth: int, [default=3], optional
|
|
225
|
+
The depth of the graph query.
|
|
226
|
+
governance_zone_filter: list[str], optional
|
|
227
|
+
The governance zones to search in.
|
|
228
|
+
as_of_time: str, optional
|
|
229
|
+
The time to search as of.
|
|
230
|
+
effective_time: str, optional
|
|
231
|
+
The effective time to search at.
|
|
232
|
+
relationship_page_size: int, [default=0], optional
|
|
233
|
+
The page size for relationships.
|
|
234
|
+
limit_results_by_status: list[str], optional
|
|
235
|
+
The statuses to limit results by.
|
|
236
|
+
sequencing_order: str, optional
|
|
237
|
+
The order to sequence results by.
|
|
238
|
+
sequencing_property: str, optional
|
|
239
|
+
The property to sequence results by.
|
|
240
|
+
output_format: str, default = "JSON"
|
|
241
|
+
- one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
|
|
242
|
+
report_spec: str | dict , optional, default = "Referenceable"
|
|
243
|
+
- The desired output columns/fields to include.
|
|
244
|
+
start_from: int, [default=0], optional
|
|
245
|
+
When multiple pages of results are available, the page number to start from.
|
|
246
|
+
page_size: int, [default=100]
|
|
247
|
+
The number of items to return in a single page.
|
|
248
|
+
property_names: list[str], optional
|
|
249
|
+
The names of properties to search for.
|
|
250
|
+
body: dict | SearchStringRequestBody, optional, default = None
|
|
251
|
+
- if provided, the search parameters in the body will supercede other attributes, such as "search_string"
|
|
252
|
+
|
|
253
|
+
Returns
|
|
254
|
+
-------
|
|
255
|
+
List | str
|
|
256
|
+
|
|
257
|
+
Output depends on the output format specified.
|
|
258
|
+
|
|
259
|
+
Raises
|
|
260
|
+
-------
|
|
261
|
+
|
|
262
|
+
ValidationError
|
|
263
|
+
If the client passes incorrect parameters on the request that don't conform to the data model.
|
|
264
|
+
PyegeriaException
|
|
265
|
+
Issues raised in communicating or server side processing.
|
|
266
|
+
NotAuthorizedException
|
|
267
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
268
|
+
|
|
269
|
+
"""
|
|
270
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-types/by-search-string"
|
|
271
|
+
response = await self._async_find_request(url, _type="SchemaType", _gen_output=self._generate_schema_output,
|
|
272
|
+
search_string=search_string, starts_with=starts_with,
|
|
273
|
+
ends_with=ends_with, ignore_case=ignore_case,
|
|
274
|
+
anchor_domain=anchor_domain,
|
|
275
|
+
metadata_element_type=metadata_element_type,
|
|
276
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
277
|
+
skip_relationships=skip_relationships,
|
|
278
|
+
include_only_relationships=include_only_relationships,
|
|
279
|
+
skip_classified_elements=skip_classified_elements,
|
|
280
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
281
|
+
graph_query_depth=graph_query_depth,
|
|
282
|
+
governance_zone_filter=governance_zone_filter,
|
|
283
|
+
as_of_time=as_of_time, effective_time=effective_time,
|
|
284
|
+
relationship_page_size=relationship_page_size,
|
|
285
|
+
limit_results_by_status=limit_results_by_status,
|
|
286
|
+
sequencing_order=sequencing_order,
|
|
287
|
+
sequencing_property=sequencing_property,
|
|
288
|
+
output_format=output_format, report_spec=report_spec,
|
|
289
|
+
start_from=start_from, page_size=page_size,
|
|
290
|
+
property_names=property_names, body=body)
|
|
291
|
+
|
|
292
|
+
return response
|
|
293
|
+
|
|
294
|
+
@dynamic_catch
|
|
295
|
+
def find_schema_types(self, search_string: str = "*",
|
|
296
|
+
starts_with: bool = True, ends_with: bool = False,
|
|
297
|
+
ignore_case: bool = False,
|
|
298
|
+
anchor_domain: Optional[str] = None,
|
|
299
|
+
metadata_element_type: Optional[str] = None,
|
|
300
|
+
metadata_element_subtypes: Optional[list[str]] = None,
|
|
301
|
+
skip_relationships: Optional[list[str]] = None,
|
|
302
|
+
include_only_relationships: Optional[list[str]] = None,
|
|
303
|
+
skip_classified_elements: Optional[list[str]] = None,
|
|
304
|
+
include_only_classified_elements: Optional[list[str]] = None,
|
|
305
|
+
graph_query_depth: int = 3,
|
|
306
|
+
governance_zone_filter: Optional[list[str]] = None, as_of_time: Optional[str] = None,
|
|
307
|
+
effective_time: Optional[str] = None, relationship_page_size: int = 0,
|
|
308
|
+
limit_results_by_status: Optional[list[str]] = None, sequencing_order: Optional[str] = None,
|
|
309
|
+
sequencing_property: Optional[str] = None,
|
|
310
|
+
output_format: str = "JSON",
|
|
311
|
+
report_spec: str | dict = "Referenceable",
|
|
312
|
+
start_from: int = 0, page_size: int = 100,
|
|
313
|
+
property_names: Optional[list[str]] = None,
|
|
314
|
+
body: Optional[dict | SearchStringRequestBody] = None) -> list | str:
|
|
315
|
+
""" Retrieve the list of schema type metadata elements that contain the search string.
|
|
316
|
+
|
|
317
|
+
Parameters
|
|
318
|
+
----------
|
|
319
|
+
search_string: str
|
|
320
|
+
Search string to match against - None or '*' indicate match against all schema types.
|
|
321
|
+
starts_with : bool, [default=True], optional
|
|
322
|
+
Starts with the supplied string.
|
|
323
|
+
ends_with : bool, [default=False], optional
|
|
324
|
+
Ends with the supplied string
|
|
325
|
+
ignore_case : bool, [default=False], optional
|
|
326
|
+
Ignore case when searching
|
|
327
|
+
anchor_domain: str, optional
|
|
328
|
+
The anchor domain to search in.
|
|
329
|
+
metadata_element_type: str, optional
|
|
330
|
+
The type of metadata element to search for.
|
|
331
|
+
metadata_element_subtypes: list[str], optional
|
|
332
|
+
The subtypes of metadata element to search for.
|
|
333
|
+
skip_relationships: list[str], optional
|
|
334
|
+
The types of relationships to skip.
|
|
335
|
+
include_only_relationships: list[str], optional
|
|
336
|
+
The types of relationships to include.
|
|
337
|
+
skip_classified_elements: list[str], optional
|
|
338
|
+
The types of classified elements to skip.
|
|
339
|
+
include_only_classified_elements: list[str], optional
|
|
340
|
+
The types of classified elements to include.
|
|
341
|
+
graph_query_depth: int, [default=3], optional
|
|
342
|
+
The depth of the graph query.
|
|
343
|
+
governance_zone_filter: list[str], optional
|
|
344
|
+
The governance zones to search in.
|
|
345
|
+
as_of_time: str, optional
|
|
346
|
+
The time to search as of.
|
|
347
|
+
effective_time: str, optional
|
|
348
|
+
The effective time to search at.
|
|
349
|
+
relationship_page_size: int, [default=0], optional
|
|
350
|
+
The page size for relationships.
|
|
351
|
+
limit_results_by_status: list[str], optional
|
|
352
|
+
The statuses to limit results by.
|
|
353
|
+
sequencing_order: str, optional
|
|
354
|
+
The order to sequence results by.
|
|
355
|
+
sequencing_property: str, optional
|
|
356
|
+
The property to sequence results by.
|
|
357
|
+
output_format: str, default = "JSON"
|
|
358
|
+
- one of "MD", "LIST", "FORM", "REPORT", "DICT", "MERMAID" or "JSON"
|
|
359
|
+
report_spec: str | dict , optional, default = "Referenceable"
|
|
360
|
+
- The desired output columns/fields to include.
|
|
361
|
+
start_from: int, [default=0], optional
|
|
362
|
+
When multiple pages of results are available, the page number to start from.
|
|
363
|
+
page_size: int, [default=100]
|
|
364
|
+
The number of items to return in a single page.
|
|
365
|
+
property_names: list[str], optional
|
|
366
|
+
The names of properties to search for.
|
|
367
|
+
body: dict | SearchStringRequestBody, optional, default = None
|
|
368
|
+
- if provided, the search parameters in the body will supercede other attributes, such as "search_string"
|
|
369
|
+
|
|
370
|
+
Returns
|
|
371
|
+
-------
|
|
372
|
+
List | str
|
|
373
|
+
|
|
374
|
+
Output depends on the output format specified.
|
|
375
|
+
|
|
376
|
+
Raises
|
|
377
|
+
-------
|
|
378
|
+
|
|
379
|
+
ValidationError
|
|
380
|
+
If the client passes incorrect parameters on the request that don't conform to the data model.
|
|
381
|
+
PyegeriaException
|
|
382
|
+
Issues raised in communicating or server side processing.
|
|
383
|
+
NotAuthorizedException
|
|
384
|
+
The principle specified by the user_id does not have authorization for the requested action
|
|
385
|
+
|
|
386
|
+
"""
|
|
387
|
+
loop = asyncio.get_event_loop()
|
|
388
|
+
return loop.run_until_complete(self._async_find_schema_types(search_string=search_string,
|
|
389
|
+
starts_with=starts_with,
|
|
390
|
+
ends_with=ends_with,
|
|
391
|
+
ignore_case=ignore_case,
|
|
392
|
+
anchor_domain=anchor_domain,
|
|
393
|
+
metadata_element_type=metadata_element_type,
|
|
394
|
+
metadata_element_subtypes=metadata_element_subtypes,
|
|
395
|
+
skip_relationships=skip_relationships,
|
|
396
|
+
include_only_relationships=include_only_relationships,
|
|
397
|
+
skip_classified_elements=skip_classified_elements,
|
|
398
|
+
include_only_classified_elements=include_only_classified_elements,
|
|
399
|
+
graph_query_depth=graph_query_depth,
|
|
400
|
+
governance_zone_filter=governance_zone_filter,
|
|
401
|
+
as_of_time=as_of_time,
|
|
402
|
+
effective_time=effective_time,
|
|
403
|
+
relationship_page_size=relationship_page_size,
|
|
404
|
+
limit_results_by_status=limit_results_by_status,
|
|
405
|
+
sequencing_order=sequencing_order,
|
|
406
|
+
sequencing_property=sequencing_property,
|
|
407
|
+
output_format=output_format,
|
|
408
|
+
report_spec=report_spec,
|
|
409
|
+
start_from=start_from,
|
|
410
|
+
page_size=page_size,
|
|
411
|
+
property_names=property_names,
|
|
412
|
+
body=body))
|
|
413
|
+
|
|
414
|
+
@dynamic_catch
|
|
415
|
+
async def _async_get_schema_type_by_guid(
|
|
416
|
+
self,
|
|
417
|
+
schema_type_guid: str,
|
|
418
|
+
element_type: str = "SchemaType",
|
|
419
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
420
|
+
output_format: str = "JSON",
|
|
421
|
+
report_spec: str | dict = "SchemaTypes",
|
|
422
|
+
) -> dict | str:
|
|
423
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/schema-maker/schema-types/{schema_type_guid}/retrieve"
|
|
424
|
+
return await self._async_get_guid_request(
|
|
425
|
+
url,
|
|
426
|
+
_type=element_type,
|
|
427
|
+
_gen_output=self._generate_schema_output,
|
|
428
|
+
output_format=output_format,
|
|
429
|
+
report_spec=report_spec,
|
|
430
|
+
body=body,
|
|
431
|
+
)
|
|
432
|
+
|
|
433
|
+
def get_schema_type_by_guid(
|
|
434
|
+
self,
|
|
435
|
+
schema_type_guid: str,
|
|
436
|
+
element_type: str = "SchemaType",
|
|
437
|
+
body: Optional[dict | GetRequestBody] = None,
|
|
438
|
+
output_format: str = "JSON",
|
|
439
|
+
report_spec: str | dict = "SchemaTypes",
|
|
440
|
+
) -> dict | str:
|
|
441
|
+
loop = asyncio.get_event_loop()
|
|
442
|
+
return loop.run_until_complete(
|
|
443
|
+
self._async_get_schema_type_by_guid(
|
|
444
|
+
schema_type_guid, element_type, body, output_format, report_spec
|
|
445
|
+
)
|
|
446
|
+
)
|
|
@@ -9,26 +9,25 @@ Copyright Contributors to the ODPi Egeria project.
|
|
|
9
9
|
import asyncio
|
|
10
10
|
|
|
11
11
|
from requests import Response
|
|
12
|
+
from typing import Any, Optional
|
|
13
|
+
from pyegeria.omvs.platform_services import Platform
|
|
14
|
+
from pyegeria.core._validators import validate_name
|
|
12
15
|
|
|
13
|
-
from pyegeria.platform_services import Platform
|
|
14
|
-
from pyegeria._validators import validate_name
|
|
15
|
-
from pyegeria._globals import NO_ELEMENTS_FOUND
|
|
16
16
|
|
|
17
17
|
class ServerOps(Platform):
|
|
18
18
|
"""
|
|
19
19
|
Client to issue operations on a running OMAG server.
|
|
20
20
|
|
|
21
|
-
Attributes
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
21
|
+
Attributes
|
|
22
|
+
----------
|
|
23
|
+
server_name : str
|
|
24
|
+
Name of the server to use.
|
|
25
|
+
platform_url : str
|
|
26
|
+
URL of the server platform to connect to.
|
|
27
|
+
user_id : str
|
|
28
|
+
The identity of the user calling the method.
|
|
29
|
+
user_pwd : str
|
|
30
|
+
The password associated with the user_id. Defaults to None.
|
|
32
31
|
"""
|
|
33
32
|
|
|
34
33
|
def __init__(
|
|
@@ -36,11 +35,13 @@ class ServerOps(Platform):
|
|
|
36
35
|
server_name: str,
|
|
37
36
|
platform_url: str,
|
|
38
37
|
user_id: str,
|
|
39
|
-
user_pwd: str = None,
|
|
38
|
+
user_pwd: Optional[str] = None,
|
|
39
|
+
token: Optional[str] = None,
|
|
40
40
|
):
|
|
41
|
-
Platform.__init__(self, server_name, platform_url, user_id, user_pwd)
|
|
41
|
+
Platform.__init__(self, server_name, platform_url, user_id, user_pwd, token=token)
|
|
42
42
|
self.ops_command_root = (
|
|
43
|
-
f"{self.platform_url}/open-metadata/server-operations/users/{user_id}"
|
|
43
|
+
# f"{self.platform_url}/open-metadata/server-operations/users/{user_id}"
|
|
44
|
+
f"{self.platform_url}/open-metadata/server-operations/"
|
|
44
45
|
)
|
|
45
46
|
|
|
46
47
|
async def _async_get_active_configuration(self, server: str = None) -> dict | str:
|
|
@@ -89,7 +90,7 @@ class ServerOps(Platform):
|
|
|
89
90
|
# Archive Files
|
|
90
91
|
#
|
|
91
92
|
async def _async_add_archive_file(
|
|
92
|
-
self, archive_file: str, server: str = None, timeout: int = 60
|
|
93
|
+
self, archive_file: str, server: Optional[str] = None, timeout: int = 60
|
|
93
94
|
) -> None:
|
|
94
95
|
"""
|
|
95
96
|
Load the server with the contents of the indicated archive file.
|
|
@@ -115,10 +116,10 @@ class ServerOps(Platform):
|
|
|
115
116
|
+ "/instance/open-metadata-archives/file"
|
|
116
117
|
)
|
|
117
118
|
|
|
118
|
-
await self._async_make_request("POST-DATA", url, archive_file,
|
|
119
|
+
await self._async_make_request("POST-DATA", url, archive_file, time_out=timeout)
|
|
119
120
|
|
|
120
121
|
def add_archive_file(
|
|
121
|
-
self, archive_file: str, server: str = None, timeout: int = 30
|
|
122
|
+
self, archive_file: str, server: Optional[str] = None, timeout: int = 30
|
|
122
123
|
) -> None:
|
|
123
124
|
"""
|
|
124
125
|
Load the server with the contents of the indicated archive file.
|
|
@@ -211,9 +212,9 @@ class ServerOps(Platform):
|
|
|
211
212
|
|
|
212
213
|
Raises
|
|
213
214
|
------
|
|
214
|
-
|
|
215
|
+
PyegeriaInvalidParameterException
|
|
215
216
|
If the client passes incorrect parameters on the request - such as bad URLs or invalid values
|
|
216
|
-
|
|
217
|
+
PyegeriaAPIException
|
|
217
218
|
Raised by the server when an issue arises in processing a valid request
|
|
218
219
|
NotAuthorizedException
|
|
219
220
|
The principle specified by the user_id does not have authorization for the requested action
|
|
@@ -241,9 +242,9 @@ class ServerOps(Platform):
|
|
|
241
242
|
|
|
242
243
|
Raises
|
|
243
244
|
------
|
|
244
|
-
|
|
245
|
+
PyegeriaInvalidParameterException
|
|
245
246
|
If the client passes incorrect parameters on the request - such as bad URLs or invalid values
|
|
246
|
-
|
|
247
|
+
PyegeriaAPIException
|
|
247
248
|
Raised by the server when an issue arises in processing a valid request
|
|
248
249
|
NotAuthorizedException
|
|
249
250
|
The principle specified by the user_id does not have authorization for the requested action
|
|
@@ -429,7 +430,7 @@ class ServerOps(Platform):
|
|
|
429
430
|
return response
|
|
430
431
|
|
|
431
432
|
async def _async_refresh_integration_connectors(
|
|
432
|
-
self, connector_name: str = "all", server: str = None, time_out: int = 60
|
|
433
|
+
self, connector_name: str = "all", server: Optional[str] = None, time_out: int = 60
|
|
433
434
|
) -> None:
|
|
434
435
|
"""Issue a refresh request to all connectors running in the integration daemon, or a specific connector
|
|
435
436
|
if one is specified - async version"""
|
|
@@ -451,7 +452,7 @@ class ServerOps(Platform):
|
|
|
451
452
|
return
|
|
452
453
|
|
|
453
454
|
def refresh_integration_connectors(
|
|
454
|
-
self, connector_name: str, server: str = None, time_out: int = 60
|
|
455
|
+
self, connector_name: str, server: Optional[str] = None, time_out: int = 60
|
|
455
456
|
) -> None:
|
|
456
457
|
"""Restart the integration Connector specified by connector_name"""
|
|
457
458
|
loop = asyncio.get_event_loop()
|