From a0cf047114e0610607eb601049c12d1838841f28 Mon Sep 17 00:00:00 2001 From: emanipravallika Date: Wed, 18 Dec 2024 16:01:52 +0530 Subject: [PATCH] BugFix: OP-23010- Enhance error handling for audit service bulk import - Enhanced error parsing with `parseErrorMessage` to extract meaningful error details from the response. --- .../OpsmxAuditServiceController.groovy | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/gate-web/src/main/groovy/com/opsmx/spinnaker/gate/controllers/OpsmxAuditServiceController.groovy b/gate-web/src/main/groovy/com/opsmx/spinnaker/gate/controllers/OpsmxAuditServiceController.groovy index 90466c2dc0..6424ee644d 100644 --- a/gate-web/src/main/groovy/com/opsmx/spinnaker/gate/controllers/OpsmxAuditServiceController.groovy +++ b/gate-web/src/main/groovy/com/opsmx/spinnaker/gate/controllers/OpsmxAuditServiceController.groovy @@ -20,6 +20,7 @@ import com.netflix.spinnaker.gate.config.ServiceConfiguration import com.netflix.spinnaker.gate.exceptions.OesRequestException import com.netflix.spinnaker.security.AuthenticatedRequest import com.opsmx.spinnaker.gate.services.OpsmxAuditService +import groovy.json.JsonSlurper import groovy.util.logging.Slf4j import io.swagger.v3.oas.annotations.Operation import okhttp3.MultipartBody @@ -100,13 +101,27 @@ class OpsmxAuditServiceController { return response }.call() as okhttp3.Response if (!obj.isSuccessful()) { - def error = obj.body().string(); - log.error("Failed to upload multipart file to audit service : {}", error) - throw new OesRequestException(error) - } else{ - return obj.body()?.string() ?: "Unknown reason: " + obj.code() as Object + def errorBody = obj.body()?.string() + log.error("Failed to upload multipart file to audit service: {}", errorBody) + def errorMessage = parseErrorMessage(errorBody, obj.code) + + throw new OesRequestException(errorMessage) + } else { + return obj.body()?.string() ?: "Unknown reason: ${obj.code}" as Object } } + + private String parseErrorMessage(String errorBody, int statusCode) { + try { + def errorJson = new JsonSlurper().parseText(errorBody) + def message = errorJson.message ?: "An error occurred while processing the request." + return message + } catch (Exception e) { + log.warn("Failed to parse error response: {}", e.message) + return errorBody + } + } + private okhttp3.RequestBody uploadFileOkHttp(MultipartFile multiPartfile) throws IOException { String fileName = multiPartfile.getOriginalFilename(); MultipartBody.Builder builder = new MultipartBody.Builder();