diff --git a/bubble-server/src/main/java/bubble/server/BubbleConfiguration.java b/bubble-server/src/main/java/bubble/server/BubbleConfiguration.java index f5a1127a..c8161770 100644 --- a/bubble-server/src/main/java/bubble/server/BubbleConfiguration.java +++ b/bubble-server/src/main/java/bubble/server/BubbleConfiguration.java @@ -52,9 +52,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.beans.Transient; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; +import java.io.*; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -185,6 +183,16 @@ public class BubbleConfiguration extends PgRestServerConfiguration } } + public void saveSoftwareVersions (Properties softwareVersions) { + if (!SOFTWARE_VERSIONS_FILE.exists()) { + try (OutputStream out = new FileOutputStream(SOFTWARE_VERSIONS_FILE)) { + softwareVersions.store(out, null); + } catch (Exception e) { + log.error("saveSoftwareVersions: "+shortError(e)); + } + } + } + @Setter private String localStorageDir = DEFAULT_LOCAL_STORAGE_DIR; public String getLocalStorageDir () { return empty(localStorageDir) ? DEFAULT_LOCAL_STORAGE_DIR : localStorageDir; } diff --git a/bubble-server/src/main/java/bubble/service/packer/PackerJob.java b/bubble-server/src/main/java/bubble/service/packer/PackerJob.java index 8a0c9c91..c683c7c6 100644 --- a/bubble-server/src/main/java/bubble/service/packer/PackerJob.java +++ b/bubble-server/src/main/java/bubble/service/packer/PackerJob.java @@ -295,6 +295,7 @@ public class PackerJob implements Callable> { private void writeBubbleVersions(TempDir tempDir, Map versions) { final File varsDir = mkdirOrDie(abs(tempDir) + "/roles/"+ROLE_BUBBLE+"/vars"); final StringBuilder b = new StringBuilder(); + final Properties softwareProps = new Properties(); for (Map.Entry var : versions.entrySet()) { final String roleName = var.getKey(); final String version = var.getValue().trim(); @@ -302,8 +303,11 @@ public class PackerJob implements Callable> { final String hash = packerService.getSoftwareHash(roleName, version); b.append(roleBase).append("_version : '").append(version).append("'\n") .append(roleBase).append("_sha : '").append(hash).append("'\n"); + softwareProps.setProperty(roleBase+"_version", version); + softwareProps.setProperty(roleBase+"_sha", hash); } FileUtil.toFileOrDie(new File(varsDir, "main.yml"), b.toString()); + configuration.saveSoftwareVersions(softwareProps); } private Map getSoftwareVersion(String roleName, TempDir tempDir) throws IOException { diff --git a/bubble-server/src/main/java/bubble/service/packer/PackerService.java b/bubble-server/src/main/java/bubble/service/packer/PackerService.java index 4f8ed13b..886e2080 100644 --- a/bubble-server/src/main/java/bubble/service/packer/PackerService.java +++ b/bubble-server/src/main/java/bubble/service/packer/PackerService.java @@ -165,7 +165,6 @@ public class PackerService { case ROLE_DNSCRYPT: return ""; default: return die("getSoftwareSuffix: unrecognized roleName: "+roleName); } - } }