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

Kai Reinhard
08.15.2018 909823cee4aff9f12ddceef523f062054a4af428
Parses now json repsonse of borg to Pojo's.
5 files added
2 files modified
99 ■■■■■ changed files
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java 10 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Cache.java 10 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Encryption.java 8 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java 27 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Repository.java 14 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Stats.java 25 ●●●●● patch | view | raw | blame | history
borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java 5 ●●●● patch | view | raw | blame | history
borgbutler-core/src/main/java/de/micromata/borgbutler/BorgCommands.java
@@ -3,6 +3,8 @@
import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.json.JsonUtils;
import de.micromata.borgbutler.json.borg.RepoInfo;
import org.apache.commons.exec.*;
import org.apache.commons.exec.environment.EnvironmentUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
@@ -17,10 +19,11 @@
public class BorgCommands {
    private static Logger log = LoggerFactory.getLogger(BorgCommands.class);
    public static String info(BorgRepoConfig repoConfig) {
    public static RepoInfo info(BorgRepoConfig repoConfig) {
        try {
            CommandLine cmdLine = new CommandLine(ConfigurationHandler.getConfiguration().getBorgCommand());
            cmdLine.addArgument("info");
            cmdLine.addArgument("--json");
            cmdLine.addArgument(repoConfig.getRepo());
            DefaultExecutor executor = new DefaultExecutor();
            //executor.setExitValue(2);
@@ -32,7 +35,10 @@
            executor.setStreamHandler(streamHandler);
            log.info("Executing '" + cmdLine.getExecutable() + " " + StringUtils.join(cmdLine.getArguments(), " ") + "'...");
            executor.execute(cmdLine, getEnvironment(repoConfig));
            return (outputStream.toString(Charset.forName("UTF-8")));
            String json = outputStream.toString(Charset.forName("UTF-8"));
            RepoInfo repoInfo = JsonUtils.fromJson(RepoInfo.class, json);
            repoInfo.setOriginalJson(json);
            return repoInfo;
        } catch (IOException ex) {
            log.error("Error while executing borg command: " + ex.getMessage(), ex);
            return null;
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Cache.java
New file
@@ -0,0 +1,10 @@
package de.micromata.borgbutler.json.borg;
import lombok.Getter;
public class Cache {
    @Getter
    private String path;
    @Getter
    private Stats stats;
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Encryption.java
New file
@@ -0,0 +1,8 @@
package de.micromata.borgbutler.json.borg;
import lombok.Getter;
public class Encryption {
    @Getter
    private String mode;
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/RepoInfo.java
New file
@@ -0,0 +1,27 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.micromata.borgbutler.json.JsonUtils;
import lombok.Getter;
import lombok.Setter;
public class RepoInfo {
    @Getter
    @JsonProperty("security_dir")
    private String securityDir;
    @Getter
    private Cache cache;
    @Getter
    private Encryption encryption;
    @Getter
    private Repository repository;
    @Getter
    @Setter
    @JsonIgnore
    private String originalJson;
    public String toString() {
        return JsonUtils.toJson(this, true);
    }
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Repository.java
New file
@@ -0,0 +1,14 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
public class Repository {
    @Getter
    private String id;
    @Getter
    @JsonProperty("last_modified")
    private String lastModified;
    @Getter
    private String location;
}
borgbutler-core/src/main/java/de/micromata/borgbutler/json/borg/Stats.java
New file
@@ -0,0 +1,25 @@
package de.micromata.borgbutler.json.borg;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
public class Stats {
    @Getter
    @JsonProperty("total_chunks")
    private long totalChunks;
    @Getter
    @JsonProperty("total_csize")
    private long totalCSize;
    @Getter
    @JsonProperty("total_size")
    private long totalSize;
    @Getter
    @JsonProperty("total_unique_chunks")
    private long totalUniqueChunks;
    @Getter
    @JsonProperty("unique_csize")
    private long uniqueCSize;
    @Getter
    @JsonProperty("unique_size")
    private long uniqueSize;
}
borgbutler-core/src/test/java/de/micromata/borgbutler/BorgCommandsTest.java
@@ -3,6 +3,7 @@
import de.micromata.borgbutler.config.BorgRepoConfig;
import de.micromata.borgbutler.config.Configuration;
import de.micromata.borgbutler.config.ConfigurationHandler;
import de.micromata.borgbutler.json.borg.RepoInfo;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -20,7 +21,9 @@
        }
        for (BorgRepoConfig repo : config.getRepos()) {
            log.info("Processing repo '" + repo + "'");
            log.info(BorgCommands.info(repo));
            RepoInfo repoInfo = BorgCommands.info(repo);
            log.info("Repo info: " + repoInfo);
            log.info("Repo json: " + repoInfo.getOriginalJson());
        }
    }
}