From 1deac1c16a192aca812bff5589f9406ff4632bc7 Mon Sep 17 00:00:00 2001 From: lcaouen Date: Fri, 14 Jun 2024 16:54:50 +0200 Subject: [PATCH 1/2] https://github.com/ControlSystemStudio/phoebus/issues/3047 Add Swagger-ui to phoebus-alarm-logger --- services/alarm-logger/pom.xml | 7 ++++ .../alarm/logging/rest/SearchController.java | 36 +++++++++++++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/services/alarm-logger/pom.xml b/services/alarm-logger/pom.xml index 7007ddef65..4e98977b0f 100644 --- a/services/alarm-logger/pom.xml +++ b/services/alarm-logger/pom.xml @@ -141,6 +141,13 @@ test + + org.springdoc + springdoc-openapi-ui + 1.7.0 + + + diff --git a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java index 614483b024..68cba562b8 100644 --- a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java +++ b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java @@ -3,6 +3,9 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.ElasticsearchVersionInfo; import co.elastic.clients.elasticsearch.core.InfoResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; + import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.phoebus.alarm.logging.AlarmLoggingService; @@ -25,6 +28,12 @@ import java.util.logging.Level; import java.util.logging.Logger; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; + /** * A REST service for querying the alarm message history * @@ -32,6 +41,7 @@ */ @RestController @SuppressWarnings("unused") +@Tag(name = "Search controller") public class SearchController { static final Logger logger = Logger.getLogger(SearchController.class.getName()); @@ -44,6 +54,7 @@ public class SearchController { /** * @return Information about the alarm logging service */ + @Operation(summary = "Get Service Info") @GetMapping public String info() { @@ -74,22 +85,41 @@ public String info() { } } + @Operation(summary = "Search alarms") + @Parameters({ + @Parameter(name = "pv", description = "PV name", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "severity", description = "Alarm severity", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "message", description = "Alarm message", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "current_severity", description = "PV severity", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "current_message", description = "PV message", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "user", description = "User", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "host", description = "Host", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "command", description = "Command", schema = @Schema(type = "string"), required = false, example = "*"), + @Parameter(name = "start", description = "Start time", schema = @Schema(type = "string"), required = false, example = "2024-06-12"), + @Parameter(name = "end", description = "End time", schema = @Schema(type = "string"), required = false, example = "2024-06-14"), + }) @RequestMapping(value = "/search/alarm", method = RequestMethod.GET) - public List search(@RequestParam Map allRequestParams) { + public List search(@Parameter(hidden = true) @RequestParam Map allRequestParams) { List result = AlarmLogSearchUtil.search(ElasticClientHelper.getInstance().getClient(), allRequestParams); return result; } + @Operation(summary = "Search alarms by PV name") @RequestMapping(value = "/search/alarm/pv/{pv}", method = RequestMethod.GET) - public List searchPv(@PathVariable String pv) { + public List searchPv(@Parameter(description = "PV name") @PathVariable String pv) { Map searchParameters = new HashMap<>(); searchParameters.put("pv", pv); List result = AlarmLogSearchUtil.search(ElasticClientHelper.getInstance().getClient(), searchParameters); return result; } + @Operation(summary = "Search alarm config") + @Schema(name = "config", example = "/Accelerator/compteur", required = true) + @Parameters({ + @Parameter(name = "config", description = "Config path", schema = @Schema(type = "string"), required = false, example = "/Accelerator/pvname"), + }) @RequestMapping(value = "/search/alarm/config", method = RequestMethod.GET) - public List searchConfig(@RequestParam Map allRequestParams) { + public List searchConfig(@Parameter(hidden = true) @RequestParam Map allRequestParams) { if(allRequestParams == null || allRequestParams.isEmpty() || !allRequestParams.containsKey("config") || From d66790be2e2370feb932d86ce7aa7664f2abef5b Mon Sep 17 00:00:00 2001 From: lcaouen Date: Fri, 14 Jun 2024 16:57:45 +0200 Subject: [PATCH 2/2] https://github.com/ControlSystemStudio/phoebus/issues/3047 Add Swagger-ui to phoebus-alarm-logger --- .../java/org/phoebus/alarm/logging/rest/SearchController.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java index 68cba562b8..95ab4aba3b 100644 --- a/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java +++ b/services/alarm-logger/src/main/java/org/phoebus/alarm/logging/rest/SearchController.java @@ -3,8 +3,6 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch._types.ElasticsearchVersionInfo; import co.elastic.clients.elasticsearch.core.InfoResponse; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Schema; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper;