From 77028f25b9d61a3232f8eb691478ab5d32f29bcb Mon Sep 17 00:00:00 2001 From: Dan Wolfson Date: Wed, 21 Oct 2026 20:11:44 -0500 Subject: [PATCH] Dr.Egeria Postgres element commands take a secrets store (ISSUE-160 follow-up) pyegeria 6.2.8's Postgres template builders ignore db_user/db_pwd (Egeria's Postgres templates read credentials from a secrets store), but Dr.Egeria's Create Postgres Server Element / Create Postgres Database Element still asked for Database User Id / Database Password and passed them through. - Asset Maker compact spec (edited through the Spec Editor API): delete Database User Id / Database Password (used by no other command); add Secrets Store Path Name and Secrets Collection Name; add Version Identifier to both commands and Resource Name (canonical Governance Officer definition) to the server. - AssetMakerProcessor passes secrets_store_path_name, secrets_collection_name, version (and resource_name for the server), and no longer passes db_user/db_pwd. - Regenerated templates and report specs (refresh_specs --merge-reports). generated_format_sets.json also picks up the analytic_binders field added to ActionParameter since it was last regenerated. - tests/micro-tests/test_postgres_element_secrets.py. - PYEGERIA_ISSUES.md: ISSUE-160's Dr.Egeria follow-up is done. Co-Authored-By: Claude Opus 5.5 Signed-off-by: Dan Wolfson --- PYEGERIA_ISSUES.md | 2 +- .../commands_asset_maker_compact.json | 110 +- md_processing/data/generated_format_sets.json | 1094 ++++++++++++----- md_processing/v2/asset_maker.py | 11 +- pyegeria/view/base_report_formats.py | 8 +- .../Create_Postgres_Database_Element.md | 10 +- .../Create_Postgres_Server_Element.md | 18 +- .../Create_Postgres_Database_Element.md | 10 +- .../Create_Postgres_Server_Element.md | 18 +- .../test_postgres_element_secrets.py | 95 ++ 10 files changed, 981 insertions(+), 395 deletions(-) create mode 100644 tests/micro-tests/test_postgres_element_secrets.py diff --git a/PYEGERIA_ISSUES.md b/PYEGERIA_ISSUES.md index 22e2dafa..4d143d5a 100644 --- a/PYEGERIA_ISSUES.md +++ b/PYEGERIA_ISSUES.md @@ -320,7 +320,7 @@ Tests: `tests/micro-tests/test_issue_160_template_placeholders.py` (5 cases; all Each is a new optional parameter on the async method and its sync wrapper. - **Item 4 needed no change:** "Keystore File" is a real template (`DataAssetTemplateDefinition.KEYSTORE_FILE_TEMPLATE`), and live, both "YAML File Secrets Collection" and "Keystore File" resolve to template `fbcfcc0c`. -Tests: `tests/micro-tests/test_issue_160_remaining_placeholders.py`, 11 cases, all failing on #474's code. The full micro-test suite (1,420) passes in a clean python:3.13-slim container. **Follow-up not in this fix:** Dr.Egeria's `Postgres Server Element` / `Postgres Database Element` commands still pass `Database User Id` / `Database Password`. Those are now ignored with a warning; their compact specs need `Secrets Store Path Name` / `Secrets Collection Name` attributes. +Tests: `tests/micro-tests/test_issue_160_remaining_placeholders.py`, 11 cases, all failing on #474's code. The full micro-test suite (1,420) passes in a clean python:3.13-slim container. **Dr.Egeria follow-up, done 2026-10-21** (after 6.2.8; branch `claude/elegant-chatterjee-d280de`): the `Create Postgres Server Element` / `Create Postgres Database Element` commands no longer offer `Database User Id` / `Database Password`. Both attributes were deleted from the Asset Maker compact spec, since no other command used them. The commands now offer `Secrets Store Path Name`, `Secrets Collection Name` and `Version Identifier`, and the server also offers `Resource Name` (the canonical Governance Officer definition, copied). `AssetMakerProcessor` passes them as `secrets_store_path_name` / `secrets_collection_name` / `version` / `resource_name` and no longer passes `db_user` / `db_pwd`. Templates, help and report specs were regenerated, and the templates were copied to egeria-workspaces and trellis on local branches. Test: `tests/micro-tests/test_postgres_element_secrets.py`. Not run against a live server. **Follow-up live check 2026-10-21 15:16Z** (Egeria `main` 05a5e982, erinoverview, after a peer round; #475 code): - **(a)** `create_postgres_server_element_from_template("pyeg_rt_pg_…", "pyeg-rt.invalid", "5432", secrets_store_path_name=…, secrets_collection_name=…)`, with no `db_user` / `db_pwd`, created SoftwareServer `b6b2ebff`: `resourceName` = the server name, `versionIdentifier` and `description` = `""`, and no `~{...}~` in its own properties. Its Connection `55686913` and Endpoint `59014065` (`jdbc:postgresql://pyeg-rt.invalid:5432/postgres`) had no literals either. diff --git a/md_processing/data/compact_commands/commands_asset_maker_compact.json b/md_processing/data/compact_commands/commands_asset_maker_compact.json index 3c222b48..49506ccc 100644 --- a/md_processing/data/compact_commands/commands_asset_maker_compact.json +++ b/md_processing/data/compact_commands/commands_asset_maker_compact.json @@ -173,44 +173,6 @@ "level": "Basic", "Journal Entry": "Added 2026-09-11 -- Asset Maker family (Create Element from Automated Curation)." }, - "Database User Id": { - "variable_name": "db_user", - "inUpdate": false, - "attr_labels": "", - "examples": "", - "default_value": "", - "valid_values": [], - "existing_element": "", - "description": "User id used to connect to the database server.", - "generated": false, - "style": "Simple", - "user_specified": true, - "unique": false, - "input_required": false, - "min_cardinality": 0, - "max_cardinality": 1, - "level": "Basic", - "Journal Entry": "Added 2026-09-11 -- Asset Maker family (Create Element from Automated Curation)." - }, - "Database Password": { - "variable_name": "db_pwd", - "inUpdate": false, - "attr_labels": "", - "examples": "", - "default_value": "", - "valid_values": [], - "existing_element": "", - "description": "Password used to connect to the database server.", - "generated": false, - "style": "Simple", - "user_specified": true, - "unique": false, - "input_required": false, - "min_cardinality": 0, - "max_cardinality": 1, - "level": "Basic", - "Journal Entry": "Added 2026-09-11 -- Asset Maker family (Create Element from Automated Curation)." - }, "File Path Name": { "variable_name": "file_path_name", "inUpdate": false, @@ -566,6 +528,63 @@ "max_cardinality": 1, "level": "Basic", "Journal Entry": "Added 2026-09-11 -- Asset Maker family (Create Element from Automated Curation)." + }, + "Secrets Store Path Name": { + "inUpdate": false, + "attr_labels": "", + "examples": "", + "default_value": "", + "valid_values": [], + "existing_element": "", + "generated": false, + "style": "Simple", + "user_specified": true, + "unique": false, + "input_required": false, + "min_cardinality": 0, + "max_cardinality": 1, + "level": "Basic", + "Journal Entry": "Added 2026-10-21 -- ISSUE-160 follow-up: Egeria's Postgres templates take credentials from a secrets store (pyegeria 6.2.8).", + "variable_name": "secrets_store_path_name", + "description": "Path name of the secrets store file that holds the credentials used to connect to the database server (secretsStorePathName)." + }, + "Secrets Collection Name": { + "inUpdate": false, + "attr_labels": "", + "examples": "", + "default_value": "", + "valid_values": [], + "existing_element": "", + "generated": false, + "style": "Simple", + "user_specified": true, + "unique": false, + "input_required": false, + "min_cardinality": 0, + "max_cardinality": 1, + "level": "Basic", + "Journal Entry": "Added 2026-10-21 -- ISSUE-160 follow-up: Egeria's Postgres templates take credentials from a secrets store (pyegeria 6.2.8).", + "variable_name": "secrets_collection_name", + "description": "Name of the collection within the secrets store that holds the credentials for this connection (secretsCollectionName)." + }, + "Resource Name": { + "variable_name": "resource_name", + "inUpdate": true, + "attr_labels": "", + "examples": "", + "default_value": "", + "valid_values": [], + "existing_element": "", + "description": "Name of a resource.", + "generated": false, + "style": "Simple", + "user_specified": true, + "unique": false, + "input_required": false, + "min_cardinality": 0, + "max_cardinality": 1, + "level": "Domain", + "Journal Entry": "" } }, "bundles": { @@ -675,11 +694,13 @@ "Postgres Server Name", "Host Name", "Port", - "Database User Id", - "Database Password", + "Secrets Store Path Name", + "Secrets Collection Name", + "Resource Name", + "Version Identifier", "Description" ], - "Journal Entry": "Added 2026-09-11 -- Asset Maker family, wraps automated_curation.py's create-element-from-template methods. OM_TYPE is best-effort (not yet confirmed against a live server's type system); create-only (no Update) since the underlying OMVS methods have no update counterpart." + "Journal Entry": "Added 2026-09-11 -- Asset Maker family, wraps automated_curation.py's create-element-from-template methods. OM_TYPE is best-effort (not yet confirmed against a live server's type system); create-only (no Update) since the underlying OMVS methods have no update counterpart. Updated 2026-10-21 (ISSUE-160 follow-up): Database User Id / Database Password replaced by Secrets Store Path Name / Secrets Collection Name; Version Identifier added (and Resource Name on the server)." }, "Create Postgres Database Element": { "display_name": "Postgres Database Element", @@ -702,11 +723,12 @@ "Postgres Server Name", "Host Name", "Port", - "Database User Id", - "Database Password", + "Secrets Store Path Name", + "Secrets Collection Name", + "Version Identifier", "Description" ], - "Journal Entry": "Added 2026-09-11 -- Asset Maker family, wraps automated_curation.py's create-element-from-template methods. OM_TYPE is best-effort (not yet confirmed against a live server's type system); create-only (no Update) since the underlying OMVS methods have no update counterpart." + "Journal Entry": "Added 2026-09-11 -- Asset Maker family, wraps automated_curation.py's create-element-from-template methods. OM_TYPE is best-effort (not yet confirmed against a live server's type system); create-only (no Update) since the underlying OMVS methods have no update counterpart. Updated 2026-10-21 (ISSUE-160 follow-up): Database User Id / Database Password replaced by Secrets Store Path Name / Secrets Collection Name; Version Identifier added (and Resource Name on the server)." }, "Create Folder Element": { "display_name": "Folder Element", diff --git a/md_processing/data/generated_format_sets.json b/md_processing/data/generated_format_sets.json index 6983ae71..3e4983be 100644 --- a/md_processing/data/generated_format_sets.json +++ b/md_processing/data/generated_format_sets.json @@ -715,7 +715,8 @@ "metadata_element_type": "GovernanceActionProcess" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -2256,7 +2257,8 @@ "metadata_element_type": "GovernanceActionProcess" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -3041,7 +3043,8 @@ "metadata_element_type": "GovernanceActionType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -4646,7 +4649,8 @@ "metadata_element_type": "GovernanceActionType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -5463,7 +5467,8 @@ "metadata_element_type": "GovernanceActionProcessStep" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -7100,7 +7105,8 @@ "metadata_element_type": "GovernanceActionProcessStep" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -7519,7 +7525,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -8854,7 +8861,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -9211,7 +9219,8 @@ "metadata_element_type": "GovernanceRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -10356,7 +10365,8 @@ "metadata_element_type": "GovernanceRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -10681,7 +10691,8 @@ "metadata_element_type": "ITProfileRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -11794,7 +11805,8 @@ "metadata_element_type": "ITProfileRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -12119,7 +12131,8 @@ "metadata_element_type": "Organization" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -13232,7 +13245,8 @@ "metadata_element_type": "Organization" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -13909,7 +13923,8 @@ "metadata_element_type": "Person" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -15374,7 +15389,8 @@ "metadata_element_type": "Person" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -15731,7 +15747,8 @@ "metadata_element_type": "PersonRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -16876,7 +16893,8 @@ "metadata_element_type": "PersonRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -17169,7 +17187,8 @@ "metadata_element_type": "Perspective" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -18250,7 +18269,8 @@ "metadata_element_type": "Perspective" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -18643,7 +18663,8 @@ "metadata_element_type": "Skill" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -19856,7 +19877,8 @@ "metadata_element_type": "Skill" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -20181,7 +20203,8 @@ "metadata_element_type": "Team" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -21294,7 +21317,8 @@ "metadata_element_type": "Team" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -21651,7 +21675,8 @@ "metadata_element_type": "TeamRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -22796,7 +22821,8 @@ "metadata_element_type": "TeamRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -23757,7 +23783,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -24064,7 +24091,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -24243,7 +24271,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -24422,7 +24451,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -24729,7 +24759,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -25036,7 +25067,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -25079,16 +25111,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Resource Name", + "key": "resource_name", "value": null, "format": false, "detail_spec": null, @@ -25101,6 +25141,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ], "columns": [ @@ -25129,16 +25177,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Resource Name", + "key": "resource_name", "value": null, "format": false, "detail_spec": null, @@ -25151,6 +25207,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ] }, @@ -25184,16 +25248,32 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Resource Name", + "key": "resource_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -25234,16 +25314,32 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Resource Name", + "key": "resource_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -25279,7 +25375,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -25322,16 +25419,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Resource Name", + "key": "resource_name", "value": null, "format": false, "detail_spec": null, @@ -25344,6 +25449,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ], "columns": [ @@ -25372,16 +25485,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Resource Name", + "key": "resource_name", "value": null, "format": false, "detail_spec": null, @@ -25394,6 +25515,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ] }, @@ -25427,16 +25556,32 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Resource Name", + "key": "resource_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -25477,16 +25622,32 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Resource Name", + "key": "resource_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -25522,7 +25683,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -25573,16 +25735,16 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, @@ -25595,6 +25757,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ], "columns": [ @@ -25631,16 +25801,16 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, @@ -25653,6 +25823,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ] }, @@ -25694,16 +25872,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -25752,16 +25938,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -25797,7 +25991,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -25848,16 +26043,16 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, @@ -25870,6 +26065,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ], "columns": [ @@ -25906,16 +26109,16 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, @@ -25928,6 +26131,14 @@ "format": false, "detail_spec": null, "valid_values": [] + }, + { + "name": "Version Identifier", + "key": "version_identifier", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] } ] }, @@ -25969,16 +26180,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -26027,16 +26246,24 @@ "valid_values": [] }, { - "name": "Database User Id", - "key": "db_user", + "name": "Secrets Store Path Name", + "key": "secrets_store_path_name", + "value": null, + "format": false, + "detail_spec": null, + "valid_values": [] + }, + { + "name": "Secrets Collection Name", + "key": "secrets_collection_name", "value": null, "format": false, "detail_spec": null, "valid_values": [] }, { - "name": "Database Password", - "key": "db_pwd", + "name": "Version Identifier", + "key": "version_identifier", "value": null, "format": false, "detail_spec": null, @@ -26072,7 +26299,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -26283,7 +26511,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -26494,7 +26723,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -26705,7 +26935,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -26916,7 +27147,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -27095,7 +27327,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -27274,7 +27507,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -27485,7 +27719,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -27696,7 +27931,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -28079,7 +28315,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -28462,7 +28699,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -28705,7 +28943,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -28948,7 +29187,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -29267,7 +29507,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -29586,7 +29827,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -29733,7 +29975,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -30172,7 +30415,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -30595,7 +30839,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -31838,7 +32083,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -32263,7 +32509,8 @@ "metadata_element_type": "CollectionFolder" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -33508,7 +33755,8 @@ "metadata_element_type": "CollectionFolder" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -33933,7 +34181,8 @@ "metadata_element_type": "DataSharingRequest" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -35178,7 +35427,8 @@ "metadata_element_type": "DataSharingRequest" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -35603,7 +35853,8 @@ "metadata_element_type": "Folio" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -36848,7 +37099,8 @@ "metadata_element_type": "Folio" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -37273,7 +37525,8 @@ "metadata_element_type": "HomeCollection" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -38518,7 +38771,8 @@ "metadata_element_type": "HomeCollection" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -38943,7 +39197,8 @@ "metadata_element_type": "Namespace" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -40188,7 +40443,8 @@ "metadata_element_type": "Namespace" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -40615,7 +40871,8 @@ "search_string": "QuestionSpec" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -41862,7 +42119,8 @@ "search_string": "QuestionSpec" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -42287,7 +42545,8 @@ "metadata_element_type": "RecentAccess" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -43532,7 +43791,8 @@ "metadata_element_type": "RecentAccess" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -43957,7 +44217,8 @@ "metadata_element_type": "ReferenceList" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -45202,7 +45463,8 @@ "metadata_element_type": "ReferenceList" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -45627,7 +45889,8 @@ "metadata_element_type": "ResultsSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -46872,7 +47135,8 @@ "metadata_element_type": "ResultsSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -47297,7 +47561,8 @@ "metadata_element_type": "RootCollection" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -48542,7 +48807,8 @@ "metadata_element_type": "RootCollection" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -48999,7 +49265,8 @@ "metadata_element_type": "SecurityGroup" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -50148,7 +50415,8 @@ "metadata_element_type": "SecurityGroup" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -50605,7 +50873,8 @@ "metadata_element_type": "SecurityList" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -51754,7 +52023,8 @@ "metadata_element_type": "SecurityList" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -52211,7 +52481,8 @@ "metadata_element_type": "SecurityRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -53360,7 +53631,8 @@ "metadata_element_type": "SecurityRole" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -53785,7 +54057,8 @@ "metadata_element_type": "SkillSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -55030,7 +55303,8 @@ "metadata_element_type": "SkillSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -55455,7 +55729,8 @@ "metadata_element_type": "SubjectArea" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -56700,7 +56975,8 @@ "metadata_element_type": "SubjectArea" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -57125,7 +57401,8 @@ "metadata_element_type": "WorkItemList" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -58370,7 +58647,8 @@ "metadata_element_type": "WorkItemList" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -58827,7 +59105,8 @@ "metadata_element_type": "WorkingSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -60104,7 +60383,8 @@ "metadata_element_type": "WorkingSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -60529,7 +60809,8 @@ "metadata_element_type": "DataSharingHub" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -61774,7 +62055,8 @@ "metadata_element_type": "DataSharingHub" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -62199,7 +62481,8 @@ "metadata_element_type": "EventSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -63444,7 +63727,8 @@ "metadata_element_type": "EventSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -63869,7 +64153,8 @@ "metadata_element_type": "ContextEventCollection" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -65114,7 +65399,8 @@ "metadata_element_type": "ContextEventCollection" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -65539,7 +65825,8 @@ "metadata_element_type": "ITSubsystem" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -66784,7 +67071,8 @@ "metadata_element_type": "ITSubsystem" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -67209,7 +67497,8 @@ "metadata_element_type": "NamingStandardRuleSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -68454,7 +68743,8 @@ "metadata_element_type": "NamingStandardRuleSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -68879,7 +69169,8 @@ "metadata_element_type": "SoftwareArchive" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -70124,7 +70415,8 @@ "metadata_element_type": "SoftwareArchive" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -70549,7 +70841,8 @@ "metadata_element_type": "DataDictionary" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -71794,7 +72087,8 @@ "metadata_element_type": "DataDictionary" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -72219,7 +72513,8 @@ "metadata_element_type": "DataSpec" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -73464,7 +73759,8 @@ "metadata_element_type": "DataSpec" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -73889,7 +74185,8 @@ "metadata_element_type": "ReportType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -75230,7 +75527,8 @@ "metadata_element_type": "ReportType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -75751,7 +76049,8 @@ "metadata_element_type": "DataStructure" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -77092,7 +77391,8 @@ "metadata_element_type": "DataStructure" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -78325,7 +78625,8 @@ "metadata_element_type": "DataField" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -80378,7 +80679,8 @@ "metadata_element_type": "DataField" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -81603,7 +81905,8 @@ "metadata_element_type": "DataClass" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -83648,7 +83951,8 @@ "metadata_element_type": "DataClass" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -84521,7 +84825,8 @@ "metadata_element_type": "DataValueSpecification" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -86214,7 +86519,8 @@ "metadata_element_type": "DataValueSpecification" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -87183,7 +87489,8 @@ "metadata_element_type": "DataGrain" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -88972,7 +89279,8 @@ "metadata_element_type": "DataGrain" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -89621,7 +89929,8 @@ "metadata_element_type": "DigitalProduct" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -91090,7 +91399,8 @@ "metadata_element_type": "DigitalProduct" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -91517,7 +91827,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -92764,7 +93075,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -93189,7 +93501,8 @@ "metadata_element_type": "Agreement" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -94434,7 +94747,8 @@ "metadata_element_type": "Agreement" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -94955,7 +95269,8 @@ "metadata_element_type": "CSVFile" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -96296,7 +96611,8 @@ "metadata_element_type": "CSVFile" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -96785,7 +97101,8 @@ "metadata_element_type": "DigitalSubscription" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -98094,7 +98411,8 @@ "metadata_element_type": "DigitalSubscription" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -98521,7 +98839,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -99768,7 +100087,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -101085,7 +101405,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -102520,7 +102841,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -103139,7 +103461,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -104578,7 +104901,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -105197,7 +105521,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -106636,7 +106961,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -107255,7 +107581,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -108694,7 +109021,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -109489,7 +109817,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -111104,7 +111433,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -112075,7 +112405,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -113866,7 +114197,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -114485,7 +114817,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -115924,7 +116257,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -116311,7 +116645,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -117486,7 +117821,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -117777,7 +118113,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -118856,7 +119193,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -123929,7 +124267,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -125364,7 +125703,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -125979,7 +126319,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -127698,7 +128039,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -128316,7 +128658,8 @@ "classification": "Question" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -130038,7 +130381,8 @@ "classification": "Question" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -130727,7 +131071,8 @@ "metadata_element_type": "BusinessImperative" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -132236,7 +132581,8 @@ "metadata_element_type": "BusinessImperative" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -133053,7 +133399,8 @@ "metadata_element_type": "CertificationType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -134562,7 +134909,8 @@ "metadata_element_type": "CertificationType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -135571,7 +135919,8 @@ "metadata_element_type": "DataLens" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -137272,7 +137621,8 @@ "metadata_element_type": "DataLens" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -137993,7 +138343,8 @@ "metadata_element_type": "DataProcessingPurpose" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -139406,7 +139757,8 @@ "metadata_element_type": "DataProcessingPurpose" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -140095,7 +140447,8 @@ "metadata_element_type": "GovernanceApproach" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -141476,7 +141829,8 @@ "metadata_element_type": "GovernanceApproach" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -142197,7 +142551,8 @@ "metadata_element_type": "GovernanceControl" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -143610,7 +143965,8 @@ "metadata_element_type": "GovernanceControl" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -144299,7 +144655,8 @@ "metadata_element_type": "GovernanceDefinition" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -145808,7 +146165,8 @@ "metadata_element_type": "GovernanceDefinition" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -146497,7 +146855,8 @@ "metadata_element_type": "GovernanceDriver" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -147878,7 +148237,8 @@ "metadata_element_type": "GovernanceDriver" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -148663,7 +149023,8 @@ "metadata_element_type": "GovernanceMetric" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -150140,7 +150501,8 @@ "metadata_element_type": "GovernanceMetric" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -150829,7 +151191,8 @@ "metadata_element_type": "GovernanceObligation" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -152210,7 +152573,8 @@ "metadata_element_type": "GovernanceObligation" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -152899,7 +153263,8 @@ "metadata_element_type": "GovernancePolicy" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -154280,7 +154645,8 @@ "metadata_element_type": "GovernancePolicy" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -154969,7 +155335,8 @@ "metadata_element_type": "GovernancePrinciple" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -156350,7 +156717,8 @@ "metadata_element_type": "GovernancePrinciple" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -157071,7 +157439,8 @@ "metadata_element_type": "GovernanceProcedure" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -158484,7 +158853,8 @@ "metadata_element_type": "GovernanceProcedure" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -159205,7 +159575,8 @@ "metadata_element_type": "GovernanceResponsibility" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -160618,7 +160989,8 @@ "metadata_element_type": "GovernanceResponsibility" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -161339,7 +161711,8 @@ "metadata_element_type": "GovernanceRule" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -162752,7 +163125,8 @@ "metadata_element_type": "GovernanceRule" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -163473,7 +163847,8 @@ "metadata_element_type": "GovernanceStrategy" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -165014,7 +165389,8 @@ "metadata_element_type": "GovernanceStrategy" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -165767,7 +166143,8 @@ "metadata_element_type": "GovernanceZone" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -167212,7 +167589,8 @@ "metadata_element_type": "GovernanceZone" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -168029,7 +168407,8 @@ "metadata_element_type": "LicenseType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -169538,7 +169917,8 @@ "metadata_element_type": "LicenseType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -170259,7 +170639,8 @@ "metadata_element_type": "Methodology" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -171672,7 +172053,8 @@ "metadata_element_type": "Methodology" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -172425,7 +172807,8 @@ "metadata_element_type": "NamingStandardRule" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -173870,7 +174253,8 @@ "metadata_element_type": "NamingStandardRule" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -174815,7 +175199,8 @@ "metadata_element_type": "NotificationType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -176452,7 +176837,8 @@ "metadata_element_type": "NotificationType" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -177205,7 +177591,8 @@ "metadata_element_type": "Regulation" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -178650,7 +179037,8 @@ "metadata_element_type": "Regulation" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -179339,7 +179727,8 @@ "metadata_element_type": "RegulationArticle" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -180720,7 +181109,8 @@ "metadata_element_type": "RegulationArticle" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -181409,7 +181799,8 @@ "metadata_element_type": "Risk" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -182790,7 +183181,8 @@ "metadata_element_type": "Risk" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -183511,7 +183903,8 @@ "metadata_element_type": "SecurityAccessControl" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -184924,7 +185317,8 @@ "metadata_element_type": "SecurityAccessControl" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -185645,7 +186039,8 @@ "metadata_element_type": "ServiceLevelObjective" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -187058,7 +187453,8 @@ "metadata_element_type": "ServiceLevelObjective" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -187875,7 +188271,8 @@ "metadata_element_type": "TermsAndConditions" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -189384,7 +189781,8 @@ "metadata_element_type": "TermsAndConditions" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -190073,7 +190471,8 @@ "metadata_element_type": "Threat" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -191454,7 +191853,8 @@ "metadata_element_type": "Threat" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -192453,7 +192853,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -194272,7 +194673,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -195271,7 +195673,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -197090,7 +197493,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -198089,7 +198493,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -199908,7 +200313,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -200907,7 +201313,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -202726,7 +203133,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -203721,7 +204129,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -205536,7 +205945,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -207189,7 +207599,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -209008,7 +209419,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -210007,7 +210419,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -211826,7 +212239,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -212825,7 +213239,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -214644,7 +215059,8 @@ ] }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -215453,7 +215869,8 @@ "metadata_element_type": "ReferenceDataSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -217114,7 +217531,8 @@ "metadata_element_type": "ReferenceDataSet" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -217891,7 +218309,8 @@ "metadata_element_type": "ReferenceDataValue" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -219520,7 +219939,8 @@ "metadata_element_type": "ReferenceDataValue" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -220327,7 +220747,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -222382,7 +222803,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -224587,7 +225009,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -225858,7 +226281,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -226409,7 +226833,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -227312,7 +227737,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -227459,7 +227885,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -227606,7 +228033,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -228253,7 +228681,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -229220,7 +229649,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -229367,7 +229797,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -229514,7 +229945,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -230129,7 +230561,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -231596,7 +232029,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -232083,7 +232517,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -233390,7 +233825,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -233969,7 +234405,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -235336,7 +235773,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -236059,7 +236497,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -237634,7 +238073,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -238161,7 +238601,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -239508,7 +239949,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -239799,7 +240241,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -240878,7 +241321,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -241169,7 +241613,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -242248,7 +242693,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -242539,7 +242985,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -243618,7 +244065,8 @@ ], "spec_params": {}, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -244043,7 +244491,8 @@ "metadata_element_type": "ConceptModel" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null @@ -245288,7 +245737,8 @@ "metadata_element_type": "ConceptModel" }, "analytic_function": null, - "analytic_spec_params": {} + "analytic_spec_params": {}, + "analytic_binders": {} }, "get_additional_props": null, "question_spec": null diff --git a/md_processing/v2/asset_maker.py b/md_processing/v2/asset_maker.py index 0404ed34..8870885b 100644 --- a/md_processing/v2/asset_maker.py +++ b/md_processing/v2/asset_maker.py @@ -115,9 +115,11 @@ async def apply_changes(self) -> str: postgres_server=_v(attributes, "Postgres Server Name"), host_name=_v(attributes, "Host Name"), port=_v(attributes, "Port"), - db_user=_v(attributes, "Database User Id"), - db_pwd=_v(attributes, "Database Password"), description=_v(attributes, "Description"), + secrets_store_path_name=_v(attributes, "Secrets Store Path Name"), + secrets_collection_name=_v(attributes, "Secrets Collection Name"), + version=_v(attributes, "Version Identifier"), + resource_name=_v(attributes, "Resource Name"), ) display_name = _v(attributes, "Postgres Server Name") @@ -127,9 +129,10 @@ async def apply_changes(self) -> str: server_name=_v(attributes, "Postgres Server Name"), host_identifier=_v(attributes, "Host Name"), port=_v(attributes, "Port"), - db_user=_v(attributes, "Database User Id"), - db_pwd=_v(attributes, "Database Password"), description=_v(attributes, "Description"), + secrets_store_path_name=_v(attributes, "Secrets Store Path Name"), + secrets_collection_name=_v(attributes, "Secrets Collection Name"), + version=_v(attributes, "Version Identifier"), ) display_name = _v(attributes, "Postgres Database Name") diff --git a/pyegeria/view/base_report_formats.py b/pyegeria/view/base_report_formats.py index ec1dc056..55126c37 100644 --- a/pyegeria/view/base_report_formats.py +++ b/pyegeria/view/base_report_formats.py @@ -273,10 +273,10 @@ 'Personal-Project-DrE-Basic': FormatSet(target_type='Personal Project', heading='Personal-Project-DrE-Basic Attributes', description='Auto-generated format for Personal Project (Create, Basic).', family='Projects', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Actual Completion Date', key='actual_completion_date'), Column(name='Actual Start Date', key='actual_start_date'), Column(name='Mission', key='mission'), Column(name='Planned Completion Date', key='planned_completion_date'), Column(name='Planned Start Date', key='planned_start_date'), Column(name='Priority', key='priority'), Column(name='Project Approach', key='approach'), Column(name='Project Health', key='project_health'), Column(name='Project Identifier', key='project_identifier'), Column(name='Project Management Style', key='management_style'), Column(name='Project Phase', key='project_phase'), Column(name='Project Results Usage', key='results_usage'), Column(name='Project Scope', key='project_scope'), Column(name='Project Type', key='project_type', valid_values=['Project', 'Campaign', 'Task', 'PersonalProject', 'StudyProject', 'Experiment']), Column(name='Purposes', key='purposes'), Column(name='Sub-Projects', key='sub_projects'), Column(name='Success Criteria', key='success_criteria'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Project Status', key='project_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Actual Completion Date', key='actual_completion_date'), Column(name='Actual Start Date', key='actual_start_date'), Column(name='Mission', key='mission'), Column(name='Planned Completion Date', key='planned_completion_date'), Column(name='Planned Start Date', key='planned_start_date'), Column(name='Priority', key='priority'), Column(name='Project Approach', key='approach'), Column(name='Project Health', key='project_health'), Column(name='Project Identifier', key='project_identifier'), Column(name='Project Management Style', key='management_style'), Column(name='Project Phase', key='project_phase'), Column(name='Project Results Usage', key='results_usage'), Column(name='Project Scope', key='project_scope'), Column(name='Project Status', key='project_status'), Column(name='Project Type', key='project_type', valid_values=['Project', 'Campaign', 'Task', 'PersonalProject', 'StudyProject', 'Experiment']), Column(name='Purposes', key='purposes'), Column(name='Sub-Projects', key='sub_projects'), Column(name='Success Criteria', key='success_criteria')])], action=ActionParameter(function='ProjectManager.find_projects', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'include_only_classified_elements': ['PersonalProject']})), 'Perspective-DrE-Advanced': FormatSet(target_type='Perspective', heading='Perspective-DrE-Advanced Attributes', description='Auto-generated format for Perspective (Create, Advanced).', family='Actor Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='ActorManager.find_perspectives', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'Perspective'})), 'Perspective-DrE-Basic': FormatSet(target_type='Perspective', heading='Perspective-DrE-Basic Attributes', description='Auto-generated format for Perspective (Create, Basic).', family='Actor Manager', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Version Identifier', key='version_identifier'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier')])], action=ActionParameter(function='ActorManager.find_perspectives', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'metadata_element_type': 'Perspective'})), - 'Postgres-Database-Element-DrE-Advanced': FormatSet(target_type='Postgres Database Element', heading='Postgres-Database-Element-DrE-Advanced Attributes', description='Auto-generated format for Postgres Database Element (Create, Advanced).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')]), Format(types=['ALL'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), - 'Postgres-Database-Element-DrE-Basic': FormatSet(target_type='Postgres Database Element', heading='Postgres-Database-Element-DrE-Basic Attributes', description='Auto-generated format for Postgres Database Element (Create, Basic).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')]), Format(types=['ALL'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), - 'Postgres-Server-Element-DrE-Advanced': FormatSet(target_type='Postgres Server Element', heading='Postgres-Server-Element-DrE-Advanced Attributes', description='Auto-generated format for Postgres Server Element (Create, Advanced).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')]), Format(types=['ALL'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), - 'Postgres-Server-Element-DrE-Basic': FormatSet(target_type='Postgres Server Element', heading='Postgres-Server-Element-DrE-Basic Attributes', description='Auto-generated format for Postgres Server Element (Create, Basic).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')]), Format(types=['ALL'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Database User Id', key='db_user'), Column(name='Database Password', key='db_pwd'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), + 'Postgres-Database-Element-DrE-Advanced': FormatSet(target_type='Postgres Database Element', heading='Postgres-Database-Element-DrE-Advanced Attributes', description='Auto-generated format for Postgres Database Element (Create, Advanced).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Description', key='description'), Column(name='Version Identifier', key='version_identifier')]), Format(types=['ALL'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Version Identifier', key='version_identifier'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), + 'Postgres-Database-Element-DrE-Basic': FormatSet(target_type='Postgres Database Element', heading='Postgres-Database-Element-DrE-Basic Attributes', description='Auto-generated format for Postgres Database Element (Create, Basic).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Description', key='description'), Column(name='Version Identifier', key='version_identifier')]), Format(types=['ALL'], attributes=[Column(name='Postgres Database Name', key='postgres_database'), Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Version Identifier', key='version_identifier'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), + 'Postgres-Server-Element-DrE-Advanced': FormatSet(target_type='Postgres Server Element', heading='Postgres-Server-Element-DrE-Advanced Attributes', description='Auto-generated format for Postgres Server Element (Create, Advanced).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Resource Name', key='resource_name'), Column(name='Description', key='description'), Column(name='Version Identifier', key='version_identifier')]), Format(types=['ALL'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Resource Name', key='resource_name'), Column(name='Version Identifier', key='version_identifier'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), + 'Postgres-Server-Element-DrE-Basic': FormatSet(target_type='Postgres Server Element', heading='Postgres-Server-Element-DrE-Basic Attributes', description='Auto-generated format for Postgres Server Element (Create, Basic).', family='Asset Maker', formats=[Format(types=['LIST'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Resource Name', key='resource_name'), Column(name='Description', key='description'), Column(name='Version Identifier', key='version_identifier')]), Format(types=['ALL'], attributes=[Column(name='Postgres Server Name', key='postgres_server'), Column(name='Host Name', key='host_name'), Column(name='Port', key='port'), Column(name='Secrets Store Path Name', key='secrets_store_path_name'), Column(name='Secrets Collection Name', key='secrets_collection_name'), Column(name='Resource Name', key='resource_name'), Column(name='Version Identifier', key='version_identifier'), Column(name='Description', key='description')])], action=ActionParameter(function='MetadataExpert.find_metadata_elements_with_string', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), 'Project-DrE-Advanced': FormatSet(target_type='Project', heading='Project-DrE-Advanced Attributes', description='Auto-generated format for Project (Create, Advanced).', family='Projects', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Actual Completion Date', key='actual_completion_date'), Column(name='Actual Start Date', key='actual_start_date'), Column(name='Mission', key='mission'), Column(name='Planned Completion Date', key='planned_completion_date'), Column(name='Planned Start Date', key='planned_start_date'), Column(name='Priority', key='priority'), Column(name='Project Approach', key='approach'), Column(name='Project Health', key='project_health'), Column(name='Project Identifier', key='project_identifier'), Column(name='Project Management Style', key='management_style'), Column(name='Project Phase', key='project_phase'), Column(name='Project Results Usage', key='results_usage'), Column(name='Project Scope', key='project_scope'), Column(name='Project Type', key='project_type', valid_values=['Project', 'Campaign', 'Task', 'PersonalProject', 'StudyProject', 'Experiment']), Column(name='Purposes', key='purposes'), Column(name='Sub-Projects', key='sub_projects'), Column(name='Success Criteria', key='success_criteria'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Project Status', key='project_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Actual Completion Date', key='actual_completion_date'), Column(name='Actual Start Date', key='actual_start_date'), Column(name='Mission', key='mission'), Column(name='Planned Completion Date', key='planned_completion_date'), Column(name='Planned Start Date', key='planned_start_date'), Column(name='Priority', key='priority'), Column(name='Project Approach', key='approach'), Column(name='Project Health', key='project_health'), Column(name='Project Identifier', key='project_identifier'), Column(name='Project Management Style', key='management_style'), Column(name='Project Phase', key='project_phase'), Column(name='Project Results Usage', key='results_usage'), Column(name='Project Scope', key='project_scope'), Column(name='Project Status', key='project_status'), Column(name='Project Type', key='project_type', valid_values=['Project', 'Campaign', 'Task', 'PersonalProject', 'StudyProject', 'Experiment']), Column(name='Purposes', key='purposes'), Column(name='Sub-Projects', key='sub_projects'), Column(name='Success Criteria', key='success_criteria'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='ProjectManager.find_projects', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), 'Project-DrE-Basic': FormatSet(target_type='Project', heading='Project-DrE-Basic Attributes', description='Auto-generated format for Project (Create, Basic).', family='Projects', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Description', key='description'), Column(name='Legal', key='legal'), Column(name='Authors', key='authors'), Column(name='Actual Completion Date', key='actual_completion_date'), Column(name='Actual Start Date', key='actual_start_date'), Column(name='Mission', key='mission'), Column(name='Planned Completion Date', key='planned_completion_date'), Column(name='Planned Start Date', key='planned_start_date'), Column(name='Priority', key='priority'), Column(name='Project Approach', key='approach'), Column(name='Project Health', key='project_health'), Column(name='Project Identifier', key='project_identifier'), Column(name='Project Management Style', key='management_style'), Column(name='Project Phase', key='project_phase'), Column(name='Project Results Usage', key='results_usage'), Column(name='Project Scope', key='project_scope'), Column(name='Project Type', key='project_type', valid_values=['Project', 'Campaign', 'Task', 'PersonalProject', 'StudyProject', 'Experiment']), Column(name='Purposes', key='purposes'), Column(name='Sub-Projects', key='sub_projects'), Column(name='Success Criteria', key='success_criteria'), Column(name='Version Identifier', key='version_identifier'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Project Status', key='project_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Category', key='category'), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Legal', key='legal'), Column(name='Qualified Name', key='qualified_name'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='Actual Completion Date', key='actual_completion_date'), Column(name='Actual Start Date', key='actual_start_date'), Column(name='Mission', key='mission'), Column(name='Planned Completion Date', key='planned_completion_date'), Column(name='Planned Start Date', key='planned_start_date'), Column(name='Priority', key='priority'), Column(name='Project Approach', key='approach'), Column(name='Project Health', key='project_health'), Column(name='Project Identifier', key='project_identifier'), Column(name='Project Management Style', key='management_style'), Column(name='Project Phase', key='project_phase'), Column(name='Project Results Usage', key='results_usage'), Column(name='Project Scope', key='project_scope'), Column(name='Project Status', key='project_status'), Column(name='Project Type', key='project_type', valid_values=['Project', 'Campaign', 'Task', 'PersonalProject', 'StudyProject', 'Experiment']), Column(name='Purposes', key='purposes'), Column(name='Sub-Projects', key='sub_projects'), Column(name='Success Criteria', key='success_criteria')])], action=ActionParameter(function='ProjectManager.find_projects', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'])), 'Question-DrE-Advanced': FormatSet(target_type='Question', heading='Question-DrE-Advanced Attributes', description='Auto-generated format for Question (Create, Advanced).', family='Glossary', formats=[Format(types=['LIST'], attributes=[Column(name='Display Name', key='display_name'), Column(name='Qualified Name', key='qualified_name'), Column(name='GUID', key='guid'), Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='Authors', key='authors'), Column(name='Abbreviation', key='abbreviation'), Column(name='Aliases', key='aliases'), Column(name='Class Word Classification', key='class_word_classification'), Column(name='Context Scope', key='scope'), Column(name='Example', key='example'), Column(name='Folders', key='folders'), Column(name='Glossary Name', key='glossary_names'), Column(name='Is Abstract Concept', key='is_abstract_concept'), Column(name='Is Activity Description', key='is_activity_description'), Column(name='Is Context', key='is_data_value'), Column(name='Modifier Classification', key='modifier_classification'), Column(name='Prime Word Classification', key='prime_word_classification'), Column(name='Summary', key='summary'), Column(name='Term Activity Type', key='term_activity_type', valid_values=['OPERATION', 'ACTION', 'TASK', 'PROCESS', 'PROJECT', 'OTHER']), Column(name='Usage', key='usage'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties'), Column(name='Version Identifier', key='version_identifier'), Column(name='Status', key='status'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Category', key='category')]), Format(types=['ALL'], attributes=[Column(name='Effective From', key='effective_from'), Column(name='Effective Time', key='effective_time'), Column(name='Effective To', key='effective_to'), Column(name='Glossary Term', key='glossary_term'), Column(name='Is Own Anchor', key='is_own_anchor'), Column(name='Status', key='status'), Column(name='Zone Membership', key='zone_membership'), Column(name='Additional Properties', key='additional_properties'), Column(name='Category', key='category'), Column(name='Confidence Classification', key='confidence_classification', valid_values=['UNCLASSIFIED', 'AD_HOC', 'TRANSACTIONAL', 'AUTHORITATIVE', 'DERIVED', 'OBSOLETE', 'OTHER']), Column(name='Confidentiality Classification', key='confidentiality_classification', valid_values=['UNCLASSIFIED', 'INTERNAL', 'CONFIDENTIAL', 'SENSITIVE', 'RESTRICTED', 'OTHER']), Column(name='Criticality Classification', key='criticality_classification', valid_values=['UNCLASSIFIED', 'MARGINAL', 'IMPORTANT', 'CRITICAL', 'CATASTROPHIC', 'OTHER']), Column(name='Description', key='description'), Column(name='Display Name', key='display_name'), Column(name='GUID', key='guid'), Column(name='Identifier', key='identifier'), Column(name='Impact Classification', key='impact_classification', valid_values=['UNCLASSIFIED', 'LOW', 'MEDIUM', 'HIGH', 'OTHER']), Column(name='Legal', key='legal'), Column(name='Policy Management Point', key='policy_management_point'), Column(name='Qualified Name', key='qualified_name'), Column(name='Retention Classification', key='retention_classification', valid_values=['UNCLASSIFIED', 'TEMPORARY', 'PROJECT_LIFETIME', 'TEAM_LIFETIME', 'CONTRACT_LIFETIME', 'REGULATED_LIFETIME', 'TIMEBOXED_LIFETIME', 'OTHER']), Column(name='Security Tags', key='security_tags'), Column(name='URL', key='url'), Column(name='Version Identifier', key='version_identifier'), Column(name='Authors', key='authors'), Column(name='Content Status', key='content_status', valid_values=['DRAFT', 'PREPARED', 'PROPOSED', 'APPROVED', 'REJECTED', 'ACTIVE', 'DEPRECATED', 'OTHER']), Column(name='User Defined Content Status', key='user_defined_content_status'), Column(name='Abbreviation', key='abbreviation'), Column(name='Aliases', key='aliases'), Column(name='Class Word Classification', key='class_word_classification'), Column(name='Context Scope', key='scope'), Column(name='Example', key='example'), Column(name='Folders', key='folders'), Column(name='Glossary Name', key='glossary_names'), Column(name='Is Abstract Concept', key='is_abstract_concept'), Column(name='Is Activity Description', key='is_activity_description'), Column(name='Is Context', key='is_data_value'), Column(name='Modifier Classification', key='modifier_classification'), Column(name='Prime Word Classification', key='prime_word_classification'), Column(name='Summary', key='summary'), Column(name='Term Activity Type', key='term_activity_type', valid_values=['OPERATION', 'ACTION', 'TASK', 'PROCESS', 'PROJECT', 'OTHER']), Column(name='Usage', key='usage'), Column(name='User Defined Status', key='user_defined_status'), Column(name='Classifications', key='classifications'), Column(name='Anchor Scope Name', key='anchor_scope_guid'), Column(name='Supplementary Properties', key='supplementary_properties')])], action=ActionParameter(function='GlossaryManager.find_glossary_terms', required_params=['search_string'], optional_params=['sequencing_order', 'sequencing_property', 'page_size', 'start_from', 'starts_with', 'ends_with', 'ignore_case', 'classification_names', 'metadata_element_subtypes', 'metadata_element_type'], spec_params={'classification': 'Question', 'metadata_element_type': 'GlossaryTerm'})), diff --git a/sample-data/templates/advanced/Asset Maker/Create_Postgres_Database_Element.md b/sample-data/templates/advanced/Asset Maker/Create_Postgres_Database_Element.md index 4d27694e..860b627f 100644 --- a/sample-data/templates/advanced/Asset Maker/Create_Postgres_Database_Element.md +++ b/sample-data/templates/advanced/Asset Maker/Create_Postgres_Database_Element.md @@ -69,20 +69,20 @@ ___ > **Description**: -### Database User Id +### Secrets Store Path Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: User id used to connect to the database server. +> **Description**: Path name of the secrets store file that holds the credentials used to connect to the database server (secretsStorePathName). -### Database Password +### Secrets Collection Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: Password used to connect to the database server. +> **Description**: Name of the collection within the secrets store that holds the credentials for this connection (secretsCollectionName). ### Version Identifier @@ -90,7 +90,7 @@ ___ > **Attribute Type**: Simple -> **Description**: Published product version identifier. +> **Description**: The version of the element > **Alternative Labels**: Version diff --git a/sample-data/templates/advanced/Asset Maker/Create_Postgres_Server_Element.md b/sample-data/templates/advanced/Asset Maker/Create_Postgres_Server_Element.md index 9fd19d7d..584d2ef8 100644 --- a/sample-data/templates/advanced/Asset Maker/Create_Postgres_Server_Element.md +++ b/sample-data/templates/advanced/Asset Maker/Create_Postgres_Server_Element.md @@ -27,6 +27,14 @@ ___ > **Description**: Port number the server listens on. +### Resource Name +> **Input Required**: False + +> **Attribute Type**: Simple + +> **Description**: Name of a resource. + + ### Description > **Input Required**: False @@ -61,20 +69,20 @@ ___ > **Description**: -### Database User Id +### Secrets Store Path Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: User id used to connect to the database server. +> **Description**: Path name of the secrets store file that holds the credentials used to connect to the database server (secretsStorePathName). -### Database Password +### Secrets Collection Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: Password used to connect to the database server. +> **Description**: Name of the collection within the secrets store that holds the credentials for this connection (secretsCollectionName). ### Version Identifier @@ -82,7 +90,7 @@ ___ > **Attribute Type**: Simple -> **Description**: Published product version identifier. +> **Description**: The version of the element > **Alternative Labels**: Version diff --git a/sample-data/templates/basic/Asset Maker/Create_Postgres_Database_Element.md b/sample-data/templates/basic/Asset Maker/Create_Postgres_Database_Element.md index c1830148..1f401d8c 100644 --- a/sample-data/templates/basic/Asset Maker/Create_Postgres_Database_Element.md +++ b/sample-data/templates/basic/Asset Maker/Create_Postgres_Database_Element.md @@ -69,20 +69,20 @@ ___ > **Description**: -### Database User Id +### Secrets Store Path Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: User id used to connect to the database server. +> **Description**: Path name of the secrets store file that holds the credentials used to connect to the database server (secretsStorePathName). -### Database Password +### Secrets Collection Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: Password used to connect to the database server. +> **Description**: Name of the collection within the secrets store that holds the credentials for this connection (secretsCollectionName). ### Version Identifier @@ -90,7 +90,7 @@ ___ > **Attribute Type**: Simple -> **Description**: Published product version identifier. +> **Description**: The version of the element > **Alternative Labels**: Version diff --git a/sample-data/templates/basic/Asset Maker/Create_Postgres_Server_Element.md b/sample-data/templates/basic/Asset Maker/Create_Postgres_Server_Element.md index 2bbec1de..28f1107a 100644 --- a/sample-data/templates/basic/Asset Maker/Create_Postgres_Server_Element.md +++ b/sample-data/templates/basic/Asset Maker/Create_Postgres_Server_Element.md @@ -27,6 +27,14 @@ ___ > **Description**: Port number the server listens on. +### Resource Name +> **Input Required**: False + +> **Attribute Type**: Simple + +> **Description**: Name of a resource. + + ### Description > **Input Required**: False @@ -61,20 +69,20 @@ ___ > **Description**: -### Database User Id +### Secrets Store Path Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: User id used to connect to the database server. +> **Description**: Path name of the secrets store file that holds the credentials used to connect to the database server (secretsStorePathName). -### Database Password +### Secrets Collection Name > **Input Required**: False > **Attribute Type**: Simple -> **Description**: Password used to connect to the database server. +> **Description**: Name of the collection within the secrets store that holds the credentials for this connection (secretsCollectionName). ### Version Identifier @@ -82,7 +90,7 @@ ___ > **Attribute Type**: Simple -> **Description**: Published product version identifier. +> **Description**: The version of the element > **Alternative Labels**: Version diff --git a/tests/micro-tests/test_postgres_element_secrets.py b/tests/micro-tests/test_postgres_element_secrets.py new file mode 100644 index 00000000..3bb2eef7 --- /dev/null +++ b/tests/micro-tests/test_postgres_element_secrets.py @@ -0,0 +1,95 @@ +""" +ISSUE-160 follow-up: Egeria's Postgres templates take credentials from a secrets +store, so the Dr.Egeria 'Create Postgres Server/Database Element' commands pass +secrets_store_path_name / secrets_collection_name (plus version, and +resource_name for the server) and no longer pass the deprecated db_user/db_pwd. +""" +import json +from pathlib import Path +from typing import Any, cast + +import pytest + +from md_processing.v2.asset_maker import AssetMakerProcessor +from md_processing.v2.extraction import DrECommand + +SPEC_FILE = (Path(__file__).resolve().parents[2] + / "md_processing/data/compact_commands/commands_asset_maker_compact.json") + + +class _FakeCuration: + def __init__(self): + self.calls = {} + + async def _async_create_postgres_server_element_from_template(self, **kwargs): + self.calls["server"] = kwargs + return "aaaaaaaa-0000-0000-0000-000000000001" + + async def _async_create_postgres_database_element_from_template(self, **kwargs): + self.calls["database"] = kwargs + return "aaaaaaaa-0000-0000-0000-000000000002" + + +class _FakeClient: + def __init__(self): + self.automated_curation = _FakeCuration() + + +async def _async_value(value): + return value + + +async def _run(object_type: str, om_type: str, attributes: dict) -> _FakeCuration: + client = _FakeClient() + p = AssetMakerProcessor(client=cast(Any, client), + command=DrECommand(verb="Create", object_type=object_type, attributes={}, + raw_block=f"## Create {object_type}"), context={}) + p.get_command_spec = lambda: {"OM_TYPE": om_type} + p.parsed_output = {"qualified_name": None, + "attributes": {k: {"value": v} for k, v in attributes.items()}} + p.render_result_markdown = lambda guid: _async_value(guid) + await p.apply_changes() + return client.automated_curation + + +COMMON = { + "Host Name": "localhost", + "Port": "5432", + "Secrets Store Path Name": "loading-bay/secrets/default.omsecrets", + "Secrets Collection Name": "postgres", + "Version Identifier": "1.0", + # Stale values a user may still have in an old template: must not be sent. + "Database User Id": "old-user", + "Database Password": "old-pwd", +} + + +@pytest.mark.asyncio +async def test_postgres_server_passes_secrets_not_credentials(): + curation = await _run("Postgres Server Element", "SoftwareServer", + {**COMMON, "Postgres Server Name": "pg1", "Resource Name": "pg1-res"}) + kwargs = curation.calls["server"] + assert kwargs["secrets_store_path_name"] == "loading-bay/secrets/default.omsecrets" + assert kwargs["secrets_collection_name"] == "postgres" + assert kwargs["version"] == "1.0" + assert kwargs["resource_name"] == "pg1-res" + assert "db_user" not in kwargs and "db_pwd" not in kwargs + + +@pytest.mark.asyncio +async def test_postgres_database_passes_secrets_not_credentials(): + curation = await _run("Postgres Database Element", "RelationalDatabase", + {**COMMON, "Postgres Database Name": "db1", "Postgres Server Name": "pg1"}) + kwargs = curation.calls["database"] + assert kwargs["secrets_store_path_name"] == "loading-bay/secrets/default.omsecrets" + assert kwargs["secrets_collection_name"] == "postgres" + assert kwargs["version"] == "1.0" + assert "db_user" not in kwargs and "db_pwd" not in kwargs + + +@pytest.mark.parametrize("command", ["Create Postgres Server Element", "Create Postgres Database Element"]) +def test_postgres_specs_expose_secrets_fields(command): + spec = json.loads(SPEC_FILE.read_text()) + attrs = spec["commands"][command]["custom_attributes"] + assert {"Secrets Store Path Name", "Secrets Collection Name", "Version Identifier"} <= set(attrs) + assert "Database User Id" not in attrs and "Database Password" not in attrs