@@ -17,7 +17,10 @@ import org.cobbzilla.util.http.HttpResponseBean;
import javax.persistence.EntityNotFoundException;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import static bubble.model.cloud.BubbleNode.TAG_INSTANCE_ID;
import static bubble.model.cloud.BubbleNode.TAG_SSH_KEY_ID;
@@ -45,6 +48,7 @@ public class VultrDriver extends ComputeServiceDriverBase {
public static final String REGIONS_URL = VULTR_API_BASE + "regions/list";
public static final String PLANS_URL = VULTR_API_BASE + "plans/list";
public static final String OS_URL = VULTR_API_BASE + "os/list";
public static final String SNAPSHOT_URL = VULTR_API_BASE + "snapshot/list";
public static final String VULTR_SUBID = "SUBID";
public static final String VULTR_V4_IP = "main_ip";
@@ -66,9 +70,10 @@ public class VultrDriver extends ComputeServiceDriverBase {
public static final long SERVER_STOP_TIMEOUT = SECONDS.toMillis(60);
public static final long SERVER_STOP_CHECK_INTERVAL = SECONDS.toMillis(5);
private static <T> List<T> loadCloudResources(String uri, ResourceParser<T, List<T>> parser) {
private <T> List<T> loadCloudResources(String uri, ResourceParser<T, List<T>> parser) {
try {
final HttpResponseBean response = getResponse(uri);
final HttpRequestBean request = auth(new HttpRequestBean(uri));
final HttpResponseBean response = getResponse(request);
final JsonNode node = json(response.getEntityString(), JsonNode.class);
final List<T> resources = parser.newResults();
for (Iterator<String> fields = node.fieldNames(); fields.hasNext(); ) {
@@ -368,8 +373,9 @@ public class VultrDriver extends ComputeServiceDriverBase {
}
}
// todo
@Override public List<PackerImage> getPackerImages() { return notSupported("getPackerImages"); }
@Override public List<PackerImage> writePackerImages() { return notSupported("writePackerImages"); }
@Override public List<PackerImage> getPackerImages() {
final List<PackerImage> images = loadCloudResources(SNAPSHOT_URL, new VultrPackerImageParser(configuration.getJarSha()));
return images == null ? Collections.emptyList() : images;
}
}