pyegeria 5.4.3.4__py3-none-any.whl → 5.4.4.1__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.
- commands/cat/dr_egeria_command_help.py +11 -17
- commands/cat/list_format_set.py +3 -1
- md_processing/__init__.py +9 -1
- md_processing/data/commands.json +6951 -541
- md_processing/data/generated_format_sets.json +4137 -0
- md_processing/data/generated_format_sets.py +51 -0
- md_processing/dr_egeria.py +14 -2
- md_processing/md_commands/ext_ref_commands.py +543 -0
- md_processing/md_commands/old_solution_architect_commands.py +1139 -0
- md_processing/md_commands/solution_architect_commands.py +26 -59
- md_processing/md_processing_utils/debug_log +186 -3
- md_processing/md_processing_utils/debug_log.2025-09-09_11-10-03_528597.zip +0 -0
- md_processing/md_processing_utils/dr-egeria-help-2025-09-09T11:10:03.md +3305 -0
- md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:49:49.md +3460 -0
- md_processing/md_processing_utils/dr-egeria-help-2025-09-10T14:57:46.md +472 -0
- md_processing/md_processing_utils/gen_format_sets.py +422 -0
- md_processing/md_processing_utils/generate_md_cmd_templates.py +4 -4
- md_processing/md_processing_utils/md_processing_constants.py +19 -1
- pyegeria/_output_formats.py +240 -86
- pyegeria/collection_manager.py +3 -3
- pyegeria/egeria_tech_client.py +3 -0
- pyegeria/external_references.py +1794 -0
- pyegeria/glossary_manager.py +2 -2
- pyegeria/solution_architect.py +290 -485
- {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/METADATA +1 -1
- {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/RECORD +29 -205
- commands/.DS_Store +0 -0
- commands/cat/.DS_Store +0 -0
- commands/cat/.env +0 -8
- commands/cat/debug_log.2025-08-29_07-07-27_848189.log.zip +0 -0
- commands/cat/debug_log.2025-08-30_21-15-48_528443.log.zip +0 -0
- commands/cat/debug_log.2025-09-01_07-02-58_818650.log.zip +0 -0
- commands/cat/debug_log.2025-09-02_07-44-39_567276.log.zip +0 -0
- commands/cat/debug_log.2025-09-03_07-45-21_986388.log.zip +0 -0
- commands/cat/debug_log.log +0 -7276
- commands/cat/logs/pyegeria.log +0 -90
- commands/cli/debug_log.log +0 -0
- commands/doc/.DS_Store +0 -0
- commands/ops/logs/pyegeria.log +0 -0
- md_processing/.DS_Store +0 -0
- md_processing/.idea/.gitignore +0 -8
- md_processing/.idea/inspectionProfiles/Project_Default.xml +0 -59
- md_processing/.idea/md_processing.iml +0 -15
- md_processing/.idea/modules.xml +0 -8
- md_processing/.idea/sonarlint/issuestore/index.pb +0 -0
- md_processing/.idea/sonarlint/securityhotspotstore/index.pb +0 -0
- md_processing/.idea/vcs.xml +0 -6
- md_processing/.idea/workspace.xml +0 -107
- md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +0 -8
- md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +0 -873
- md_processing/dr_egeria_inbox/arch_test.md +0 -57
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +0 -696
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +0 -254
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +0 -298
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +0 -608
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +0 -94
- md_processing/dr_egeria_inbox/archive/freddie_intro.md +0 -284
- md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +0 -275
- md_processing/dr_egeria_inbox/archive/test-term.md +0 -110
- md_processing/dr_egeria_inbox/cat_test.md +0 -100
- md_processing/dr_egeria_inbox/collections.md +0 -39
- md_processing/dr_egeria_inbox/data_designer_debug.log +0 -6
- md_processing/dr_egeria_inbox/data_designer_out.md +0 -60
- md_processing/dr_egeria_inbox/data_designer_search_test.md +0 -11
- md_processing/dr_egeria_inbox/data_field.md +0 -54
- md_processing/dr_egeria_inbox/data_spec.md +0 -77
- md_processing/dr_egeria_inbox/data_spec_test.md +0 -2014
- md_processing/dr_egeria_inbox/data_test.md +0 -179
- md_processing/dr_egeria_inbox/data_test2.md +0 -429
- md_processing/dr_egeria_inbox/data_test3.md +0 -462
- md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +0 -124
- md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +0 -168
- md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +0 -280
- md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +0 -318
- md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +0 -1073
- md_processing/dr_egeria_inbox/dr_egeria_isc1.md +0 -44
- md_processing/dr_egeria_inbox/generated_help_report.md +0 -9
- md_processing/dr_egeria_inbox/generated_help_terms.md +0 -842
- md_processing/dr_egeria_inbox/glossary_list.md +0 -5
- md_processing/dr_egeria_inbox/glossary_search_test.md +0 -40
- md_processing/dr_egeria_inbox/glossary_test1.md +0 -378
- md_processing/dr_egeria_inbox/gov_def.md +0 -718
- md_processing/dr_egeria_inbox/gov_def2.md +0 -447
- md_processing/dr_egeria_inbox/img.png +0 -0
- md_processing/dr_egeria_inbox/output_tests.md +0 -114
- md_processing/dr_egeria_inbox/product.md +0 -219
- md_processing/dr_egeria_inbox/rel.md +0 -8
- md_processing/dr_egeria_inbox/sb.md +0 -119
- md_processing/dr_egeria_inbox/solution-components.md +0 -136
- md_processing/dr_egeria_inbox/solution_blueprints.md +0 -118
- md_processing/dr_egeria_inbox/synonym_test.md +0 -42
- md_processing/dr_egeria_inbox/t2.md +0 -268
- md_processing/dr_egeria_outbox/.DS_Store +0 -0
- md_processing/dr_egeria_outbox/.obsidian/app.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/appearance.json +0 -1
- md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +0 -7
- md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +0 -33
- md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/main.js +0 -5164
- md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/manifest.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/buttons/styles.css +0 -624
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +0 -4459
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +0 -10
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +0 -3
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +0 -153
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +0 -500
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +0 -12
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +0 -1
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/data.json +0 -38
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +0 -37
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +0 -11
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +0 -220
- md_processing/dr_egeria_outbox/.obsidian/types.json +0 -28
- md_processing/dr_egeria_outbox/.obsidian/workspace.json +0 -270
- md_processing/dr_egeria_outbox/Button Test.md +0 -11
- md_processing/dr_egeria_outbox/Scripts/.DS_Store +0 -0
- md_processing/dr_egeria_outbox/Scripts/sendRest.js +0 -24
- md_processing/dr_egeria_outbox/Templates/sendToApi.md.md +0 -17
- md_processing/dr_egeria_outbox/Untitled.canvas +0 -1
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 09:26-product.md +0 -210
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:03-product.md +0 -209
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 14:24-product.md +0 -263
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:03-data_spec_test.md +0 -2374
- md_processing/dr_egeria_outbox/monday/processed-2025-09-01 16:05-data_spec_test.md +0 -2374
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:28-data_spec_test.md +0 -2321
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:37-data_spec_test.md +0 -2304
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 08:56-data_spec_test.md +0 -2324
- md_processing/dr_egeria_outbox/monday/processed-2025-09-02 09:00-data_spec_test.md +0 -2324
- md_processing/dr_egeria_outbox/processed-2025-08-30 16:56-generated_help_terms.md +0 -795
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +0 -719
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +0 -41
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +0 -33
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +0 -192
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +0 -486
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +0 -486
- md_processing/family_docs/Data Designer/Create_Data_Class.md +0 -164
- md_processing/family_docs/Data Designer/Create_Data_Dictionary.md +0 -30
- md_processing/family_docs/Data Designer/Create_Data_Field.md +0 -162
- md_processing/family_docs/Data Designer/Create_Data_Specification.md +0 -36
- md_processing/family_docs/Data Designer/Create_Data_Structure.md +0 -38
- md_processing/family_docs/Data Designer/View_Data_Classes.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Dictionaries.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Fields.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Specifications.md +0 -78
- md_processing/family_docs/Data Designer/View_Data_Structures.md +0 -78
- md_processing/family_docs/Data Designer.md +0 -842
- md_processing/family_docs/Digital Product Manager/Add_Member->Collection.md +0 -42
- md_processing/family_docs/Digital Product Manager/Attach_Collection->Resource.md +0 -36
- md_processing/family_docs/Digital Product Manager/Create_Agreement.md +0 -96
- md_processing/family_docs/Digital Product Manager/Create_Data_Sharing_Agreement.md +0 -72
- md_processing/family_docs/Digital Product Manager/Create_DigitalSubscription.md +0 -102
- md_processing/family_docs/Digital Product Manager/Create_Digital_Product.md +0 -134
- md_processing/family_docs/Digital Product Manager/Link_Agreement_Items.md +0 -60
- md_processing/family_docs/Digital Product Manager/Link_Contracts.md +0 -26
- md_processing/family_docs/Digital Product Manager/Link_Digital_Product_-_Digital_Product.md +0 -30
- md_processing/family_docs/Digital Product Manager/Link_Subscribers.md +0 -48
- md_processing/family_docs/Digital Product Manager.md +0 -668
- md_processing/family_docs/Glossary/Attach_Category_Parent.md +0 -18
- md_processing/family_docs/Glossary/Attach_Term-Term_Relationship.md +0 -26
- md_processing/family_docs/Glossary/Create_Category.md +0 -38
- md_processing/family_docs/Glossary/Create_Glossary.md +0 -42
- md_processing/family_docs/Glossary/Create_Term.md +0 -70
- md_processing/family_docs/Glossary.md +0 -206
- md_processing/family_docs/Governance Officer/Create_Business_Imperative.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Certification_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Governance_Approach.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Obligation.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Principle.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Governance_Procedure.md +0 -128
- md_processing/family_docs/Governance Officer/Create_Governance_Process.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Processing_Purpose.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Governance_Responsibility.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Governance_Strategy.md +0 -106
- md_processing/family_docs/Governance Officer/Create_License_Type.md +0 -112
- md_processing/family_docs/Governance Officer/Create_Naming_Standard_Rule.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Regulation_Article.md +0 -106
- md_processing/family_docs/Governance Officer/Create_Regulation_Definition.md +0 -118
- md_processing/family_docs/Governance Officer/Create_Security_Access_Control.md +0 -114
- md_processing/family_docs/Governance Officer/Create_Security_Group.md +0 -120
- md_processing/family_docs/Governance Officer/Create_Service_Level_Objectives.md +0 -122
- md_processing/family_docs/Governance Officer/Create_Threat_Definition.md +0 -106
- md_processing/family_docs/Governance Officer/Link_Governance_Controls.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Drivers.md +0 -32
- md_processing/family_docs/Governance Officer/Link_Governance_Policies.md +0 -32
- md_processing/family_docs/Governance Officer/View_Governance_Definitions.md +0 -82
- md_processing/family_docs/Governance Officer.md +0 -2412
- md_processing/family_docs/Solution Architect/Create_Information_Supply_Chain.md +0 -70
- md_processing/family_docs/Solution Architect/Create_Solution_Blueprint.md +0 -44
- md_processing/family_docs/Solution Architect/Create_Solution_Component.md +0 -96
- md_processing/family_docs/Solution Architect/Create_Solution_Role.md +0 -66
- md_processing/family_docs/Solution Architect/Link_Information_Supply_Chain_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/Link_Solution_Component_Peers.md +0 -32
- md_processing/family_docs/Solution Architect/View_Information_Supply_Chains.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Blueprints.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Components.md +0 -32
- md_processing/family_docs/Solution Architect/View_Solution_Roles.md +0 -32
- md_processing/family_docs/Solution Architect.md +0 -490
- md_processing/md_commands/old_project_commands.py +0 -164
- md_processing/md_processing_utils/debug_log.log +0 -5580
- md_processing/md_processing_utils/generated_help_terms.md +0 -842
- md_processing/md_processing_utils/logs/pyegeria.log +0 -56
- pyegeria/.DS_Store +0 -0
- pyegeria/___external_references.py +0 -3255
- {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/LICENSE +0 -0
- {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/WHEEL +0 -0
- {pyegeria-5.4.3.4.dist-info → pyegeria-5.4.4.1.dist-info}/entry_points.txt +0 -0
pyegeria/solution_architect.py
CHANGED
@@ -15,9 +15,10 @@ from httpx import Response
|
|
15
15
|
from loguru import logger
|
16
16
|
|
17
17
|
from pyegeria.models import NewElementRequestBody, TemplateRequestBody, UpdateElementRequestBody, \
|
18
|
-
NewRelationshipRequestBody, DeleteRequestBody, UpdateStatusRequestBody
|
18
|
+
NewRelationshipRequestBody, DeleteRequestBody, UpdateStatusRequestBody, SearchStringRequestBody
|
19
19
|
from pyegeria.output_formatter import make_preamble, make_md_attribute, generate_output, extract_mermaid_only, \
|
20
|
-
extract_basic_dict, MD_SEPARATOR
|
20
|
+
extract_basic_dict, MD_SEPARATOR, populate_common_columns
|
21
|
+
from pyegeria._output_formats import select_output_format_set, get_output_format_type_match
|
21
22
|
from pyegeria import validate_guid
|
22
23
|
from pyegeria.governance_officer import GovernanceOfficer
|
23
24
|
from pyegeria._client_new import Client2, max_paging_size
|
@@ -224,7 +225,7 @@ class SolutionArchitect(Client2):
|
|
224
225
|
else:
|
225
226
|
return []
|
226
227
|
|
227
|
-
def _extract_info_supply_chain_properties(self, element: dict) -> dict:
|
228
|
+
def _extract_info_supply_chain_properties(self, element: dict, columns_struct: dict) -> dict:
|
228
229
|
"""
|
229
230
|
Extract properties from an information supply chain element.
|
230
231
|
|
@@ -234,63 +235,18 @@ class SolutionArchitect(Client2):
|
|
234
235
|
Returns:
|
235
236
|
Dictionary with extracted properties
|
236
237
|
"""
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
additional_properties = properties.get("additionalProperties", {})
|
250
|
-
mer = element.get('mermaidGraph', None)
|
251
|
-
|
252
|
-
|
253
|
-
parents = element.get("parents", [])
|
254
|
-
parents_list = []
|
255
|
-
if parents:
|
256
|
-
for sub in parents:
|
257
|
-
sub_rel_label = sub.get('relationshipProperties',{}).get("label", None)
|
258
|
-
sub_qn = sub['relatedElement']['properties']['qualifiedName']
|
259
|
-
sub_lab = f"--> <{sub_rel_label}> -->" if sub_rel_label else ""
|
260
|
-
sub_info = f"{sub_lab} {sub_qn}"
|
261
|
-
parents_list.append(sub_info)
|
262
|
-
|
263
|
-
peer_supply_chains = element.get("links", {})
|
264
|
-
peer_supply_chains_list = []
|
265
|
-
if peer_supply_chains:
|
266
|
-
for peer in peer_supply_chains:
|
267
|
-
peer_supply_chain_qnames = peer['relatedElement']['properties'].get("qualifiedName", "")
|
268
|
-
peer_supply_chain_label = peer['relationshipProperties'].get('label', None)
|
269
|
-
peer_lab = f"==> <{peer_supply_chain_label}> ==>" if peer_supply_chain_label else ""
|
270
|
-
peer_supply_chains_list.append(f"{peer_lab} {peer_supply_chain_qnames}")
|
271
|
-
|
272
|
-
implemented_by = element.get("implementedByList", {})
|
273
|
-
implemented_by_qnames = []
|
274
|
-
if implemented_by:
|
275
|
-
for peer in peer_supply_chains:
|
276
|
-
implemented_by_qnames.append(peer['relatedElement']['properties'].get("qualifiedName", ""))
|
277
|
-
|
278
|
-
return {
|
279
|
-
'GUID': guid,
|
280
|
-
'qualified_name': qualified_name,
|
281
|
-
'display_name': display_name,
|
282
|
-
'description': description,
|
283
|
-
'scope': scope,
|
284
|
-
'purposes': purpose_md,
|
285
|
-
'extended_properties': extended_properties,
|
286
|
-
'additional_properties': additional_properties,
|
287
|
-
'parents_list': parents_list,
|
288
|
-
'links': peer_supply_chains_list,
|
289
|
-
'implemented_by': implemented_by_qnames,
|
290
|
-
'mermaid': mer
|
291
|
-
}
|
292
|
-
|
293
|
-
def _extract_solution_blueprint_properties(self, element: dict) -> dict:
|
238
|
+
# Follow common extractor pattern using populate_common_columns
|
239
|
+
return populate_common_columns(
|
240
|
+
element,
|
241
|
+
columns_struct,
|
242
|
+
include_header=True,
|
243
|
+
include_relationships=True,
|
244
|
+
include_subject_area=True,
|
245
|
+
mermaid_source_key='mermaidGraph',
|
246
|
+
mermaid_dest_key='mermaid'
|
247
|
+
)
|
248
|
+
|
249
|
+
def _extract_solution_blueprint_properties(self, element: dict, columns_struct: dict) -> dict:
|
294
250
|
"""
|
295
251
|
Extract properties from a solution blueprint element.
|
296
252
|
|
@@ -300,34 +256,17 @@ class SolutionArchitect(Client2):
|
|
300
256
|
Returns:
|
301
257
|
Dictionary with extracted properties
|
302
258
|
"""
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
sol_comp_prop = solution_component['solutionComponent']['properties']
|
315
|
-
sol_comp_name = sol_comp_prop.get("displayName", None)
|
316
|
-
sol_comp_desc = sol_comp_prop.get("description", None)
|
317
|
-
solution_components_md += '{' + f" {sol_comp_name}:\t {sol_comp_desc}" + " },\n"
|
318
|
-
mer = f"```mermaid\n\n{element.get('mermaidGraph', None)}\n\n```"
|
319
|
-
|
320
|
-
return {
|
321
|
-
'GUID': guid,
|
322
|
-
'qualified_name': qualified_name,
|
323
|
-
'display_name': display_name,
|
324
|
-
'description': description,
|
325
|
-
'version': version,
|
326
|
-
'solution_components': solution_components_md,
|
327
|
-
'mermaid': mer
|
328
|
-
}
|
329
|
-
|
330
|
-
def _extract_solution_roles_properties(self, element: dict) -> dict:
|
259
|
+
return populate_common_columns(
|
260
|
+
element,
|
261
|
+
columns_struct,
|
262
|
+
include_header=True,
|
263
|
+
include_relationships=True,
|
264
|
+
include_subject_area=True,
|
265
|
+
mermaid_source_key='mermaidGraph',
|
266
|
+
mermaid_dest_key='mermaid'
|
267
|
+
)
|
268
|
+
|
269
|
+
def _extract_solution_roles_properties(self, element: dict, columns_struct: dict) -> dict:
|
331
270
|
"""
|
332
271
|
Extract properties from a solution role element.
|
333
272
|
|
@@ -337,35 +276,15 @@ class SolutionArchitect(Client2):
|
|
337
276
|
Returns:
|
338
277
|
Dictionary with extracted properties
|
339
278
|
"""
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
solution_components = element.get('solutionComponents', None)
|
350
|
-
solution_components_md = ""
|
351
|
-
if solution_components:
|
352
|
-
for solution_component in solution_components:
|
353
|
-
sol_comp_prop = solution_component.get('relationshipProperties', None)
|
354
|
-
if sol_comp_prop:
|
355
|
-
sol_comp_name = sol_comp_prop.get("role", None)
|
356
|
-
sol_comp_desc = sol_comp_prop.get("description", None)
|
357
|
-
solution_components_md += "{" + f" {sol_comp_name}:\t {sol_comp_desc}" + " },\n"
|
358
|
-
|
359
|
-
return {
|
360
|
-
'GUID': guid,
|
361
|
-
'qualified_name': qualified_name,
|
362
|
-
'display_name': display_name,
|
363
|
-
'description': description,
|
364
|
-
'role_id': role_id,
|
365
|
-
'scope': scope,
|
366
|
-
'domain_identifier': domain_identifier,
|
367
|
-
'solution_components': solution_components_md
|
368
|
-
}
|
279
|
+
return populate_common_columns(
|
280
|
+
element,
|
281
|
+
columns_struct,
|
282
|
+
include_header=True,
|
283
|
+
include_relationships=True,
|
284
|
+
include_subject_area=True,
|
285
|
+
mermaid_source_key='mermaidGraph',
|
286
|
+
mermaid_dest_key='mermaid'
|
287
|
+
)
|
369
288
|
|
370
289
|
|
371
290
|
|
@@ -552,7 +471,7 @@ class SolutionArchitect(Client2):
|
|
552
471
|
else:
|
553
472
|
return []
|
554
473
|
|
555
|
-
def _extract_solution_components_properties(self, element: Union[Dict,List[Dict]]) -> dict:
|
474
|
+
def _extract_solution_components_properties(self, element: Union[Dict,List[Dict]], columns_struct: dict) -> dict:
|
556
475
|
"""
|
557
476
|
Extract properties from a solution component element.
|
558
477
|
|
@@ -563,125 +482,51 @@ class SolutionArchitect(Client2):
|
|
563
482
|
Dictionary with extracted properties
|
564
483
|
"""
|
565
484
|
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
extended_props = properties.get("extendedProperties", None)
|
576
|
-
extended_props_md = ""
|
577
|
-
if extended_props:
|
578
|
-
for key in extended_props.keys():
|
579
|
-
extended_props_md += "{" + f" {key}: {extended_props[key]}" + " }, "
|
580
|
-
|
581
|
-
# Extract additional properties
|
582
|
-
additional_props = properties.get("additionalProperties", None)
|
583
|
-
additional_props_md = ""
|
584
|
-
if additional_props:
|
585
|
-
for key in additional_props.keys():
|
586
|
-
additional_props_md += "{" + f" {key}: {additional_props[key]}" + " }, "
|
587
|
-
|
588
|
-
rel_elements = self._get_component_rel_elements_dict(element)
|
589
|
-
|
590
|
-
# actors
|
591
|
-
actors_md = ", ".join(rel_elements.get("actor.qnames", []) )
|
592
|
-
|
593
|
-
# Extract blueprints & supply chains
|
594
|
-
blueprints_md = ", ".join(rel_elements.get("blueprint_qnames",[]))
|
595
|
-
owning_supply_chains_md = ", ".join(rel_elements.get("owning_info_supply_chain_qnames",[]))
|
596
|
-
|
597
|
-
# Extract parent components
|
598
|
-
parent_comp_md = ", ".join(rel_elements.get("parent_qnames",[]))
|
599
|
-
|
600
|
-
# Extract sub-components
|
601
|
-
sub_comp_md = ", ".join(rel_elements.get("sub_component_qnames",[]))
|
602
|
-
|
603
|
-
# wired from and to
|
604
|
-
wired_from_md = ", ".join(rel_elements.get("wired_from_qnames",[]))
|
605
|
-
wired_to_md = ", ".join(rel_elements.get("wired_to_qnames",[]))
|
606
|
-
|
607
|
-
|
608
|
-
comp_graph = element.get('mermaidGraph', None)
|
609
|
-
|
610
|
-
return {
|
611
|
-
'GUID': guid,
|
612
|
-
'qualified_name': qualified_name,
|
613
|
-
'display_name': display_name,
|
614
|
-
'description': description,
|
615
|
-
'component_type': component_type,
|
616
|
-
'version': version,
|
617
|
-
'blueprints': blueprints_md,
|
618
|
-
'owning_supply_chains': owning_supply_chains_md,
|
619
|
-
'actors': actors_md,
|
620
|
-
'parent_components': parent_comp_md,
|
621
|
-
'sub_components': sub_comp_md,
|
622
|
-
'wired_from_components': wired_from_md,
|
623
|
-
'wired_to_components': wired_to_md,
|
624
|
-
'additional_properties': additional_props_md,
|
625
|
-
'extended_properties': extended_props_md,
|
626
|
-
'mermaid_graph': comp_graph
|
627
|
-
}
|
485
|
+
return populate_common_columns(
|
486
|
+
element,
|
487
|
+
columns_struct,
|
488
|
+
include_header=True,
|
489
|
+
include_relationships=True,
|
490
|
+
include_subject_area=True,
|
491
|
+
mermaid_source_key='mermaidGraph',
|
492
|
+
mermaid_dest_key='mermaid'
|
493
|
+
)
|
628
494
|
|
629
495
|
#
|
630
496
|
# Markdown output support
|
631
497
|
#
|
632
|
-
def generate_info_supply_chain_output(self, elements: list | dict, search_string: str,
|
633
|
-
output_format: str = 'MD') -> str | list:
|
634
|
-
"""
|
635
|
-
Generate output for information supply chains in the specified format.
|
636
|
-
|
637
|
-
Args:
|
638
|
-
elements: Dictionary or list of dictionaries containing information supply chain elements
|
639
|
-
search_string: The search string used to find the elements
|
640
|
-
output_format: The desired output format (MD, FORM, REPORT, LIST, DICT, MERMAID, HTML)
|
641
|
-
|
642
|
-
Returns:
|
643
|
-
Formatted output as string or list of dictionaries
|
498
|
+
def generate_info_supply_chain_output(self, elements: list | dict, search_string: str, element_type_name: str | None,
|
499
|
+
output_format: str = 'MD', output_format_set: dict | str = None) -> str | list:
|
500
|
+
"""Render Information Supply Chains using the shared output pipeline.
|
644
501
|
"""
|
645
|
-
# Handle MERMAID and DICT formats
|
646
502
|
if output_format == "MERMAID":
|
647
503
|
return extract_mermaid_only(elements)
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
)
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
entity_type="Information Supply Chain",
|
675
|
-
output_format=output_format,
|
676
|
-
extract_properties_func=self._extract_info_supply_chain_properties,
|
677
|
-
columns=columns if output_format == 'LIST' else None
|
678
|
-
)
|
679
|
-
|
680
|
-
# Default case
|
681
|
-
return None
|
682
|
-
|
683
|
-
def generate_solution_blueprint_output(self, elements: list | dict, search_string: str,
|
684
|
-
output_format: str = 'MD') -> str | list:
|
504
|
+
|
505
|
+
entity_type = "Information Supply Chain"
|
506
|
+
if output_format_set:
|
507
|
+
if isinstance(output_format_set, str):
|
508
|
+
output_formats = select_output_format_set(output_format_set, output_format)
|
509
|
+
elif isinstance(output_format_set, dict):
|
510
|
+
output_formats = get_output_format_type_match(output_format_set, output_format)
|
511
|
+
else:
|
512
|
+
output_formats = None
|
513
|
+
else:
|
514
|
+
output_formats = select_output_format_set("Information Supply Chains", output_format)
|
515
|
+
if output_formats is None:
|
516
|
+
output_formats = select_output_format_set("Default", output_format)
|
517
|
+
|
518
|
+
return generate_output(
|
519
|
+
elements=elements,
|
520
|
+
search_string=search_string,
|
521
|
+
entity_type=entity_type,
|
522
|
+
output_format=output_format,
|
523
|
+
extract_properties_func=self._extract_info_supply_chain_properties,
|
524
|
+
get_additional_props_func=None,
|
525
|
+
columns_struct=output_formats,
|
526
|
+
)
|
527
|
+
|
528
|
+
def generate_solution_blueprint_output(self, elements: list | dict, search_string: str, element_type_name: str | None,
|
529
|
+
output_format: str = 'MD', output_format_set: dict | str = None) -> str | list:
|
685
530
|
"""
|
686
531
|
Generate output for solution blueprints in the specified format.
|
687
532
|
|
@@ -693,43 +538,34 @@ class SolutionArchitect(Client2):
|
|
693
538
|
Returns:
|
694
539
|
Formatted output as string or list of dictionaries
|
695
540
|
"""
|
696
|
-
# Handle MERMAID and DICT formats
|
697
541
|
if output_format == "MERMAID":
|
698
542
|
return extract_mermaid_only(elements)
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
extract_properties_func=self._extract_solution_blueprint_properties,
|
726
|
-
columns=columns if output_format == 'LIST' else None
|
727
|
-
)
|
728
|
-
|
729
|
-
# Default case
|
730
|
-
return None
|
731
|
-
|
732
|
-
def generate_solution_roles_output(self, elements: list | dict, search_string: str, output_format: str = 'MD') -> str | list:
|
543
|
+
|
544
|
+
entity_type = "Solution Blueprint"
|
545
|
+
if output_format_set:
|
546
|
+
if isinstance(output_format_set, str):
|
547
|
+
output_formats = select_output_format_set(output_format_set, output_format)
|
548
|
+
elif isinstance(output_format_set, dict):
|
549
|
+
output_formats = get_output_format_type_match(output_format_set, output_format)
|
550
|
+
else:
|
551
|
+
output_formats = None
|
552
|
+
else:
|
553
|
+
output_formats = select_output_format_set("Solution Blueprints", output_format)
|
554
|
+
if output_formats is None:
|
555
|
+
output_formats = select_output_format_set("Default", output_format)
|
556
|
+
|
557
|
+
return generate_output(
|
558
|
+
elements=elements,
|
559
|
+
search_string=search_string,
|
560
|
+
entity_type=entity_type,
|
561
|
+
output_format=output_format,
|
562
|
+
extract_properties_func=self._extract_solution_blueprint_properties,
|
563
|
+
get_additional_props_func=None,
|
564
|
+
columns_struct=output_formats,
|
565
|
+
)
|
566
|
+
|
567
|
+
def generate_solution_roles_output(self, elements: list | dict, search_string: str, element_type_name: str | None,
|
568
|
+
output_format: str = 'MD', output_format_set: dict | str = None) -> str | list:
|
733
569
|
"""
|
734
570
|
Generate output for solution roles in the specified format.
|
735
571
|
|
@@ -741,45 +577,34 @@ class SolutionArchitect(Client2):
|
|
741
577
|
Returns:
|
742
578
|
Formatted output as string or list of dictionaries
|
743
579
|
"""
|
744
|
-
# Handle MERMAID and DICT formats
|
745
580
|
if output_format == "MERMAID":
|
746
581
|
return extract_mermaid_only(elements)
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
output_format=output_format,
|
774
|
-
extract_properties_func=self._extract_solution_roles_properties,
|
775
|
-
columns=columns if output_format == 'LIST' else None
|
776
|
-
)
|
777
|
-
|
778
|
-
# Default case
|
779
|
-
return None
|
780
|
-
|
781
|
-
def generate_solution_components_output(self, elements: list | dict, search_string: str,
|
782
|
-
output_format: str = 'MD') -> str | list:
|
582
|
+
|
583
|
+
entity_type = "Solution Role"
|
584
|
+
if output_format_set:
|
585
|
+
if isinstance(output_format_set, str):
|
586
|
+
output_formats = select_output_format_set(output_format_set, output_format)
|
587
|
+
elif isinstance(output_format_set, dict):
|
588
|
+
output_formats = get_output_format_type_match(output_format_set, output_format)
|
589
|
+
else:
|
590
|
+
output_formats = None
|
591
|
+
else:
|
592
|
+
output_formats = select_output_format_set("Solution Roles", output_format)
|
593
|
+
if output_formats is None:
|
594
|
+
output_formats = select_output_format_set("Default", output_format)
|
595
|
+
|
596
|
+
return generate_output(
|
597
|
+
elements=elements,
|
598
|
+
search_string=search_string,
|
599
|
+
entity_type=entity_type,
|
600
|
+
output_format=output_format,
|
601
|
+
extract_properties_func=self._extract_solution_roles_properties,
|
602
|
+
get_additional_props_func=None,
|
603
|
+
columns_struct=output_formats,
|
604
|
+
)
|
605
|
+
|
606
|
+
def generate_solution_components_output(self, elements: list | dict, search_string: str, element_type_name: str | None,
|
607
|
+
output_format: str = 'MD', output_format_set: dict | str = None) -> str | list:
|
783
608
|
"""
|
784
609
|
Generate output for solution components in the specified format.
|
785
610
|
|
@@ -796,43 +621,31 @@ class SolutionArchitect(Client2):
|
|
796
621
|
Returns:
|
797
622
|
Formatted output as string or list of dictionaries
|
798
623
|
"""
|
799
|
-
# Handle MERMAID and DICT formats
|
800
624
|
if output_format == "MERMAID":
|
801
625
|
return extract_mermaid_only(elements)
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
return generate_output(
|
826
|
-
elements=elements,
|
827
|
-
search_string=search_string,
|
828
|
-
entity_type="Solution Component",
|
829
|
-
output_format=output_format,
|
830
|
-
extract_properties_func=self._extract_solution_components_properties,
|
831
|
-
columns=columns if output_format == 'LIST' else None
|
832
|
-
)
|
833
|
-
|
834
|
-
# Default case
|
835
|
-
return None
|
626
|
+
|
627
|
+
entity_type = "Solution Component"
|
628
|
+
if output_format_set:
|
629
|
+
if isinstance(output_format_set, str):
|
630
|
+
output_formats = select_output_format_set(output_format_set, output_format)
|
631
|
+
elif isinstance(output_format_set, dict):
|
632
|
+
output_formats = get_output_format_type_match(output_format_set, output_format)
|
633
|
+
else:
|
634
|
+
output_formats = None
|
635
|
+
else:
|
636
|
+
output_formats = select_output_format_set("Solution Components", output_format)
|
637
|
+
if output_formats is None:
|
638
|
+
output_formats = select_output_format_set("Default", output_format)
|
639
|
+
|
640
|
+
return generate_output(
|
641
|
+
elements=elements,
|
642
|
+
search_string=search_string,
|
643
|
+
entity_type=entity_type,
|
644
|
+
output_format=output_format,
|
645
|
+
extract_properties_func=self._extract_solution_components_properties,
|
646
|
+
get_additional_props_func=None,
|
647
|
+
columns_struct=output_formats,
|
648
|
+
)
|
836
649
|
|
837
650
|
@dynamic_catch
|
838
651
|
async def _async_create_info_supply_chain(self, body: dict | NewElementRequestBody) -> str:
|
@@ -1751,8 +1564,13 @@ class SolutionArchitect(Client2):
|
|
1751
1564
|
loop = asyncio.get_event_loop()
|
1752
1565
|
loop.run_until_complete(self._async_delete_info_supply_chain(guid, body, cascade_delete))
|
1753
1566
|
|
1754
|
-
def find_all_information_supply_chains(self,
|
1755
|
-
|
1567
|
+
def find_all_information_supply_chains(self, search_string: str = "*", classification_names: list[str] = None,
|
1568
|
+
metadata_element_types: list[str] = None,
|
1569
|
+
starts_with: bool = True, ends_with: bool = False,
|
1570
|
+
ignore_case: bool = False, start_from: int = 0,
|
1571
|
+
page_size: int = 0, output_format: str = 'JSON',
|
1572
|
+
output_format_set: str = None,
|
1573
|
+
body: dict| SearchStringRequestBody = None) -> (list[dict] | str):
|
1756
1574
|
""" Retrieve a list of all information supply chains
|
1757
1575
|
Parameters
|
1758
1576
|
----------
|
@@ -1799,14 +1617,15 @@ class SolutionArchitect(Client2):
|
|
1799
1617
|
}
|
1800
1618
|
"""
|
1801
1619
|
|
1802
|
-
return self.find_information_supply_chains("*",
|
1803
|
-
output_format=output_format)
|
1620
|
+
return self.find_information_supply_chains("*", classification_names, metadata_element_types, starts_with, ends_with, ignore_case, start_from, page_size, output_format, output_format_set, body)
|
1804
1621
|
|
1805
|
-
async def _async_find_information_supply_chains(self,
|
1622
|
+
async def _async_find_information_supply_chains(self, search_string: str = "*", classification_names: list[str] = None,
|
1623
|
+
metadata_element_types: list[str] = None,
|
1806
1624
|
starts_with: bool = True, ends_with: bool = False,
|
1807
1625
|
ignore_case: bool = False, start_from: int = 0,
|
1808
|
-
page_size: int =
|
1809
|
-
|
1626
|
+
page_size: int = 0, output_format: str = 'JSON',
|
1627
|
+
output_format_set: str = None,
|
1628
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
1810
1629
|
"""Retrieve the list of information supply chain metadata elements that contain the search string.
|
1811
1630
|
https://egeria-project.org/concepts/information-supply-chain
|
1812
1631
|
Async version.
|
@@ -1862,39 +1681,26 @@ class SolutionArchitect(Client2):
|
|
1862
1681
|
}
|
1863
1682
|
|
1864
1683
|
"""
|
1865
|
-
starts_with_s = str(starts_with).lower()
|
1866
|
-
ends_with_s = str(ends_with).lower()
|
1867
|
-
ignore_case_s = str(ignore_case).lower()
|
1868
1684
|
|
1869
|
-
|
1870
|
-
|
1871
|
-
|
1872
|
-
|
1873
|
-
|
1874
|
-
|
1875
|
-
|
1876
|
-
|
1877
|
-
|
1878
|
-
|
1879
|
-
|
1880
|
-
|
1881
|
-
|
1882
|
-
|
1883
|
-
|
1884
|
-
|
1885
|
-
|
1886
|
-
|
1887
|
-
|
1888
|
-
if element == NO_ELEMENTS_FOUND:
|
1889
|
-
return NO_ELEMENTS_FOUND
|
1890
|
-
if output_format != 'JSON': # return a simplified markdown representation
|
1891
|
-
return self.generate_info_supply_chain_output(element, search_filter, output_format)
|
1892
|
-
return response.json().get("elements", NO_ELEMENTS_FOUND)
|
1893
|
-
|
1894
|
-
def find_information_supply_chains(self, filter: str = "*", add_implementation: bool = True,
|
1895
|
-
starts_with: bool = True, ends_with: bool = False, ignore_case: bool = False,
|
1896
|
-
start_from: int = 0, page_size: int = max_paging_size, body: dict = None,
|
1897
|
-
output_format: str = 'JSON', ) -> list[dict] | str:
|
1685
|
+
url = f"{self.solution_architect_command_root}/information-supply-chains/by-search-string"
|
1686
|
+
return await self._async_find_request(url, _type="GovernanceDefinition",
|
1687
|
+
_gen_output=self.generate_info_supply_chain_output,
|
1688
|
+
search_string=search_string, classification_names=classification_names,
|
1689
|
+
metadata_element_types=metadata_element_types,
|
1690
|
+
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
1691
|
+
start_from=start_from, page_size=page_size,
|
1692
|
+
output_format=output_format, output_format_set=output_format_set,
|
1693
|
+
body=body)
|
1694
|
+
|
1695
|
+
|
1696
|
+
|
1697
|
+
def find_information_supply_chains(self, search_string: str = "*", classification_names: list[str] = None,
|
1698
|
+
metadata_element_types: list[str] = None,
|
1699
|
+
starts_with: bool = True, ends_with: bool = False,
|
1700
|
+
ignore_case: bool = False, start_from: int = 0,
|
1701
|
+
page_size: int = 0, output_format: str = 'JSON',
|
1702
|
+
output_format_set: str = None,
|
1703
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
1898
1704
|
"""Retrieve the list of information supply chain metadata elements that contain the search string.
|
1899
1705
|
https://egeria-project.org/concepts/information-supply-chain
|
1900
1706
|
|
@@ -1943,7 +1749,7 @@ class SolutionArchitect(Client2):
|
|
1943
1749
|
-----
|
1944
1750
|
|
1945
1751
|
{
|
1946
|
-
"class" : "
|
1752
|
+
"class" : "SearchStringRequestBody",
|
1947
1753
|
"asOfTime" : "{{$isoTimestamp}}",
|
1948
1754
|
"effectiveTime" : "{{$isoTimestamp}}",
|
1949
1755
|
"forLineage" : false,
|
@@ -1957,8 +1763,10 @@ class SolutionArchitect(Client2):
|
|
1957
1763
|
|
1958
1764
|
loop = asyncio.get_event_loop()
|
1959
1765
|
response = loop.run_until_complete(
|
1960
|
-
self._async_find_information_supply_chains(
|
1961
|
-
|
1766
|
+
self._async_find_information_supply_chains(search_string, classification_names, metadata_element_types,
|
1767
|
+
starts_with, ends_with, ignore_case,
|
1768
|
+
start_from, page_size, output_format,
|
1769
|
+
output_format_set, body))
|
1962
1770
|
return response
|
1963
1771
|
|
1964
1772
|
async def _async_get_info_supply_chain_by_name(self, search_filter: str, body: dict = None,
|
@@ -3187,10 +2995,13 @@ class SolutionArchitect(Client2):
|
|
3187
2995
|
|
3188
2996
|
|
3189
2997
|
|
3190
|
-
async def _async_find_solution_blueprints(self,
|
3191
|
-
|
3192
|
-
|
3193
|
-
|
2998
|
+
async def _async_find_solution_blueprints(self, search_string: str = "*", classification_names: list[str] = None,
|
2999
|
+
metadata_element_types: list[str] = None,
|
3000
|
+
starts_with: bool = True, ends_with: bool = False,
|
3001
|
+
ignore_case: bool = False, start_from: int = 0,
|
3002
|
+
page_size: int = 0, output_format: str = 'JSON',
|
3003
|
+
output_format_set: str = None,
|
3004
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
3194
3005
|
"""Retrieve the solution blueprint elements that contain the search string.
|
3195
3006
|
https://egeria-project.org/concepts/solution-blueprint
|
3196
3007
|
Async version.
|
@@ -3243,37 +3054,28 @@ class SolutionArchitect(Client2):
|
|
3243
3054
|
}
|
3244
3055
|
|
3245
3056
|
"""
|
3246
|
-
starts_with_s = str(starts_with).lower()
|
3247
|
-
ends_with_s = str(ends_with).lower()
|
3248
|
-
ignore_case_s = str(ignore_case).lower()
|
3249
3057
|
|
3250
|
-
possible_query_params = query_string(
|
3251
|
-
[("startFrom", start_from), ("pageSize", page_size),
|
3252
|
-
("startsWith", starts_with_s), ("endsWith", ends_with_s), ("ignoreCase", ignore_case_s), ])
|
3253
3058
|
|
3254
|
-
if search_filter is None or search_filter == "*":
|
3255
|
-
search_filter = None
|
3256
3059
|
|
3257
|
-
if body is None:
|
3258
|
-
body = {
|
3259
|
-
"filter": search_filter,
|
3260
|
-
}
|
3261
|
-
else:
|
3262
|
-
body["filter"] = search_filter
|
3263
3060
|
|
3264
|
-
url =
|
3265
|
-
|
3266
|
-
|
3267
|
-
|
3268
|
-
|
3269
|
-
|
3270
|
-
|
3271
|
-
|
3272
|
-
|
3061
|
+
url = f"{self.solution_architect_command_root}/solution-blueprints/by-search-string"
|
3062
|
+
return await self._async_find_request(url, _type="GovernanceDefinition",
|
3063
|
+
_gen_output=self.generate_info_supply_chain_output,
|
3064
|
+
search_string=search_string, classification_names=classification_names,
|
3065
|
+
metadata_element_types=metadata_element_types,
|
3066
|
+
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
3067
|
+
start_from=start_from, page_size=page_size,
|
3068
|
+
output_format=output_format, output_format_set=output_format_set,
|
3069
|
+
body=body)
|
3273
3070
|
|
3274
|
-
|
3275
|
-
|
3276
|
-
|
3071
|
+
|
3072
|
+
def find_solution_blueprints(self, search_string: str = "*", classification_names: list[str] = None,
|
3073
|
+
metadata_element_types: list[str] = None,
|
3074
|
+
starts_with: bool = True, ends_with: bool = False,
|
3075
|
+
ignore_case: bool = False, start_from: int = 0,
|
3076
|
+
page_size: int = 0, output_format: str = 'JSON',
|
3077
|
+
output_format_set: str = None,
|
3078
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
3277
3079
|
"""Retrieve the list of solution blueprint elements that contain the search string.
|
3278
3080
|
https://egeria-project.org/concepts/solution-blueprint
|
3279
3081
|
|
@@ -3333,17 +3135,24 @@ class SolutionArchitect(Client2):
|
|
3333
3135
|
|
3334
3136
|
loop = asyncio.get_event_loop()
|
3335
3137
|
response = loop.run_until_complete(
|
3336
|
-
self._async_find_solution_blueprints(
|
3337
|
-
|
3138
|
+
self._async_find_solution_blueprints(search_string, classification_names, metadata_element_types,
|
3139
|
+
starts_with, ends_with, ignore_case, start_from,
|
3140
|
+
page_size, output_format, output_format_set, body))
|
3338
3141
|
return response
|
3339
3142
|
|
3340
|
-
def find_all_solution_blueprints(self,
|
3341
|
-
|
3143
|
+
def find_all_solution_blueprints(self, classification_names: list[str] = None,
|
3144
|
+
metadata_element_types: list[str] = None,
|
3145
|
+
starts_with: bool = True, ends_with: bool = False,
|
3146
|
+
ignore_case: bool = False, start_from: int = 0,
|
3147
|
+
page_size: int = 0, output_format: str = 'JSON',
|
3148
|
+
output_format_set: str = None,
|
3149
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
3342
3150
|
"""Retrieve a list of all solution blueprint elements
|
3343
3151
|
https://egeria-project.org/concepts/solution-blueprint
|
3344
3152
|
"""
|
3345
|
-
return self.find_solution_blueprints("*",
|
3346
|
-
|
3153
|
+
return self.find_solution_blueprints("*", classification_names, metadata_element_types,
|
3154
|
+
starts_with, ends_with, ignore_case, start_from,
|
3155
|
+
page_size, output_format, output_format_set, body)
|
3347
3156
|
|
3348
3157
|
|
3349
3158
|
async def _async_get_solution_blueprint_by_guid(self, guid: str, body: dict = None,
|
@@ -4496,10 +4305,13 @@ class SolutionArchitect(Client2):
|
|
4496
4305
|
loop = asyncio.get_event_loop()
|
4497
4306
|
loop.run_until_complete(self._async_delete_solution_component(solution_component_guid, cascade_delete, body))
|
4498
4307
|
|
4499
|
-
async def _async_find_solution_components(self,
|
4500
|
-
|
4501
|
-
|
4502
|
-
|
4308
|
+
async def _async_find_solution_components(self, search_string: str = "*", classification_names: list[str] = None,
|
4309
|
+
metadata_element_types: list[str] = None,
|
4310
|
+
starts_with: bool = True, ends_with: bool = False,
|
4311
|
+
ignore_case: bool = False, start_from: int = 0,
|
4312
|
+
page_size: int = 0, output_format: str = 'JSON',
|
4313
|
+
output_format_set: str = None,
|
4314
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
4503
4315
|
""" Retrieve the solution component elements that contain the search string. The solutions components returned
|
4504
4316
|
include information about consumers, actors, and other solution components that are associated with them.
|
4505
4317
|
https://egeria-project.org/concepts/solution-components
|
@@ -4555,35 +4367,26 @@ class SolutionArchitect(Client2):
|
|
4555
4367
|
}
|
4556
4368
|
"""
|
4557
4369
|
|
4558
|
-
starts_with_s = str(starts_with).lower()
|
4559
|
-
ends_with_s = str(ends_with).lower()
|
4560
|
-
ignore_case_s = str(ignore_case).lower()
|
4561
|
-
|
4562
|
-
possible_query_params = query_string(
|
4563
|
-
[ ("startFrom", start_from), ("pageSize", page_size),
|
4564
|
-
("startsWith", starts_with_s), ("endsWith", ends_with_s), ("ignoreCase", ignore_case_s), ])
|
4565
4370
|
|
4566
|
-
if search_filter is None or search_filter == "*":
|
4567
|
-
search_filter = None
|
4568
4371
|
|
4569
|
-
|
4570
|
-
body = {
|
4571
|
-
"filter": search_filter,
|
4572
|
-
}
|
4372
|
+
url = f"{self.solution_architect_command_root}/solution-components/by-search-string"
|
4573
4373
|
|
4574
|
-
|
4575
|
-
|
4576
|
-
|
4577
|
-
|
4578
|
-
|
4579
|
-
|
4580
|
-
|
4581
|
-
|
4582
|
-
return response.json().get("elements", NO_ELEMENTS_FOUND)
|
4374
|
+
return await self._async_find_request(url, _type="GovernanceDefinition",
|
4375
|
+
_gen_output=self.generate_info_supply_chain_output,
|
4376
|
+
search_string=search_string, classification_names=classification_names,
|
4377
|
+
metadata_element_types=metadata_element_types,
|
4378
|
+
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
4379
|
+
start_from=start_from, page_size=page_size,
|
4380
|
+
output_format=output_format, output_format_set=output_format_set,
|
4381
|
+
body=body)
|
4583
4382
|
|
4584
|
-
def find_solution_components(self,
|
4585
|
-
|
4586
|
-
|
4383
|
+
def find_solution_components(self, search_string: str = "*", classification_names: list[str] = None,
|
4384
|
+
metadata_element_types: list[str] = None,
|
4385
|
+
starts_with: bool = True, ends_with: bool = False,
|
4386
|
+
ignore_case: bool = False, start_from: int = 0,
|
4387
|
+
page_size: int = 0, output_format: str = 'JSON',
|
4388
|
+
output_format_set: str = None,
|
4389
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
4587
4390
|
""" Retrieve the solution component elements that contain the search string. The solutions components returned
|
4588
4391
|
include information about consumers, actors, and other solution components that are associated with them.
|
4589
4392
|
https://egeria-project.org/concepts/solution-components
|
@@ -4641,17 +4444,20 @@ class SolutionArchitect(Client2):
|
|
4641
4444
|
|
4642
4445
|
loop = asyncio.get_event_loop()
|
4643
4446
|
response = loop.run_until_complete(
|
4644
|
-
self._async_find_solution_components(
|
4645
|
-
page_size, body, output_format))
|
4447
|
+
self._async_find_solution_components(search_string, classification_names, metadata_element_types, starts_with, ends_with, ignore_case, start_from, page_size, output_format, output_format_set, body))
|
4646
4448
|
return response
|
4647
4449
|
|
4648
|
-
def find_all_solution_components(self,
|
4649
|
-
|
4450
|
+
def find_all_solution_components(self, classification_names: list[str] = None,
|
4451
|
+
metadata_element_types: list[str] = None,
|
4452
|
+
starts_with: bool = True, ends_with: bool = False,
|
4453
|
+
ignore_case: bool = False, start_from: int = 0,
|
4454
|
+
page_size: int = 0, output_format: str = 'JSON',
|
4455
|
+
output_format_set: str = None,
|
4456
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
4650
4457
|
"""Retrieve a list of all solution component elements
|
4651
4458
|
https://egeria-project.org/concepts/solution-components
|
4652
4459
|
"""
|
4653
|
-
return self.find_solution_components("*",
|
4654
|
-
output_format=output_format)
|
4460
|
+
return self.find_solution_components("*", classification_names, metadata_element_types, starts_with, ends_with, ignore_case, start_from, page_size, output_format, output_format_set, body)
|
4655
4461
|
|
4656
4462
|
async def _async_get_solution_components_by_name(self, search_filter: str, body: dict = None, start_from: int = 0,
|
4657
4463
|
page_size: int = 0, output_format: str = "JSON") -> dict | str:
|
@@ -5765,10 +5571,13 @@ class SolutionArchitect(Client2):
|
|
5765
5571
|
loop = asyncio.get_event_loop()
|
5766
5572
|
loop.run_until_complete(self._async_delete_solution_role(guid, cascade_delete, body))
|
5767
5573
|
|
5768
|
-
async def _async_find_solution_roles(self,
|
5769
|
-
|
5770
|
-
|
5771
|
-
|
5574
|
+
async def _async_find_solution_roles(self, search_string: str = "*", classification_names: list[str] = None,
|
5575
|
+
metadata_element_types: list[str] = None,
|
5576
|
+
starts_with: bool = True, ends_with: bool = False,
|
5577
|
+
ignore_case: bool = False, start_from: int = 0,
|
5578
|
+
page_size: int = 0, output_format: str = 'JSON',
|
5579
|
+
output_format_set: str = None,
|
5580
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
5772
5581
|
"""Retrieve the solution role elements that contain the search string.
|
5773
5582
|
https://egeria-project.org/concepts/actor
|
5774
5583
|
Async version.
|
@@ -5824,34 +5633,26 @@ class SolutionArchitect(Client2):
|
|
5824
5633
|
"filter": "Add name here"
|
5825
5634
|
}
|
5826
5635
|
"""
|
5827
|
-
starts_with_s = str(starts_with).lower()
|
5828
|
-
ends_with_s = str(ends_with).lower()
|
5829
|
-
ignore_case_s = str(ignore_case).lower()
|
5830
5636
|
|
5831
|
-
possible_query_params = query_string(
|
5832
|
-
[ ("startFrom", start_from), ("pageSize", page_size),
|
5833
|
-
("startsWith", starts_with_s), ("endsWith", ends_with_s), ("ignoreCase", ignore_case_s), ])
|
5834
|
-
if search_filter is None or search_filter == "*":
|
5835
|
-
search_filter = None
|
5836
|
-
|
5837
|
-
if body is None:
|
5838
|
-
body = {
|
5839
|
-
"filter": search_filter,
|
5840
|
-
}
|
5841
|
-
|
5842
|
-
url = (f"{self.solution_architect_command_root}/solution-roles/by-search-string"
|
5843
|
-
f"{possible_query_params}")
|
5844
|
-
response: Response = await self._async_make_request("POST", url, body_slimmer(body))
|
5845
|
-
element = response.json().get("elements", NO_ELEMENTS_FOUND)
|
5846
|
-
if element == NO_ELEMENTS_FOUND:
|
5847
|
-
return NO_ELEMENTS_FOUND
|
5848
|
-
if output_format != 'JSON': # return a simplified markdown representation
|
5849
|
-
return self.generate_solution_roles_output(element, filter, output_format)
|
5850
|
-
return response.json().get("elements", NO_ELEMENTS_FOUND)
|
5851
5637
|
|
5852
|
-
|
5853
|
-
|
5854
|
-
|
5638
|
+
url = f"{self.solution_architect_command_root}/solution-roles/by-search-string"
|
5639
|
+
|
5640
|
+
return await self._async_find_request(url, _type="GovernanceDefinition",
|
5641
|
+
_gen_output=self.generate_info_supply_chain_output,
|
5642
|
+
search_string=search_string, classification_names=classification_names,
|
5643
|
+
metadata_element_types=metadata_element_types,
|
5644
|
+
starts_with=starts_with, ends_with=ends_with, ignore_case=ignore_case,
|
5645
|
+
start_from=start_from, page_size=page_size,
|
5646
|
+
output_format=output_format, output_format_set=output_format_set,
|
5647
|
+
body=body)
|
5648
|
+
|
5649
|
+
def find_solution_roles(self, search_string: str = "*", classification_names: list[str] = None,
|
5650
|
+
metadata_element_types: list[str] = None,
|
5651
|
+
starts_with: bool = True, ends_with: bool = False,
|
5652
|
+
ignore_case: bool = False, start_from: int = 0,
|
5653
|
+
page_size: int = 0, output_format: str = 'JSON',
|
5654
|
+
output_format_set: str = None,
|
5655
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
5855
5656
|
"""Retrieve the list of solution role elements that contain the search string.
|
5856
5657
|
https://egeria-project.org/concepts/actor
|
5857
5658
|
|
@@ -5915,16 +5716,20 @@ class SolutionArchitect(Client2):
|
|
5915
5716
|
|
5916
5717
|
loop = asyncio.get_event_loop()
|
5917
5718
|
response = loop.run_until_complete(
|
5918
|
-
self._async_find_solution_roles(
|
5919
|
-
output_format=output_format, ))
|
5719
|
+
self._async_find_solution_roles(search_string, classification_names, metadata_element_types, starts_with, ends_with, ignore_case, start_from, page_size, output_format, output_format_set, body))
|
5920
5720
|
return response
|
5921
5721
|
|
5922
|
-
def find_all_solution_roles(self,
|
5923
|
-
|
5722
|
+
def find_all_solution_roles(self, classification_names: list[str] = None,
|
5723
|
+
metadata_element_types: list[str] = None,
|
5724
|
+
starts_with: bool = True, ends_with: bool = False,
|
5725
|
+
ignore_case: bool = False, start_from: int = 0,
|
5726
|
+
page_size: int = 0, output_format: str = 'JSON',
|
5727
|
+
output_format_set: str = None,
|
5728
|
+
body: dict| SearchStringRequestBody = None) -> list[dict] | str:
|
5924
5729
|
"""Retrieve a list of all solution blueprint elements
|
5925
5730
|
https://egeria-project.org/concepts/actor
|
5926
5731
|
"""
|
5927
|
-
return self.find_solution_roles("*",
|
5732
|
+
return self.find_solution_roles("*", classification_names, metadata_element_types, starts_with, ends_with, ignore_case, start_from, page_size, output_format, output_format_set, body)
|
5928
5733
|
|
5929
5734
|
|
5930
5735
|
async def _async_get_solution_roles_by_name(self, search_filter: str, body: dict = None, start_from: int = 0,
|