Skip to content

Commit 89ce88e

Browse files
committed
combine the SystemMonitor and OverallStatus Services
1 parent f90a4bb commit 89ce88e

7 files changed

Lines changed: 42 additions & 90 deletions

File tree

src/main/java/edu/tamu/app/controller/StatusController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import edu.tamu.app.model.OverallStatus;
44
import edu.tamu.app.service.AppRoleService;
5-
import edu.tamu.app.service.OverallStatusService;
5+
import edu.tamu.app.service.MonitorService;
66
import edu.tamu.framework.aspect.annotation.ApiCredentials;
77
import edu.tamu.framework.aspect.annotation.ApiMapping;
88
import edu.tamu.framework.aspect.annotation.Auth;
@@ -19,22 +19,22 @@
1919
public class StatusController {
2020

2121
@Autowired
22-
OverallStatusService overallStatusService;
22+
MonitorService monitorService;
2323

2424
@Autowired
2525
AppRoleService appRoleService;
2626

2727
@ApiMapping("/overall-full")
2828
@Auth(role = "ROLE_STAFF")
2929
public ApiResponse overallFull(@ApiCredentials Credentials credentials) {
30-
OverallStatus overallStatus = overallStatusService.getOverallStatusFull();
30+
OverallStatus overallStatus = monitorService.getOverallStatus();
3131
return new ApiResponse(SUCCESS, overallStatus);
3232
}
3333

3434
@ApiMapping("/overall-public")
3535
@Auth(role = "ROLE_ANONYMOUS")
3636
public ApiResponse overallPublic(@ApiCredentials Credentials credentials) {
37-
OverallStatus overallStatus = overallStatusService.getOverallStatusPublic();
37+
OverallStatus overallStatus = monitorService.getOverallStatusPublic();
3838
return new ApiResponse(SUCCESS, overallStatus);
3939
}
4040

src/main/java/edu/tamu/app/job/UpdateOveralStatuses.java renamed to src/main/java/edu/tamu/app/job/UpdateServiceStatuses.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
package edu.tamu.app.job;
22

3+
import static edu.tamu.framework.enums.ApiResponseType.SUCCESS;
4+
35
import org.springframework.beans.factory.annotation.Autowired;
46
import org.springframework.messaging.simp.SimpMessagingTemplate;
57
import org.springframework.scheduling.annotation.Scheduled;
68
import org.springframework.stereotype.Service;
79

8-
import edu.tamu.app.service.OverallStatusService;
10+
import edu.tamu.app.service.MonitorService;
911
import edu.tamu.framework.model.ApiResponse;
1012

11-
import static edu.tamu.framework.enums.ApiResponseType.SUCCESS;
12-
1313
@Service
14-
public class UpdateOveralStatuses {
14+
public class UpdateServiceStatuses {
1515

1616
@Autowired
17-
OverallStatusService overallStatusService;
17+
MonitorService monitorService;
1818

1919
@Autowired
2020
SimpMessagingTemplate simpMessagingTemplate;
2121

22-
@Scheduled(fixedRate=(1 * 30 * 1000))
22+
@Scheduled(fixedRate=(10*60*1000))
2323
public void updateOveralStatuses() {
24-
overallStatusService.updateStatuses();
24+
monitorService.updateAll();
2525

26-
simpMessagingTemplate.convertAndSend("/channel/status/overall-full", new ApiResponse(SUCCESS, overallStatusService.getOverallStatusFull()));
27-
simpMessagingTemplate.convertAndSend("/channel/status/overall-public", new ApiResponse(SUCCESS, overallStatusService.getOverallStatusPublic()));
26+
simpMessagingTemplate.convertAndSend("/channel/status/overall-full", new ApiResponse(SUCCESS, monitorService.getOverallStatus()));
27+
simpMessagingTemplate.convertAndSend("/channel/status/overall-public", new ApiResponse(SUCCESS, monitorService.getOverallStatusPublic()));
2828

2929
}
3030

src/main/java/edu/tamu/app/model/Service.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,6 @@ public Boolean getIsAuto() {
8989
return isAuto;
9090
}
9191

92-
public boolean isCurrentlyUp() {
93-
//TODO: Implement this method to return true, false or the resolution of 'auto'
94-
return true;
95-
}
96-
9792
public void setIsAuto(Boolean isAuto) {
9893
this.isAuto = isAuto;
9994
}

src/main/java/edu/tamu/app/model/repo/ServiceRepo.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@
44

55
import org.springframework.data.jpa.repository.JpaRepository;
66

7+
import edu.tamu.app.enums.Status;
78
import edu.tamu.app.model.Service;
89
import edu.tamu.app.model.repo.custom.ServiceRepoCustom;
910

1011
public interface ServiceRepo extends JpaRepository<Service, Long>, ServiceRepoCustom {
1112

1213
public List<Service> findByIsPublic(Boolean isPublic);
1314
public List<Service> findByIsAuto(Boolean isAuto);
15+
public Long countByStatus(Status status);
16+
public Long countByStatusAndIsPublic(Status status, Boolean isPublic);
1417
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package edu.tamu.app.service;
22

3+
import edu.tamu.app.model.OverallStatus;
4+
35
public interface MonitorService {
46
public void updateAll();
7+
public OverallStatus getOverallStatus();
8+
public OverallStatus getOverallStatusPublic();
59
}

src/main/java/edu/tamu/app/service/OverallStatusService.java

Lines changed: 0 additions & 72 deletions
This file was deleted.

src/main/java/edu/tamu/app/service/SystemMonitorService.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package edu.tamu.app.service;
22

3+
import static edu.tamu.app.enums.OverallMessageType.ERROR;
4+
import static edu.tamu.app.enums.OverallMessageType.SUCCESS;
5+
36
import java.io.IOException;
47
import java.net.MalformedURLException;
58
import java.util.List;
@@ -14,6 +17,7 @@
1417
import com.fasterxml.jackson.databind.ObjectMapper;
1518

1619
import edu.tamu.app.enums.Status;
20+
import edu.tamu.app.model.OverallStatus;
1721
import edu.tamu.app.model.repo.ServiceRepo;
1822
import edu.tamu.framework.util.HttpUtility;
1923

@@ -27,6 +31,9 @@ public class SystemMonitorService implements MonitorService {
2731

2832
@Autowired
2933
ObjectMapper objectMapper;
34+
35+
private static final String SUCCESS_MESSAGE = "All services are working.";
36+
private static final String ERROR_MESSAGE = "Some services are experiencing problems.";
3037

3138
private Logger logger = LoggerFactory.getLogger(this.getClass());
3239

@@ -49,6 +56,21 @@ public void updateAll() {
4956
});
5057
}
5158

59+
public OverallStatus getOverallStatus() {
60+
Long downCount = serviceRepo.countByStatus(Status.DOWN);
61+
if (downCount == 0) {
62+
return new OverallStatus(SUCCESS, SUCCESS_MESSAGE);
63+
}
64+
return new OverallStatus(ERROR, ERROR_MESSAGE);
65+
}
66+
67+
public OverallStatus getOverallStatusPublic() {
68+
Long downCount = serviceRepo.countByStatusAndIsPublic(Status.DOWN,true);
69+
if (downCount == 0) {
70+
return new OverallStatus(SUCCESS, SUCCESS_MESSAGE);
71+
}
72+
return new OverallStatus(ERROR, ERROR_MESSAGE);
73+
}
5274
protected Status getServiceStatus(String serviceUrl) throws MalformedURLException,IOException {
5375
String rawStatusResponse = httpUtility.makeHttpRequest(serviceUrl, "GET");
5476
List<Map<String,String>> mappedStatusResponse = objectMapper.readValue(rawStatusResponse, new TypeReference<List<Map<String, String>>>(){});

0 commit comments

Comments
 (0)