From a9abd78eb3f164f12d5b318435e04725c2d4f12e Mon Sep 17 00:00:00 2001 From: Dan Wolfson Date: Mon, 21 Sep 2026 14:48:28 -0500 Subject: [PATCH] fix(sdk): thread request_parameters through initiate_*_survey wrappers (ISSUE-110) _async_initiate_survey() hard-coded its POST body to just the action-type qualified name and a single serverToSurvey action target, so finalAnalysisStep/ignoreAnalysisSteps/analysisLevel (and any other survey request parameter) could not be passed through any of the initiate_*_survey convenience wrappers - only by bypassing them and calling initiate_gov_action_type() directly. Add an optional request_parameters dict to _async_initiate_survey() and thread it into the body via body_slimmer (mirroring _async_initiate_gov_action_type's existing pattern), and add the same optional parameter to every initiate_*_survey wrapper (postgres_database/server, file_folder, file, kafka_server, uc_server, uc_schema). Signed-off-by: Dan Wolfson Co-Authored-By: Claude Sonnet 5 Signed-off-by: Dan Wolfson --- pyegeria/omvs/automated_curation.py | 62 ++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/pyegeria/omvs/automated_curation.py b/pyegeria/omvs/automated_curation.py index 1728b238..e2ee72b6 100644 --- a/pyegeria/omvs/automated_curation.py +++ b/pyegeria/omvs/automated_curation.py @@ -3424,7 +3424,12 @@ def initiate_gov_action_type( # Initiate surveys # - async def _async_initiate_survey(self, survey_name: str, resource_guid: str) -> str: + async def _async_initiate_survey( + self, + survey_name: str, + resource_guid: str, + request_parameters: dict = None, + ) -> str: """Initiate a survey of a resource. Async version. @@ -3435,6 +3440,9 @@ async def _async_initiate_survey(self, survey_name: str, resource_guid: str) -> The name of the survey to initiate. resource_guid : str The GUID of the resource to be surveyed. + request_parameters : dict, optional + Survey-specific request parameters, e.g. `finalAnalysisStep`, + `ignoreAnalysisSteps`, `analysisLevel`. Returns ------- @@ -3463,26 +3471,36 @@ async def _async_initiate_survey(self, survey_name: str, resource_guid: str) -> "actionTargetGUID": resource_guid.strip(), } ], + "requestParameters": request_parameters, } - response = await self._async_make_request("POST", url, body) + new_body = body_slimmer(body) + response = await self._async_make_request("POST", url, new_body) return response.json().get("guid", "Action not initiated") - def initiate_postgres_database_survey(self, postgres_database_guid: str) -> str: + def initiate_postgres_database_survey( + self, postgres_database_guid: str, request_parameters: dict = None + ) -> str: """Initiate a postgres database survey""" loop = asyncio.get_event_loop() response = loop.run_until_complete( self._async_initiate_survey( - "PostgreSQLSurvey::survey-postgres-database", postgres_database_guid + "PostgreSQLSurvey::survey-postgres-database", + postgres_database_guid, + request_parameters, ) ) return response - def initiate_postgres_server_survey(self, postgres_server_guid: str) -> str: + def initiate_postgres_server_survey( + self, postgres_server_guid: str, request_parameters: dict = None + ) -> str: """Initiate a postgres server survey""" loop = asyncio.get_event_loop() response = loop.run_until_complete( self._async_initiate_survey( - "PostgreSQLSurvey::survey-postgres-server", postgres_server_guid + "PostgreSQLSurvey::survey-postgres-server", + postgres_server_guid, + request_parameters, ) ) return response @@ -3491,6 +3509,7 @@ def initiate_file_folder_survey( self, file_folder_guid: str, survey_name: str = "FileSurvey::survey-folder", + request_parameters: dict = None, ) -> str: """Initiate a file folder survey - async version @@ -3538,19 +3557,24 @@ def initiate_file_folder_survey( self._async_initiate_survey( survey_name, file_folder_guid, + request_parameters, ) ) return response - def initiate_file_survey(self, file_guid: str) -> str: + def initiate_file_survey(self, file_guid: str, request_parameters: dict = None) -> str: """Initiate a file survey""" loop = asyncio.get_event_loop() response = loop.run_until_complete( - self._async_initiate_survey("FileSurvey::survey-data-file", file_guid) + self._async_initiate_survey( + "FileSurvey::survey-data-file", file_guid, request_parameters + ) ) return response - def initiate_kafka_server_survey(self, kafka_server_guid: str) -> str: + def initiate_kafka_server_survey( + self, kafka_server_guid: str, request_parameters: dict = None + ) -> str: """Initiate survey of a kafka server. Parameters ---------- @@ -3567,12 +3591,16 @@ def initiate_kafka_server_survey(self, kafka_server_guid: str) -> str: loop = asyncio.get_event_loop() response = loop.run_until_complete( self._async_initiate_survey( - "ApacheKafkaSurvey::survey-kafka-server", kafka_server_guid + "ApacheKafkaSurvey::survey-kafka-server", + kafka_server_guid, + request_parameters, ) ) return response - def initiate_uc_server_survey(self, uc_server_guid: str) -> str: + def initiate_uc_server_survey( + self, uc_server_guid: str, request_parameters: dict = None + ) -> str: """Initiate survey of a Unity Catalog server. Async Version. Parameters ---------- @@ -3589,12 +3617,16 @@ def initiate_uc_server_survey(self, uc_server_guid: str) -> str: loop = asyncio.get_event_loop() response = loop.run_until_complete( self._async_initiate_survey( - "UnityCatalogSurvey::survey-unity-catalog-server", uc_server_guid + "UnityCatalogSurvey::survey-unity-catalog-server", + uc_server_guid, + request_parameters, ) ) return response - def initiate_uc_schema_survey(self, uc_schema_guid: str) -> str: + def initiate_uc_schema_survey( + self, uc_schema_guid: str, request_parameters: dict = None + ) -> str: """Initiate survey of a Unity Catalog schema. Async Version. Parameters ---------- @@ -3612,7 +3644,9 @@ def initiate_uc_schema_survey(self, uc_schema_guid: str) -> str: loop = asyncio.get_event_loop() response = loop.run_until_complete( self._async_initiate_survey( - "UnityCatalogSurvey::survey-unity-catalog-schema", uc_schema_guid + "UnityCatalogSurvey::survey-unity-catalog-schema", + uc_schema_guid, + request_parameters, ) ) return response