From 52e896a54454a7edd65125621a95195858ce977c Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Sat, 6 Jun 2020 00:56:38 -0400 Subject: [PATCH] for now, consider packer image OK if bubble version matches --- .../cloud/compute/PackerImageParserBase.java | 22 +++++++++++++++++ .../digitalocean/DigitalOceanDriver.java | 2 +- .../DigitalOceanPackerImageParser.java | 24 +++++++------------ .../cloud/compute/vultr/VultrDriver.java | 2 +- .../compute/vultr/VultrPackerImageParser.java | 15 ++++++------ 5 files changed, 40 insertions(+), 25 deletions(-) create mode 100644 bubble-server/src/main/java/bubble/cloud/compute/PackerImageParserBase.java diff --git a/bubble-server/src/main/java/bubble/cloud/compute/PackerImageParserBase.java b/bubble-server/src/main/java/bubble/cloud/compute/PackerImageParserBase.java new file mode 100644 index 00000000..8f94d146 --- /dev/null +++ b/bubble-server/src/main/java/bubble/cloud/compute/PackerImageParserBase.java @@ -0,0 +1,22 @@ +package bubble.cloud.compute; + +import static bubble.service.packer.PackerJob.PACKER_IMAGE_PREFIX; + +public abstract class PackerImageParserBase extends ListResourceParser { + + private String bubbleVersion; + private String jarSha; + + public PackerImageParserBase(String bubbleVersion, String jarSha) { + this.bubbleVersion = bubbleVersion; + this.jarSha = jarSha; + } + + public boolean isValidPackerImage(String name) { + if (!name.startsWith(PACKER_IMAGE_PREFIX)) return false; + if (!name.contains("_"+bubbleVersion+"_")) return false; +// if (!name.endsWith("_"+jarSha)) return false; + return true; + } + +} diff --git a/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanDriver.java b/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanDriver.java index 675217bd..e9d62913 100644 --- a/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanDriver.java +++ b/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanDriver.java @@ -258,7 +258,7 @@ public class DigitalOceanDriver extends ComputeServiceDriverBase { } @Override public List getPackerImages() { - final List images = getResources(PACKER_IMAGES_URI, new DigitalOceanPackerImageParser(configuration.getJarSha())); + final List images = getResources(PACKER_IMAGES_URI, new DigitalOceanPackerImageParser(configuration.getVersion(), configuration.getJarSha())); return images == null ? Collections.emptyList() : images; } diff --git a/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanPackerImageParser.java b/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanPackerImageParser.java index 301c7dd8..6d05f9fd 100644 --- a/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanPackerImageParser.java +++ b/bubble-server/src/main/java/bubble/cloud/compute/digitalocean/DigitalOceanPackerImageParser.java @@ -1,34 +1,28 @@ package bubble.cloud.compute.digitalocean; import bubble.cloud.CloudRegion; -import bubble.cloud.compute.ListResourceParser; import bubble.cloud.compute.PackerImage; +import bubble.cloud.compute.PackerImageParserBase; import com.fasterxml.jackson.databind.JsonNode; import java.util.ArrayList; import java.util.List; -import static bubble.service.packer.PackerJob.PACKER_IMAGE_PREFIX; +public class DigitalOceanPackerImageParser extends PackerImageParserBase { -public class DigitalOceanPackerImageParser extends ListResourceParser { - - private String jarSha; - - public DigitalOceanPackerImageParser (String jarSha) { this.jarSha = jarSha; } + public DigitalOceanPackerImageParser (String bubbleVersion, String jarSha) { + super(bubbleVersion, jarSha); + } @Override public boolean allowEmpty() { return true; } @Override public PackerImage parse(JsonNode item) { - final PackerImage image = new PackerImage(); + if (!item.has("name")) return null; + final String name = item.get("name").textValue(); + if (!isValidPackerImage(name)) return null; - final String name; - if (item.has("name")) { - name = item.get("name").textValue(); - if (!name.startsWith(PACKER_IMAGE_PREFIX)) return null; - if (!name.endsWith("_"+jarSha)) return null; - image.setName(name); - } + final PackerImage image = new PackerImage().setName(name); if (item.has("id")) image.setId(item.get("id").textValue()); diff --git a/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrDriver.java b/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrDriver.java index 331fcc87..c0e8d1b7 100644 --- a/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrDriver.java +++ b/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrDriver.java @@ -398,7 +398,7 @@ public class VultrDriver extends ComputeServiceDriverBase { } @Override public List getPackerImages() { - final List images = loadCloudResources(SNAPSHOT_URL, new VultrPackerImageParser(configuration.getJarSha())); + final List images = loadCloudResources(SNAPSHOT_URL, new VultrPackerImageParser(configuration.getVersion(), configuration.getJarSha())); return images == null ? Collections.emptyList() : images; } diff --git a/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrPackerImageParser.java b/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrPackerImageParser.java index 353344e5..f8523e99 100644 --- a/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrPackerImageParser.java +++ b/bubble-server/src/main/java/bubble/cloud/compute/vultr/VultrPackerImageParser.java @@ -1,17 +1,16 @@ package bubble.cloud.compute.vultr; -import bubble.cloud.compute.ListResourceParser; import bubble.cloud.compute.PackerImage; +import bubble.cloud.compute.PackerImageParserBase; import com.fasterxml.jackson.databind.JsonNode; -import static bubble.service.packer.PackerJob.PACKER_IMAGE_PREFIX; import static org.cobbzilla.util.daemon.ZillaRuntime.die; -public class VultrPackerImageParser extends ListResourceParser { +public class VultrPackerImageParser extends PackerImageParserBase { - private String jarSha; - - public VultrPackerImageParser(String jarSha) { this.jarSha = jarSha; } + public VultrPackerImageParser(String bubbleVersion, String jarSha) { + super(bubbleVersion, jarSha); + } @Override public PackerImage parse(JsonNode item) { if (!item.has("SNAPSHOTID")) return die("parse: SNAPSHOTID not found"); @@ -20,10 +19,10 @@ public class VultrPackerImageParser extends ListResourceParser { if (!item.has("status")) return die("parse: status not found"); if (!item.get("status").textValue().equals("complete")) return null; final String name = item.get("description").textValue(); - if (!name.startsWith(PACKER_IMAGE_PREFIX)) return null; - if (!name.endsWith("_"+jarSha)) return null; + if (!isValidPackerImage(name)) return null; return new PackerImage() .setName(name) .setId(item.get("SNAPSHOTID").textValue()); } + }