You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.8 KiB
48 lines
1.8 KiB
|
9 months ago
|
package kr.re.etri.autoflow.controllers;
|
||
|
|
|
||
|
|
import io.swagger.v3.oas.annotations.Operation;
|
||
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||
|
|
import org.springframework.http.MediaType;
|
||
|
|
import org.springframework.http.ResponseEntity;
|
||
|
|
import org.springframework.web.bind.annotation.*;
|
||
|
|
import org.springframework.web.reactive.function.client.WebClient;
|
||
|
|
import reactor.core.publisher.Mono;
|
||
|
|
|
||
|
|
import java.util.Collections;
|
||
|
|
import java.util.Map;
|
||
|
|
|
||
|
|
@Tag(name = "MLflow API", description = "MLflow Experiment 및 Run 조회 API")
|
||
|
|
@RestController
|
||
|
|
@RequestMapping("/api/mlflow")
|
||
|
|
public class MlflowController {
|
||
|
|
|
||
|
|
private final WebClient webClient;
|
||
|
|
|
||
|
|
public MlflowController() {
|
||
|
|
this.webClient = WebClient.builder()
|
||
|
|
.baseUrl("http://192.168.10.135:30128/api/2.0/mlflow")
|
||
|
|
.defaultHeaders(headers -> headers.setBasicAuth("user", "LImQa2Me37nu"))
|
||
|
|
.build();
|
||
|
|
}
|
||
|
|
|
||
|
|
@Operation(summary = "Experiment의 Run 목록 조회", description = "주어진 Experiment ID의 Run을 최대 1000개까지 조회합니다.")
|
||
|
|
@GetMapping(value = "/runs", produces = MediaType.APPLICATION_JSON_VALUE)
|
||
|
|
public Mono<ResponseEntity<String>> getRuns(@RequestParam String experimentId) {
|
||
|
|
Map<String, Object> body = Map.of(
|
||
|
|
"experiment_ids", Collections.singletonList(experimentId),
|
||
|
|
"order_by", Collections.singletonList("attribute.start_time DESC"),
|
||
|
|
"max_results", 1000
|
||
|
|
);
|
||
|
|
|
||
|
|
return webClient.post()
|
||
|
|
.uri("/runs/search")
|
||
|
|
.contentType(MediaType.APPLICATION_JSON)
|
||
|
|
.bodyValue(body)
|
||
|
|
.retrieve()
|
||
|
|
.bodyToMono(String.class)
|
||
|
|
.map(ResponseEntity::ok)
|
||
|
|
.onErrorResume(e -> Mono.just(ResponseEntity.internalServerError().body(e.getMessage())));
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|