mirror of https://github.com/micromata/borgbackup-butler.git

Kai Reinhard
15.28.2019 7d103e1e78fa30a588cd019ed7a20efc6e2444ea
Rest: queueStatistics now as part of new system info.
2 files added
2 files modified
74 ■■■■ changed files
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java 11 ●●●●● patch | view | raw | blame | history
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java 20 ●●●●● patch | view | raw | blame | history
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java 30 ●●●●● patch | view | raw | blame | history
borgbutler-webapp/src/containers/WebApp.jsx 13 ●●●● patch | view | raw | blame | history
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);
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfo.java
New file
@@ -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;
}
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/SystemInfoRest.java
New file
@@ -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);
    }
}
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],