From ca6ce8c9d1f0d669030d17dc4735ff6c97df5b06 Mon Sep 17 00:00:00 2001 From: Vlad Vesa Date: Tue, 16 Apr 2024 22:05:22 +0300 Subject: [PATCH] Use actuator instead of ServerStatus --- .../api/data/ApiServerMonitor.java | 26 ------------ .../api/data/ApiServerStatus.java | 42 ------------------- .../api/resources/BaseApiResource.java | 3 -- .../api/resources/TransitimeApi.java | 19 --------- .../api/resources/TransitimeResource.java | 23 +--------- libs/core/build.gradle.kts | 1 + .../service/ServerStatusServiceImpl.java | 40 ------------------ .../service/contract/ServerStatusService.java | 36 ---------------- .../service/dto/IpcServerStatus.java | 29 ------------- .../src/main/resources/config/application.yml | 9 ++++ 10 files changed, 11 insertions(+), 217 deletions(-) delete mode 100644 app/src/main/java/org/transitclock/api/data/ApiServerMonitor.java delete mode 100644 app/src/main/java/org/transitclock/api/data/ApiServerStatus.java delete mode 100644 libs/core/src/main/java/org/transitclock/service/ServerStatusServiceImpl.java delete mode 100644 libs/core/src/main/java/org/transitclock/service/contract/ServerStatusService.java delete mode 100644 libs/core/src/main/java/org/transitclock/service/dto/IpcServerStatus.java diff --git a/app/src/main/java/org/transitclock/api/data/ApiServerMonitor.java b/app/src/main/java/org/transitclock/api/data/ApiServerMonitor.java deleted file mode 100644 index b2ba8594f..000000000 --- a/app/src/main/java/org/transitclock/api/data/ApiServerMonitor.java +++ /dev/null @@ -1,26 +0,0 @@ -/* (C)2023 */ -package org.transitclock.api.data; - -import org.transitclock.monitoring.MonitorResult; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * @author SkiBu Smith - */ -@Data -public class ApiServerMonitor { - - @JsonProperty - private String type; - - @JsonProperty - private String message; - - - public ApiServerMonitor(MonitorResult monitorResult) { - this.type = monitorResult.getType(); - this.message = monitorResult.getMessage(); - } -} diff --git a/app/src/main/java/org/transitclock/api/data/ApiServerStatus.java b/app/src/main/java/org/transitclock/api/data/ApiServerStatus.java deleted file mode 100644 index 89c41bf85..000000000 --- a/app/src/main/java/org/transitclock/api/data/ApiServerStatus.java +++ /dev/null @@ -1,42 +0,0 @@ -/* (C)2023 */ -package org.transitclock.api.data; - -import java.util.ArrayList; -import java.util.List; - -import org.transitclock.monitoring.MonitorResult; -import org.transitclock.service.dto.IpcServerStatus; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -/** - * Server status for an agency server - * - * @author SkiBu Smith - */ -@Data -public class ApiServerStatus { - - @JsonProperty - private String agencyId; - - @JsonProperty - private List serverMonitors; - - - /** - * Constructors a ApiServerStatus object from agencyId and IpcServerStatus objects. - * - * @param agencyId - * @param ipcServerStatus - */ - public ApiServerStatus(String agencyId, IpcServerStatus ipcServerStatus) { - this.agencyId = agencyId; - - serverMonitors = new ArrayList(); - for (MonitorResult monitorResult : ipcServerStatus.getMonitorResults()) { - this.serverMonitors.add(new ApiServerMonitor(monitorResult)); - } - } -} diff --git a/app/src/main/java/org/transitclock/api/resources/BaseApiResource.java b/app/src/main/java/org/transitclock/api/resources/BaseApiResource.java index 857a699d8..1ff220551 100644 --- a/app/src/main/java/org/transitclock/api/resources/BaseApiResource.java +++ b/app/src/main/java/org/transitclock/api/resources/BaseApiResource.java @@ -23,9 +23,6 @@ public abstract class BaseApiResource { @Autowired protected PredictionAnalysisService predictionAnalysisService; - @Autowired - protected ServerStatusService serverStatusService; - @Autowired protected VehiclesService vehiclesService; diff --git a/app/src/main/java/org/transitclock/api/resources/TransitimeApi.java b/app/src/main/java/org/transitclock/api/resources/TransitimeApi.java index ca6d5527f..9349e3d9e 100644 --- a/app/src/main/java/org/transitclock/api/resources/TransitimeApi.java +++ b/app/src/main/java/org/transitclock/api/resources/TransitimeApi.java @@ -18,7 +18,6 @@ import org.transitclock.api.data.ApiRoutesDetailsResponse; import org.transitclock.api.data.ApiSchedulesHorizStops; import org.transitclock.api.data.ApiSchedulesVertStopsResponse; -import org.transitclock.api.data.ApiServerStatus; import org.transitclock.api.data.ApiTrip; import org.transitclock.api.data.ApiTripPatternsResponse; import org.transitclock.api.data.ApiTripWithTravelTimes; @@ -864,24 +863,6 @@ ResponseEntity getScheduleHorizStops( tags = {"base data", "serviceId"}) ResponseEntity getCurrentServiceIds(StandardParameters stdParameters); - /** - * Returns status about the specified agency server. Currently provides info on the DbLogger - * queue. - * - * @param stdParameters - * - * @return - * - * @ - */ - @GetMapping(value = "/command/serverStatus", - produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}) - @Operation( - summary = "Retrives server status information.", - description = "Retrives server status information.", - tags = {"server status"}) - ResponseEntity getServerStatus(StandardParameters stdParameters); - @Operation(summary = "Returns exports list", description = "Returns exports list") @GetMapping(value = "/command/exports", produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE}) diff --git a/app/src/main/java/org/transitclock/api/resources/TransitimeResource.java b/app/src/main/java/org/transitclock/api/resources/TransitimeResource.java index 1d2c9e667..0973e6f8a 100644 --- a/app/src/main/java/org/transitclock/api/resources/TransitimeResource.java +++ b/app/src/main/java/org/transitclock/api/resources/TransitimeResource.java @@ -20,11 +20,10 @@ import org.transitclock.api.data.ApiExportsDataResponse; import org.transitclock.api.data.ApiIdsResponse; import org.transitclock.api.data.ApiPredictionsResponse; -import org.transitclock.api.data.ApiRoutesResponse; import org.transitclock.api.data.ApiRoutesDetailsResponse; +import org.transitclock.api.data.ApiRoutesResponse; import org.transitclock.api.data.ApiSchedulesHorizStops; import org.transitclock.api.data.ApiSchedulesVertStopsResponse; -import org.transitclock.api.data.ApiServerStatus; import org.transitclock.api.data.ApiTrip; import org.transitclock.api.data.ApiTripPatternsResponse; import org.transitclock.api.data.ApiTripWithTravelTimes; @@ -51,7 +50,6 @@ import org.transitclock.service.dto.IpcRoute; import org.transitclock.service.dto.IpcRouteSummary; import org.transitclock.service.dto.IpcSchedule; -import org.transitclock.service.dto.IpcServerStatus; import org.transitclock.service.dto.IpcTrip; import org.transitclock.service.dto.IpcTripPattern; import org.transitclock.service.dto.IpcVehicle; @@ -957,25 +955,6 @@ public ResponseEntity getCurrentServiceIds(StandardParameters st } } - @Override - public ResponseEntity getServerStatus(StandardParameters stdParameters) { - - // Make sure request is valid - validate(stdParameters); - - try { - // Get status information from server - IpcServerStatus ipcServerStatus = serverStatusService.get(); - - // Create and return ApiServerStatus response - ApiServerStatus apiServerStatus = new ApiServerStatus(stdParameters.getAgencyId(), ipcServerStatus); - return stdParameters.createResponse(apiServerStatus); - } catch (Exception e) { - // If problem getting data then return a Bad Request - throw WebUtils.badRequestException(e); - } - } - @Override public ResponseEntity getExports(StandardParameters stdParameters) { validate(stdParameters); diff --git a/libs/core/build.gradle.kts b/libs/core/build.gradle.kts index 39e700bd4..4d7eea405 100644 --- a/libs/core/build.gradle.kts +++ b/libs/core/build.gradle.kts @@ -10,6 +10,7 @@ dependencies { api("com.beust:jcommander:1.82") implementation("org.springframework.boot:spring-boot-starter") implementation("org.springframework.boot:spring-boot-starter-cache") + implementation("org.springframework.boot:spring-boot-starter-actuator") api("org.hibernate.orm:hibernate-core") implementation("com.zaxxer:HikariCP") diff --git a/libs/core/src/main/java/org/transitclock/service/ServerStatusServiceImpl.java b/libs/core/src/main/java/org/transitclock/service/ServerStatusServiceImpl.java deleted file mode 100644 index bdd612331..000000000 --- a/libs/core/src/main/java/org/transitclock/service/ServerStatusServiceImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -/* (C)2023 */ -package org.transitclock.service; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.transitclock.monitoring.AgencyMonitor; -import org.transitclock.service.contract.ServerStatusService; -import org.transitclock.service.dto.IpcServerStatus; -import org.transitclock.utils.SystemTime; - -import java.util.Date; - -/** - * Runs on the server side and receives IPC calls and returns results. - * - * @author SkiBu Smith - */ -@Slf4j -@Component -public class ServerStatusServiceImpl implements ServerStatusService { - @Autowired - private AgencyMonitor agencyMonitor; - - - @Override - public IpcServerStatus get() { - return new IpcServerStatus(agencyMonitor.getMonitorResults()); - } - - @Override - public String monitor() { - return agencyMonitor.checkAll(); - } - - @Override - public Date getCurrentServerTime() { - return SystemTime.getDate(); - } -} diff --git a/libs/core/src/main/java/org/transitclock/service/contract/ServerStatusService.java b/libs/core/src/main/java/org/transitclock/service/contract/ServerStatusService.java deleted file mode 100644 index 4d876d432..000000000 --- a/libs/core/src/main/java/org/transitclock/service/contract/ServerStatusService.java +++ /dev/null @@ -1,36 +0,0 @@ -/* (C)2023 */ -package org.transitclock.service.contract; - -import org.transitclock.service.dto.IpcServerStatus; - -import java.util.Date; - -/** - * RMI interface for determining the status of the server. - * - * @author SkiBu Smith - */ -public interface ServerStatusService { - - /** - * Gets from the server a IpcStatus object indicating the status of the server. - * - * @return - */ - IpcServerStatus get(); - - /** - * Monitors the agency server for problems. If there is a problem then a message indicating such - * is returned. Sending out notifications is done by the server side. - * - * @return Error message if there is one, otherwise null - */ - String monitor(); - - /** - * Gets current server time. - * - * @return - */ - Date getCurrentServerTime(); -} diff --git a/libs/core/src/main/java/org/transitclock/service/dto/IpcServerStatus.java b/libs/core/src/main/java/org/transitclock/service/dto/IpcServerStatus.java deleted file mode 100644 index b1d0a3a09..000000000 --- a/libs/core/src/main/java/org/transitclock/service/dto/IpcServerStatus.java +++ /dev/null @@ -1,29 +0,0 @@ -/* (C)2023 */ -package org.transitclock.service.dto; - -import java.io.Serializable; -import java.util.List; -import org.transitclock.monitoring.MonitorResult; - -/** - * Represents server status for Inter Process Communication (IPC) - * - * @author SkiBu Smith - */ -public class IpcServerStatus implements Serializable { - - private final List monitorResults; - - public IpcServerStatus(List monitorResults) { - this.monitorResults = monitorResults; - } - - @Override - public String toString() { - return "IpcServerStatus [" + "monitorResults=" + monitorResults + "]"; - } - - public List getMonitorResults() { - return monitorResults; - } -} diff --git a/libs/core/src/main/resources/config/application.yml b/libs/core/src/main/resources/config/application.yml index 2b4747b0d..993391327 100644 --- a/libs/core/src/main/resources/config/application.yml +++ b/libs/core/src/main/resources/config/application.yml @@ -24,6 +24,15 @@ spring: main: lazy-initialization: false +management: + endpoints: + web: + exposure: + include: "*" + endpoint: + health: + show-details: always + server: port: 8080