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

Kai Reinhard
16.39.2019 60cbf9cab14aa492899699e505501d144d30ca14
Show old jobs...
3 files modified
70 ■■■■■ changed files
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java 45 ●●●●● patch | view | raw | blame | history
borgbutler-webapp/src/components/views/jobs/Job.jsx 23 ●●●●● patch | view | raw | blame | history
borgbutler-webapp/src/components/views/jobs/JobMonitorPanel.jsx 2 ●●● patch | view | raw | blame | history
borgbutler-server/src/main/java/de/micromata/borgbutler/server/rest/JobsRest.java
@@ -26,7 +26,7 @@
public class JobsRest {
    private static Logger log = LoggerFactory.getLogger(JobsRest.class);
    private static List<JsonJobQueue> testList;
    private static List<JsonJobQueue> testList, oldJobsTestList;
    @GET
    @Produces(MediaType.APPLICATION_JSON)
@@ -43,7 +43,7 @@
                          @QueryParam("prettyPrinter") boolean prettyPrinter) {
        if (testMode) {
            // Return dynamic test queue:
            return returnTestList(prettyPrinter);
            return returnTestList(oldJobs, prettyPrinter);
        }
        boolean validRepo = false;
        if (StringUtils.isNotBlank(repo) && !"null".equals(repo) && !"undefined".equals(repo)) {
@@ -104,28 +104,31 @@
    /**
     * Only for test purposes and development.
     *
     * @param oldJobs
     * @param prettyPrinter
     * @return
     */
    private String returnTestList(boolean prettyPrinter) {
        if (testList == null) {
            testList = new ArrayList<>();
    private String returnTestList(boolean oldJobs, boolean prettyPrinter) {
        List<JsonJobQueue> list = oldJobs ? oldJobsTestList : testList;
        if (list == null) {
            list = new ArrayList<>();
            long uniqueJobNumber = 100000;
            JsonJobQueue queue = new JsonJobQueue().setRepo("My Computer");
            addTestJob(queue, "info", "my-macbook", 0, 2342)
                    .setUniqueJobNumber(uniqueJobNumber++);
            addTestJob(queue, "list", "my-macbook", -1, -1)
                    .setUniqueJobNumber(uniqueJobNumber++);
            testList.add(queue);
            addTestJob(queue, "info", "my-macbook", 0, 2342, uniqueJobNumber++, oldJobs);
            addTestJob(queue, "list", "my-macbook", -1, -1, uniqueJobNumber++, oldJobs);
            list.add(queue);
            queue = new JsonJobQueue().setRepo("My Server");
            addTestJob(queue, "list", "my-server", 0, 1135821)
                    .setUniqueJobNumber(uniqueJobNumber++);
            addTestJob(queue, "info", "my-server", -1, -1)
                    .setUniqueJobNumber(uniqueJobNumber++);
            testList.add(queue);
        } else {
            for (JsonJobQueue jobQueue : testList) {
            addTestJob(queue, "list", "my-server", 0, 1135821, uniqueJobNumber++, oldJobs);
            addTestJob(queue, "info", "my-server", -1, -1, uniqueJobNumber++, oldJobs);
            list.add(queue);
            if (oldJobs) {
                oldJobsTestList = list;
            } else {
                testList = list;
            }
        } else if (!oldJobs) {
            for (JsonJobQueue jobQueue : list) {
                for (JsonJob job : jobQueue.getJobs()) {
                    if (job.getStatus() != AbstractJob.Status.RUNNING) continue;
                    long current = job.getProgressInfo().getCurrent();
@@ -148,7 +151,7 @@
                }
            }
        }
        return JsonUtils.toJson(testList, prettyPrinter);
        return JsonUtils.toJson(list, prettyPrinter);
    }
    /**
@@ -161,7 +164,7 @@
     * @param total
     * @return
     */
    private JsonJob addTestJob(JsonJobQueue queue, String operation, String host, long current, long total) {
    private JsonJob addTestJob(JsonJobQueue queue, String operation, String host, long current, long total, long uniqueNumber, boolean oldJobs) {
        ProgressInfo progressInfo = new ProgressInfo()
                .setCurrent(current)
                .setTotal(total);
@@ -186,6 +189,10 @@
        if (queue.getJobs() == null) {
            queue.setJobs(new ArrayList<>());
        }
        job.setUniqueJobNumber(uniqueNumber);
        if (oldJobs) {
            job.setStatus(uniqueNumber % 2 == 0 ? AbstractJob.Status.CANCELLED : AbstractJob.Status.DONE);
        }
        queue.getJobs().add(job);
        return job;
    }
borgbutler-webapp/src/components/views/jobs/Job.jsx
@@ -39,6 +39,14 @@
    render() {
        let content = undefined;
        let job = this.props.job;
        let cancelDisabled = undefined;
        if ((job.status !== 'RUNNING' && job.status !== 'QUEUED') || job.cancellationRequested) {
            cancelDisabled = true;
        }
        let cancelButton = <div className="job-cancel"><Button color={'danger'}
                                                               onClick={() => this.cancelJob(job.uniqueJobNumber)}
                                                               disabled={cancelDisabled}><IconCancel/></Button>
        </div>;
        if (job.status === 'RUNNING') {
            let progressPercent = 100;
            let color = 'success';
@@ -49,13 +57,15 @@
                progressPercent = job.progressPercent;
            }
            content = <Progress animated color={color} value={progressPercent}>{job.progressText}</Progress>;
        } else if (job.status === 'CANCELLED') {
            content = <Progress color={'warning'} value={100}>{job.status}</Progress>
            cancelButton = '';
        } else if (job.status === 'DONE') {
            content = <Progress color={'success'} value={100}>{job.status}</Progress>
            cancelButton = '';
        } else {
            content = <Progress color={'info'} value={100}>{job.status}</Progress>
        }
        let cancelDisabled = undefined;
        if ((job.status !== 'RUNNING' && job.status !== 'QUEUED') || job.cancellationRequested) {
            cancelDisabled = true;
        }
        let environmentVariables = '';
        if (job.environmentVariables && Array.isArray(job.environmentVariables)) {
            environmentVariables = job.environmentVariables.map((variable, index) => <React.Fragment key={index}>
@@ -70,10 +80,7 @@
                        <Button color="link" onClick={this.toggle}>{job.description}</Button>
                        {content}
                    </div>
                    <div className="job-cancel"><Button color={'danger'}
                                                        onClick={() => this.cancelJob(job.uniqueJobNumber)}
                                                        disabled={cancelDisabled}><IconCancel/></Button>
                    </div>
                    {cancelButton}
                </div>
                <Collapse isOpen={this.state.collapse}>
                    <Card>
borgbutler-webapp/src/components/views/jobs/JobMonitorPanel.jsx
@@ -102,7 +102,7 @@
                content = <React.Fragment>No jobs are running or queued.</React.Fragment>
            }
        }
        let oldJobs = 'Old jobs...';
        let oldJobs = 'No old jobs yet to display...';
        if (this.state.oldJobsQueues && this.state.oldJobsQueues.length > 0) {
            oldJobs = <React.Fragment>
                {this.state.oldJobsQueues