pyegeria 5.4.4.3__py3-none-any.whl → 5.4.4.4__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.
- md_processing/__init__.py +1 -1
- md_processing/dr_egeria.py +5 -0
- md_processing/md_commands/governance_officer_commands.py +120 -13
- md_processing/md_commands/product_manager_commands.py +1 -0
- md_processing/md_processing_utils/md_processing_constants.py +4 -2
- pyegeria/_client_new.py +3 -1
- pyegeria/_output_formats.py +56 -12
- pyegeria/classification_manager_omvs.py +4 -4
- pyegeria/collection_manager.py +2 -2
- pyegeria/glossary_manager.py +1 -88
- pyegeria/governance_officer.py +194 -95
- pyegeria/project_manager.py +1 -0
- pyegeria/solution_architect.py +0 -90
- {pyegeria-5.4.4.3.dist-info → pyegeria-5.4.4.4.dist-info}/METADATA +1 -1
- {pyegeria-5.4.4.3.dist-info → pyegeria-5.4.4.4.dist-info}/RECORD +18 -18
- {pyegeria-5.4.4.3.dist-info → pyegeria-5.4.4.4.dist-info}/LICENSE +0 -0
- {pyegeria-5.4.4.3.dist-info → pyegeria-5.4.4.4.dist-info}/WHEEL +0 -0
- {pyegeria-5.4.4.3.dist-info → pyegeria-5.4.4.4.dist-info}/entry_points.txt +0 -0
md_processing/__init__.py
CHANGED
@@ -4,7 +4,7 @@ This package contains functions to parse and process Egeria Markdown (Freddie)
|
|
4
4
|
from md_processing.md_commands.governance_officer_commands import (process_gov_definition_upsert_command,
|
5
5
|
process_gov_def_link_detach_command,
|
6
6
|
process_supporting_gov_def_link_detach_command,
|
7
|
-
process_gov_def_context_command,
|
7
|
+
process_gov_def_context_command, process_governed_by_link_detach_command
|
8
8
|
)
|
9
9
|
|
10
10
|
|
md_processing/dr_egeria.py
CHANGED
@@ -30,6 +30,7 @@ from md_processing import (extract_command, process_glossary_upsert_command, pro
|
|
30
30
|
process_digital_product_upsert_command, process_agreement_upsert_command,
|
31
31
|
process_collection_upsert_command, process_link_agreement_item_command,
|
32
32
|
process_gov_definition_upsert_command, GOV_COM_LIST, GOV_LINK_LIST,
|
33
|
+
process_governed_by_link_detach_command,
|
33
34
|
process_gov_def_link_detach_command, process_product_dependency_command,
|
34
35
|
process_add_to_collection_command, process_attach_collection_command,
|
35
36
|
# process_collection_list_command, process_gov_definition_list_command,
|
@@ -212,10 +213,14 @@ def process_md_file(input_file: str, output_folder:str, directive: str, server:
|
|
212
213
|
elif potential_command in ['Link Governance Mechanism', 'Detach Governance Mechanism',
|
213
214
|
'Link Governance Response', 'Detach Governance Response',]:
|
214
215
|
result = process_supporting_gov_def_link_detach_command(client, current_block, directive)
|
216
|
+
|
215
217
|
elif potential_command in ['Link Digital Products', 'Detach Digital Products',
|
216
218
|
'Link Product-Product', 'Detach Product-Product'
|
217
219
|
]:
|
218
220
|
result = process_product_dependency_command(client, current_block, directive)
|
221
|
+
elif potential_command in ['Link Governed By', 'Detach Governed By']
|
222
|
+
result = process_governed_by_link_detach_command(client, current_block, directive)
|
223
|
+
|
219
224
|
elif potential_command in ['Link Agreement->Item', 'Detach Agreement->Item']:
|
220
225
|
result = process_link_agreement_item_command(client, current_block, directive)
|
221
226
|
elif potential_command in ['Link Collection->Resource', 'Detach Collection->Resource']:
|
@@ -8,22 +8,21 @@ from typing import Optional
|
|
8
8
|
from inflect import engine
|
9
9
|
from jsonschema import ValidationError
|
10
10
|
from loguru import logger
|
11
|
-
from
|
12
|
-
|
11
|
+
from rich import print
|
12
|
+
from rich.console import Console
|
13
|
+
from rich.markdown import Markdown
|
14
|
+
|
15
|
+
from md_processing import set_rel_prop_body
|
16
|
+
from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert_command, parse_view_command)
|
13
17
|
from md_processing.md_processing_utils.common_md_utils import (set_gov_prop_body,
|
14
18
|
set_update_body, set_create_body,
|
15
19
|
set_peer_gov_def_request_body,
|
16
|
-
ALL_GOVERNANCE_DEFINITIONS,
|
17
|
-
GOVERNANCE_CONTROLS, GOVERNANCE_DRIVERS,
|
18
|
-
set_find_body,
|
19
|
-
set_delete_request_body)
|
20
|
+
ALL_GOVERNANCE_DEFINITIONS, set_delete_request_body)
|
20
21
|
from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
|
21
22
|
from md_processing.md_processing_utils.md_processing_constants import (load_commands)
|
22
23
|
from pyegeria import DEBUG_LEVEL, body_slimmer, PyegeriaException, print_basic_exception, print_validation_error
|
23
24
|
from pyegeria.egeria_tech_client import EgeriaTech
|
24
|
-
from
|
25
|
-
from rich.console import Console
|
26
|
-
from rich.markdown import Markdown
|
25
|
+
from pyegeria.utils import make_format_set_name_from_type
|
27
26
|
|
28
27
|
GERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
29
28
|
EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
|
@@ -152,10 +151,11 @@ def process_gov_definition_upsert_command(egeria_client: EgeriaTech, txt: str, d
|
|
152
151
|
update_body = body_slimmer(update_body)
|
153
152
|
egeria_client.update_governance_definition(guid, update_body)
|
154
153
|
if status := parsed_output['attributes'].get('Status', {}).get('value', None):
|
155
|
-
egeria_client.update_governance_definition_status(guid, status)
|
154
|
+
# egeria_client.update_governance_definition_status(guid, status)
|
155
|
+
egeria_client.update_element_status(guid, status)
|
156
156
|
logger.success(f"Updated {object_type} `{display_name}` with GUID {guid}")
|
157
157
|
return egeria_client.get_governance_definition_by_guid(guid, output_format='MD',
|
158
|
-
|
158
|
+
output_format_set=output_set)
|
159
159
|
|
160
160
|
elif object_action == "Create":
|
161
161
|
if valid is False and exists:
|
@@ -175,7 +175,8 @@ def process_gov_definition_upsert_command(egeria_client: EgeriaTech, txt: str, d
|
|
175
175
|
guid = egeria_client.create_governance_definition(body_slimmer(create_body))
|
176
176
|
if guid:
|
177
177
|
logger.success(f"Created {object_type} `{display_name}` with GUID {guid}")
|
178
|
-
return egeria_client.get_governance_definition_by_guid(guid, output_format='MD',
|
178
|
+
return egeria_client.get_governance_definition_by_guid(guid, output_format='MD',
|
179
|
+
output_format_set=output_set)
|
179
180
|
else:
|
180
181
|
logger.error(f"Failed to create {object_type} `{display_name}`.")
|
181
182
|
return None
|
@@ -400,7 +401,7 @@ def process_supporting_gov_def_link_detach_command(egeria_client: EgeriaTech, tx
|
|
400
401
|
"rationale": attributes.get('Rationale', {}).get('value', None),
|
401
402
|
"effectiveFrom": attributes.get('Effective From', {}).get('value', None),
|
402
403
|
"effectiveTo": attributes.get('Effective To', {}).get('value', None),
|
403
|
-
|
404
|
+
}
|
404
405
|
|
405
406
|
body = set_peer_gov_def_request_body(object_type, attributes)
|
406
407
|
body['properties'] = body_prop
|
@@ -427,6 +428,112 @@ def process_supporting_gov_def_link_detach_command(egeria_client: EgeriaTech, tx
|
|
427
428
|
return None
|
428
429
|
|
429
430
|
|
431
|
+
|
432
|
+
@logger.catch
|
433
|
+
def process_governed_by_link_detach_command(egeria_client: EgeriaTech, txt: str,
|
434
|
+
directive: str = "display") -> Optional[str]:
|
435
|
+
"""
|
436
|
+
Processes a link or unlink command to associate or break up peer governance definitions.
|
437
|
+
|
438
|
+
:param txt: A string representing the input cell to be processed for
|
439
|
+
extracting blueprint-related attributes.
|
440
|
+
:param directive: an optional string indicating the directive to be used - display, validate or execute
|
441
|
+
:return: A string summarizing the outcome of the processing.
|
442
|
+
"""
|
443
|
+
command, object_type, object_action = extract_command_plus(txt)
|
444
|
+
print(Markdown(f"# {command}\n"))
|
445
|
+
|
446
|
+
parsed_output = parse_view_command(egeria_client, object_type, object_action, txt, directive)
|
447
|
+
|
448
|
+
print(Markdown(parsed_output['display']))
|
449
|
+
|
450
|
+
logger.debug(json.dumps(parsed_output, indent=4))
|
451
|
+
|
452
|
+
attributes = parsed_output['attributes']
|
453
|
+
|
454
|
+
element_guid = attributes.get('Referencable', {}).get('guid', None)
|
455
|
+
definition_guid = attributes.get('Governance Definition', {}).get('guid', None)
|
456
|
+
label = attributes.get('Link Label', {}).get('value', None)
|
457
|
+
description = attributes.get('Description', {}).get('value', None)
|
458
|
+
|
459
|
+
valid = parsed_output['valid']
|
460
|
+
exists = element_guid is not None and definition_guid is not None
|
461
|
+
|
462
|
+
if directive == "display":
|
463
|
+
|
464
|
+
return None
|
465
|
+
elif directive == "validate":
|
466
|
+
if valid:
|
467
|
+
print(Markdown(f"==> Validation of {command} completed successfully!\n"))
|
468
|
+
else:
|
469
|
+
msg = f"Validation failed for object_action `{command}`\n"
|
470
|
+
return valid
|
471
|
+
|
472
|
+
elif directive == "process":
|
473
|
+
|
474
|
+
|
475
|
+
try:
|
476
|
+
if object_action == "Detach":
|
477
|
+
if not exists:
|
478
|
+
msg = (f" Link `{label}` does not exist! Updating result document with Link "
|
479
|
+
f"object_action\n")
|
480
|
+
logger.error(msg)
|
481
|
+
out = parsed_output['display'].replace('Link', 'Detach', 1)
|
482
|
+
return out
|
483
|
+
elif not valid:
|
484
|
+
return None
|
485
|
+
else:
|
486
|
+
print(Markdown(
|
487
|
+
f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
|
488
|
+
body = set_delete_request_body(object_type, attributes)
|
489
|
+
|
490
|
+
egeria_client.detach_governed_by_definitions(element_guid, definition_guid, body)
|
491
|
+
|
492
|
+
logger.success(f"===> Detached segment with {label} from `{definition1}`to {definition2}\n")
|
493
|
+
out = parsed_output['display'].replace('Unlink', 'Link', 1)
|
494
|
+
|
495
|
+
return (out)
|
496
|
+
|
497
|
+
|
498
|
+
elif object_action == "Link":
|
499
|
+
if valid is False and exists:
|
500
|
+
msg = (f"--> Link called `{label}` already exists and result document updated changing "
|
501
|
+
f"`Link` to `Detach` in processed output\n")
|
502
|
+
logger.error(msg)
|
503
|
+
|
504
|
+
elif valid is False:
|
505
|
+
msg = f"==>{object_type} Link with label `{label}` is not valid and can't be created"
|
506
|
+
logger.error(msg)
|
507
|
+
return
|
508
|
+
|
509
|
+
else:
|
510
|
+
body_prop = set_rel_prop_body(object_type, attributes)
|
511
|
+
|
512
|
+
body = set_rel_request_body(object_type, attributes)
|
513
|
+
body['properties'] = body_prop
|
514
|
+
egeria_client.attach_governed_by_definition(element_guid, definition_guid, body)
|
515
|
+
msg = f"==>Created {object_type} link named `{label}`\n"
|
516
|
+
logger.success(msg)
|
517
|
+
out = parsed_output['display'].replace('Link', 'Detach', 1)
|
518
|
+
return out
|
519
|
+
|
520
|
+
except ValidationError as e:
|
521
|
+
print_validation_error(e)
|
522
|
+
logger.error(f"Validation Error performing {command}: {e}")
|
523
|
+
return None
|
524
|
+
except PyegeriaException as e:
|
525
|
+
print_basic_exception(e)
|
526
|
+
logger.error(f"PyegeriaException occurred: {e}")
|
527
|
+
return None
|
528
|
+
|
529
|
+
except Exception as e:
|
530
|
+
logger.error(f"Error performing {command}: {e}")
|
531
|
+
return None
|
532
|
+
else:
|
533
|
+
return None
|
534
|
+
|
535
|
+
|
536
|
+
|
430
537
|
@logger.catch
|
431
538
|
def process_gov_def_context_command(egeria_client: EgeriaTech, txt: str,
|
432
539
|
directive: str = "display") -> Optional[str]:
|
@@ -20,6 +20,7 @@ from md_processing.md_processing_utils.extraction_utils import (extract_command_
|
|
20
20
|
from md_processing.md_processing_utils.md_processing_constants import (load_commands, ERROR)
|
21
21
|
from pyegeria import DEBUG_LEVEL, body_slimmer, to_pascal_case, PyegeriaException, print_basic_exception, print_exception_table
|
22
22
|
from pyegeria.egeria_tech_client import EgeriaTech
|
23
|
+
from pyegeria.utils import make_format_set_name_from_type
|
23
24
|
|
24
25
|
EGERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
25
26
|
EGERIA_KAFKA_ENDPOINT = os.environ.get("KAFKA_ENDPOINT", "localhost:9092")
|
@@ -50,7 +50,7 @@ TERM_RELATIONSHPS = ["Synonym", "Translation", "PreferredTerm", "TermISATYPEOFRe
|
|
50
50
|
GOV_LINK_LIST = [ "Link Governance Drivers", "Link Drivers", "Detach Governance Drivers", "Detach Drivers",
|
51
51
|
"Link Governance Policies", "Link Policies", "Detach Governance Policies", "Detach Policies",
|
52
52
|
"Link Governance Controls", "Link Controls", "Detach Governance Controls", "Detach Controls",
|
53
|
-
|
53
|
+
]
|
54
54
|
|
55
55
|
GOV_COM_LIST = [ "Create Business Imperative", "Update Business Imperative",
|
56
56
|
"Create Regulation Article Definition", "Update Regulation Article Definition",
|
@@ -70,7 +70,9 @@ GOV_COM_LIST = [ "Create Business Imperative", "Update Business Imperative",
|
|
70
70
|
"Create Security Group", "Update Security Group",
|
71
71
|
"Create Naming Standard Rule", "Update Naming Standard Rule",
|
72
72
|
"Create Certification Type", "Update Certification Type",
|
73
|
-
"Create License Type", "Update License Type",
|
73
|
+
"Create License Type", "Update License Type",
|
74
|
+
"Link Governed By", "Detach Governed By"
|
75
|
+
]
|
74
76
|
|
75
77
|
SIMPLE_BASE_COLLECTIONS: set = { "Collection", "Home Collection", "Digital Product", "Result Set" , "Recent Access",
|
76
78
|
"Reference List", "Work Item List", "Data Sharing Agreement", "Namespace", "Agreement",
|
pyegeria/_client_new.py
CHANGED
@@ -102,6 +102,7 @@ class Client2:
|
|
102
102
|
self.exc_type = None
|
103
103
|
self.exc_value = None
|
104
104
|
self.exc_tb = None
|
105
|
+
# self.url_marker = "MetadataExpert"
|
105
106
|
|
106
107
|
#
|
107
108
|
# I'm commenting this out since you should only have to use tokens if you want - just have to
|
@@ -1136,7 +1137,8 @@ class Client2:
|
|
1136
1137
|
}
|
1137
1138
|
"""
|
1138
1139
|
|
1139
|
-
url = f"{self.
|
1140
|
+
url = (f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/"
|
1141
|
+
f"{self.url_marker}/metadata-elements/{guid}/update-status")
|
1140
1142
|
await self._async_update_status_request(url, status, body)
|
1141
1143
|
|
1142
1144
|
@dynamic_catch
|
pyegeria/_output_formats.py
CHANGED
@@ -805,9 +805,9 @@ base_output_format_sets = FormatSetDict({
|
|
805
805
|
spec_params={"metadata_element_types": ["GovernancePrinciple", "GovernanceStrategy", "GovernanceResponse"]},
|
806
806
|
)
|
807
807
|
),
|
808
|
-
'Governance
|
809
|
-
description='
|
810
|
-
Format(types=['
|
808
|
+
'Governance-Control': FormatSet(target_type='Governance Control', heading='Control Attributes',
|
809
|
+
description= 'Governance Control (Create).', formats=[
|
810
|
+
Format(types=['DICT', 'MD', 'FORM', 'REPORT'],
|
811
811
|
columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'),
|
812
812
|
Column(name='Description', key='description'), Column(name='Category', key='category'),
|
813
813
|
Column(name='Domain Identifier', key='domain_identifier'),
|
@@ -820,14 +820,58 @@ base_output_format_sets = FormatSetDict({
|
|
820
820
|
Column(name='Status', key='element_status'),
|
821
821
|
Column(name='User Defined Status', key='user_defined_status'),
|
822
822
|
Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')
|
823
|
-
])
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
823
|
+
]),
|
824
|
+
Format(types=['TABLE', 'LIST'],
|
825
|
+
columns=[Column(name='Display Name', key='display_name'),
|
826
|
+
Column(name='Summary', key='summary'),
|
827
|
+
Column(name='Category', key='category'),
|
828
|
+
Column(name='Identifier', key='identifier'),
|
829
|
+
Column(name='Usage', key='usage'),
|
830
|
+
Column(name='Status', key='element_status'),
|
831
|
+
Column(name='Qualified Name', key='qualified_name'),
|
832
|
+
])
|
833
|
+
],
|
834
|
+
action=ActionParameter(
|
835
|
+
function="GovernanceOfficer.find_governance_definitions",
|
836
|
+
required_params=["search_string"],
|
837
|
+
optional_params=OPTIONAL_PARAMS,
|
838
|
+
spec_params={"metadata_element_types": ["GovernanceControl"]},
|
839
|
+
)
|
840
|
+
),
|
841
|
+
|
842
|
+
'License-Type': FormatSet(target_type='License Type', heading='License Type Attributes',
|
843
|
+
description='Attributes of a License type.', formats=[
|
844
|
+
Format(types=['DICT', 'MD', 'FORM', 'REPORT'],
|
845
|
+
columns=[Column(name='Display Name', key='display_name'), Column(name='Summary', key='summary'),
|
846
|
+
Column(name='Description', key='description'), Column(name='Category', key='category'),
|
847
|
+
Column(name='Domain Identifier', key='domain_identifier'),
|
848
|
+
Column(name='Identifier', key='identifier'),
|
849
|
+
Column(name='Version Identifier', key='version_identifier'),
|
850
|
+
Column(name='Usage', key='usage'), Column(name='Scope', key='scope'),
|
851
|
+
Column(name='Importance', key='importance'), Column(name='measurement', key='measurement'),
|
852
|
+
Column(name='target', key='target'), Column(name='Implications', key='implications'),
|
853
|
+
Column(name='Outcomes', key='outcomes'), Column(name='Results', key='results'),
|
854
|
+
Column(name='Status', key='element_status'),
|
855
|
+
Column(name='User Defined Status', key='user_defined_status'),
|
856
|
+
Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid')
|
857
|
+
]),
|
858
|
+
Format(types=['TABLE', 'LIST'],
|
859
|
+
columns=[Column(name='Display Name', key='display_name'),
|
860
|
+
Column(name='Summary', key='summary'),
|
861
|
+
Column(name='Category', key='category'),
|
862
|
+
Column(name='Identifier', key='identifier'),
|
863
|
+
Column(name='Usage', key='usage'),
|
864
|
+
Column(name='Status', key='element_status'),
|
865
|
+
Column(name='Qualified Name', key='qualified_name'),
|
866
|
+
])
|
867
|
+
],
|
868
|
+
action=ActionParameter(
|
869
|
+
function="GovernanceOfficer.find_governance_definitions",
|
870
|
+
required_params=["search_string"],
|
871
|
+
optional_params=OPTIONAL_PARAMS,
|
872
|
+
spec_params={"metadata_element_types": ["LicenseType"]},
|
873
|
+
)
|
874
|
+
),
|
831
875
|
|
832
876
|
"Governance Policies": FormatSet(
|
833
877
|
target_type="GovernancePolicy",
|
@@ -1182,7 +1226,7 @@ generated_format_sets = FormatSetDict({
|
|
1182
1226
|
'starts_with', 'ends_with',
|
1183
1227
|
'ignore_case'], spec_params={
|
1184
1228
|
'metadata_element_types': ['DigitalSubscription']})),
|
1185
|
-
'External-Data-Source-DrE': FormatSet(target_type='External
|
1229
|
+
'External-Data-Source-DrE': FormatSet(target_type='External Data Source',
|
1186
1230
|
heading='External-Data-Source-DrE Attributes',
|
1187
1231
|
description='Auto-generated format for External Data Source (Create).',
|
1188
1232
|
formats=[Format(types=['ALL'],
|
@@ -3681,7 +3681,7 @@ class ClassificationManager(Client):
|
|
3681
3681
|
)
|
3682
3682
|
|
3683
3683
|
url = (
|
3684
|
-
f"{base_path(self, self.view_server)}/elements/{element_guid}/governed-by/definition/{definition_guid}"
|
3684
|
+
f"{base_path(self, self.view_server)}/elements/{element_guid}/governed-by/definition/{definition_guid}/attach"
|
3685
3685
|
f"{possible_query_params}"
|
3686
3686
|
)
|
3687
3687
|
|
@@ -3806,7 +3806,7 @@ class ClassificationManager(Client):
|
|
3806
3806
|
|
3807
3807
|
url = (
|
3808
3808
|
f"{base_path(self, self.view_server)}/elements/{element_guid}/governed-by/definition/"
|
3809
|
-
f"{definition_guid}/
|
3809
|
+
f"{definition_guid}/detach{possible_query_params}"
|
3810
3810
|
)
|
3811
3811
|
|
3812
3812
|
body = {"class": "ClassificationRequestBody", "effectiveTime": effective_time}
|
@@ -4769,7 +4769,7 @@ class ClassificationManager(Client):
|
|
4769
4769
|
)
|
4770
4770
|
|
4771
4771
|
url = (
|
4772
|
-
f"{base_path(self, self.view_server)}/elements/{element_guid}/semantic-assignment/terms"
|
4772
|
+
f"{base_path(self, self.view_server)}/elements/{element_guid}/semantic-assignment/terms/attach"
|
4773
4773
|
f"/{glossary_term_guid}{possible_query_params}"
|
4774
4774
|
)
|
4775
4775
|
|
@@ -4911,7 +4911,7 @@ class ClassificationManager(Client):
|
|
4911
4911
|
|
4912
4912
|
url = (
|
4913
4913
|
f"{base_path(self, self.view_server)}/elements/{element_guid}/semantic-assignment/terms/"
|
4914
|
-
f"{glossary_term_guid}/
|
4914
|
+
f"{glossary_term_guid}/detach{possible_query_params}"
|
4915
4915
|
)
|
4916
4916
|
|
4917
4917
|
body = {"class": "ClassificationRequestBody", "effectiveTime": effective_time}
|
pyegeria/collection_manager.py
CHANGED
@@ -2535,8 +2535,8 @@ class CollectionManager(Client2):
|
|
2535
2535
|
}
|
2536
2536
|
"""
|
2537
2537
|
|
2538
|
-
|
2539
|
-
await self.
|
2538
|
+
|
2539
|
+
await self._async_update_element_status(collection_guid, status, body)
|
2540
2540
|
|
2541
2541
|
@dynamic_catch
|
2542
2542
|
def update_collection_status(self, collection_guid: str, status: str = None,
|
pyegeria/glossary_manager.py
CHANGED
@@ -91,6 +91,7 @@ class GlossaryManager(CollectionManager):
|
|
91
91
|
self.platform_url = platform_url
|
92
92
|
self.user_id = user_id
|
93
93
|
self.user_pwd = user_pwd
|
94
|
+
self.url_marker = "glossary-manager"
|
94
95
|
|
95
96
|
|
96
97
|
CollectionManager.__init__(self, view_server, platform_url, user_id, user_pwd, token)
|
@@ -991,94 +992,6 @@ class GlossaryManager(CollectionManager):
|
|
991
992
|
|
992
993
|
|
993
994
|
@dynamic_catch
|
994
|
-
async def _async_update_term_status(self, term_guid: str, status: str = None,
|
995
|
-
body: dict | UpdateStatusRequestBody = None):
|
996
|
-
"""Update the status of a collection. Async version.
|
997
|
-
|
998
|
-
Parameters
|
999
|
-
----------
|
1000
|
-
collection_guid: str
|
1001
|
-
The guid of the collection to update.
|
1002
|
-
status: str, optional
|
1003
|
-
The new lifecycle status for the collection. Ignored, if the body is provided.
|
1004
|
-
body: dict | UpdateStatusRequestBody, optional
|
1005
|
-
A structure representing the details of the collection to create. If supplied, these details
|
1006
|
-
supersede the status parameter provided.
|
1007
|
-
|
1008
|
-
Returns
|
1009
|
-
-------
|
1010
|
-
Nothing
|
1011
|
-
|
1012
|
-
Raises
|
1013
|
-
------
|
1014
|
-
InvalidParameterException
|
1015
|
-
If the client passes incorrect parameters on the request - such as bad URLs or invalid values
|
1016
|
-
PropertyServerException
|
1017
|
-
Raised by the server when an issue arises in processing a valid request
|
1018
|
-
NotAuthorizedException
|
1019
|
-
The principle specified by the user_id does not have authorization for the requested action
|
1020
|
-
|
1021
|
-
Notes
|
1022
|
-
-----
|
1023
|
-
JSON Structure looks like:
|
1024
|
-
{
|
1025
|
-
"class": "UpdateStatusRequestBody",
|
1026
|
-
"status": "APPROVED",
|
1027
|
-
"externalSourceGUID": "add guid here",
|
1028
|
-
"externalSourceName": "add qualified name here",
|
1029
|
-
"effectiveTime": "{{$isoTimestamp}}",
|
1030
|
-
"forLineage": false,
|
1031
|
-
"forDuplicateProcessing": false
|
1032
|
-
}
|
1033
|
-
"""
|
1034
|
-
|
1035
|
-
url = f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/glossary-manager/metadata-elements/{term_guid}/update-status"
|
1036
|
-
await self._async_update_status_request(url, status, body)
|
1037
|
-
logger.info(f"Updated status for term {term_guid}")
|
1038
|
-
|
1039
|
-
@dynamic_catch
|
1040
|
-
def update_term_status(self, term_guid: str, status: str = None,
|
1041
|
-
body: dict | UpdateStatusRequestBody = None):
|
1042
|
-
"""Update the status of a DigitalProduct collection.
|
1043
|
-
|
1044
|
-
Parameters
|
1045
|
-
----------
|
1046
|
-
collection_guid: str
|
1047
|
-
The guid of the collection to update.
|
1048
|
-
status: str, optional
|
1049
|
-
The new lifecycle status for the digital product. Ignored, if the body is provided.
|
1050
|
-
body: dict | UpdateStatusRequestBody, optional
|
1051
|
-
A structure representing the details of the collection to create. If supplied, these details
|
1052
|
-
supersede the status parameter provided.
|
1053
|
-
|
1054
|
-
Returns
|
1055
|
-
-------
|
1056
|
-
Nothing
|
1057
|
-
|
1058
|
-
Raises
|
1059
|
-
------
|
1060
|
-
InvalidParameterException
|
1061
|
-
If the client passes incorrect parameters on the request - such as bad URLs or invalid values
|
1062
|
-
PropertyServerException
|
1063
|
-
Raised by the server when an issue arises in processing a valid request
|
1064
|
-
NotAuthorizedException
|
1065
|
-
The principle specified by the user_id does not have authorization for the requested action
|
1066
|
-
|
1067
|
-
Notes
|
1068
|
-
-----
|
1069
|
-
JSON Structure looks like:
|
1070
|
-
{
|
1071
|
-
"class": "UpdateStatusRequestBody",
|
1072
|
-
"status": "APPROVED",
|
1073
|
-
"externalSourceGUID": "add guid here",
|
1074
|
-
"externalSourceName": "add qualified name here",
|
1075
|
-
"effectiveTime": "{{$isoTimestamp}}",
|
1076
|
-
"forLineage": false,
|
1077
|
-
"forDuplicateProcessing": false
|
1078
|
-
}
|
1079
|
-
"""
|
1080
|
-
loop = asyncio.get_event_loop()
|
1081
|
-
loop.run_until_complete(self._async_update_collection_status(term_guid, status, body))
|
1082
995
|
|
1083
996
|
|
1084
997
|
async def _async_delete_term(
|
pyegeria/governance_officer.py
CHANGED
@@ -849,99 +849,6 @@ class GovernanceOfficer(Client2):
|
|
849
849
|
loop = asyncio.get_event_loop()
|
850
850
|
loop.run_until_complete(self._async_update_governance_definition(guid, body))
|
851
851
|
|
852
|
-
@dynamic_catch
|
853
|
-
async def _async_update_governance_definition_status(self, guid: str, status: str = None,
|
854
|
-
body: dict | UpdateStatusRequestBody = None) -> None:
|
855
|
-
""" Update the status of a governance definition. Async Version.
|
856
|
-
|
857
|
-
Parameters
|
858
|
-
----------
|
859
|
-
guid: str
|
860
|
-
guid of the governance definition to update.
|
861
|
-
status: str, optional, default is None
|
862
|
-
The status to update the governance definition to. Superseded by the body definition if present.
|
863
|
-
body: dict
|
864
|
-
A dictionary containing the updates to the governance definition.
|
865
|
-
|
866
|
-
Returns
|
867
|
-
-------
|
868
|
-
|
869
|
-
None
|
870
|
-
|
871
|
-
Raises
|
872
|
-
------
|
873
|
-
InvalidParameterException
|
874
|
-
one of the parameters is null or invalid or
|
875
|
-
PropertyServerException
|
876
|
-
There is a problem adding the element properties to the metadata repository or
|
877
|
-
UserNotAuthorizedException
|
878
|
-
the requesting user is not authorized to issue this request.
|
879
|
-
|
880
|
-
Notes
|
881
|
-
----
|
882
|
-
|
883
|
-
Body structure:
|
884
|
-
{
|
885
|
-
"class": "UpdateGovernanceDefinitionRequestBody",
|
886
|
-
"externalSourceGUID": "add guid here",
|
887
|
-
"externalSourceName": "add qualified name here",
|
888
|
-
"effectiveTime": "{{$isoTimestamp}}",
|
889
|
-
"forLineage": false,
|
890
|
-
"forDuplicateProcessing": false,
|
891
|
-
"status": "ACTIVE"
|
892
|
-
}
|
893
|
-
"""
|
894
|
-
|
895
|
-
url = (
|
896
|
-
f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/{self.url_marker}/governance-defnitions/"
|
897
|
-
f"{guid}/update-status")
|
898
|
-
|
899
|
-
# await self._async_update_status_request(url, status, body)
|
900
|
-
|
901
|
-
def update_governance_definition_status(self, guid: str, status: str = None,
|
902
|
-
body: dict | UpdateStatusRequestBody = None) -> None:
|
903
|
-
""" Update the status of a governance definition.
|
904
|
-
|
905
|
-
Parameters
|
906
|
-
----------
|
907
|
-
guid: str
|
908
|
-
guid of the information governance definition to update.
|
909
|
-
status: str, optional, default is None
|
910
|
-
The status to update the governance definition to. Superseded by the body definition if present.
|
911
|
-
body: dict
|
912
|
-
A dictionary containing the updates to the governance definition.
|
913
|
-
|
914
|
-
Returns
|
915
|
-
-------
|
916
|
-
|
917
|
-
None
|
918
|
-
|
919
|
-
Raises
|
920
|
-
------
|
921
|
-
InvalidParameterException
|
922
|
-
one of the parameters is null or invalid or
|
923
|
-
PropertyServerException
|
924
|
-
There is a problem adding the element properties to the metadata repository or
|
925
|
-
UserNotAuthorizedException
|
926
|
-
the requesting user is not authorized to issue this request.
|
927
|
-
|
928
|
-
Notes
|
929
|
-
----
|
930
|
-
|
931
|
-
Body structure:
|
932
|
-
{
|
933
|
-
"class" : "UpdateGovernanceDefinitionRequestBody",
|
934
|
-
"externalSourceGUID": "add guid here",
|
935
|
-
"externalSourceName": "add qualified name here",
|
936
|
-
"effectiveTime" : "{{$isoTimestamp}}",
|
937
|
-
"forLineage" : false,
|
938
|
-
"forDuplicateProcessing" : false,
|
939
|
-
"status": "ACTIVE"
|
940
|
-
}
|
941
|
-
"""
|
942
|
-
loop = asyncio.get_event_loop()
|
943
|
-
loop.run_until_complete(self._async_update_governance_definition_status(guid, status, body))
|
944
|
-
|
945
852
|
@dynamic_catch
|
946
853
|
async def _async_delete_governance_definition(self, definition_guid: str,
|
947
854
|
body: dict | DeleteRequestBody = None,
|
@@ -1430,7 +1337,7 @@ class GovernanceOfficer(Client2):
|
|
1430
1337
|
logger.info(f"Detached digital supporting definitions: {definition_guid1} -> {definition_guid2}")
|
1431
1338
|
|
1432
1339
|
@dynamic_catch
|
1433
|
-
def detach_supporting_definitions(self,
|
1340
|
+
def detach_supporting_definitions(self, definition_guid: str, relationship_type: str, definition_guid2: str,
|
1434
1341
|
body: dict | DeleteRequestBody = None) -> None:
|
1435
1342
|
""" Detach a governance definition from a supporting governance definition.
|
1436
1343
|
Request body is optional.
|
@@ -1476,6 +1383,197 @@ class GovernanceOfficer(Client2):
|
|
1476
1383
|
loop.run_until_complete(
|
1477
1384
|
self._async_detach_supporting_definitions(definition_guid1, relationship_type, definition_guid2, body))
|
1478
1385
|
|
1386
|
+
|
1387
|
+
|
1388
|
+
async def _async_attach_governed_by_definition(self, element_guid: str, definition_guid: str,
|
1389
|
+
body: dict | NewRelationshipRequestBody = None) -> None:
|
1390
|
+
""" Link a governance definition to an element using the GovernedBy relationship. Request body is optional.
|
1391
|
+
|
1392
|
+
Async Version.
|
1393
|
+
|
1394
|
+
Parameters
|
1395
|
+
----------
|
1396
|
+
element_guid: str
|
1397
|
+
guid of the element to be governed.
|
1398
|
+
definition_guid: str
|
1399
|
+
the governance definition guid.
|
1400
|
+
body: dict
|
1401
|
+
The body describing the link between the two.
|
1402
|
+
|
1403
|
+
Returns
|
1404
|
+
-------
|
1405
|
+
None
|
1406
|
+
|
1407
|
+
Raises
|
1408
|
+
------
|
1409
|
+
PyegeriaException
|
1410
|
+
ValidationError
|
1411
|
+
|
1412
|
+
Notes
|
1413
|
+
----
|
1414
|
+
|
1415
|
+
Body structure:
|
1416
|
+
{
|
1417
|
+
"class" : "NewRelationshipRequestBody",
|
1418
|
+
"properties" : {
|
1419
|
+
"class" : "GovernedByProperties",
|
1420
|
+
"label" : "add label here",
|
1421
|
+
"description" : "add description here"
|
1422
|
+
},
|
1423
|
+
"externalSourceGUID": "Add guid here",
|
1424
|
+
"externalSourceName": "Add qualified name here",
|
1425
|
+
"forLineage": false,
|
1426
|
+
"forDuplicateProcessing": false,
|
1427
|
+
"effectiveTime" : "{{$isoTimestamp}}"
|
1428
|
+
}
|
1429
|
+
"""
|
1430
|
+
url = (
|
1431
|
+
f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/"
|
1432
|
+
f"{self.url_marker}/elements/{element_guid}/governed-by/{definition_guid}/attach"
|
1433
|
+
)
|
1434
|
+
await self._async_new_relationship_request(url, "GovernedByProperties", body)
|
1435
|
+
logger.info(f"Linked Governed-By {definition_guid1} -> {definition_guid2}")
|
1436
|
+
|
1437
|
+
@dynamic_catch
|
1438
|
+
def attach_governed_by_definition(self, element_guid: str, definition_guid: str,
|
1439
|
+
body: dict | NewRelationshipRequestBody = None) -> None:
|
1440
|
+
""" Link a governance definition to an element using the GovernedBy relationship. Request body is optional.
|
1441
|
+
|
1442
|
+
Parameters
|
1443
|
+
----------
|
1444
|
+
element_guid: str
|
1445
|
+
guid of the element to be governed.
|
1446
|
+
definition_guid: str
|
1447
|
+
the governance definition guid.
|
1448
|
+
body: dict
|
1449
|
+
The body describing the link between the two.
|
1450
|
+
|
1451
|
+
Returns
|
1452
|
+
-------
|
1453
|
+
None
|
1454
|
+
|
1455
|
+
Raises
|
1456
|
+
------
|
1457
|
+
PyegeriaException
|
1458
|
+
ValidationError
|
1459
|
+
|
1460
|
+
Notes
|
1461
|
+
----
|
1462
|
+
|
1463
|
+
Body structure:
|
1464
|
+
{
|
1465
|
+
"class" : "NewRelationshipRequestBody",
|
1466
|
+
"properties" : {
|
1467
|
+
"class" : "GovernedByProperties",
|
1468
|
+
"label" : "add label here",
|
1469
|
+
"description" : "add description here"
|
1470
|
+
},
|
1471
|
+
"externalSourceGUID": "Add guid here",
|
1472
|
+
"externalSourceName": "Add qualified name here",
|
1473
|
+
"forLineage": false,
|
1474
|
+
"forDuplicateProcessing": false,
|
1475
|
+
"effectiveTime" : "{{$isoTimestamp}}"
|
1476
|
+
}
|
1477
|
+
"""
|
1478
|
+
loop = asyncio.get_event_loop()
|
1479
|
+
loop.run_until_complete(
|
1480
|
+
self._async_attach_governed_by_definition(element_guid, definition_guid, body))
|
1481
|
+
|
1482
|
+
@dynamic_catch
|
1483
|
+
async def _async_detach_governed_by_definition(self, element_guid: str, definition_guid: str,
|
1484
|
+
body: dict | DeleteRequestBody = None) -> None:
|
1485
|
+
""" Detach a governance definition from a supporting governance definition.
|
1486
|
+
Request body is optional. Async Version.
|
1487
|
+
|
1488
|
+
Parameters
|
1489
|
+
----------
|
1490
|
+
element_guid: str
|
1491
|
+
guid of the element to be governed.
|
1492
|
+
definition_guid: str
|
1493
|
+
the governance definition guid.
|
1494
|
+
body: dict
|
1495
|
+
The body describing the link between the two.
|
1496
|
+
|
1497
|
+
Returns
|
1498
|
+
-------
|
1499
|
+
None
|
1500
|
+
|
1501
|
+
Raises
|
1502
|
+
------
|
1503
|
+
InvalidParameterException
|
1504
|
+
one of the parameters is null or invalid or
|
1505
|
+
PropertyServerException
|
1506
|
+
There is a problem adding the element properties to the metadata repository or
|
1507
|
+
UserNotAuthorizedException
|
1508
|
+
the requesting user is not authorized to issue this request.
|
1509
|
+
|
1510
|
+
Notes
|
1511
|
+
----
|
1512
|
+
|
1513
|
+
Body structure:
|
1514
|
+
{
|
1515
|
+
"class" : "DeleteRequestBody",
|
1516
|
+
"externalSourceGUID": "add guid here",
|
1517
|
+
"externalSourceName": "add qualified name here",
|
1518
|
+
"effectiveTime" : "{{$isoTimestamp}}",
|
1519
|
+
"forLineage" : false,
|
1520
|
+
"forDuplicateProcessing" : false
|
1521
|
+
}
|
1522
|
+
"""
|
1523
|
+
url = (
|
1524
|
+
f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/"
|
1525
|
+
f"{self.url_marker}/elements/{element_guid}/governed-by/{definition_guid}/detach"
|
1526
|
+
)
|
1527
|
+
await self._async_delete_request(url, body)
|
1528
|
+
logger.info(f"Detached governed-by relationshup between: {definition_guid} -> {element_guid}")
|
1529
|
+
|
1530
|
+
@dynamic_catch
|
1531
|
+
def detach_governed_by_definitio(self, element_guid: str, definition_guid: str,
|
1532
|
+
body: dict | DeleteRequestBody = None) -> None:
|
1533
|
+
""" Detach a governance definition from a supporting governance definition.
|
1534
|
+
Request body is optional.
|
1535
|
+
|
1536
|
+
Parameters
|
1537
|
+
----------
|
1538
|
+
element_guid: str
|
1539
|
+
guid of the element to be governed.
|
1540
|
+
definition_guid: str
|
1541
|
+
the governance definition guid.
|
1542
|
+
body: dict
|
1543
|
+
The body describing the link between the two.
|
1544
|
+
|
1545
|
+
Returns
|
1546
|
+
-------
|
1547
|
+
None
|
1548
|
+
|
1549
|
+
Raises
|
1550
|
+
------
|
1551
|
+
InvalidParameterException
|
1552
|
+
one of the parameters is null or invalid or
|
1553
|
+
PropertyServerException
|
1554
|
+
There is a problem adding the element properties to the metadata repository or
|
1555
|
+
UserNotAuthorizedException
|
1556
|
+
the requesting user is not authorized to issue this request.
|
1557
|
+
|
1558
|
+
Notes
|
1559
|
+
----
|
1560
|
+
|
1561
|
+
Body structure:
|
1562
|
+
{
|
1563
|
+
"class" : "DeleteRequestBody",
|
1564
|
+
"externalSourceGUID": "add guid here",
|
1565
|
+
"externalSourceName": "add qualified name here",
|
1566
|
+
"effectiveTime" : "{{$isoTimestamp}}",
|
1567
|
+
"forLineage" : false,
|
1568
|
+
"forDuplicateProcessing" : false
|
1569
|
+
}
|
1570
|
+
"""
|
1571
|
+
loop = asyncio.get_event_loop()
|
1572
|
+
loop.run_until_complete(
|
1573
|
+
self._async_detach_governed_by_definition(element_guid, definition_guid, body))
|
1574
|
+
|
1575
|
+
|
1576
|
+
|
1479
1577
|
@dynamic_catch
|
1480
1578
|
async def _async_delete_governance_definition(self, guid: str, body: dict | DeleteRequestBody = None) -> None:
|
1481
1579
|
""" Delete an information supply. Async version.
|
@@ -1484,7 +1582,7 @@ class GovernanceOfficer(Client2):
|
|
1484
1582
|
----------
|
1485
1583
|
guid: str
|
1486
1584
|
GUID of the governance definition to delete.
|
1487
|
-
|
1585
|
+
|
1488
1586
|
body: dict, optional
|
1489
1587
|
A dictionary containing the definition of the governance definition to create.
|
1490
1588
|
|
@@ -1522,6 +1620,7 @@ class GovernanceOfficer(Client2):
|
|
1522
1620
|
await self._async_delete_request(url, body)
|
1523
1621
|
logger.info(f"Deleted governance definition: {guid} ")
|
1524
1622
|
|
1623
|
+
|
1525
1624
|
@dynamic_catch
|
1526
1625
|
def delete_governance_definition(self, guid: str, body: dict | DeleteRequestBody = None) -> None:
|
1527
1626
|
""" Delete an information supply. Request body is optional. Async version.
|
pyegeria/project_manager.py
CHANGED
@@ -72,6 +72,7 @@ class ProjectManager(Client2):
|
|
72
72
|
self.project_command_base: str = (
|
73
73
|
f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/project-manager/projects"
|
74
74
|
)
|
75
|
+
self.url_marker = 'project-manager'
|
75
76
|
Client2.__init__(self, view_server, platform_url, user_id, user_pwd, token)
|
76
77
|
|
77
78
|
def _extract_additional_project_properties(self, element: dict, columns_struct: dict)-> dict:
|
pyegeria/solution_architect.py
CHANGED
@@ -2612,96 +2612,6 @@ class SolutionArchitect(Client2):
|
|
2612
2612
|
loop.run_until_complete(self._async_delete_info_supply_chain(guid, body, cascade))
|
2613
2613
|
|
2614
2614
|
|
2615
|
-
@dynamic_catch
|
2616
|
-
async def _async_update_solution_element_status(self, guid: str, status: str= None, body: dict| UpdateStatusRequestBody = None,
|
2617
|
-
) -> None:
|
2618
|
-
""" Update the properties of a blueprint, solution component, or solution port. Async Version.
|
2619
|
-
|
2620
|
-
Parameters
|
2621
|
-
----------
|
2622
|
-
guid: str
|
2623
|
-
guid of the information supply chain to update.
|
2624
|
-
body: dict | UpdateStatusRequestBody, optional
|
2625
|
-
A dictionary containing the updates to the supply chain.
|
2626
|
-
status: str, optional
|
2627
|
-
The status to update the supply chain to.
|
2628
|
-
|
2629
|
-
Returns
|
2630
|
-
-------
|
2631
|
-
|
2632
|
-
None
|
2633
|
-
|
2634
|
-
Raises
|
2635
|
-
------
|
2636
|
-
InvalidParameterException
|
2637
|
-
one of the parameters is null or invalid or
|
2638
|
-
PropertyServerException
|
2639
|
-
There is a problem adding the element properties to the metadata repository or
|
2640
|
-
UserNotAuthorizedException
|
2641
|
-
the requesting user is not authorized to issue this request.
|
2642
|
-
|
2643
|
-
Notes
|
2644
|
-
----
|
2645
|
-
|
2646
|
-
Body structure:
|
2647
|
-
{
|
2648
|
-
"class" : "UpdateStatusRequestBody",
|
2649
|
-
"status" : "APPROVED",
|
2650
|
-
"externalSourceGUID": "add guid here",
|
2651
|
-
"externalSourceName": "add qualified name here",
|
2652
|
-
"effectiveTime" : "{{$isoTimestamp}}",
|
2653
|
-
"forLineage" : false,
|
2654
|
-
"forDuplicateProcessing" : false
|
2655
|
-
}
|
2656
|
-
"""
|
2657
|
-
|
2658
|
-
url = (f"{self.platform_url}/servers/{self.view_server}/api/open-metadata/solution-architect/"
|
2659
|
-
f"solution-blueprints/{guid}/update")
|
2660
|
-
|
2661
|
-
await self._async_update_status_request(url, status, body)
|
2662
|
-
|
2663
|
-
@dynamic_catch
|
2664
|
-
def update_solution_element_status(self, guid: str, status: str = None, body: dict| UpdateStatusRequestBody = None) -> None:
|
2665
|
-
""" Update the status of a blueprint, solution component, or solution port.
|
2666
|
-
|
2667
|
-
Parameters
|
2668
|
-
----------
|
2669
|
-
guid: str
|
2670
|
-
guid of the information supply chain to update.
|
2671
|
-
body: dict
|
2672
|
-
A dictionary containing the updates to the supply chain.
|
2673
|
-
|
2674
|
-
Returns
|
2675
|
-
-------
|
2676
|
-
None
|
2677
|
-
|
2678
|
-
Raises
|
2679
|
-
------
|
2680
|
-
InvalidParameterException
|
2681
|
-
one of the parameters is null or invalid or
|
2682
|
-
PropertyServerException
|
2683
|
-
There is a problem adding the element properties to the metadata repository or
|
2684
|
-
UserNotAuthorizedException
|
2685
|
-
the requesting user is not authorized to issue this request.
|
2686
|
-
|
2687
|
-
Notes
|
2688
|
-
----
|
2689
|
-
|
2690
|
-
Body structure:
|
2691
|
-
{
|
2692
|
-
"class" : "SolutionElementStatusRequestBody",
|
2693
|
-
"status" : "APPROVED",
|
2694
|
-
"externalSourceGUID": "add guid here",
|
2695
|
-
"externalSourceName": "add qualified name here",
|
2696
|
-
"effectiveTime" : "{{$isoTimestamp}}",
|
2697
|
-
"forLineage" : false,
|
2698
|
-
"forDuplicateProcessing" : false
|
2699
|
-
}
|
2700
|
-
"""
|
2701
|
-
loop = asyncio.get_event_loop()
|
2702
|
-
loop.run_until_complete(self._async_update_solution_element_status(guid = guid, status= status, body=body))
|
2703
|
-
|
2704
|
-
|
2705
2615
|
@dynamic_catch
|
2706
2616
|
async def _async_link_solution_component_to_blueprint(self, blueprint_guid: str, component_guid: str,
|
2707
2617
|
body: dict | NewRelationshipRequestBody) -> None:
|
@@ -4286,19 +4286,19 @@ md_processing/.obsidian/plugins/obsidian-sample-plugin/tsconfig.json,sha256=1WZq
|
|
4286
4286
|
md_processing/.obsidian/plugins/obsidian-sample-plugin/version-bump.mjs,sha256=Abvp-AsbUJhsRdgmx6QRQeYkq1naolNfEaV84BhwXO0,648
|
4287
4287
|
md_processing/.obsidian/plugins/obsidian-sample-plugin/versions.json,sha256=BUExoIjmkWRH0yMlAATwxxkgaaxTTZ6GQhT4JBDGofI,23
|
4288
4288
|
md_processing/.obsidian/workspace.json,sha256=NLVJEOtsowljw7Ka035ReHLPu4iitk2ZsuSDN6zUAFY,4282
|
4289
|
-
md_processing/__init__.py,sha256=
|
4289
|
+
md_processing/__init__.py,sha256=u9hAxeDri4c8mjw9WkqiotRWwNIfrPiFn6-2Bj2Adro,7365
|
4290
4290
|
md_processing/data/commands-working.json,sha256=uCo_azcuuYqGm7QffJeCGj7PyZuZRGdu7kKf4XWmMoA,1162560
|
4291
4291
|
md_processing/data/commands.json,sha256=RIHRggidx9qPwBDVmXagoY0AkVcG-sL0yobl7aiGmHI,1712477
|
4292
4292
|
md_processing/data/generated_format_sets.json,sha256=TXvGK_Gm5ieq9i6u9M1j4CaNPzoV2m0hisKK2fWCtIM,98502
|
4293
4293
|
md_processing/data/generated_format_sets.py,sha256=ZUWlUi5BHdetUQP-Hx8nQqzd3mCEubsJQXjvPmqhY3M,54980
|
4294
|
-
md_processing/dr_egeria.py,sha256=
|
4294
|
+
md_processing/dr_egeria.py,sha256=OLx2WbaZ7PAjmpm7DbCHlPPFV1PDFFjTz4qGV6Lo9c8,20213
|
4295
4295
|
md_processing/dr_egeria_inbox/glossary_creation_experiment.ipynb,sha256=dbzNu90fCKNohOWVSRBOB1GLyd95x8Qw51I5AkaPtso,11552
|
4296
4296
|
md_processing/md_commands/__init__.py,sha256=ssEojzFlSYtY2bHqqOoKo8PFaANZ_kq_gIbtlXnuc2s,93
|
4297
4297
|
md_processing/md_commands/data_designer_commands.py,sha256=cT2godlpPS5vbWvpZbzTDlTMjZFPm8ggKTER0U0yb7U,65116
|
4298
4298
|
md_processing/md_commands/ext_ref_commands.py,sha256=YPoEm_gitLvJXr7E4-9feLNpnoLnjSamti_lxlIoO5k,24675
|
4299
4299
|
md_processing/md_commands/glossary_commands.py,sha256=IOQxXxmyhwPAAZy1jha91qhXQBqzhhxUFDuVj6QkRbA,33970
|
4300
|
-
md_processing/md_commands/governance_officer_commands.py,sha256=
|
4301
|
-
md_processing/md_commands/product_manager_commands.py,sha256=
|
4300
|
+
md_processing/md_commands/governance_officer_commands.py,sha256=vpNIKF0F0MMepb0mZ3GsWqghFuQWtVixXjrLba1Uo6w,26421
|
4301
|
+
md_processing/md_commands/product_manager_commands.py,sha256=T2S4USHEPEQWMdMv2PUI_4PwHTdlKwWDjJwg3sTqNLc,46170
|
4302
4302
|
md_processing/md_commands/project_commands.py,sha256=mjBSreHVkGCluChlO_p_5cEQ0CHlG5XJ3Fo6lL9C--w,17882
|
4303
4303
|
md_processing/md_commands/solution_architect_commands.py,sha256=4Ghb8j2wlDdWtHoSCrx5jCJFEJfqII4mnFJ_tqduRKI,52569
|
4304
4304
|
md_processing/md_commands/view_commands.py,sha256=dvRD0Vjv1w9FTfV5W-4EMQBTk2NAUJlIP2jQ411kHS4,11815
|
@@ -4316,23 +4316,23 @@ md_processing/md_processing_utils/gen_format_sets.py,sha256=R5IvrajER0Xj9kZ99UxR
|
|
4316
4316
|
md_processing/md_processing_utils/generate_dr_help.py,sha256=MJWlr_22Y9pjWqQbfSLb6C-t1GlQNlbWXkCmDnphfME,7419
|
4317
4317
|
md_processing/md_processing_utils/generate_md_cmd_templates.py,sha256=SVdtlA6Nc9JIN-pORGbf-_shEP7egReuVejEcMjxRYM,5797
|
4318
4318
|
md_processing/md_processing_utils/generate_md_templates.py,sha256=DMnMQ7_LbmQCS8aG-ppHGTu25obOSn4ZzSg7V21k9jo,3547
|
4319
|
-
md_processing/md_processing_utils/md_processing_constants.py,sha256=
|
4319
|
+
md_processing/md_processing_utils/md_processing_constants.py,sha256=OLx5ne7G4Boi_rE-imljGM2-dw7k84ykdmagJbwmrAQ,19533
|
4320
4320
|
md_processing/md_processing_utils/message_constants.py,sha256=UBf18obM83umM6zplR7ychre4xLRbBnTzidHDZ2gNvM,548
|
4321
4321
|
pyegeria/README.md,sha256=PwX5OC7-YSZUCIsoyHh1O-WBM2hE84sm3Bd4O353NOk,1464
|
4322
4322
|
pyegeria/__init__.py,sha256=XxELwaqinmpSsdHaTd-5TGKRe-3Abi220tjZ6svIhLQ,11842
|
4323
4323
|
pyegeria/_client.py,sha256=hJHn5pD8sbelP_M9dK-M5Z2CYqpRXzXfg1UCgAdQ6dQ,33416
|
4324
|
-
pyegeria/_client_new.py,sha256=
|
4324
|
+
pyegeria/_client_new.py,sha256=npNLWfx9-EUp49lzzwLUdgD45TWr1CsaZseKkOCLmUk,65544
|
4325
4325
|
pyegeria/_deprecated_gov_engine.py,sha256=dWNcwVsE5__dF2u4QiIyQrssozzzOjBbLld8MdpmVCQ,17264
|
4326
4326
|
pyegeria/_exceptions.py,sha256=1SrnV194V4_YJNnNAU0myTHQ3dhLn4GF2B2gZcj1u90,18153
|
4327
4327
|
pyegeria/_exceptions_new.py,sha256=srmrlqoWy7VvOJOhPcYFKW32MCIovgEg5J7PrYDxzQA,19706
|
4328
4328
|
pyegeria/_globals.py,sha256=qSU5hM4uuJZPp-YapEEKxfcdgH9hauc6R7gRkELLroY,1132
|
4329
4329
|
pyegeria/_output_format_models.py,sha256=p9fTYaIa5KyTMIR4-JAbE9g66_gGMPTnUqjIq20Zr1o,14494
|
4330
|
-
pyegeria/_output_formats.py,sha256=
|
4330
|
+
pyegeria/_output_formats.py,sha256=wYVGJWEFjcY2WhAj1uopQ2kjlHHFuGuzAVsAxrpCwIc,174210
|
4331
4331
|
pyegeria/_validators.py,sha256=pNxND0dN2qvyuGE52N74l1Ezfrh2p9Hao2ziR_t1ENI,7425
|
4332
4332
|
pyegeria/asset_catalog_omvs.py,sha256=P6FceMP0FgakGSOt3ePxpEbsF7nnypzo1aQahjdL_94,29021
|
4333
4333
|
pyegeria/automated_curation_omvs.py,sha256=tzwCyXL0Hx8UjryBBWcPoEuBRajXZpLuwPQ1vuOg2yc,130349
|
4334
|
-
pyegeria/classification_manager_omvs.py,sha256=
|
4335
|
-
pyegeria/collection_manager.py,sha256=
|
4334
|
+
pyegeria/classification_manager_omvs.py,sha256=eodP8Fn7zi78unsjk0XNW7lnxI7R0Fb7_SLI-HA39PQ,187249
|
4335
|
+
pyegeria/collection_manager.py,sha256=Ou07fNgySK4Dfc5QWXKKJfrSq1wqGKzTc4epzad1ICI,232666
|
4336
4336
|
pyegeria/collection_models.py,sha256=d3DdWONqDdAeuUQgussiCNfvhKIDFpaI35cdW_Tv4_0,5315
|
4337
4337
|
pyegeria/config.py,sha256=N-qHq74GN29Mwfp8MbXvj7uEsKCIXotL7MDwFcj3nIU,29380
|
4338
4338
|
pyegeria/core_omag_server_config.py,sha256=pNQpocICkZx8sRsTw5DPUe-TFyxlIo1U88qqgci_f7I,97764
|
@@ -4346,8 +4346,8 @@ pyegeria/egeria_tech_client.py,sha256=TjuwE9APWQZ4cRsxM0MoVrsikF8e4vkISDt_ra93tY
|
|
4346
4346
|
pyegeria/external_references.py,sha256=DyOmGhG0LWIN4INABCiJRrHxfZ5FWE7TFtc3S_k5iEI,74360
|
4347
4347
|
pyegeria/feedback_manager_omvs.py,sha256=0xBs0p54vmdfVYYgQ8pOanLC4fxfgTk1Z61Y6D1U7_I,152978
|
4348
4348
|
pyegeria/full_omag_server_config.py,sha256=CQqLCy_3DZFvJZEOcGf50HWdFaWpiAIs6z-kKyjvpDA,47464
|
4349
|
-
pyegeria/glossary_manager.py,sha256=
|
4350
|
-
pyegeria/governance_officer.py,sha256=
|
4349
|
+
pyegeria/glossary_manager.py,sha256=EmCnIPG-W0bUD7MVn2Vopb-cb_TR1J8MMOOFzo38aWk,106786
|
4350
|
+
pyegeria/governance_officer.py,sha256=C3u5aV9dnGLHrkohQ9L-Gzlc7QVf5D7uD2a8KEhkMpU,102928
|
4351
4351
|
pyegeria/load_config.py,sha256=XDwPAHB3MvGRuoP8kg1lJJAI4BgMWZ3TYxfxYROgJj4,1188
|
4352
4352
|
pyegeria/load_config_orig.py,sha256=lOM37vdIBcYfLQFTLP5bDuNc7vTFGBNYPfqHtWGNvA4,11624
|
4353
4353
|
pyegeria/logging_configuration.py,sha256=BxTQRN-7OOdk5t1f1xSn8gKU8iT-MfWEgbn6cYWrRsY,7674
|
@@ -4360,17 +4360,17 @@ pyegeria/models.py,sha256=JX81Wfskn5G4vTXFYl9Ctk-dnr6X2zuto-4gqbuAI9Y,19963
|
|
4360
4360
|
pyegeria/my_profile_omvs.py,sha256=d0oJYCJG7pS9BINPuGciVa00ac0jwPHNANXDCLginEc,34720
|
4361
4361
|
pyegeria/output_formatter.py,sha256=Fvup9Z-QKsG8JII2lR4kkXwAGhkhcyCVuBkdJd8si4Y,41856
|
4362
4362
|
pyegeria/platform_services.py,sha256=AJNa8n2mKfAMK68q886YCD-p5bpCxIlCxBsRdr0R9O4,41708
|
4363
|
-
pyegeria/project_manager.py,sha256=
|
4363
|
+
pyegeria/project_manager.py,sha256=BrI23_fWIM4FE1y5zRqo3651iaDJ1BI_aNBpZ7D6nJQ,65887
|
4364
4364
|
pyegeria/registered_info.py,sha256=y0-LgDIQXpph0lEWxIOG3_HsqX_Z2iAIb3xu4Aa4B70,6344
|
4365
4365
|
pyegeria/runtime_manager_omvs.py,sha256=bVAFJPRnIbTxdzmDHx7XgJBlyh_ZyHiKeUGqFT1Ozpg,80293
|
4366
4366
|
pyegeria/server_operations.py,sha256=dTqUEmX1B77b0x61OSU0aonsW8KwIpfzb3eioRpwaiI,16832
|
4367
|
-
pyegeria/solution_architect.py,sha256=
|
4367
|
+
pyegeria/solution_architect.py,sha256=wds7wIBmDdV1H6SPhLPicWDzA7dfjhSCfO-_s4CByDM,233688
|
4368
4368
|
pyegeria/template_manager_omvs.py,sha256=chBljs1vy5wr9DRAtbvIt4Cob_7HxGfxLkCNlDTM-rQ,42755
|
4369
4369
|
pyegeria/utils.py,sha256=xOTxk9PH8ZGZmgIwz_a6rczTVLADLEjucr10ZJTUnY4,9272
|
4370
4370
|
pyegeria/valid_metadata_omvs.py,sha256=Xq9DqBQvBFFJzaFIRKcVZ2k4gJvSh9yeXs_j-O3vn1w,65050
|
4371
4371
|
pyegeria/x_action_author_omvs.py,sha256=RcqSzahUKCtvb_3u_wyintAlc9WFkC_2v0E12TZs8lQ,6433
|
4372
|
-
pyegeria-5.4.4.
|
4373
|
-
pyegeria-5.4.4.
|
4374
|
-
pyegeria-5.4.4.
|
4375
|
-
pyegeria-5.4.4.
|
4376
|
-
pyegeria-5.4.4.
|
4372
|
+
pyegeria-5.4.4.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
4373
|
+
pyegeria-5.4.4.4.dist-info/METADATA,sha256=cAQPiOvB4JoxHV6Ax1RChWN0ZovMvmehxMpH7fuxpds,6292
|
4374
|
+
pyegeria-5.4.4.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
4375
|
+
pyegeria-5.4.4.4.dist-info/entry_points.txt,sha256=HAS-LHaaBfkaZ19XU9g5mXwn2uj2HK99isdijI-VIDk,6353
|
4376
|
+
pyegeria-5.4.4.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|