diff --git a/src/main/java/kr/re/etri/autoflow/controllers/PipelineUploadController.java b/src/main/java/kr/re/etri/autoflow/controllers/PipelineUploadController.java index 5ee148b..563edd2 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/PipelineUploadController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/PipelineUploadController.java @@ -2,16 +2,21 @@ package kr.re.etri.autoflow.controllers; import kr.re.etri.autoflow.service.PipelineUploadService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.multipart.MultipartFile; +import java.util.HashMap; import java.util.Map; +@Slf4j @RestController @RequestMapping("/pipelines") @RequiredArgsConstructor @@ -27,8 +32,32 @@ public class PipelineUploadController { @RequestParam(value = "description", required = false) String description, @RequestParam(value = "namespace", required = false) String namespace) { - Map result = pipelineUploadService.uploadPipeline(file, name, displayName, description, namespace); - return ResponseEntity.ok(result); + try { + Map result = pipelineUploadService.uploadPipeline(file, name, displayName, description, namespace); + return ResponseEntity.ok(result); + + } catch (HttpClientErrorException e) { + // 콘솔 로그 + log.error("Kubeflow API Error: status={}, response={}", e.getStatusCode(), e.getResponseBodyAsString(), e); + + // 클라이언트 반환 + Map error = new HashMap<>(); + error.put("status", e.getStatusCode().value()); + error.put("error", e.getStatusText()); + error.put("message", e.getResponseBodyAsString()); + return ResponseEntity.status(e.getStatusCode()).body(error); + + } catch (Exception e) { + // 콘솔 로그 + log.error("Pipeline upload failed", e); + + // 클라이언트 반환 + Map error = new HashMap<>(); + error.put("status", 500); + error.put("error", "Internal Server Error"); + error.put("message", e.getMessage()); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(error); + } } }