pyegeria 5.4.0.22__py3-none-any.whl → 5.4.0.24__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/.DS_Store +0 -0
- commands/cat/.env +8 -0
- commands/cat/debug_log +2046 -465
- commands/cat/debug_log.2025-08-15_09-14-07_444802.zip +0 -0
- commands/cat/debug_log.2025-08-16_10-21-59_388912.zip +0 -0
- commands/cat/debug_log.log +0 -0
- commands/cat/dr_egeria_md.py +16 -3
- commands/cat/list_collections.py +15 -6
- commands/cat/list_format_set.py +90 -85
- commands/cli/debug_log.log +0 -0
- commands/ops/logs/pyegeria.log +0 -0
- md_processing/.DS_Store +0 -0
- md_processing/__init__.py +5 -3
- md_processing/data/commands.json +8310 -903
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-30-37.md +163 -0
- md_processing/dr-egeria-outbox/Collections-2025-08-12-13-35-58.md +474 -0
- md_processing/dr_egeria_inbox/Derive-Dr-Gov-Defs.md +8 -0
- md_processing/dr_egeria_inbox/Dr.Egeria Templates.md +873 -0
- md_processing/dr_egeria_inbox/arch_test.md +57 -0
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro.md +254 -0
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_more_terms.md +696 -0
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part1.md +254 -0
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part2.md +298 -0
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part3.md +608 -0
- md_processing/dr_egeria_inbox/archive/dr_egeria_intro_part4.md +94 -0
- md_processing/dr_egeria_inbox/archive/freddie_intro.md +284 -0
- md_processing/dr_egeria_inbox/archive/freddie_intro_orig.md +275 -0
- md_processing/dr_egeria_inbox/archive/test-term.md +110 -0
- md_processing/dr_egeria_inbox/cat_test.md +100 -0
- md_processing/dr_egeria_inbox/collections.md +39 -0
- md_processing/dr_egeria_inbox/data_designer_debug.log +6 -0
- md_processing/dr_egeria_inbox/data_designer_out.md +60 -0
- md_processing/dr_egeria_inbox/data_designer_search_test.md +11 -0
- md_processing/dr_egeria_inbox/data_field.md +54 -0
- md_processing/dr_egeria_inbox/data_spec.md +77 -0
- md_processing/dr_egeria_inbox/data_spec_test.md +2406 -0
- md_processing/dr_egeria_inbox/data_test.md +179 -0
- md_processing/dr_egeria_inbox/data_test2.md +429 -0
- md_processing/dr_egeria_inbox/data_test3.md +462 -0
- md_processing/dr_egeria_inbox/dr_egeria_data_designer_1.md +124 -0
- md_processing/dr_egeria_inbox/dr_egeria_intro_categories.md +168 -0
- md_processing/dr_egeria_inbox/dr_egeria_intro_part1.md +280 -0
- md_processing/dr_egeria_inbox/dr_egeria_intro_part2.md +313 -0
- md_processing/dr_egeria_inbox/dr_egeria_intro_part3.md +1073 -0
- md_processing/dr_egeria_inbox/dr_egeria_isc1.md +44 -0
- md_processing/dr_egeria_inbox/generated_help_report.md +9 -0
- md_processing/dr_egeria_inbox/glossary_list.md +5 -0
- md_processing/dr_egeria_inbox/glossary_search_test.md +40 -0
- md_processing/dr_egeria_inbox/glossary_test1.md +324 -0
- md_processing/dr_egeria_inbox/gov_def.md +482 -0
- md_processing/dr_egeria_inbox/gov_def2.md +447 -0
- md_processing/dr_egeria_inbox/img.png +0 -0
- md_processing/dr_egeria_inbox/product.md +162 -0
- md_processing/dr_egeria_inbox/rel.md +8 -0
- md_processing/dr_egeria_inbox/sb.md +119 -0
- md_processing/dr_egeria_inbox/solution-components.md +136 -0
- md_processing/dr_egeria_inbox/solution_blueprints.md +118 -0
- md_processing/dr_egeria_inbox/synonym_test.md +42 -0
- md_processing/dr_egeria_inbox/t2.md +268 -0
- md_processing/dr_egeria_outbox/.obsidian/app.json +1 -0
- md_processing/dr_egeria_outbox/.obsidian/appearance.json +1 -0
- md_processing/dr_egeria_outbox/.obsidian/community-plugins.json +6 -0
- md_processing/dr_egeria_outbox/.obsidian/core-plugins.json +31 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/data.json +10 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/main.js +4459 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/calendar/manifest.json +10 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/data.json +3 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/main.js +153 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/manifest.json +11 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-kanban/styles.css +1 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/main.js +500 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +12 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/obsidian-tasks-plugin/styles.css +1 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/main.js +37 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/manifest.json +11 -0
- md_processing/dr_egeria_outbox/.obsidian/plugins/templater-obsidian/styles.css +220 -0
- md_processing/dr_egeria_outbox/.obsidian/types.json +28 -0
- md_processing/dr_egeria_outbox/.obsidian/workspace.json +220 -0
- md_processing/dr_egeria_outbox/Untitled.canvas +1 -0
- md_processing/dr_egeria_outbox/monday/processed-2025-07-14 12:38-data_designer_out.md +663 -0
- md_processing/dr_egeria_outbox/monday/processed-2025-07-21 10:52-generated_help_report.md +2744 -0
- md_processing/dr_egeria_outbox/monday/processed-2025-07-21 18:38-collections.md +62 -0
- md_processing/dr_egeria_outbox/monday/processed-2025-08-01 11:34-gov_def.md +444 -0
- md_processing/dr_egeria_outbox/monday/processed-2025-08-17 21:04-product.md +97 -0
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 14:55-product.md +77 -0
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:05-product.md +75 -0
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 15:11-product.md +74 -0
- md_processing/dr_egeria_outbox/sunday/processed-2025-07-20 20:40-collections.md +49 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 15:00-Derive-Dr-Gov-Defs.md +719 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:13-Derive-Dr-Gov-Defs.md +41 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:14-Derive-Dr-Gov-Defs.md +33 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 20:50-Derive-Dr-Gov-Defs.md +192 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:08-gov_def2.md +486 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-17 22:10-gov_def2.md +486 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:53-gov_def2.md +486 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 08:54-gov_def2.md +486 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:03-gov_def2.md +486 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:06-gov_def2.md +486 -0
- md_processing/dr_egeria_outbox/thursday/processed-2025-07-18 09:10-gov_def2.md +486 -0
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-16 19:15-gov_def2.md +527 -0
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 12:08-gov_def2.md +527 -0
- md_processing/dr_egeria_outbox/tuesday/processed-2025-07-17 14:27-gov_def2.md +485 -0
- md_processing/md_commands/governance_officer_commands.py +291 -150
- md_processing/md_commands/product_manager_commands.py +309 -401
- md_processing/md_processing_utils/common_md_proc_utils.py +110 -7
- md_processing/md_processing_utils/common_md_utils.py +112 -26
- md_processing/md_processing_utils/debug_log.log +0 -0
- md_processing/md_processing_utils/md_processing_constants.py +8 -5
- md_processing/md_processing_utils/solution_architect_log.log +0 -0
- pyegeria/.DS_Store +0 -0
- pyegeria/__init__.py +3 -3
- pyegeria/_client_new.py +48 -51
- pyegeria/_exceptions_new.py +6 -0
- pyegeria/_output_format_models.py +22 -17
- pyegeria/_output_formats.py +122 -34
- pyegeria/collection_manager.py +154 -50
- pyegeria/collection_manager_omvs.py +47 -18
- pyegeria/egeria_cat_client.py +1 -1
- pyegeria/egeria_client.py +6 -0
- pyegeria/egeria_tech_client.py +6 -1
- pyegeria/governance_officer.py +2513 -0
- pyegeria/load_config.py +1 -1
- pyegeria/models.py +48 -5
- pyegeria/output_formatter.py +298 -79
- pyegeria/utils.py +1 -1
- {pyegeria-5.4.0.22.dist-info → pyegeria-5.4.0.24.dist-info}/METADATA +1 -1
- {pyegeria-5.4.0.22.dist-info → pyegeria-5.4.0.24.dist-info}/RECORD +130 -30
- {pyegeria-5.4.0.22.dist-info → pyegeria-5.4.0.24.dist-info}/LICENSE +0 -0
- {pyegeria-5.4.0.22.dist-info → pyegeria-5.4.0.24.dist-info}/WHEEL +0 -0
- {pyegeria-5.4.0.22.dist-info → pyegeria-5.4.0.24.dist-info}/entry_points.txt +0 -0
@@ -13,11 +13,12 @@ from rich.markdown import Markdown
|
|
13
13
|
|
14
14
|
from md_processing.md_processing_utils.common_md_proc_utils import (parse_upsert_command, parse_view_command)
|
15
15
|
from md_processing.md_processing_utils.common_md_utils import update_element_dictionary, setup_log, set_update_body, \
|
16
|
-
set_element_status_request_body, set_prop_body,
|
17
|
-
set_rel_request_body, set_create_body, set_collection_classifications,
|
16
|
+
set_element_status_request_body, set_prop_body, set_delete_request_body, set_rel_request_body, set_peer_gov_def_request_body, \
|
17
|
+
set_rel_request_body, set_create_body, set_collection_classifications, set_product_body
|
18
|
+
|
18
19
|
from md_processing.md_processing_utils.extraction_utils import (extract_command_plus, update_a_command)
|
19
20
|
from md_processing.md_processing_utils.md_processing_constants import (load_commands, ERROR)
|
20
|
-
from pyegeria import DEBUG_LEVEL, body_slimmer, to_pascal_case
|
21
|
+
from pyegeria import DEBUG_LEVEL, body_slimmer, to_pascal_case, PyegeriaException
|
21
22
|
from pyegeria.egeria_tech_client import EgeriaTech
|
22
23
|
|
23
24
|
GERIA_METADATA_STORE = os.environ.get("EGERIA_METADATA_STORE", "active-metadata-store")
|
@@ -56,7 +57,7 @@ def add_member_to_collections(egeria_client: EgeriaTech, collection_list: list,
|
|
56
57
|
Add member to data dictionaries and data specifications.
|
57
58
|
"""
|
58
59
|
body = {
|
59
|
-
"class": "
|
60
|
+
"class": "NewRelationshipRequestBody", "properties": {
|
60
61
|
"class": "CollectionMembershipProperties", "membershipRationale": "User Specified",
|
61
62
|
"notes": "Added by Dr.Egeria"
|
62
63
|
}
|
@@ -144,267 +145,267 @@ def update_data_collection_memberships(egeria_client: EgeriaTech, entity_type: s
|
|
144
145
|
# @logger.catch
|
145
146
|
|
146
147
|
|
147
|
-
@logger.catch
|
148
|
-
def add_field_to_data_structures(egeria_client: EgeriaTech, display_name: str, struct_list: list, guid) -> None:
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
@logger.catch
|
165
|
-
def remove_field_from_data_structures(egeria_client: EgeriaTech, display_name: str, struct_list: list,
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
@logger.catch
|
180
|
-
def sync_data_field_rel_elements(egeria_client: EgeriaTech, structure_list: list, parent_field_list: list, terms: list,
|
181
|
-
data_class_guid: str, guid: str, display_name: str,
|
182
|
-
replace_all_props: bool = True) -> None:
|
183
|
-
"""Sync a field's related elements.
|
184
|
-
|
185
|
-
TODO: Need to add data class support when ready and may need to revisit bodies.
|
186
|
-
|
187
|
-
"""
|
188
|
-
if terms:
|
189
|
-
terms = [terms]
|
190
|
-
|
191
|
-
if replace_all_props:
|
192
|
-
rel_el_list = egeria_client.get_data_field_rel_elements(guid)
|
193
|
-
# should I throw an exception if empty?
|
194
|
-
if rel_el_list is None:
|
195
|
-
logger.warning("Unexpected -> the list was None - assigning empty list")
|
196
|
-
rel_el_list = {}
|
197
|
-
|
198
|
-
as_is_data_structs = set(rel_el_list.get("data_structure_guids", []))
|
199
|
-
as_is_parent_fields = set(rel_el_list.get("parent_guids", []))
|
200
|
-
as_is_assigned_meanings = set(rel_el_list.get("assigned_meanings_guids", []))
|
201
|
-
as_is_data_classes = set(rel_el_list.get("data_class_guids", []))
|
202
|
-
|
203
|
-
to_be_data_structs = set(structure_list) if structure_list is not None else set()
|
204
|
-
to_be_parent_fields = set(parent_field_list) if parent_field_list is not None else set()
|
205
|
-
to_be_assigned_meanings = set(terms) if terms is not None else set()
|
206
|
-
to_be_data_classes = set([data_class_guid]) if data_class_guid is not None else set()
|
207
|
-
|
208
|
-
logger.trace(f"as_is_data_structs: {list(as_is_data_structs)} to_be_data_struct: {list(to_be_data_structs)}")
|
209
|
-
logger.trace(
|
210
|
-
f"as_is_parent_fields: {list(as_is_parent_fields)} to_be_parent_fields: {list(to_be_parent_fields)}")
|
211
|
-
logger.trace(f"as_is_assigned_meanings: {list(as_is_assigned_meanings)} to_be_assigned_meanings: "
|
212
|
-
f"{list(to_be_assigned_meanings)}")
|
213
|
-
logger.trace(f"as_is_data_classes: {list(as_is_data_classes)} to_be_assigned_data_classes: "
|
214
|
-
f"{list(to_be_data_classes)}")
|
215
|
-
|
216
|
-
data_struct_to_remove = as_is_data_structs - to_be_data_structs
|
217
|
-
logger.trace(f"data_struct_to_remove: {list(data_struct_to_remove)}")
|
218
|
-
if len(data_struct_to_remove) > 0:
|
219
|
-
for ds in data_struct_to_remove:
|
220
|
-
egeria_client.detach_member_data_field(ds, guid, None)
|
221
|
-
msg = f"Removed `{display_name}` from structure `{ds}`"
|
222
|
-
logger.trace(msg)
|
223
|
-
data_struct_to_add = to_be_data_structs - as_is_data_structs
|
224
|
-
logger.trace(f"data_struct_to_add: {list(data_struct_to_add)}")
|
225
|
-
if len(data_struct_to_add) > 0:
|
226
|
-
for ds in data_struct_to_add:
|
227
|
-
egeria_client.link_member_data_field(ds, guid, None)
|
228
|
-
msg = f"Added `{display_name}` to structure `{ds}`"
|
229
|
-
logger.trace(msg)
|
230
|
-
|
231
|
-
parent_field_to_remove = to_be_parent_fields - as_is_parent_fields
|
232
|
-
logger.trace(f"parent_field_to_remove: {list(parent_field_to_remove)}")
|
233
|
-
if len(parent_field_to_remove) > 0:
|
234
|
-
for field in parent_field_to_remove:
|
235
|
-
egeria_client.detach_nested_data_field(field, guid, None)
|
236
|
-
msg = f"Removed `{display_name}` from field `{field}`"
|
237
|
-
logger.trace(msg)
|
238
|
-
parent_field_to_add = to_be_parent_fields - as_is_parent_fields
|
239
|
-
logger.trace(f"parent_field_to_add: {list(parent_field_to_add)}")
|
240
|
-
if len(parent_field_to_add) > 0:
|
241
|
-
for field in parent_field_to_add:
|
242
|
-
egeria_client.link_nested_data_field(field, guid, None)
|
243
|
-
msg = f"Added `{display_name}` to field `{field}`"
|
244
|
-
logger.trace(msg)
|
245
|
-
|
246
|
-
terms_to_remove = as_is_assigned_meanings - to_be_assigned_meanings
|
247
|
-
logger.trace(f"terms_to_remove: {list(terms_to_remove)}")
|
248
|
-
if terms:
|
249
|
-
for term in terms_to_remove:
|
250
|
-
egeria_client.detach_semantic_definition(guid, term, None)
|
251
|
-
msg = f"Removed `{term}` from `{display_name}`"
|
252
|
-
logger.trace(msg)
|
253
|
-
terms_to_add = to_be_assigned_meanings - as_is_assigned_meanings
|
254
|
-
logger.trace(f"terms_to_add: {list(terms_to_add)}")
|
255
|
-
if len(terms_to_add) > 0:
|
256
|
-
for term in terms_to_add:
|
257
|
-
egeria_client.link_semantic_definition(guid, term, None)
|
258
|
-
msg = f"Added `{term}` to`{display_name}`"
|
259
|
-
logger.trace(msg)
|
260
|
-
|
261
|
-
classes_to_remove = as_is_data_classes - to_be_data_classes
|
262
|
-
logger.trace(f"classes_to_remove: {list(classes_to_remove)}")
|
263
|
-
if len(terms_to_remove) > 0:
|
264
|
-
for dc in classes_to_remove:
|
265
|
-
body = {
|
266
|
-
"class": "MetadataSourceRequestBody", "forLineage": False, "forDuplicateProcessing": False
|
267
|
-
}
|
268
|
-
egeria_client.detach_data_class_definition(guid, dc, body)
|
269
|
-
msg = f"Removed `{dc}` from `{display_name}`"
|
270
|
-
logger.trace(msg)
|
271
|
-
classes_to_add = to_be_data_classes - as_is_data_classes
|
272
|
-
logger.trace(f"classes_to_add: {list(classes_to_add)}")
|
273
|
-
if len(terms_to_add) > 0:
|
274
|
-
for dc in classes_to_add:
|
275
|
-
body = {
|
276
|
-
"class": "RelationshipRequestBody", "forLineage": False, "forDuplicateProcessing": False
|
277
|
-
}
|
278
|
-
egeria_client.link_data_class_definition(guid, dc, body)
|
279
|
-
msg = f"Added `{dc}` to`{display_name}`"
|
280
|
-
logger.trace(msg)
|
281
|
-
|
282
|
-
|
283
|
-
else: # merge - add field to related elements
|
284
|
-
if structure_list:
|
285
|
-
add_field_to_data_structures(egeria_client, display_name, structure_list, guid)
|
286
|
-
msg = f"Added `{display_name}` to `{structure_list}`"
|
287
|
-
logger.trace(msg)
|
288
|
-
|
289
|
-
if parent_field_list:
|
290
|
-
for field in parent_field_list:
|
291
|
-
egeria_client.link_nested_data_field(field, guid, None)
|
292
|
-
msg = f"Added `{display_name}` to `{field}`"
|
293
|
-
logger.trace(msg)
|
294
|
-
if terms:
|
295
|
-
for term in terms:
|
296
|
-
egeria_client.link_semantic_definition(guid, term, None)
|
297
|
-
msg = f"Added `{term}` to `{display_name}`"
|
298
|
-
logger.trace(msg)
|
299
|
-
|
300
|
-
if data_class_guid:
|
301
|
-
egeria_client.link_data_class_definition(guid, data_class_guid)
|
302
|
-
msg = f"Added `{data_class_guid}` to `{display_name}`"
|
303
|
-
logger.trace(msg)
|
304
|
-
|
305
|
-
|
306
|
-
@logger.catch
|
307
|
-
def sync_data_class_rel_elements(egeria_client: EgeriaTech, containing_data_class_guids: list, terms: list,
|
308
|
-
specializes_data_classes: list, guid: str, display_name: str,
|
309
|
-
replace_all_props: bool = True) -> None:
|
310
|
-
"""Sync a data class' related elements.
|
148
|
+
# @logger.catch
|
149
|
+
# def add_field_to_data_structures(egeria_client: EgeriaTech, display_name: str, struct_list: list, guid) -> None:
|
150
|
+
# """
|
151
|
+
# Add data field to data structures.
|
152
|
+
# """
|
153
|
+
#
|
154
|
+
# try:
|
155
|
+
# for structure_guid in struct_list:
|
156
|
+
# egeria_client.link_member_data_field(structure_guid, guid, None)
|
157
|
+
# msg = f"Added `{display_name}` to structure `{structure_guid}`"
|
158
|
+
# logger.info(msg)
|
159
|
+
# return
|
160
|
+
#
|
161
|
+
# except Exception as e:
|
162
|
+
# console.print_exception()
|
163
|
+
#
|
164
|
+
#
|
165
|
+
# @logger.catch
|
166
|
+
# def remove_field_from_data_structures(egeria_client: EgeriaTech, display_name: str, struct_list: list,
|
167
|
+
# guid: str) -> None:
|
168
|
+
# """Remove a data field from a list of data structures."""
|
169
|
+
# try:
|
170
|
+
# for structure_guid in struct_list:
|
171
|
+
# egeria_client.detach_member_data_field(structure_guid, guid, None)
|
172
|
+
# msg = f"Removed `{display_name}` from structure `{structure_guid}`"
|
173
|
+
# logger.info(msg)
|
174
|
+
# return
|
175
|
+
#
|
176
|
+
# except Exception as e:
|
177
|
+
# console.print_exception()
|
178
|
+
#
|
311
179
|
|
312
|
-
|
313
|
-
|
314
|
-
|
180
|
+
# @logger.catch
|
181
|
+
# def sync_data_field_rel_elements(egeria_client: EgeriaTech, structure_list: list, parent_field_list: list, terms: list,
|
182
|
+
# data_class_guid: str, guid: str, display_name: str,
|
183
|
+
# replace_all_props: bool = True) -> None:
|
184
|
+
# """Sync a field's related elements.
|
185
|
+
#
|
186
|
+
# TODO: Need to add data class support when ready and may need to revisit bodies.
|
187
|
+
#
|
188
|
+
# """
|
189
|
+
# if terms:
|
190
|
+
# terms = [terms]
|
191
|
+
#
|
192
|
+
# if replace_all_props:
|
193
|
+
# rel_el_list = egeria_client.get_data_field_rel_elements(guid)
|
194
|
+
# # should I throw an exception if empty?
|
195
|
+
# if rel_el_list is None:
|
196
|
+
# logger.warning("Unexpected -> the list was None - assigning empty list")
|
197
|
+
# rel_el_list = {}
|
198
|
+
#
|
199
|
+
# as_is_data_structs = set(rel_el_list.get("data_structure_guids", []))
|
200
|
+
# as_is_parent_fields = set(rel_el_list.get("parent_guids", []))
|
201
|
+
# as_is_assigned_meanings = set(rel_el_list.get("assigned_meanings_guids", []))
|
202
|
+
# as_is_data_classes = set(rel_el_list.get("data_class_guids", []))
|
203
|
+
#
|
204
|
+
# to_be_data_structs = set(structure_list) if structure_list is not None else set()
|
205
|
+
# to_be_parent_fields = set(parent_field_list) if parent_field_list is not None else set()
|
206
|
+
# to_be_assigned_meanings = set(terms) if terms is not None else set()
|
207
|
+
# to_be_data_classes = set([data_class_guid]) if data_class_guid is not None else set()
|
208
|
+
#
|
209
|
+
# logger.trace(f"as_is_data_structs: {list(as_is_data_structs)} to_be_data_struct: {list(to_be_data_structs)}")
|
210
|
+
# logger.trace(
|
211
|
+
# f"as_is_parent_fields: {list(as_is_parent_fields)} to_be_parent_fields: {list(to_be_parent_fields)}")
|
212
|
+
# logger.trace(f"as_is_assigned_meanings: {list(as_is_assigned_meanings)} to_be_assigned_meanings: "
|
213
|
+
# f"{list(to_be_assigned_meanings)}")
|
214
|
+
# logger.trace(f"as_is_data_classes: {list(as_is_data_classes)} to_be_assigned_data_classes: "
|
215
|
+
# f"{list(to_be_data_classes)}")
|
216
|
+
#
|
217
|
+
# data_struct_to_remove = as_is_data_structs - to_be_data_structs
|
218
|
+
# logger.trace(f"data_struct_to_remove: {list(data_struct_to_remove)}")
|
219
|
+
# if len(data_struct_to_remove) > 0:
|
220
|
+
# for ds in data_struct_to_remove:
|
221
|
+
# egeria_client.detach_member_data_field(ds, guid, None)
|
222
|
+
# msg = f"Removed `{display_name}` from structure `{ds}`"
|
223
|
+
# logger.trace(msg)
|
224
|
+
# data_struct_to_add = to_be_data_structs - as_is_data_structs
|
225
|
+
# logger.trace(f"data_struct_to_add: {list(data_struct_to_add)}")
|
226
|
+
# if len(data_struct_to_add) > 0:
|
227
|
+
# for ds in data_struct_to_add:
|
228
|
+
# egeria_client.link_member_data_field(ds, guid, None)
|
229
|
+
# msg = f"Added `{display_name}` to structure `{ds}`"
|
230
|
+
# logger.trace(msg)
|
231
|
+
#
|
232
|
+
# parent_field_to_remove = to_be_parent_fields - as_is_parent_fields
|
233
|
+
# logger.trace(f"parent_field_to_remove: {list(parent_field_to_remove)}")
|
234
|
+
# if len(parent_field_to_remove) > 0:
|
235
|
+
# for field in parent_field_to_remove:
|
236
|
+
# egeria_client.detach_nested_data_field(field, guid, None)
|
237
|
+
# msg = f"Removed `{display_name}` from field `{field}`"
|
238
|
+
# logger.trace(msg)
|
239
|
+
# parent_field_to_add = to_be_parent_fields - as_is_parent_fields
|
240
|
+
# logger.trace(f"parent_field_to_add: {list(parent_field_to_add)}")
|
241
|
+
# if len(parent_field_to_add) > 0:
|
242
|
+
# for field in parent_field_to_add:
|
243
|
+
# egeria_client.link_nested_data_field(field, guid, None)
|
244
|
+
# msg = f"Added `{display_name}` to field `{field}`"
|
245
|
+
# logger.trace(msg)
|
246
|
+
#
|
247
|
+
# terms_to_remove = as_is_assigned_meanings - to_be_assigned_meanings
|
248
|
+
# logger.trace(f"terms_to_remove: {list(terms_to_remove)}")
|
249
|
+
# if terms:
|
250
|
+
# for term in terms_to_remove:
|
251
|
+
# egeria_client.detach_semantic_definition(guid, term, None)
|
252
|
+
# msg = f"Removed `{term}` from `{display_name}`"
|
253
|
+
# logger.trace(msg)
|
254
|
+
# terms_to_add = to_be_assigned_meanings - as_is_assigned_meanings
|
255
|
+
# logger.trace(f"terms_to_add: {list(terms_to_add)}")
|
256
|
+
# if len(terms_to_add) > 0:
|
257
|
+
# for term in terms_to_add:
|
258
|
+
# egeria_client.link_semantic_definition(guid, term, None)
|
259
|
+
# msg = f"Added `{term}` to`{display_name}`"
|
260
|
+
# logger.trace(msg)
|
261
|
+
#
|
262
|
+
# classes_to_remove = as_is_data_classes - to_be_data_classes
|
263
|
+
# logger.trace(f"classes_to_remove: {list(classes_to_remove)}")
|
264
|
+
# if len(terms_to_remove) > 0:
|
265
|
+
# for dc in classes_to_remove:
|
266
|
+
# body = {
|
267
|
+
# "class": "MetadataSourceRequestBody", "forLineage": False, "forDuplicateProcessing": False
|
268
|
+
# }
|
269
|
+
# egeria_client.detach_data_class_definition(guid, dc, body)
|
270
|
+
# msg = f"Removed `{dc}` from `{display_name}`"
|
271
|
+
# logger.trace(msg)
|
272
|
+
# classes_to_add = to_be_data_classes - as_is_data_classes
|
273
|
+
# logger.trace(f"classes_to_add: {list(classes_to_add)}")
|
274
|
+
# if len(terms_to_add) > 0:
|
275
|
+
# for dc in classes_to_add:
|
276
|
+
# body = {
|
277
|
+
# "class": "RelationshipRequestBody", "forLineage": False, "forDuplicateProcessing": False
|
278
|
+
# }
|
279
|
+
# egeria_client.link_data_class_definition(guid, dc, body)
|
280
|
+
# msg = f"Added `{dc}` to`{display_name}`"
|
281
|
+
# logger.trace(msg)
|
282
|
+
#
|
283
|
+
#
|
284
|
+
# else: # merge - add field to related elements
|
285
|
+
# if structure_list:
|
286
|
+
# add_field_to_data_structures(egeria_client, display_name, structure_list, guid)
|
287
|
+
# msg = f"Added `{display_name}` to `{structure_list}`"
|
288
|
+
# logger.trace(msg)
|
289
|
+
#
|
290
|
+
# if parent_field_list:
|
291
|
+
# for field in parent_field_list:
|
292
|
+
# egeria_client.link_nested_data_field(field, guid, None)
|
293
|
+
# msg = f"Added `{display_name}` to `{field}`"
|
294
|
+
# logger.trace(msg)
|
295
|
+
# if terms:
|
296
|
+
# for term in terms:
|
297
|
+
# egeria_client.link_semantic_definition(guid, term, None)
|
298
|
+
# msg = f"Added `{term}` to `{display_name}`"
|
299
|
+
# logger.trace(msg)
|
300
|
+
#
|
301
|
+
# if data_class_guid:
|
302
|
+
# egeria_client.link_data_class_definition(guid, data_class_guid)
|
303
|
+
# msg = f"Added `{data_class_guid}` to `{display_name}`"
|
304
|
+
# logger.trace(msg)
|
315
305
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
306
|
+
#
|
307
|
+
# @logger.catch
|
308
|
+
# def sync_data_class_rel_elements(egeria_client: EgeriaTech, containing_data_class_guids: list, terms: list,
|
309
|
+
# specializes_data_classes: list, guid: str, display_name: str,
|
310
|
+
# replace_all_props: bool = True) -> None:
|
311
|
+
# """Sync a data class' related elements.
|
312
|
+
#
|
313
|
+
# """
|
314
|
+
# if terms:
|
315
|
+
# terms = [terms]
|
316
|
+
#
|
317
|
+
# if replace_all_props:
|
318
|
+
# rel_el_list = egeria_client.get_data_class_rel_elements(guid)
|
319
|
+
# if rel_el_list is None:
|
320
|
+
# logger.warning("Unexpected -> the list was None - assigning empty list")
|
321
|
+
# rel_el_list = {}
|
322
|
+
# if terms:
|
323
|
+
# terms = [terms]
|
324
|
+
#
|
325
|
+
# as_is_nested_classes = set(rel_el_list.get("nested_data_class_guids", []))
|
326
|
+
# as_is_assigned_meanings = set(rel_el_list.get("assigned_meanings_guids", []))
|
327
|
+
# as_is_specialized_classes = set(rel_el_list.get("specialized_data_class_guids", []))
|
328
|
+
#
|
329
|
+
# to_be_nested_classes = set(containing_data_class_guids) if containing_data_class_guids is not None else set()
|
330
|
+
# to_be_assigned_meanings = set(terms) if terms is not None else set()
|
331
|
+
# to_be_specialized_classes = set([specializes_data_classes]) if specializes_data_classes is not None else set()
|
332
|
+
#
|
333
|
+
# logger.trace(
|
334
|
+
# f"as_is_nested_classes: {list(as_is_nested_classes)} to_be_nested_classes: {list(to_be_nested_classes)}")
|
335
|
+
# logger.trace(f"as_is_assigned_meanings: {list(as_is_assigned_meanings)} to_be_assigned_meanings: "
|
336
|
+
# f"{list(to_be_assigned_meanings)}")
|
337
|
+
# logger.trace(f"as_is_specialized_classes: {list(as_is_specialized_classes)} to_be_specizialized_data_classes: "
|
338
|
+
# f"{list(to_be_specialized_classes)}")
|
339
|
+
#
|
340
|
+
# nested_classes_to_remove = to_be_nested_classes - as_is_nested_classes
|
341
|
+
# logger.trace(f"nested_classes_to_remove: {list(nested_classes_to_remove)}")
|
342
|
+
# if len(nested_classes_to_remove) > 0:
|
343
|
+
# for field in nested_classes_to_remove:
|
344
|
+
# egeria_client.detach_nested_data_class(field, guid, None)
|
345
|
+
# msg = f"Removed `{display_name}` from field `{field}`"
|
346
|
+
# logger.trace(msg)
|
347
|
+
# nested_classes_to_add = to_be_nested_classes - as_is_nested_classes
|
348
|
+
# logger.trace(f"nested_classes_to_add: {list(nested_classes_to_add)}")
|
349
|
+
# if len(nested_classes_to_add) > 0:
|
350
|
+
# for field in nested_classes_to_add:
|
351
|
+
# egeria_client.link_nested_data_class(field, guid, None)
|
352
|
+
# msg = f"Added `{display_name}` to field `{field}`"
|
353
|
+
# logger.trace(msg)
|
354
|
+
#
|
355
|
+
# terms_to_remove = as_is_assigned_meanings - to_be_assigned_meanings
|
356
|
+
# logger.trace(f"terms_to_remove: {list(terms_to_remove)}")
|
357
|
+
# if len(terms_to_remove) > 0:
|
358
|
+
# for term in terms_to_remove:
|
359
|
+
# egeria_client.detach_semantic_definition(guid, term, None)
|
360
|
+
# msg = f"Removed `{term}` from `{display_name}`"
|
361
|
+
# logger.trace(msg)
|
362
|
+
# terms_to_add = to_be_assigned_meanings - as_is_assigned_meanings
|
363
|
+
# logger.trace(f"terms_to_add: {list(terms_to_add)}")
|
364
|
+
# if len(terms_to_add) > 0:
|
365
|
+
# for term in terms_to_add:
|
366
|
+
# egeria_client.link_semantic_definition(guid, term, None)
|
367
|
+
# msg = f"Added `{term}` to`{display_name}`"
|
368
|
+
# logger.trace(msg)
|
369
|
+
#
|
370
|
+
# specialized_classes_to_remove = as_is_specialized_classes - to_be_specialized_classes
|
371
|
+
# logger.trace(f"classes_to_remove: {list(specialized_classes_to_remove)}")
|
372
|
+
# if len(terms_to_remove) > 0:
|
373
|
+
# for dc in specialized_classes_to_remove:
|
374
|
+
# body = {
|
375
|
+
# "class": "MetadataSourceRequestBody", "forLineage": False, "forDuplicateProcessing": False
|
376
|
+
# }
|
377
|
+
# egeria_client.detach_specialist_data_class(guid, dc, body)
|
378
|
+
# msg = f"Removed `{dc}` from `{display_name}`"
|
379
|
+
# logger.trace(msg)
|
380
|
+
# specialized_classes_to_add = to_be_specialized_classes - as_is_specialized_classes
|
381
|
+
# logger.trace(f"classes_to_add: {list(specialized_classes_to_add)}")
|
382
|
+
# if len(specialized_classes_to_add) > 0:
|
383
|
+
# for dc in specialized_classes_to_add:
|
384
|
+
# body = {
|
385
|
+
# "class": "RelationshipRequestBody", "forLineage": False, "forDuplicateProcessing": False
|
386
|
+
# }
|
387
|
+
# egeria_client.link_specialist_data_class(guid, dc, body)
|
388
|
+
# msg = f"Added `{dc}` to`{display_name}`"
|
389
|
+
# logger.trace(msg)
|
390
|
+
#
|
391
|
+
#
|
392
|
+
# else: # merge - add field to related elements
|
393
|
+
# if containing_data_class_guids:
|
394
|
+
# for field in containing_data_class_guids:
|
395
|
+
# egeria_client.link_nested_data_class(field, guid, None)
|
396
|
+
# msg = f"Added `{display_name}` to `{field}`"
|
397
|
+
# logger.trace(msg)
|
398
|
+
#
|
399
|
+
# if terms:
|
400
|
+
# for term in terms:
|
401
|
+
# egeria_client.link_semantic_definition(guid, term, None)
|
402
|
+
# msg = f"Added `{term}` to `{display_name}`"
|
403
|
+
# logger.trace(msg)
|
404
|
+
# if specializes_data_classes:
|
405
|
+
# for el in specializes_data_classes:
|
406
|
+
# egeria_client.link_specialist_data_class(guid, el)
|
407
|
+
# msg = f"Linked `{el}` to `{display_name}`"
|
408
|
+
# logger.trace(msg)
|
408
409
|
#
|
409
410
|
# Product Manager Commands
|
410
411
|
#
|
@@ -442,37 +443,37 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
|
|
442
443
|
attributes = parsed_output['attributes']
|
443
444
|
|
444
445
|
display_name = attributes['Display Name'].get('value', None)
|
445
|
-
description = attributes.get('Description',{}).get('value', None)
|
446
|
-
user_defined_status = attributes.get('User Defined Status',{}).get('value', None)
|
447
|
-
|
448
|
-
collection_classification = attributes.get('Collection Classification', {}).get('value', None)
|
446
|
+
# description = attributes.get('Description',{}).get('value', None)
|
447
|
+
# user_defined_status = attributes.get('User Defined Status',{}).get('value', None)
|
448
|
+
#
|
449
|
+
# collection_classification = attributes.get('Collection Classification', {}).get('value', None)
|
449
450
|
|
450
|
-
current_version = attributes.get('Version Identifier',{}).get('value', None)
|
451
|
+
# current_version = attributes.get('Version Identifier',{}).get('value', None)
|
451
452
|
|
452
453
|
# status = attributes.get('Status',{}).get('value', "ACTIVE")
|
453
454
|
|
454
|
-
anchor_guid = attributes.get('Anchor ID', {}).get('guid', None)
|
455
|
-
parent_guid = attributes.get('Parent ID', {}).get('guid', None)
|
456
|
-
parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value', None)
|
457
|
-
parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value',"CollectionMembership")
|
458
|
-
parent_at_end1 = attributes.get('Parent at End1', {}).get('value', True)
|
459
|
-
anchor_scope_guid = attributes.get('Anchor Scope GUID', {}).get('value', None)
|
460
|
-
is_own_anchor = attributes.get('Is Own Anchor', {}).get('value', True)
|
461
|
-
if parent_guid is None:
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
additional_prop = attributes.get('Additional Properties', {}).get('value', None)
|
466
|
-
additional_properties = json.loads(additional_prop) if additional_prop is not None else None
|
467
|
-
extended_prop = attributes.get('Extended Properties', {}).get('value', None)
|
468
|
-
extended_properties = json.loads(extended_prop) if extended_prop is not None else None
|
469
|
-
external_source_guid = attributes.get('External Source Name', {}).get('guid', None)
|
470
|
-
external_source_name = attributes.get('External Source Name', {}).get('value', None)
|
471
|
-
effective_time = attributes.get('Effective Time', {}).get('value', None)
|
472
|
-
for_lineage = attributes.get('For Lineage', {}).get('value', None)
|
473
|
-
for_duplicate_processing = attributes.get('For Duplicate Processing', {}).get('value', None)
|
474
|
-
|
475
|
-
replace_all_props = not attributes.get('Merge Update', {}).get('value', True)
|
455
|
+
# anchor_guid = attributes.get('Anchor ID', {}).get('guid', None)
|
456
|
+
# parent_guid = attributes.get('Parent ID', {}).get('guid', None)
|
457
|
+
# parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value', None)
|
458
|
+
# parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value',"CollectionMembership")
|
459
|
+
# parent_at_end1 = attributes.get('Parent at End1', {}).get('value', True)
|
460
|
+
# anchor_scope_guid = attributes.get('Anchor Scope GUID', {}).get('value', None)
|
461
|
+
# is_own_anchor = attributes.get('Is Own Anchor', {}).get('value', True)
|
462
|
+
# if parent_guid is None:
|
463
|
+
# is_own_anchor = True
|
464
|
+
|
465
|
+
|
466
|
+
# additional_prop = attributes.get('Additional Properties', {}).get('value', None)
|
467
|
+
# additional_properties = json.loads(additional_prop) if additional_prop is not None else None
|
468
|
+
# extended_prop = attributes.get('Extended Properties', {}).get('value', None)
|
469
|
+
# extended_properties = json.loads(extended_prop) if extended_prop is not None else None
|
470
|
+
# external_source_guid = attributes.get('External Source Name', {}).get('guid', None)
|
471
|
+
# external_source_name = attributes.get('External Source Name', {}).get('value', None)
|
472
|
+
# effective_time = attributes.get('Effective Time', {}).get('value', None)
|
473
|
+
# for_lineage = attributes.get('For Lineage', {}).get('value', None)
|
474
|
+
# for_duplicate_processing = attributes.get('For Duplicate Processing', {}).get('value', None)
|
475
|
+
|
476
|
+
# replace_all_props = not attributes.get('Merge Update', {}).get('value', True)
|
476
477
|
|
477
478
|
if directive == "display":
|
478
479
|
|
@@ -497,10 +498,10 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
|
|
497
498
|
else:
|
498
499
|
print(Markdown(
|
499
500
|
f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
|
500
|
-
prop_body =
|
501
|
+
prop_body = set_prop_body(object_type,qualified_name,attributes)
|
501
502
|
|
502
503
|
body = set_update_body(object_type, attributes)
|
503
|
-
body['properties'] =
|
504
|
+
body['properties'] = set_prop_body(object_type,qualified_name,attributes)
|
504
505
|
|
505
506
|
egeria_client.update_collection_w_body(guid, body)
|
506
507
|
# egeria_client.update_collection_status(guid, status)
|
@@ -522,8 +523,10 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
|
|
522
523
|
|
523
524
|
else:
|
524
525
|
body = set_create_body(object_type,attributes)
|
525
|
-
|
526
|
-
|
526
|
+
|
527
|
+
# if this is a root or folder (maybe more in the future), then make sure that the classification is set.
|
528
|
+
body["initialClassifications"] = set_collections_classifications(object_type, attributes)
|
529
|
+
body["properties"] = set_prop_body(object_type, qualified_name,attributes)
|
527
530
|
|
528
531
|
|
529
532
|
guid = egeria_client.create_collection_w_body(body)
|
@@ -540,9 +543,11 @@ def process_collection_upsert_command(egeria_client: EgeriaTech, txt: str, direc
|
|
540
543
|
logger.error(msg)
|
541
544
|
return None
|
542
545
|
|
546
|
+
except PyegeriaException as e:
|
547
|
+
logger.error(f"Pyegeria error performing {command}: {e}")
|
548
|
+
return None
|
543
549
|
except Exception as e:
|
544
550
|
logger.error(f"Error performing {command}: {e}")
|
545
|
-
return None
|
546
551
|
else:
|
547
552
|
return None
|
548
553
|
|
@@ -576,51 +581,8 @@ def process_digital_product_upsert_command(egeria_client: EgeriaTech, txt: str,
|
|
576
581
|
attributes = parsed_output['attributes']
|
577
582
|
|
578
583
|
display_name = attributes['Display Name'].get('value', None)
|
579
|
-
description = attributes.get('Description',{}).get('value', None)
|
580
|
-
user_defined_status = attributes.get('User Defined Status',{}).get('value', None)
|
581
|
-
product_identifier = attributes.get('Product Identifier',{}).get('value', None)
|
582
|
-
product_name = attributes.get('Product Name',{}).get('value', None)
|
583
|
-
product_type = attributes.get('Product Type',{}).get('value', None)
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
product_description = attributes.get('Product Description',{}).get('value', None)
|
588
|
-
maturity = attributes.get('Maturity',{}).get('value', None)
|
589
|
-
service_life = attributes.get('Service Life',{}).get('value', None)
|
590
|
-
introduction_date = attributes.get('Introduction Date',{}).get('value', None)
|
591
|
-
next_version_date = attributes.get('Next Version Date',{}).get('value', None)
|
592
|
-
withdrawal_date = attributes.get('Withdrawal Date',{}).get('value', None)
|
593
|
-
|
594
|
-
collection_type = attributes.get('Collection Type', {}).get('value', None)
|
595
|
-
current_version = attributes.get('Version Identifier',{}).get('value', None)
|
596
584
|
product_manager = attributes.get('Product Manager',{}).get('value', None)
|
597
585
|
|
598
|
-
|
599
|
-
product_status = attributes.get('Status',{}).get('value', "ACTIVE")
|
600
|
-
|
601
|
-
anchor_guid = attributes.get('Anchor ID', {}).get('guid', None)
|
602
|
-
parent_guid = attributes.get('Parent ID', {}).get('guid', None)
|
603
|
-
parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value', None)
|
604
|
-
parent_relationship_type_name = attributes.get('Parent Relationship Type Name', {}).get('value',"CollectionMembership")
|
605
|
-
parent_at_end1 = attributes.get('Parent at End1', {}).get('value', True)
|
606
|
-
anchor_scope_guid = attributes.get('Anchor Scope GUID', {}).get('value', None)
|
607
|
-
is_own_anchor = attributes.get('Is Own Anchor', {}).get('value', True)
|
608
|
-
if parent_guid is None:
|
609
|
-
is_own_anchor = True
|
610
|
-
|
611
|
-
|
612
|
-
additional_prop = attributes.get('Additional Properties', {}).get('value', None)
|
613
|
-
additional_properties = json.loads(additional_prop) if additional_prop is not None else None
|
614
|
-
extended_prop = attributes.get('Extended Properties', {}).get('value', None)
|
615
|
-
extended_properties = json.loads(extended_prop) if extended_prop is not None else None
|
616
|
-
external_source_guid = attributes.get('External Source Name', {}).get('guid', None)
|
617
|
-
external_source_name = attributes.get('External Source Name', {}).get('value', None)
|
618
|
-
effective_time = attributes.get('Effective Time', {}).get('value', None)
|
619
|
-
for_lineage = attributes.get('For Lineage', {}).get('value', None)
|
620
|
-
for_duplicate_processing = attributes.get('For Duplicate Processing', {}).get('value', None)
|
621
|
-
|
622
|
-
replace_all_props = not attributes.get('Merge Update', {}).get('value', True)
|
623
|
-
|
624
586
|
if directive == "display":
|
625
587
|
|
626
588
|
return None
|
@@ -644,34 +606,8 @@ def process_digital_product_upsert_command(egeria_client: EgeriaTech, txt: str,
|
|
644
606
|
else:
|
645
607
|
print(Markdown(
|
646
608
|
f"==> Validation of {command} completed successfully! Proceeding to apply the changes.\n"))
|
647
|
-
prop_body =
|
648
|
-
|
649
|
-
body ={
|
650
|
-
"class": "UpdateElementRequestBody",
|
651
|
-
"properties": {
|
652
|
-
"class": "DigitalProductProperties",
|
653
|
-
"qualifiedName": qualified_name,
|
654
|
-
"userDefinedStatus": user_defined_status,
|
655
|
-
"name": display_name,
|
656
|
-
"description": description,
|
657
|
-
"identifier": product_identifier,
|
658
|
-
"productName": product_name,
|
659
|
-
"productType": product_type,
|
660
|
-
"maturity": maturity,
|
661
|
-
"serviceLife": service_life,
|
662
|
-
"introductionDate": introduction_date,
|
663
|
-
"nextVersionDate": next_version_date,
|
664
|
-
"withdrawDate": withdrawal_date,
|
665
|
-
"currentVersion": current_version,
|
666
|
-
"additionalProperties": additional_properties,
|
667
|
-
"extendedProperties": extended_properties,
|
668
|
-
},
|
669
|
-
"externalSourceGUID": external_source_guid,
|
670
|
-
"externalSourceName": external_source_name,
|
671
|
-
"effectiveTime": effective_time,
|
672
|
-
"forLineage": for_lineage,
|
673
|
-
"forDuplicateProcessing": for_duplicate_processing
|
674
|
-
}
|
609
|
+
prop_body = set_product_body(object_type,qualified_name,attributes)
|
610
|
+
# Todo: Update product manager later?
|
675
611
|
|
676
612
|
egeria_client.update_digital_product(guid, body)
|
677
613
|
egeria_client.update_digital_product_status(guid, product_status)
|
@@ -692,49 +628,21 @@ def process_digital_product_upsert_command(egeria_client: EgeriaTech, txt: str,
|
|
692
628
|
return update_a_command(txt, object_action, object_type, qualified_name, guid)
|
693
629
|
|
694
630
|
else:
|
695
|
-
body =
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
"parentRelationshipTypeName": parent_relationship_type_name,
|
700
|
-
"parentAtEnd1": parent_at_end1,
|
701
|
-
"properties": {
|
702
|
-
"class": "DigitalProductProperties",
|
703
|
-
"qualifiedName": qualified_name,
|
704
|
-
"userDefinedStatus": user_defined_status,
|
705
|
-
"name": display_name,
|
706
|
-
"description" : description,
|
707
|
-
"identifier": product_identifier,
|
708
|
-
"productName": product_name,
|
709
|
-
"productType": product_type,
|
710
|
-
"maturity": maturity,
|
711
|
-
"serviceLife": service_life,
|
712
|
-
"introductionDate": introduction_date,
|
713
|
-
"nextVersionDate": next_version_date,
|
714
|
-
"withdrawDate": withdrawal_date,
|
715
|
-
"currentVersion": current_version,
|
716
|
-
|
717
|
-
"additionalProperties": additional_properties,
|
718
|
-
"extendedProperties": extended_properties,
|
719
|
-
},
|
720
|
-
"initialStatus": product_status,
|
721
|
-
"externalSourceGUID": external_source_guid,
|
722
|
-
"externalSourceName": external_source_name,
|
723
|
-
"effectiveTime" : effective_time,
|
724
|
-
"forLineage": for_lineage,
|
725
|
-
"forDuplicateProcessing": for_duplicate_processing
|
726
|
-
}
|
727
|
-
|
728
|
-
|
631
|
+
body = set_create_body(object_type, attributes)
|
632
|
+
body["initialClassifications"] = set_collection_classifications(object_type, attributes)
|
633
|
+
prop_body = set_product_body(object_type, qualified_name, attributes)
|
634
|
+
body["properties"] = prop_body
|
729
635
|
|
730
636
|
guid = egeria_client.create_digital_product(body)
|
731
637
|
if guid:
|
732
638
|
update_element_dictionary(qualified_name, {
|
733
639
|
'guid': guid, 'display_name': display_name
|
734
640
|
})
|
641
|
+
# Todo: Add product manager link later? Agreements?
|
642
|
+
|
735
643
|
msg = f"Created Element `{display_name}` with GUID {guid}\n\n___"
|
736
644
|
logger.success(msg)
|
737
|
-
return egeria_client.get_collection_by_guid(guid,
|
645
|
+
return egeria_client.get_collection_by_guid(guid, element_type='Digital Product',
|
738
646
|
output_format='MD')
|
739
647
|
else:
|
740
648
|
msg = f"Failed to create element `{display_name}` with GUID {guid}\n\n___"
|