From 7d103e1e78fa30a588cd019ed7a20efc6e2444ea Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Tue, 15 Jan 2019 06:28:07 +0000
Subject: [PATCH] Rest: queueStatistics now as part of new system info.
---
borgbutler-webapp/src/containers/WebApp.jsx | 13 +++---
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java | 30 +++++++++++++++
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java | 11 -----
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java | 20 ++++++++++
4 files changed, 57 insertions(+), 17 deletions(-)
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java
index 14f1525..a74ab74 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java
@@ -66,17 +66,6 @@
return JsonUtils.toJson(queueList, prettyPrinter);
}
- @GET
- @Produces(MediaType.APPLICATION_JSON)
- @Path("/statistics")
- /**
- * @return The total number of jobs queued or running (and other statistics): {@link de.micromata.borgbutler.BorgQueueStatistics}.
- * @see JsonUtils#toJson(Object, boolean)
- */
- public String getStatistics() {
- return JsonUtils.toJson(BorgQueueExecutor.getInstance().getStatistics());
- }
-
private JsonJobQueue getQueue(String repo) {
BorgQueueExecutor borgQueueExecutor = BorgQueueExecutor.getInstance();
BorgRepoConfig repoConfig = ConfigurationHandler.getConfiguration().getRepoConfig(repo);
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java
new file mode 100644
index 0000000..a819450
--- /dev/null
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java
@@ -0,0 +1,20 @@
+package de.micromata.borgbutler.server.rest;
+
+import de.micromata.borgbutler.BorgQueueStatistics;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Statistics of all the job queues, especially the number of total queued and running jobs.
+ * This is used e. g. by the client for showing a badge near to the menu entry "job monitor" with the number
+ * of Jobs in the queues.
+ */
+public class SystemInfo {
+ @Getter
+ @Setter
+ private BorgQueueStatistics queueStatistics;
+
+ @Getter
+ @Setter
+ private boolean configurationOK;
+}
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java
new file mode 100644
index 0000000..8cbec32
--- /dev/null
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java
@@ -0,0 +1,30 @@
+package de.micromata.borgbutler.server.rest;
+
+import de.micromata.borgbutler.BorgQueueExecutor;
+import de.micromata.borgbutler.json.JsonUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+@Path("/system")
+public class SystemInfoRest {
+ private static Logger log = LoggerFactory.getLogger(SystemInfoRest.class);
+
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("info")
+ /**
+ * @return The total number of jobs queued or running (and other statistics): {@link de.micromata.borgbutler.BorgQueueStatistics}.
+ * @see JsonUtils#toJson(Object, boolean)
+ */
+ public String getStatistics() {
+ SystemInfo systemInfonfo = new SystemInfo()
+ .setQueueStatistics(BorgQueueExecutor.getInstance().getStatistics())
+ .setConfigurationOK(false);
+ return JsonUtils.toJson(systemInfonfo);
+ }
+}
diff --git a/borgbutler-webapp/src/containers/WebApp.jsx b/borgbutler-webapp/src/containers/WebApp.jsx
index 639ee35..e830f92 100644
--- a/borgbutler-webapp/src/containers/WebApp.jsx
+++ b/borgbutler-webapp/src/containers/WebApp.jsx
@@ -24,11 +24,11 @@
componentDidMount = () => {
this.props.loadVersion();
- this.interval = setInterval(() => this.fetchJobStatistics(), 5000);
+ this.interval = setInterval(() => this.fetchSystemInfo(), 5000);
};
- fetchJobStatistics = () => {
- fetch(getRestServiceUrl('jobs/statistics'), {
+ fetchSystemInfo = () => {
+ fetch(getRestServiceUrl('system/info'), {
method: 'GET',
headers: {
'Accept': 'application/json'
@@ -37,7 +37,7 @@
.then(response => response.json())
.then(json => {
this.setState({
- statistics: json
+ systemInfo: json
});
})
.catch();
@@ -45,8 +45,9 @@
render() {
let jobsBadge = '';
- if (this.state && this.state.statistics && this.state.statistics.numberOfRunningAndQueuedJobs > 0) {
- jobsBadge = <Badge color="danger" pill>{this.state.statistics.numberOfRunningAndQueuedJobs}</Badge>;
+ const statistics = (this.state && this.state.systemInfo) ? this.state.systemInfo.queueStatistics : null;
+ if (statistics && statistics.numberOfRunningAndQueuedJobs > 0) {
+ jobsBadge = <Badge color="danger" pill>{statistics.numberOfRunningAndQueuedJobs}</Badge>;
}
let routes = [
['Start', '/', Start],
--
Gitblit v1.10.0