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,314 @@
|
|
|
1
|
+
"""
|
|
2
|
+
PDX-License-Identifier: Apache-2.0
|
|
3
|
+
Copyright Contributors to the ODPi Egeria project.
|
|
4
|
+
|
|
5
|
+
This module contains the Lineage Linker 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
|
+
NewRelationshipRequestBody,
|
|
16
|
+
RelationshipBeanProperties,
|
|
17
|
+
)
|
|
18
|
+
from pyegeria.core.utils import dynamic_catch
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class DataFlowProperties(RelationshipBeanProperties):
|
|
22
|
+
class_: Annotated[Literal["DataFlowProperties"], Field(alias="class")]
|
|
23
|
+
isc_qualified_name: Optional[str] = None
|
|
24
|
+
label: Optional[str] = None
|
|
25
|
+
description: Optional[str] = None
|
|
26
|
+
formula: Optional[str] = None
|
|
27
|
+
formula_type: Optional[str] = None
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class ControlFlowProperties(RelationshipBeanProperties):
|
|
31
|
+
class_: Annotated[Literal["ControlFlowProperties"], Field(alias="class")]
|
|
32
|
+
isc_qualified_name: Optional[str] = None
|
|
33
|
+
label: Optional[str] = None
|
|
34
|
+
description: Optional[str] = None
|
|
35
|
+
guard: Optional[str] = None
|
|
36
|
+
mandatory_guard: Optional[bool] = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ProcessCallProperties(RelationshipBeanProperties):
|
|
40
|
+
class_: Annotated[Literal["ProcessCallProperties"], Field(alias="class")]
|
|
41
|
+
isc_qualified_name: Optional[str] = None
|
|
42
|
+
label: Optional[str] = None
|
|
43
|
+
description: Optional[str] = None
|
|
44
|
+
formula: Optional[str] = None
|
|
45
|
+
formula_type: Optional[str] = None
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class LineageMappingProperties(RelationshipBeanProperties):
|
|
49
|
+
class_: Annotated[Literal["LineageMappingProperties"], Field(alias="class")]
|
|
50
|
+
isc_qualified_name: Optional[str] = None
|
|
51
|
+
label: Optional[str] = None
|
|
52
|
+
description: Optional[str] = None
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class DataMappingProperties(RelationshipBeanProperties):
|
|
56
|
+
class_: Annotated[Literal["DataMappingProperties"], Field(alias="class")]
|
|
57
|
+
isc_qualified_name: Optional[str] = None
|
|
58
|
+
label: Optional[str] = None
|
|
59
|
+
description: Optional[str] = None
|
|
60
|
+
formula: Optional[str] = None
|
|
61
|
+
formula_type: Optional[str] = None
|
|
62
|
+
query_id: Optional[str] = None
|
|
63
|
+
query: Optional[str] = None
|
|
64
|
+
query_type: Optional[str] = None
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class UltimateSourceProperties(RelationshipBeanProperties):
|
|
68
|
+
class_: Annotated[Literal["UltimateSourceProperties"], Field(alias="class")]
|
|
69
|
+
isc_qualified_name: Optional[str] = None
|
|
70
|
+
label: Optional[str] = None
|
|
71
|
+
description: Optional[str] = None
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class UltimateDestinationProperties(RelationshipBeanProperties):
|
|
75
|
+
class_: Annotated[Literal["UltimateDestinationProperties"], Field(alias="class")]
|
|
76
|
+
isc_qualified_name: Optional[str] = None
|
|
77
|
+
label: Optional[str] = None
|
|
78
|
+
description: Optional[str] = None
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class LineageLinker(ServerClient):
|
|
82
|
+
"""
|
|
83
|
+
Client for the Lineage Linker View Service.
|
|
84
|
+
|
|
85
|
+
The Lineage Linker View Service provides methods to manage lineage relationships.
|
|
86
|
+
|
|
87
|
+
Attributes
|
|
88
|
+
----------
|
|
89
|
+
view_server : str
|
|
90
|
+
The name of the View Server to use.
|
|
91
|
+
platform_url : str
|
|
92
|
+
URL of the server platform to connect to.
|
|
93
|
+
user_id : str
|
|
94
|
+
The identity of the user calling the method.
|
|
95
|
+
user_pwd : str
|
|
96
|
+
The password associated with the user_id. Defaults to None.
|
|
97
|
+
"""
|
|
98
|
+
|
|
99
|
+
def __init__(
|
|
100
|
+
self,
|
|
101
|
+
view_server: str,
|
|
102
|
+
platform_url: str,
|
|
103
|
+
user_id: str,
|
|
104
|
+
user_pwd: Optional[str] = None,
|
|
105
|
+
token: Optional[str] = None,
|
|
106
|
+
):
|
|
107
|
+
super().__init__(view_server, platform_url, user_id, user_pwd, token)
|
|
108
|
+
self.view_server = view_server
|
|
109
|
+
self.platform_url = platform_url
|
|
110
|
+
self.user_id = user_id
|
|
111
|
+
self.user_pwd = user_pwd
|
|
112
|
+
self.url_marker = "lineage-linker"
|
|
113
|
+
|
|
114
|
+
@dynamic_catch
|
|
115
|
+
async def _async_link_lineage(
|
|
116
|
+
self,
|
|
117
|
+
element_one_guid: str,
|
|
118
|
+
relationship_type_name: str,
|
|
119
|
+
element_two_guid: str,
|
|
120
|
+
body: dict | NewRelationshipRequestBody,
|
|
121
|
+
) -> str:
|
|
122
|
+
"""Create a lineage relationship between two elements. Async version.
|
|
123
|
+
|
|
124
|
+
Parameters
|
|
125
|
+
----------
|
|
126
|
+
element_one_guid : str
|
|
127
|
+
The unique identifier of the element at end one.
|
|
128
|
+
relationship_type_name : str
|
|
129
|
+
The name of the lineage relationship type (e.g., ControlFlow, ProcessCall, LineageMapping, etc.).
|
|
130
|
+
element_two_guid : str
|
|
131
|
+
The unique identifier of the element at end two.
|
|
132
|
+
body : dict | NewRelationshipRequestBody
|
|
133
|
+
The properties for the relationship.
|
|
134
|
+
|
|
135
|
+
Returns
|
|
136
|
+
-------
|
|
137
|
+
str
|
|
138
|
+
The unique identifier of the newly created relationship.
|
|
139
|
+
|
|
140
|
+
Raises
|
|
141
|
+
------
|
|
142
|
+
PyegeriaException
|
|
143
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
144
|
+
|
|
145
|
+
Notes
|
|
146
|
+
-----
|
|
147
|
+
Sample JSON body (for LineageMapping):
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"class" : "NewRelationshipRequestBody",
|
|
151
|
+
"properties": {
|
|
152
|
+
"class" : "LineageMappingProperties",
|
|
153
|
+
"iscQualifiedName": "add qualifiedName of information supply chain here",
|
|
154
|
+
"label": "add label here",
|
|
155
|
+
"description": "add description here"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
"""
|
|
160
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/lineage-linker/elements/{element_one_guid}/{relationship_type_name}/{element_two_guid}/attach"
|
|
161
|
+
response = await self._async_make_request("POST", url, body)
|
|
162
|
+
return response.json().get("guid")
|
|
163
|
+
|
|
164
|
+
def link_lineage(
|
|
165
|
+
self,
|
|
166
|
+
element_one_guid: str,
|
|
167
|
+
relationship_type_name: str,
|
|
168
|
+
element_two_guid: str,
|
|
169
|
+
body: dict | NewRelationshipRequestBody,
|
|
170
|
+
) -> str:
|
|
171
|
+
"""Create a lineage relationship between two elements.
|
|
172
|
+
|
|
173
|
+
Parameters
|
|
174
|
+
----------
|
|
175
|
+
element_one_guid : str
|
|
176
|
+
The unique identifier of the element at end one.
|
|
177
|
+
relationship_type_name : str
|
|
178
|
+
The name of the lineage relationship type (e.g., ControlFlow, ProcessCall, LineageMapping, etc.).
|
|
179
|
+
element_two_guid : str
|
|
180
|
+
The unique identifier of the element at end two.
|
|
181
|
+
body : dict | NewRelationshipRequestBody
|
|
182
|
+
The properties for the relationship.
|
|
183
|
+
|
|
184
|
+
Returns
|
|
185
|
+
-------
|
|
186
|
+
str
|
|
187
|
+
The unique identifier of the newly created relationship.
|
|
188
|
+
|
|
189
|
+
Raises
|
|
190
|
+
------
|
|
191
|
+
PyegeriaException
|
|
192
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
193
|
+
|
|
194
|
+
Notes
|
|
195
|
+
-----
|
|
196
|
+
Sample JSON body (for LineageMapping):
|
|
197
|
+
```json
|
|
198
|
+
{
|
|
199
|
+
"class" : "NewRelationshipRequestBody",
|
|
200
|
+
"properties": {
|
|
201
|
+
"class" : "LineageMappingProperties",
|
|
202
|
+
"iscQualifiedName": "add qualifiedName of information supply chain here",
|
|
203
|
+
"label": "add label here",
|
|
204
|
+
"description": "add description here"
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
"""
|
|
209
|
+
loop = asyncio.get_event_loop()
|
|
210
|
+
return loop.run_until_complete(
|
|
211
|
+
self._async_link_lineage(element_one_guid, relationship_type_name, element_two_guid, body)
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
@dynamic_catch
|
|
215
|
+
async def _async_link_data_flow(
|
|
216
|
+
self,
|
|
217
|
+
element_one_guid: str,
|
|
218
|
+
relationship_type_name: str,
|
|
219
|
+
element_two_guid: str,
|
|
220
|
+
body: dict | NewRelationshipRequestBody,
|
|
221
|
+
) -> str:
|
|
222
|
+
"""Create a data flow relationship between two elements. Async version.
|
|
223
|
+
|
|
224
|
+
Parameters
|
|
225
|
+
----------
|
|
226
|
+
element_one_guid : str
|
|
227
|
+
The unique identifier of the element at end one.
|
|
228
|
+
relationship_type_name : str
|
|
229
|
+
The name of the data flow relationship type.
|
|
230
|
+
element_two_guid : str
|
|
231
|
+
The unique identifier of the element at end two.
|
|
232
|
+
body : dict | NewRelationshipRequestBody
|
|
233
|
+
The properties for the relationship.
|
|
234
|
+
|
|
235
|
+
Returns
|
|
236
|
+
-------
|
|
237
|
+
str
|
|
238
|
+
The unique identifier of the newly created relationship.
|
|
239
|
+
|
|
240
|
+
Raises
|
|
241
|
+
------
|
|
242
|
+
PyegeriaException
|
|
243
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
244
|
+
|
|
245
|
+
Notes
|
|
246
|
+
-----
|
|
247
|
+
Sample JSON body:
|
|
248
|
+
```json
|
|
249
|
+
{
|
|
250
|
+
"class" : "NewRelationshipRequestBody",
|
|
251
|
+
"properties": {
|
|
252
|
+
"class" : "DataFlowProperties",
|
|
253
|
+
"iscQualifiedName": "add qualifiedName of information supply chain here",
|
|
254
|
+
"label": "add label here",
|
|
255
|
+
"description": "add description here",
|
|
256
|
+
"formula": "add formula here"
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
"""
|
|
261
|
+
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/lineage-linker/from-elements/{element_one_guid}/via/{relationship_type_name}/to-elements/{element_two_guid}/attach"
|
|
262
|
+
response = await self._async_make_request("POST", url, body)
|
|
263
|
+
return response.json().get("guid")
|
|
264
|
+
|
|
265
|
+
def link_data_flow(
|
|
266
|
+
self,
|
|
267
|
+
element_one_guid: str,
|
|
268
|
+
relationship_type_name: str,
|
|
269
|
+
element_two_guid: str,
|
|
270
|
+
body: dict | NewRelationshipRequestBody,
|
|
271
|
+
) -> str:
|
|
272
|
+
"""Create a data flow relationship between two elements.
|
|
273
|
+
|
|
274
|
+
Parameters
|
|
275
|
+
----------
|
|
276
|
+
element_one_guid : str
|
|
277
|
+
The unique identifier of the element at end one.
|
|
278
|
+
relationship_type_name : str
|
|
279
|
+
The name of the data flow relationship type.
|
|
280
|
+
element_two_guid : str
|
|
281
|
+
The unique identifier of the element at end two.
|
|
282
|
+
body : dict | NewRelationshipRequestBody
|
|
283
|
+
The properties for the relationship.
|
|
284
|
+
|
|
285
|
+
Returns
|
|
286
|
+
-------
|
|
287
|
+
str
|
|
288
|
+
The unique identifier of the newly created relationship.
|
|
289
|
+
|
|
290
|
+
Raises
|
|
291
|
+
------
|
|
292
|
+
PyegeriaException
|
|
293
|
+
If there are issues in communications, message format, or Egeria errors.
|
|
294
|
+
|
|
295
|
+
Notes
|
|
296
|
+
-----
|
|
297
|
+
Sample JSON body:
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"class" : "NewRelationshipRequestBody",
|
|
301
|
+
"properties": {
|
|
302
|
+
"class" : "DataFlowProperties",
|
|
303
|
+
"iscQualifiedName": "add qualifiedName of information supply chain here",
|
|
304
|
+
"label": "add label here",
|
|
305
|
+
"description": "add description here",
|
|
306
|
+
"formula": "add formula here"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
"""
|
|
311
|
+
loop = asyncio.get_event_loop()
|
|
312
|
+
return loop.run_until_complete(
|
|
313
|
+
self._async_link_data_flow(element_one_guid, relationship_type_name, element_two_guid, body)
|
|
314
|
+
)
|