http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/config/ProfitBricksComputeProperties.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/config/ProfitBricksComputeProperties.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/config/ProfitBricksComputeProperties.java new file mode 100644 index 0000000..19b0e53 --- /dev/null +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/config/ProfitBricksComputeProperties.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.profitbricks.config; + +public class ProfitBricksComputeProperties { + + public static final String POLL_PREDICATE_DATACENTER = "jclouds.profitbricks.predicate.datacenter"; + + public static final String POLL_TIMEOUT = "jclouds.profitbricks.poll.timeout"; + public static final String POLL_PERIOD = "jclouds.profitbricks.operation.poll.initial-period"; + public static final String POLL_MAX_PERIOD = "jclouds.profitbricks.operation.poll.max-period"; + + private ProfitBricksComputeProperties() { + throw new AssertionError("Intentionally unimplemented"); + } + +}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Firewall.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Firewall.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Firewall.java index 6a3d5fa..2108bc4 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Firewall.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Firewall.java @@ -17,20 +17,18 @@ package org.jclouds.profitbricks.domain; import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.net.InetAddresses.isInetAddress; import static org.jclouds.profitbricks.util.MacAddresses.isMacAddress; -import com.google.auto.value.AutoValue; - import java.util.List; import org.jclouds.javax.annotation.Nullable; import org.jclouds.profitbricks.domain.internal.FirewallRuleCommonProperties; +import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import static com.google.common.net.InetAddresses.isInetAddress; - @AutoValue public abstract class Firewall { http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Image.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Image.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Image.java index d272e27..0987324 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Image.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Image.java @@ -16,10 +16,12 @@ */ package org.jclouds.profitbricks.domain; +import org.jclouds.profitbricks.domain.internal.Provisionable; + import com.google.auto.value.AutoValue; @AutoValue -public abstract class Image { +public abstract class Image implements Provisionable { public enum Type { @@ -34,46 +36,21 @@ public abstract class Image { } } - public abstract String id(); - - public abstract String name(); - - public abstract float size(); // MB - public abstract Type type(); - public abstract Location location(); - - public abstract OsType osType(); - public abstract boolean isPublic(); public abstract boolean isWriteable(); public abstract boolean isBootable(); - public abstract boolean isCpuHotPlug(); - - public abstract boolean isCpuHotUnPlug(); - - public abstract boolean isRamHotPlug(); - - public abstract boolean isRamHotUnPlug(); - - public abstract boolean isNicHotPlug(); - - public abstract boolean isNicHotUnPlug(); - - public abstract boolean isDiscVirtioHotPlug(); - - public abstract boolean isDiscVirtioHotUnPlug(); - public static Image create(String id, String name, float size, Type type, Location location, OsType osType, - boolean isPublic, boolean isWriteable, boolean isBootable, boolean cpuHotPlug, boolean cpuHotUnPlug, - boolean ramHotPlug, boolean ramHotUnPlug, boolean nicHotPlug, boolean nicHotUnPlug, - boolean discVirtioHotPlug, boolean discVirtioHotUnPlug) { - return new AutoValue_Image(id, name, size, type, location, osType, isPublic, isWriteable, - isBootable, cpuHotPlug, cpuHotUnPlug, ramHotPlug, ramHotUnPlug, nicHotPlug, nicHotUnPlug, discVirtioHotPlug, discVirtioHotUnPlug); + boolean isPublic, Boolean isWriteable, Boolean isBootable, Boolean cpuHotPlug, Boolean cpuHotUnPlug, + Boolean ramHotPlug, Boolean ramHotUnPlug, Boolean nicHotPlug, Boolean nicHotUnPlug, + Boolean discVirtioHotPlug, Boolean discVirtioHotUnPlug) { + return new AutoValue_Image(cpuHotPlug, cpuHotUnPlug, ramHotPlug, ramHotUnPlug, nicHotPlug, nicHotUnPlug, + discVirtioHotPlug, discVirtioHotUnPlug, id, name, size, location, osType, type, isPublic, isWriteable, + isBootable); } public static Builder builder() { @@ -84,56 +61,18 @@ public abstract class Image { return builder().fromImage(this); } - public static class Builder { + public static class Builder extends Provisionable.Builder<Builder, Image> { - private String id; - private String name; - private float size; private Type type; - private Location location; - private OsType osType; private boolean isPublic; private boolean isWriteable; private boolean isBootable; - private boolean cpuHotPlug; - private boolean cpuHotUnPlug; - private boolean ramHotPlug; - private boolean ramHotUnPlug; - private boolean nicHotPlug; - private boolean nicHotUnPlug; - private boolean discVirtioHotPlug; - private boolean discVirtioHotUnPlug; - - public Builder id(String id) { - this.id = id; - return this; - } - - public Builder name(String name) { - this.name = name; - return this; - } - - public Builder size(float size) { - this.size = size; - return this; - } public Builder type(Type type) { this.type = type; return this; } - public Builder osType(OsType osType) { - this.osType = osType; - return this; - } - - public Builder location(Location location) { - this.location = location; - return this; - } - public Builder isPublic(boolean isPublic) { this.isPublic = isPublic; return this; @@ -149,46 +88,7 @@ public abstract class Image { return this; } - public Builder isCpuHotPlug(boolean cpuHotPlug) { - this.cpuHotPlug = cpuHotPlug; - return this; - } - - public Builder isCpuHotUnPlug(boolean cpuHotUnPlug) { - this.cpuHotUnPlug = cpuHotUnPlug; - return this; - } - - public Builder isRamHotPlug(boolean ramHotPlug) { - this.ramHotPlug = ramHotPlug; - return this; - } - - public Builder isRamHotUnPlug(boolean ramHotUnPlug) { - this.ramHotUnPlug = ramHotUnPlug; - return this; - } - - public Builder isNicHotPlug(boolean nicHotPlug) { - this.nicHotPlug = nicHotPlug; - return this; - } - - public Builder isNicHotUnPlug(boolean nicHotUnPlug) { - this.nicHotUnPlug = nicHotUnPlug; - return this; - } - - public Builder isDiscVirtioHotPlug(boolean discVirtioHotPlug) { - this.discVirtioHotPlug = discVirtioHotPlug; - return this; - } - - public Builder isDiscVirtioHotUnPlug(boolean discVirtioHotUnPlug) { - this.discVirtioHotUnPlug = discVirtioHotUnPlug; - return this; - } - + @Override public Image build() { return Image.create(id, name, size, type, location, osType, isPublic, isWriteable, isBootable, cpuHotPlug, cpuHotUnPlug, ramHotPlug, ramHotUnPlug, nicHotPlug, nicHotUnPlug, discVirtioHotPlug, discVirtioHotUnPlug); @@ -199,7 +99,12 @@ public abstract class Image { .isDiscVirtioHotPlug(in.isDiscVirtioHotPlug()).isDiscVirtioHotUnPlug(in.isDiscVirtioHotUnPlug()) .isNicHotPlug(in.isNicHotPlug()).isNicHotUnPlug(in.isNicHotUnPlug()).isPublic(in.isPublic()) .isRamHotPlug(in.isRamHotPlug()).isRamHotUnPlug(in.isRamHotUnPlug()).isWriteable(in.isWriteable()) - .location(in.location()).name(in.name()).osType(in.osType()).size(in.size()); + .location(in.location()).name(in.name()).osType(in.osType()).size(in.size()).type(in.type()); + } + + @Override + public Builder self() { + return this; } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/LoadBalancer.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/LoadBalancer.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/LoadBalancer.java index bc118ea..843999d 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/LoadBalancer.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/LoadBalancer.java @@ -47,13 +47,10 @@ public abstract class LoadBalancer { public abstract String name(); @Nullable - public abstract Algorithm loadBalancerAlgorithm(); + public abstract Algorithm algorithm(); @Nullable - public abstract String dataCenterId(); - - @Nullable - public abstract String dataCenterVersion(); + public abstract DataCenter dataCenter(); @Nullable public abstract Boolean internetAccess(); @@ -79,10 +76,11 @@ public abstract class LoadBalancer { @Nullable public abstract List<Firewall> firewalls(); - public static LoadBalancer create(String id, String name, Algorithm loadBalancerAlgorithm, - String dataCenterId, String dataCenterVersion, boolean internetAccess, - String ip, String lanId, ProvisioningState state, Date creationTime, Date lastModificationTime, List<Server> balancedServers, List<Firewall> firewalls) { - return new AutoValue_LoadBalancer(id, name, loadBalancerAlgorithm, dataCenterId, dataCenterVersion, internetAccess, ip, lanId, state, creationTime, lastModificationTime, + public static LoadBalancer create(String id, String name, Algorithm algorithm, DataCenter dataCenter, + boolean internetAccess, String ip, String lanId, ProvisioningState state, Date creationTime, + Date lastModificationTime, List<Server> balancedServers, List<Firewall> firewalls) { + return new AutoValue_LoadBalancer(id, name, algorithm, dataCenter, + internetAccess, ip, lanId, state, creationTime, lastModificationTime, balancedServers != null ? ImmutableList.copyOf(balancedServers) : ImmutableList.<Server>of(), firewalls != null ? ImmutableList.copyOf(firewalls) : ImmutableList.<Firewall>of()); } @@ -102,11 +100,9 @@ public abstract class LoadBalancer { private String name; - private Algorithm loadBalancerAlgorithm; - - private String dataCenterId; + private Algorithm algorithm; - private String dataCenterVersion; + private DataCenter dataCenter; private boolean internetAccess; @@ -134,18 +130,13 @@ public abstract class LoadBalancer { return this; } - public Builder loadBalancerAlgorithm(Algorithm loadBalancerAlgorithm) { - this.loadBalancerAlgorithm = loadBalancerAlgorithm; - return this; - } - - public Builder dataCenterId(String dataCenterId) { - this.dataCenterId = dataCenterId; + public Builder algorithm(Algorithm algorithm) { + this.algorithm = algorithm; return this; } - public Builder dataCenterVersion(String dataCenterVersion) { - this.dataCenterVersion = dataCenterVersion; + public Builder dataCenter(DataCenter dataCenter) { + this.dataCenter = dataCenter; return this; } @@ -191,13 +182,16 @@ public abstract class LoadBalancer { public LoadBalancer build() { checkIp(ip); - return LoadBalancer.create(id, name, loadBalancerAlgorithm, dataCenterId, dataCenterVersion, internetAccess, ip, lanId, state, creationTime, lastModificationTime, balancedServers, firewalls); + return LoadBalancer.create(id, name, algorithm, dataCenter, internetAccess, + ip, lanId, state, creationTime, lastModificationTime, balancedServers, firewalls); } public Builder fromLoadBalancer(LoadBalancer in) { - return this.id(in.id()).name(in.name()).loadBalancerAlgorithm(in.loadBalancerAlgorithm()) - .dataCenterId(in.dataCenterId()).dataCenterVersion(in.dataCenterVersion()).internetAccess(in.internetAccess()) - .ip(in.ip()).lanId(in.lanId()).state(in.state()).creationTime(in.creationTime()).lastModificationTime(in.lastModificationTime()).balancedServers(in.balancedServers()).firewalls(in.firewalls()); + return this.id(in.id()).name(in.name()).algorithm(in.algorithm()) + .dataCenter(in.dataCenter()).internetAccess(in.internetAccess()) + .ip(in.ip()).lanId(in.lanId()).state(in.state()).creationTime(in.creationTime()) + .lastModificationTime(in.lastModificationTime()).balancedServers(in.balancedServers()) + .firewalls(in.firewalls()); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Location.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Location.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Location.java index 3dd888d..52acaf2 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Location.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Location.java @@ -18,22 +18,28 @@ package org.jclouds.profitbricks.domain; public enum Location { - DE_FKB("de/fkb"), - DE_FRA("de/fra"), - US_LAS("us/las"), - US_LAS_DEV("us/lasdev"), - UNRECOGNIZED("unknown"); + DE_FKB("de/fkb", "Germany, Karlsruhe"), + DE_FRA("de/fra", "Germany, Frankfurt (M)"), + US_LAS("us/las", "USA, Las Vegas"), + US_LASDEV("us/lasdev", "USA Developer cluster"), + UNRECOGNIZED("unrecognized", "Unrecognized location"); private final String id; + private final String description; - Location(String id) { + Location(String id, String description) { this.id = id; + this.description = description; } - public String value() { + public String getId() { return id; } + public String getDescription() { + return description; + } + public static Location fromValue(String v) { try { return valueOf(v); http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Nic.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Nic.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Nic.java index f538d9b..0f7427c 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Nic.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Nic.java @@ -17,17 +17,15 @@ package org.jclouds.profitbricks.domain; import static com.google.common.base.Preconditions.checkArgument; - -import com.google.auto.value.AutoValue; +import static com.google.common.net.InetAddresses.isInetAddress; import java.util.List; -import org.jclouds.javax.annotation.Nullable; - +import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import static com.google.common.net.InetAddresses.isInetAddress; +import org.jclouds.javax.annotation.Nullable; @AutoValue public abstract class Nic { http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Server.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Server.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Server.java index ee1212a..027e016 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Server.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Server.java @@ -27,6 +27,7 @@ import java.util.Date; import java.util.List; import org.jclouds.javax.annotation.Nullable; +import org.jclouds.profitbricks.domain.internal.HotPluggable; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -52,6 +53,9 @@ public abstract class Server implements ServerCommonProperties { } @Nullable + public abstract DataCenter dataCenter(); + + @Nullable public abstract String id(); @Nullable @@ -89,17 +93,23 @@ public abstract class Server implements ServerCommonProperties { public abstract String balancedNicId(); @Nullable - public abstract Boolean activate(); - - public static Server create(String id, String name, int cores, int ram, Boolean hasInternetAccess, ProvisioningState state, - Status status, OsType osType, AvailabilityZone availabilityZone, Date creationTime, Date lastModificationTime, - List<Storage> storages, List<Nic> nics, Boolean isCpuHotPlug, Boolean isRamHotPlug, Boolean isNicHotPlug, - Boolean isNicHotUnPlug, Boolean isDiscVirtioHotPlug, Boolean isDiscVirtioHotUnPlug, String balancedNicId, boolean activate) { - return new AutoValue_Server(isCpuHotPlug, isRamHotPlug, isNicHotPlug, isNicHotUnPlug, isDiscVirtioHotPlug, isDiscVirtioHotUnPlug, - cores, ram, id, name, hasInternetAccess, state, status, osType, availabilityZone, creationTime, lastModificationTime, - storages != null ? ImmutableList.copyOf(storages) : Lists.<Storage>newArrayList(), - nics != null ? ImmutableList.copyOf(nics) : Lists.<Nic>newArrayList(), balancedNicId, activate); + public abstract Boolean loadBalanced(); + @Nullable + public abstract String hostname(); // Non-profitbricks property; Added to hold hostname parsed from image temporarily + + public static Server create(DataCenter dataCenter, String id, String name, int cores, int ram, + Boolean hasInternetAccess, ProvisioningState state, Status status, OsType osType, + AvailabilityZone availabilityZone, Date creationTime, Date lastModificationTime, List<Storage> storages, + List<Nic> nics, Boolean isCpuHotPlug, Boolean isRamHotPlug, Boolean isNicHotPlug, Boolean isNicHotUnPlug, + Boolean isDiscVirtioHotPlug, Boolean isDiscVirtioHotUnPlug, String balancedNicId, Boolean loadBalanced, + String hostname) { + return new AutoValue_Server(isCpuHotPlug, null, isRamHotPlug, null, isNicHotPlug, isNicHotUnPlug, isDiscVirtioHotPlug, + isDiscVirtioHotUnPlug, cores, ram, dataCenter, id, name, hasInternetAccess, state, status, osType, + availabilityZone, creationTime, lastModificationTime, + storages != null ? ImmutableList.copyOf(storages) : Lists.<Storage>newArrayList(), + nics != null ? ImmutableList.copyOf(nics) : Lists.<Nic>newArrayList(), + balancedNicId, loadBalanced, hostname); } public static DescribingBuilder builder() { @@ -110,17 +120,11 @@ public abstract class Server implements ServerCommonProperties { return builder().fromServer(this); } - public abstract static class Builder<B extends Builder, D extends ServerCommonProperties> { + public abstract static class Builder<B extends Builder, D extends ServerCommonProperties> extends HotPluggable.Builder<B, D> { protected String name; protected int cores; protected int ram; - protected Boolean cpuHotPlug; - protected Boolean ramHotPlug; - protected Boolean nicHotPlug; - protected Boolean nicHotUnPlug; - protected Boolean discVirtioHotPlug; - protected Boolean discVirtioHotUnPlug; public B name(String name) { this.name = name; @@ -136,45 +140,11 @@ public abstract class Server implements ServerCommonProperties { this.ram = ram; return self(); } - - public B isCpuHotPlug(Boolean cpuHotPlug) { - this.cpuHotPlug = cpuHotPlug; - return self(); - } - - public B isRamHotPlug(Boolean ramHotPlug) { - this.ramHotPlug = ramHotPlug; - return self(); - - } - - public B isNicHotPlug(Boolean nicHotPlug) { - this.nicHotPlug = nicHotPlug; - return self(); - } - - public B isNicHotUnPlug(Boolean nicHotUnPlug) { - this.nicHotUnPlug = nicHotUnPlug; - return self(); - } - - public B isDiscVirtioHotPlug(Boolean discVirtioHotPlug) { - this.discVirtioHotPlug = discVirtioHotPlug; - return self(); - } - - public B isDiscVirtioHotUnPlug(Boolean discVirtioHotUnPlug) { - this.discVirtioHotUnPlug = discVirtioHotUnPlug; - return self(); - } - - public abstract B self(); - - public abstract D build(); } public static class DescribingBuilder extends Builder<DescribingBuilder, Server> { + private DataCenter dataCenter; private String id; private ProvisioningState state; private Status status; @@ -185,8 +155,14 @@ public abstract class Server implements ServerCommonProperties { private Boolean hasInternetAccess; private List<Storage> storages; private List<Nic> nics; - private boolean activate; + private Boolean loadBalanced; private String balancedNicId; + private String hostname; + + public DescribingBuilder dataCenter(DataCenter dataCenter) { + this.dataCenter = dataCenter; + return this; + } public DescribingBuilder id(String id) { this.id = id; @@ -243,16 +219,21 @@ public abstract class Server implements ServerCommonProperties { return this; } - public DescribingBuilder activate(boolean activate) { - this.activate = activate; + public DescribingBuilder loadBalanced(Boolean loadBalanced) { + this.loadBalanced = loadBalanced; + return this; + } + + public DescribingBuilder hostname(String hostname) { + this.hostname = hostname; return this; } @Override public Server build() { - return Server.create(id, name, cores, ram, hasInternetAccess, state, status, osType, zone, creationTime, + return Server.create(dataCenter, id, name, cores, ram, hasInternetAccess, state, status, osType, zone, creationTime, lastModificationTime, storages, nics, cpuHotPlug, ramHotPlug, nicHotPlug, nicHotUnPlug, - discVirtioHotPlug, discVirtioHotUnPlug, balancedNicId, activate); + discVirtioHotPlug, discVirtioHotUnPlug, balancedNicId, loadBalanced, hostname); } private DescribingBuilder fromServer(Server in) { @@ -261,7 +242,8 @@ public abstract class Server implements ServerCommonProperties { .isDiscVirtioHotUnPlug(in.isDiscVirtioHotUnPlug()).isNicHotPlug(in.isNicHotPlug()) .isNicHotUnPlug(in.isNicHotUnPlug()).isRamHotPlug(in.isRamHotPlug()) .lastModificationTime(in.lastModificationTime()).name(in.name()).osType(in.osType()).ram(in.ram()) - .state(in.state()).status(in.status()).storages(in.storages()).nics(in.nics()).balancedNicId(in.balancedNicId()).activate(in.activate()); + .state(in.state()).status(in.status()).storages(in.storages()).nics(in.nics()).dataCenter(in.dataCenter()) + .balancedNicId(balancedNicId).loadBalanced(loadBalanced).hostname(hostname); } @Override @@ -308,14 +290,15 @@ public abstract class Server implements ServerCommonProperties { return create(dataCenterId, name, core, ram, "", "", null, false, null, null, null, null, null, null, null, null); } - public static CreatePayload create(String dataCenterId, String name, int cores, int ram, String bootFromStorageId, String bootFromImageId, - Integer lanId, Boolean hasInternetAccess, AvailabilityZone availabilityZone, OsType osType, Boolean isCpuHotPlug, Boolean isRamHotPlug, - Boolean isNicHotPlug, Boolean isNicHotUnPlug, Boolean isDiscVirtioHotPlug, Boolean isDiscVirtioHotUnPlug) { + public static CreatePayload create(String dataCenterId, String name, int cores, int ram, String bootFromStorageId, + String bootFromImageId, Integer lanId, Boolean hasInternetAccess, AvailabilityZone availabilityZone, + OsType osType, Boolean isCpuHotPlug, Boolean isRamHotPlug, Boolean isNicHotPlug, Boolean isNicHotUnPlug, + Boolean isDiscVirtioHotPlug, Boolean isDiscVirtioHotUnPlug) { validateCores(cores); validateRam(ram, isRamHotPlug); - return new AutoValue_Server_Request_CreatePayload(isCpuHotPlug, isRamHotPlug, isNicHotPlug, isNicHotUnPlug, isDiscVirtioHotPlug, - isDiscVirtioHotUnPlug, name, cores, ram, dataCenterId, bootFromStorageId, bootFromImageId, lanId, hasInternetAccess, - availabilityZone, osType); + return new AutoValue_Server_Request_CreatePayload(isCpuHotPlug, null, isRamHotPlug, null, isNicHotPlug, + isNicHotUnPlug, isDiscVirtioHotPlug, isDiscVirtioHotUnPlug, name, cores, ram, dataCenterId, + bootFromStorageId, bootFromImageId, lanId, hasInternetAccess, availabilityZone, osType); } public static class Builder extends Server.Builder<Builder, CreatePayload> { @@ -406,8 +389,9 @@ public abstract class Server implements ServerCommonProperties { public static UpdatePayload create(String id, String name, int cores, int ram, String bootFromStorageId, String bootFromImageId, AvailabilityZone availabilityZone, OsType osType, Boolean isCpuHotPlug, Boolean isRamHotPlug, Boolean isNicHotPlug, Boolean isNicHotUnPlug, Boolean isDiscVirtioHotPlug, Boolean isDiscVirtioHotUnPlug) { - return new AutoValue_Server_Request_UpdatePayload(isCpuHotPlug, isRamHotPlug, isNicHotPlug, isNicHotUnPlug, isDiscVirtioHotPlug, - isDiscVirtioHotUnPlug, cores, ram, name, id, bootFromStorageId, bootFromImageId, availabilityZone, osType); + return new AutoValue_Server_Request_UpdatePayload(isCpuHotPlug, null, isRamHotPlug, null, isNicHotPlug, + isNicHotUnPlug, isDiscVirtioHotPlug, isDiscVirtioHotUnPlug, cores, ram, name, id, bootFromStorageId, + bootFromImageId, availabilityZone, osType); } public static class Builder extends Server.Builder<Builder, UpdatePayload> { http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Snapshot.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Snapshot.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Snapshot.java index 3182711..60738d0 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Snapshot.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Snapshot.java @@ -17,45 +17,34 @@ package org.jclouds.profitbricks.domain; import com.google.auto.value.AutoValue; + import org.jclouds.javax.annotation.Nullable; import java.util.Date; +import org.jclouds.profitbricks.domain.internal.HotPluggable; +import org.jclouds.profitbricks.domain.internal.Provisionable; + @AutoValue -public abstract class Snapshot { +public abstract class Snapshot implements Provisionable { @Nullable + @Override public abstract String id(); @Nullable + @Override public abstract String name(); - public abstract float size(); - public abstract boolean bootable(); @Nullable public abstract String description(); @Nullable + @Override public abstract OsType osType(); - public abstract boolean cpuHotPlug(); - - public abstract boolean cpuHotUnPlug(); - - public abstract boolean discVirtioHotPlug(); - - public abstract boolean discVirtioHotUnPlug(); - - public abstract boolean ramHotPlug(); - - public abstract boolean ramHotUnPlug(); - - public abstract boolean nicHotPlug(); - - public abstract boolean nicHotUnPlug(); - @Nullable public abstract Date creationTime(); @@ -66,367 +55,237 @@ public abstract class Snapshot { public abstract ProvisioningState state(); @Nullable + @Override public abstract Location location(); - public static Snapshot create(String id, String name, float size, boolean bootable, String description, OsType osType, boolean cpuHotPlug, boolean cpuHotUnPlug, - boolean discVirtioHotPlug, boolean discVirtioHotUnPlug, boolean ramHotPlug, boolean ramHotUnPlug, - boolean nicHotPlug, boolean nicHotUnPlug, Date creationTime, Date lastModificationTime, ProvisioningState state, Location location) { - return new AutoValue_Snapshot(id, name, size, bootable, description, osType, cpuHotPlug, cpuHotUnPlug, - discVirtioHotPlug, discVirtioHotUnPlug, ramHotPlug, ramHotUnPlug, - nicHotPlug, nicHotUnPlug, creationTime, lastModificationTime, state, location); + public static Snapshot create(String id, String name, float size, boolean bootable, String description, OsType osType, + Boolean cpuHotPlug, Boolean cpuHotUnPlug, Boolean discVirtioHotPlug, Boolean discVirtioHotUnPlug, + Boolean ramHotPlug, Boolean ramHotUnPlug, Boolean nicHotPlug, Boolean nicHotUnPlug, Date creationTime, + Date lastModificationTime, ProvisioningState state, Location location) { + return new AutoValue_Snapshot(cpuHotPlug, cpuHotUnPlug, discVirtioHotPlug, discVirtioHotUnPlug, ramHotPlug, + ramHotUnPlug, nicHotPlug, nicHotUnPlug, size, id, name, bootable, description, osType, creationTime, + lastModificationTime, state, location); } public static Builder builder() { return new Builder(); } - public static class Builder { + public static class Builder extends Provisionable.Builder<Builder, Snapshot> { - private String id; - @Nullable - private String name; - private float size; private Date creationTime; private Date lastModificationTime; private ProvisioningState state; private boolean bootable; - @Nullable private String description; - private OsType osType; - private boolean cpuHotPlug; - private boolean cpuHotUnPlug; - private boolean discVirtioHotPlug; - private boolean discVirtioHotUnPlug; - private boolean ramHotPlug; - private boolean ramHotUnPlug; - private boolean nicHotPlug; - private boolean nicHotUnPlug; - private Location location; - - public Builder id(String id) { - this.id = id; - return this; - } - - public Builder name(String name) { - this.name = name; - return this; - } - - public Builder size(float size) { - this.size = size; - return this; - } public Builder creationTime(Date creationTime) { - this.creationTime = creationTime; - return this; + this.creationTime = creationTime; + return this; } public Builder lastModificationTime(Date lastModificationTime) { - this.lastModificationTime = lastModificationTime; - return this; + this.lastModificationTime = lastModificationTime; + return this; } public Builder state(ProvisioningState state) { - this.state = state; - return this; + this.state = state; + return this; } public Builder description(String description) { - this.description = description; - return this; + this.description = description; + return this; } - public Builder bootable(Boolean bootable) { - this.bootable = bootable; - return this; - } - - public Builder osType(OsType osType) { - this.osType = osType; - return this; - } - - public Builder cpuHotPlug(boolean cpuHotPlug) { - this.cpuHotPlug = cpuHotPlug; - return this; - } - - public Builder cpuHotUnPlug(boolean cpuHotUnPlug) { - this.cpuHotUnPlug = cpuHotUnPlug; - return this; - } - - public Builder discVirtioHotPlug(boolean discVirtioHotPlug) { - this.discVirtioHotPlug = discVirtioHotPlug; - return this; - } - - public Builder discVirtioHotUnPlug(boolean discVirtioHotUnPlug) { - this.discVirtioHotUnPlug = discVirtioHotUnPlug; - return this; - } - - public Builder ramHotPlug(boolean ramHotPlug) { - this.ramHotPlug = ramHotPlug; - return this; - } - - public Builder ramHotUnPlug(boolean ramHotUnPlug) { - this.ramHotUnPlug = ramHotUnPlug; - return this; - } - - public Builder nicHotPlug(boolean nicHotPlug) { - this.nicHotPlug = nicHotPlug; - return this; - } - - public Builder nicHotUnPlug(boolean nicHotUnPlug) { - this.nicHotUnPlug = nicHotUnPlug; - return this; - } - - public Builder location(Location location) { - this.location = location; - return this; + public Builder isBootable(boolean bootable) { + this.bootable = bootable; + return this; } private Builder fromSnapshot(Snapshot in) { - return this.id(in.id()).name(in.name()).size(in.size()).creationTime(in.creationTime()) - .lastModificationTime(in.lastModificationTime()).state(in.state()).bootable(in.bootable()).description(in.description()) - .cpuHotPlug(in.cpuHotPlug()).cpuHotUnPlug(in.cpuHotUnPlug()).discVirtioHotPlug(in.discVirtioHotPlug()) - .discVirtioHotUnPlug(in.discVirtioHotUnPlug()).ramHotPlug(in.ramHotPlug()).ramHotUnPlug(in.ramHotUnPlug()) - .nicHotPlug(in.nicHotPlug()).nicHotUnPlug(in.nicHotUnPlug()); + return this.id(in.id()).name(in.name()).size(in.size()).creationTime(in.creationTime()) + .lastModificationTime(in.lastModificationTime()).state(in.state()).isBootable(in.bootable()) + .description(in.description()).isCpuHotPlug(in.isCpuHotPlug()).isCpuHotUnPlug(in.isCpuHotUnPlug()) + .isDiscVirtioHotPlug(in.isDiscVirtioHotPlug()).isDiscVirtioHotUnPlug(in.isDiscVirtioHotUnPlug()) + .isRamHotPlug(in.isRamHotPlug()).isRamHotUnPlug(in.isRamHotUnPlug()) + .isNicHotPlug(in.isNicHotPlug()).isNicHotUnPlug(in.isNicHotUnPlug()); } + @Override public Snapshot build() { - return Snapshot.create(id, name, size, bootable, description, osType, cpuHotPlug, cpuHotUnPlug, discVirtioHotPlug, discVirtioHotUnPlug, ramHotPlug, ramHotUnPlug, nicHotPlug, nicHotUnPlug, creationTime, lastModificationTime, state, location); + return Snapshot.create(id, name, size, bootable, description, osType, cpuHotPlug, cpuHotUnPlug, + discVirtioHotPlug, discVirtioHotUnPlug, ramHotPlug, ramHotUnPlug, nicHotPlug, nicHotUnPlug, + creationTime, lastModificationTime, state, location); + } + + @Override + public Builder self() { + return this; } } public static final class Request { public static CreatePayload.Builder creatingBuilder() { - return new CreatePayload.Builder(); + return new CreatePayload.Builder(); } public static UpdatePayload.Builder updatingBuilder() { - return new UpdatePayload.Builder(); + return new UpdatePayload.Builder(); } public static RollbackPayload.Builder rollbackBuilder() { - return new RollbackPayload.Builder(); + return new RollbackPayload.Builder(); } @AutoValue public abstract static class CreatePayload { - public abstract String storageId(); + public abstract String storageId(); - public abstract String description(); + public abstract String description(); - public abstract String name(); + public abstract String name(); - public static CreatePayload create(String storageId, String description, String name) { - return new AutoValue_Snapshot_Request_CreatePayload(storageId, description, name); - } + public static CreatePayload create(String storageId, String description, String name) { + return new AutoValue_Snapshot_Request_CreatePayload(storageId, description, name); + } - public static class Builder { + public static class Builder { - private String storageId; - private String description; - private String name; + private String storageId; + private String description; + private String name; - public Builder storageId(String storageId) { - this.storageId = storageId; - return this; - } + public Builder storageId(String storageId) { + this.storageId = storageId; + return this; + } - public Builder description(String description) { - this.description = description; - return this; - } + public Builder description(String description) { + this.description = description; + return this; + } - public Builder name(String name) { - this.name = name; - return this; - } + public Builder name(String name) { + this.name = name; + return this; + } - public CreatePayload build() { - return CreatePayload.create(storageId, description, name); - } - } + public CreatePayload build() { + return CreatePayload.create(storageId, description, name); + } + } } @AutoValue - public abstract static class UpdatePayload { - - public abstract String snapshotId(); - - public abstract String description(); - - public abstract String name(); - - public abstract boolean bootable(); - - @Nullable - public abstract OsType osType(); - - public abstract boolean cpuHotplug(); - - public abstract boolean cpuHotunplug(); - - public abstract boolean ramHotplug(); - - public abstract boolean ramHotunplug(); - - public abstract boolean nicHotplug(); - - public abstract boolean nicHotunplug(); - - public abstract boolean discVirtioHotplug(); - - public abstract boolean discVirtioHotunplug(); - - public static UpdatePayload create(String snapshotId, String description, String name, boolean bootable, OsType osType, boolean cpuHotplug, boolean cpuHotunplug, boolean ramHotplug, boolean ramHotunplug, boolean nicHotplug, boolean nicHotunplug, boolean discVirtioHotplug, boolean discVirtioHotunplug) { - return new AutoValue_Snapshot_Request_UpdatePayload(snapshotId, description, name, bootable, osType, cpuHotplug, cpuHotunplug, ramHotplug, ramHotunplug, nicHotplug, nicHotunplug, discVirtioHotplug, discVirtioHotunplug); - } - - public static class Builder { - - private String snapshotId; - - @Nullable - private String description; - - @Nullable - private String name; - - private boolean bootable; - - private OsType osType; - - private boolean cpuHotplug; - - private boolean cpuHotunplug; - - private boolean ramHotplug; + public abstract static class UpdatePayload implements HotPluggable { - private boolean ramHotunplug; + public abstract String snapshotId(); - private boolean nicHotplug; + public abstract String description(); - private boolean nicHotunplug; + public abstract String name(); - private boolean discVirtioHotplug; + public abstract boolean bootable(); - private boolean discVirtioHotunplug; + @Nullable + public abstract OsType osType(); - public Builder snapshotId(String snapshotId) { - this.snapshotId = snapshotId; - return this; - } + public static UpdatePayload create(String snapshotId, String description, String name, boolean bootable, + OsType osType, Boolean cpuHotplug, Boolean cpuHotunplug, Boolean ramHotplug, Boolean ramHotunplug, + Boolean nicHotplug, Boolean nicHotunplug, Boolean discVirtioHotplug, Boolean discVirtioHotunplug) { + return new AutoValue_Snapshot_Request_UpdatePayload( + cpuHotplug, cpuHotunplug, ramHotplug, ramHotunplug, nicHotplug, nicHotunplug, discVirtioHotplug, + discVirtioHotunplug, snapshotId, description, name, bootable, osType); + } - public Builder description(String description) { - this.description = description; - return this; - } + public static class Builder extends HotPluggable.Builder<Builder, UpdatePayload> { - public Builder name(String name) { - this.name = name; - return this; - } + private String snapshotId; - public Builder bootable(boolean bootable) { - this.bootable = bootable; - return this; - } + @Nullable + private String description; - public Builder osType(OsType osType) { - this.osType = osType; - return this; - } + @Nullable + private String name; - public Builder cpuHotplug(boolean cpuHotplug) { - this.cpuHotplug = cpuHotplug; - return this; - } + private boolean bootable; - public Builder cpuHotunplug(boolean cpuHotunplug) { - this.cpuHotunplug = cpuHotunplug; - return this; - } + private OsType osType; - public Builder ramHotplug(boolean ramHotplug) { - this.ramHotplug = ramHotplug; - return this; - } + public Builder snapshotId(String snapshotId) { + this.snapshotId = snapshotId; + return this; + } - public Builder ramHotunplug(boolean ramHotunplug) { - this.ramHotunplug = ramHotunplug; - return this; - } + public Builder description(String description) { + this.description = description; + return this; + } - public Builder nicHotplug(boolean nicHotplug) { - this.nicHotplug = nicHotplug; - return this; - } + public Builder name(String name) { + this.name = name; + return this; + } - public Builder nicHotunplug(boolean nicHotunplug) { - this.nicHotunplug = nicHotunplug; - return this; - } + public Builder bootable(boolean bootable) { + this.bootable = bootable; + return this; + } - public Builder discVirtioHotplug(boolean discVirtioHotplug) { - this.discVirtioHotplug = discVirtioHotplug; - return this; - } + public Builder osType(OsType osType) { + this.osType = osType; + return this; + } - public Builder discVirtioHotunplug(boolean discVirtioHotunplug) { - this.discVirtioHotunplug = discVirtioHotunplug; - return this; - } + @Override + public UpdatePayload build() { + return UpdatePayload.create(snapshotId, description, name, bootable, osType, cpuHotPlug, cpuHotUnPlug, + ramHotPlug, ramHotUnPlug, nicHotUnPlug, nicHotUnPlug, discVirtioHotPlug, discVirtioHotUnPlug); + } - public UpdatePayload build() { - return UpdatePayload.create(snapshotId, description, name, bootable, osType, cpuHotplug, cpuHotunplug, ramHotplug, ramHotunplug, nicHotplug, nicHotunplug, discVirtioHotplug, discVirtioHotunplug); - } - } + @Override + public Builder self() { + return this; + } + } } @AutoValue public abstract static class RollbackPayload { - public abstract String snapshotId(); + public abstract String snapshotId(); - public abstract String storageId(); + public abstract String storageId(); - public static RollbackPayload create(String snapshotId, String storageId) { - return new AutoValue_Snapshot_Request_RollbackPayload(snapshotId, storageId); - } + public static RollbackPayload create(String snapshotId, String storageId) { + return new AutoValue_Snapshot_Request_RollbackPayload(snapshotId, storageId); + } - public static class Builder { + public static class Builder { - private String snapshotId; + private String snapshotId; - private String storageId; + private String storageId; - public Builder snapshotId(String snapshotId) { - this.snapshotId = snapshotId; - return this; - } + public Builder snapshotId(String snapshotId) { + this.snapshotId = snapshotId; + return this; + } - public Builder storageId(String storageId) { - this.storageId = storageId; - return this; - } + public Builder storageId(String storageId) { + this.storageId = storageId; + return this; + } - public RollbackPayload build() { - return RollbackPayload.create(snapshotId, storageId); - } - } + public RollbackPayload build() { + return RollbackPayload.create(snapshotId, storageId); + } + } } } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Storage.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Storage.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Storage.java index 827217b..21664a5 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Storage.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/Storage.java @@ -28,6 +28,7 @@ import org.jclouds.javax.annotation.Nullable; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import static org.jclouds.profitbricks.util.Passwords.isValidPassword; @AutoValue public abstract class Storage { @@ -194,7 +195,8 @@ public abstract class Storage { public abstract String profitBricksImagePassword(); public static CreatePayload create(String dataCenterId, float size, String name, String mountImageId, String imagePassword) { - validateSize(size); + checkSize(size); + checkPassword(imagePassword); return new AutoValue_Storage_Request_CreatePayload(dataCenterId, size, name, mountImageId, imagePassword); } @@ -258,7 +260,7 @@ public abstract class Storage { public abstract String mountImageId(); public static UpdatePayload create(String id, Float size, String name, String mountImageId) { - validateSize(size); + checkSize(size); return new AutoValue_Storage_Request_UpdatePayload(id, size, name, mountImageId); } @@ -346,10 +348,15 @@ public abstract class Storage { } } - private static void validateSize(Float size) { + private static void checkSize(Float size) { if (size != null) checkArgument(size > 1, "Storage size must be > 1GB"); + } + private static void checkPassword(String password) { + if (password != null) + checkArgument(isValidPassword(password), "Password must be between 8 and 50 characters, " + + "only a-z, A-Z, 0-9 without characters i, I, l, o, O, w, W, y, Y, z, Z and 1, 0"); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/HotPluggable.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/HotPluggable.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/HotPluggable.java new file mode 100644 index 0000000..98faf41 --- /dev/null +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/HotPluggable.java @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.profitbricks.domain.internal; + +import org.jclouds.javax.annotation.Nullable; + +public interface HotPluggable { + + @Nullable + Boolean isCpuHotPlug(); + + @Nullable + Boolean isCpuHotUnPlug(); + + @Nullable + Boolean isRamHotPlug(); + + @Nullable + Boolean isRamHotUnPlug(); + + @Nullable + Boolean isNicHotPlug(); + + @Nullable + Boolean isNicHotUnPlug(); + + @Nullable + Boolean isDiscVirtioHotPlug(); + + @Nullable + Boolean isDiscVirtioHotUnPlug(); + + public abstract static class Builder<B extends Builder, D extends HotPluggable> { + + protected Boolean cpuHotPlug; + protected Boolean cpuHotUnPlug; + protected Boolean ramHotPlug; + protected Boolean ramHotUnPlug; + protected Boolean nicHotPlug; + protected Boolean nicHotUnPlug; + protected Boolean discVirtioHotPlug; + protected Boolean discVirtioHotUnPlug; + + public B isCpuHotPlug(Boolean cpuHotPlug) { + this.cpuHotPlug = cpuHotPlug; + return self(); + } + + public B isCpuHotUnPlug(Boolean cpuHotUnplug) { + this.cpuHotUnPlug = cpuHotUnplug; + return self(); + } + + public B isRamHotPlug(Boolean ramHotPlug) { + this.ramHotPlug = ramHotPlug; + return self(); + } + + public B isRamHotUnPlug(Boolean ramHotUnplug) { + this.ramHotUnPlug = ramHotUnplug; + return self(); + } + + public B isNicHotPlug(Boolean nicHotPlug) { + this.nicHotPlug = nicHotPlug; + return self(); + } + + public B isNicHotUnPlug(Boolean nicHotUnPlug) { + this.nicHotUnPlug = nicHotUnPlug; + return self(); + } + + public B isDiscVirtioHotPlug(Boolean discVirtioHotPlug) { + this.discVirtioHotPlug = discVirtioHotPlug; + return self(); + } + + public B isDiscVirtioHotUnPlug(Boolean discVirtioHotUnPlug) { + this.discVirtioHotUnPlug = discVirtioHotUnPlug; + return self(); + } + + public abstract B self(); + + public abstract D build(); + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/Provisionable.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/Provisionable.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/Provisionable.java new file mode 100644 index 0000000..b81dc3b --- /dev/null +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/Provisionable.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jclouds.profitbricks.domain.internal; + +import org.jclouds.profitbricks.domain.Location; +import org.jclouds.profitbricks.domain.OsType; + +public interface Provisionable extends HotPluggable { + + String id(); + + String name(); + + float size(); // MB + + Location location(); + + OsType osType(); + + public abstract static class Builder<B extends Builder, D extends Provisionable> extends HotPluggable.Builder<B, D> { + + protected String id; + protected String name; + protected float size; + protected Location location; + protected OsType osType; + + public B id(String id) { + this.id = id; + return self(); + } + + public B name(String name) { + this.name = name; + return self(); + } + + public B size(float size) { + this.size = size; + return self(); + } + + public B location(Location location) { + this.location = location; + return self(); + } + + public B osType(OsType osType) { + this.osType = osType; + return self(); + } + } +} http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/ServerCommonProperties.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/ServerCommonProperties.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/ServerCommonProperties.java index 7366fb1..382f2cf 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/ServerCommonProperties.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/domain/internal/ServerCommonProperties.java @@ -16,30 +16,10 @@ */ package org.jclouds.profitbricks.domain.internal; -import org.jclouds.javax.annotation.Nullable; - /** * An interface used as common data type for {@link org.jclouds.profitbricks.domain.Server.Builder} */ -public interface ServerCommonProperties { - - @Nullable - Boolean isCpuHotPlug(); - - @Nullable - Boolean isRamHotPlug(); - - @Nullable - Boolean isNicHotPlug(); - - @Nullable - Boolean isNicHotUnPlug(); - - @Nullable - Boolean isDiscVirtioHotPlug(); - - @Nullable - Boolean isDiscVirtioHotUnPlug(); +public interface ServerCommonProperties extends HotPluggable { String name(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/features/LoadBalancerApi.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/features/LoadBalancerApi.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/features/LoadBalancerApi.java index cbac54a..3d37183 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/features/LoadBalancerApi.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/features/LoadBalancerApi.java @@ -80,7 +80,7 @@ public interface LoadBalancerApi { @POST @Named("loadbalancer:delete") @Payload("<ws:deleteLoadBalancer><loadBalancerId>{id}</loadBalancerId></ws:deleteLoadBalancer>") - boolean deleteLoadbalancer(@PayloadParam("id") String id); + boolean deleteLoadBalancer(@PayloadParam("id") String id); @POST @Named("loadbalancer:update") http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/firewall/FirewallListResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/firewall/FirewallListResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/firewall/FirewallListResponseHandler.java index b654801..df0d3e0 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/firewall/FirewallListResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/firewall/FirewallListResponseHandler.java @@ -16,15 +16,15 @@ */ package org.jclouds.profitbricks.http.parser.firewall; -import com.google.common.collect.Lists; -import com.google.inject.Inject; - import java.util.List; import org.jclouds.profitbricks.domain.Firewall; import org.jclouds.profitbricks.http.parser.firewall.rule.FirewallRuleListResponseHandler; import org.xml.sax.SAXException; +import com.google.inject.Inject; +import com.google.common.collect.Lists; + public class FirewallListResponseHandler extends BaseFirewallResponseHandler<List<Firewall>> { private List<Firewall> firewalls; http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/ipblock/IpBlockListResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/ipblock/IpBlockListResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/ipblock/IpBlockListResponseHandler.java index 6a0b419..3ef85b3 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/ipblock/IpBlockListResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/ipblock/IpBlockListResponseHandler.java @@ -16,15 +16,15 @@ */ package org.jclouds.profitbricks.http.parser.ipblock; -import com.google.common.collect.Lists; -import com.google.inject.Inject; - import java.util.List; import org.jclouds.profitbricks.domain.IpBlock; import org.jclouds.profitbricks.http.parser.publicip.PublicIpListResponseHandler; import org.xml.sax.SAXException; +import com.google.inject.Inject; +import com.google.common.collect.Lists; + public class IpBlockListResponseHandler extends BaseIpBlockResponseHandler<List<IpBlock>> { private final List<IpBlock> ipBlocks; http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/BaseLoadBalancerResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/BaseLoadBalancerResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/BaseLoadBalancerResponseHandler.java index e093977..96256bb 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/BaseLoadBalancerResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/BaseLoadBalancerResponseHandler.java @@ -16,9 +16,12 @@ */ package org.jclouds.profitbricks.http.parser.loadbalancer; +import static com.google.common.base.Preconditions.checkNotNull; + import java.util.Date; -import org.jclouds.date.DateCodec; -import org.jclouds.date.DateCodecFactory; + +import org.jclouds.date.DateService; +import org.jclouds.profitbricks.domain.DataCenter; import org.jclouds.profitbricks.domain.LoadBalancer; import org.jclouds.profitbricks.domain.LoadBalancer.Algorithm; import org.jclouds.profitbricks.domain.ProvisioningState; @@ -34,23 +37,23 @@ public abstract class BaseLoadBalancerResponseHandler<T> extends BaseProfitBrick protected final FirewallListResponseHandler firewallListResponseHandler; protected LoadBalancer.Builder builder; - protected final DateCodec dateCodec; + protected DataCenter.Builder dataCenterBuilder; + + protected final DateService dateService; protected boolean useBalancedServerParser = false; protected boolean useFirewallParser = false; - protected BaseLoadBalancerResponseHandler(DateCodecFactory dateCodec, + protected BaseLoadBalancerResponseHandler(DateService dateService, ServerListResponseHandler balancedServerResponseHandler, FirewallListResponseHandler firewallResponseHandler) { - if (dateCodec == null) - throw new NullPointerException("DateCodecFactory cannot be null"); - if (balancedServerResponseHandler == null) - throw new NullPointerException("BalancedServerResponseHandler cannot be null"); - if (firewallResponseHandler == null) - throw new NullPointerException("FirewallListResponseHandler cannot be null"); + checkNotNull(dateService, "DateService cannot be null"); + checkNotNull(balancedServerResponseHandler, "BalancedServerResponseHandler cannot be null"); + checkNotNull(firewallResponseHandler, "FirewallListResponseHandler cannot be null"); - this.dateCodec = dateCodec.iso8601(); + this.dateService = dateService; this.builder = LoadBalancer.builder(); + this.dataCenterBuilder = DataCenter.builder(); this.balancedServerResponseHandler = balancedServerResponseHandler; this.firewallListResponseHandler = firewallResponseHandler; @@ -80,7 +83,7 @@ public abstract class BaseLoadBalancerResponseHandler<T> extends BaseProfitBrick } protected final Date textToIso8601Date() { - return dateCodec.toDate(textToStringValue()); + return dateService.iso8601DateOrSecondsDateParse(textToStringValue()); } @Override @@ -90,11 +93,11 @@ public abstract class BaseLoadBalancerResponseHandler<T> extends BaseProfitBrick else if ("loadBalancerName".equals(qName)) builder.name(textToStringValue()); else if ("loadBalancerAlgorithm".equals(qName)) - builder.loadBalancerAlgorithm(Algorithm.fromValue(textToStringValue())); + builder.algorithm(Algorithm.fromValue(textToStringValue())); else if ("dataCenterId".equals(qName)) - builder.dataCenterId(textToStringValue()); + dataCenterBuilder.id(textToStringValue()); else if ("dataCenterVersion".equals(qName)) - builder.dataCenterVersion(textToStringValue()); + dataCenterBuilder.version(textToIntValue()); else if ("internetAccess".equals(qName)) builder.internetAccess(textToBooleanValue()); else if ("ip".equals(qName)) http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerListResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerListResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerListResponseHandler.java index 50c1bea..9c60d33 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerListResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerListResponseHandler.java @@ -21,7 +21,8 @@ import com.google.inject.Inject; import java.util.List; -import org.jclouds.date.DateCodecFactory; +import org.jclouds.date.DateService; +import org.jclouds.profitbricks.domain.DataCenter; import org.jclouds.profitbricks.domain.LoadBalancer; import org.jclouds.profitbricks.http.parser.firewall.FirewallListResponseHandler; import org.jclouds.profitbricks.http.parser.server.ServerListResponseHandler; @@ -32,40 +33,46 @@ public class LoadBalancerListResponseHandler extends BaseLoadBalancerResponseHan private final List<LoadBalancer> loadBalancers; @Inject - LoadBalancerListResponseHandler(DateCodecFactory dateCodec, ServerListResponseHandler balancedServerResponseHandler, FirewallListResponseHandler firewallListResponseHandler) { - super(dateCodec, balancedServerResponseHandler, firewallListResponseHandler); + LoadBalancerListResponseHandler(DateService dateService, ServerListResponseHandler balancedServerResponseHandler, FirewallListResponseHandler firewallListResponseHandler) { + super(dateService, balancedServerResponseHandler, firewallListResponseHandler); this.loadBalancers = Lists.newArrayList(); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { - if (useBalancedServerParser) { + if (useBalancedServerParser) balancedServerResponseHandler.endElement(uri, localName, qName); - } else if (useFirewallParser) { + else if (useFirewallParser) firewallListResponseHandler.endElement(uri, localName, qName); - } else { + else { setPropertyOnEndTag(qName); if ("return".equals(qName)) { loadBalancers.add(builder + .dataCenter(dataCenterBuilder.build()) .firewalls(firewallListResponseHandler.getResult()) .balancedServers(balancedServerResponseHandler.getResult()) .build()); balancedServerResponseHandler.reset(); firewallListResponseHandler.reset(); + builder = LoadBalancer.builder(); } clearTextBuffer(); } - if ("firewall".equals(qName)) { + if ("firewall".equals(qName)) useFirewallParser = false; - } else if ("balancedServers".equals(qName)) { + else if ("balancedServers".equals(qName)) useBalancedServerParser = false; - } } @Override + public void reset() { + this.dataCenterBuilder = DataCenter.builder(); + } + + @Override public List<LoadBalancer> getResult() { return loadBalancers; } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerResponseHandler.java index 8c79512..4a17535 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/loadbalancer/LoadBalancerResponseHandler.java @@ -17,7 +17,8 @@ package org.jclouds.profitbricks.http.parser.loadbalancer; import com.google.inject.Inject; -import org.jclouds.date.DateCodecFactory; + +import org.jclouds.date.DateService; import org.jclouds.profitbricks.domain.LoadBalancer; import org.jclouds.profitbricks.http.parser.firewall.FirewallListResponseHandler; import org.jclouds.profitbricks.http.parser.server.ServerListResponseHandler; @@ -28,8 +29,9 @@ public class LoadBalancerResponseHandler extends BaseLoadBalancerResponseHandler private boolean done = false; @Inject - LoadBalancerResponseHandler(DateCodecFactory dateCodec, ServerListResponseHandler serverListResponseHandler, FirewallListResponseHandler firewallListResponseHandler) { - super(dateCodec, serverListResponseHandler, firewallListResponseHandler); + LoadBalancerResponseHandler(DateService dateService, ServerListResponseHandler serverListResponseHandler, + FirewallListResponseHandler firewallListResponseHandler) { + super(dateService, serverListResponseHandler, firewallListResponseHandler); } @Override @@ -45,8 +47,9 @@ public class LoadBalancerResponseHandler extends BaseLoadBalancerResponseHandler setPropertyOnEndTag(qName); if ("return".equals(qName)) { done = true; - builder.balancedServers(balancedServerResponseHandler.getResult()); - builder.firewalls(firewallListResponseHandler.getResult()); + builder.dataCenter(dataCenterBuilder.build()) + .balancedServers(balancedServerResponseHandler.getResult()) + .firewalls(firewallListResponseHandler.getResult()); } clearTextBuffer(); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/BaseServerResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/BaseServerResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/BaseServerResponseHandler.java index 60fb4bf..37aabd5 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/BaseServerResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/BaseServerResponseHandler.java @@ -16,10 +16,13 @@ */ package org.jclouds.profitbricks.http.parser.server; +import static com.google.common.base.Preconditions.checkNotNull; + import java.util.Date; -import org.jclouds.date.DateCodec; -import org.jclouds.date.DateCodecFactory; + +import org.jclouds.date.DateService; import org.jclouds.profitbricks.domain.AvailabilityZone; +import org.jclouds.profitbricks.domain.DataCenter; import org.jclouds.profitbricks.domain.OsType; import org.jclouds.profitbricks.domain.ProvisioningState; import org.jclouds.profitbricks.domain.Server; @@ -31,29 +34,28 @@ import org.xml.sax.SAXException; public abstract class BaseServerResponseHandler<T> extends BaseProfitBricksResponseHandler<T> { - protected StorageListResponseHandler storageListResponseHandler; - protected NicListResponseHandler nicListResponseHandler; + protected final StorageListResponseHandler storageListResponseHandler; + protected final NicListResponseHandler nicListResponseHandler; + protected DataCenter.Builder dataCenterBuilder; protected Server.DescribingBuilder builder; - protected final DateCodec dateCodec; + protected final DateService dateService; protected boolean useStorageParser = false; protected boolean useNicParser = false; - BaseServerResponseHandler(DateCodecFactory dateCodec, StorageListResponseHandler storageListResponseHandler, + BaseServerResponseHandler(DateService dateService, StorageListResponseHandler storageListResponseHandler, NicListResponseHandler nicListResponseHandler) { - if (dateCodec == null) - throw new NullPointerException("DateCodecFactory cannot be null"); - if (storageListResponseHandler == null) - throw new NullPointerException("StorageListResponseHandler cannot be null"); - if (nicListResponseHandler == null) - throw new NullPointerException("NicListResponseHandler cannot be null"); - - this.dateCodec = dateCodec.iso8601(); + checkNotNull(dateService, "DateService cannot be null"); + checkNotNull(storageListResponseHandler, "StorageListResponseHandler cannot be null"); + checkNotNull(nicListResponseHandler, "NicListResponseHandler cannot be null"); + + this.dateService = dateService; this.storageListResponseHandler = storageListResponseHandler; this.nicListResponseHandler = nicListResponseHandler; this.builder = Server.builder(); + this.dataCenterBuilder = DataCenter.builder(); } @Override @@ -82,12 +84,16 @@ public abstract class BaseServerResponseHandler<T> extends BaseProfitBricksRespo } protected final Date textToIso8601Date() { - return dateCodec.toDate(textToStringValue()); + return dateService.iso8601DateOrSecondsDateParse(textToStringValue()); } @Override protected void setPropertyOnEndTag(String qName) { - if ("serverId".equals(qName)) + if ("dataCenterId".equals(qName)) + dataCenterBuilder.id(textToStringValue()); + else if ("dataCenterVersion".equals(qName)) + dataCenterBuilder.version(textToIntValue()); + else if ("serverId".equals(qName)) builder.id(textToStringValue()); else if ("serverName".equals(qName)) builder.name(textToStringValue()); @@ -122,7 +128,7 @@ public abstract class BaseServerResponseHandler<T> extends BaseProfitBricksRespo else if ("discVirtioHotUnPlug".equals(qName)) builder.isDiscVirtioHotUnPlug(textToBooleanValue()); else if ("activate".equals(qName)) - builder.activate(textToBooleanValue()); + builder.loadBalanced(textToBooleanValue()); else if ("balancedNicId".equals(qName)) builder.balancedNicId(textToStringValue()); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerInfoResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerInfoResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerInfoResponseHandler.java index 68ee696..016e164 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerInfoResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerInfoResponseHandler.java @@ -18,7 +18,7 @@ package org.jclouds.profitbricks.http.parser.server; import com.google.inject.Inject; -import org.jclouds.date.DateCodecFactory; +import org.jclouds.date.DateService; import org.jclouds.profitbricks.domain.Server; import org.jclouds.profitbricks.http.parser.nic.NicListResponseHandler; import org.jclouds.profitbricks.http.parser.storage.StorageListResponseHandler; @@ -29,9 +29,9 @@ public class ServerInfoResponseHandler extends BaseServerResponseHandler<Server> private boolean done = false; @Inject - ServerInfoResponseHandler(DateCodecFactory dateCodec, StorageListResponseHandler storageListResponseHandler, + ServerInfoResponseHandler(DateService dateService, StorageListResponseHandler storageListResponseHandler, NicListResponseHandler nicListResponseHandler) { - super(dateCodec, storageListResponseHandler, nicListResponseHandler); + super(dateService, storageListResponseHandler, nicListResponseHandler); } @Override @@ -48,6 +48,7 @@ public class ServerInfoResponseHandler extends BaseServerResponseHandler<Server> if ("return".equals(qName)) { done = true; builder + .dataCenter(dataCenterBuilder.build()) .storages(storageListResponseHandler.getResult()) .nics(nicListResponseHandler.getResult()); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerListResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerListResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerListResponseHandler.java index 362e378..24a5daa 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerListResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/server/ServerListResponseHandler.java @@ -21,7 +21,8 @@ import com.google.inject.Inject; import java.util.List; -import org.jclouds.date.DateCodecFactory; +import org.jclouds.date.DateService; +import org.jclouds.profitbricks.domain.DataCenter; import org.jclouds.profitbricks.domain.Server; import org.jclouds.profitbricks.http.parser.nic.NicListResponseHandler; import org.jclouds.profitbricks.http.parser.storage.StorageListResponseHandler; @@ -32,9 +33,9 @@ public class ServerListResponseHandler extends BaseServerResponseHandler<List<Se private List<Server> servers; @Inject - ServerListResponseHandler(DateCodecFactory dateCodec, StorageListResponseHandler storageListResponseHandler, + ServerListResponseHandler(DateService dateService, StorageListResponseHandler storageListResponseHandler, NicListResponseHandler nicListResponseHandler) { - super(dateCodec, storageListResponseHandler, nicListResponseHandler); + super(dateService, storageListResponseHandler, nicListResponseHandler); this.servers = Lists.newArrayList(); } @@ -48,10 +49,18 @@ public class ServerListResponseHandler extends BaseServerResponseHandler<List<Se else { setPropertyOnEndTag(qName); if ("return".equals(qName) || "servers".equals(qName) || "balancedServers".equals(qName)) { - servers.add(builder - .storages(storageListResponseHandler.getResult()) - .nics(nicListResponseHandler.getResult()) - .build()); + Server.DescribingBuilder sdb = null; + try { + sdb = builder + .storages(storageListResponseHandler.getResult()) + .nics(nicListResponseHandler.getResult()); + servers.add(sdb + // For LoadBalancer's case, there's no DataCenter (may throw NPE on #build()). + .dataCenter(dataCenterBuilder.build()) + .build()); + } catch (NullPointerException ex) { + servers.add(sdb.build()); + } storageListResponseHandler.reset(); nicListResponseHandler.reset(); @@ -69,6 +78,7 @@ public class ServerListResponseHandler extends BaseServerResponseHandler<List<Se @Override public void reset() { this.servers = Lists.newArrayList(); + this.dataCenterBuilder = DataCenter.builder(); } @Override http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/BaseSnapshotResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/BaseSnapshotResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/BaseSnapshotResponseHandler.java index 0fa7fd6..aa27199 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/BaseSnapshotResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/BaseSnapshotResponseHandler.java @@ -17,8 +17,8 @@ package org.jclouds.profitbricks.http.parser.snapshot; import java.util.Date; -import org.jclouds.date.DateCodec; -import org.jclouds.date.DateCodecFactory; + +import org.jclouds.date.DateService; import org.jclouds.profitbricks.domain.Location; import org.jclouds.profitbricks.domain.OsType; import org.jclouds.profitbricks.domain.ProvisioningState; @@ -29,55 +29,55 @@ public abstract class BaseSnapshotResponseHandler<T> extends BaseProfitBricksRes protected Snapshot.Builder builder; - protected final DateCodec dateCodec; + protected final DateService dateService; - BaseSnapshotResponseHandler(DateCodecFactory dateCodec) { - this.dateCodec = dateCodec.iso8601(); + BaseSnapshotResponseHandler(DateService dateService) { + this.dateService = dateService; this.builder = Snapshot.builder(); } protected final Date textToIso8601Date() { - return dateCodec.toDate(textToStringValue()); + return dateService.iso8601DateOrSecondsDateParse(textToStringValue()); } @Override protected void setPropertyOnEndTag(String qName) { if ("snapshotId".equals(qName)) - builder.id(textToStringValue()); + builder.id(textToStringValue()); else if ("snapshotName".equals(qName)) - builder.name(textToStringValue()); + builder.name(textToStringValue()); else if ("snapshotSize".equals(qName)) - builder.size(textToFloatValue()); + builder.size(textToFloatValue()); else if ("osType".equals(qName)) - builder.osType(OsType.fromValue(textToStringValue())); + builder.osType(OsType.fromValue(textToStringValue())); else if ("location".equals(qName)) - builder.location(Location.fromId(textToStringValue())); + builder.location(Location.fromId(textToStringValue())); else if ("description".equals(qName)) - builder.description(qName); + builder.description(qName); else if ("bootable".equals(qName)) - builder.bootable(textToBooleanValue()); + builder.isBootable(textToBooleanValue()); else if ("cpuHotPlug".equals(qName)) - builder.cpuHotPlug(textToBooleanValue()); + builder.isCpuHotPlug(textToBooleanValue()); else if ("cpuHotUnPlug".equals(qName)) - builder.cpuHotUnPlug(textToBooleanValue()); + builder.isCpuHotUnPlug(textToBooleanValue()); else if ("ramHotPlug".equals(qName)) - builder.ramHotPlug(textToBooleanValue()); + builder.isRamHotPlug(textToBooleanValue()); else if ("ramHotUnPlug".equals(qName)) - builder.ramHotUnPlug(textToBooleanValue()); + builder.isRamHotUnPlug(textToBooleanValue()); else if ("nicHotPlug".equals(qName)) - builder.nicHotPlug(textToBooleanValue()); + builder.isNicHotPlug(textToBooleanValue()); else if ("nicHotUnPlug".equals(qName)) - builder.nicHotUnPlug(textToBooleanValue()); + builder.isNicHotUnPlug(textToBooleanValue()); else if ("discVirtioHotPlug".equals(qName)) - builder.discVirtioHotPlug(textToBooleanValue()); + builder.isDiscVirtioHotPlug(textToBooleanValue()); else if ("discVirtioHotUnPlug".equals(qName)) - builder.discVirtioHotUnPlug(textToBooleanValue()); + builder.isDiscVirtioHotUnPlug(textToBooleanValue()); else if ("provisioningState".equals(qName)) - builder.state(ProvisioningState.fromValue(textToStringValue())); + builder.state(ProvisioningState.fromValue(textToStringValue())); else if ("creationTimestamp".equals(qName)) - builder.creationTime(textToIso8601Date()); + builder.creationTime(textToIso8601Date()); else if ("modificationTimestamp".equals(qName)) - builder.lastModificationTime(textToIso8601Date()); + builder.lastModificationTime(textToIso8601Date()); } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotListResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotListResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotListResponseHandler.java index ae7a355..27e8583 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotListResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotListResponseHandler.java @@ -18,19 +18,21 @@ package org.jclouds.profitbricks.http.parser.snapshot; import com.google.common.collect.Lists; import com.google.inject.Inject; + import org.jclouds.profitbricks.domain.Snapshot; import org.xml.sax.SAXException; import java.util.List; -import org.jclouds.date.DateCodecFactory; + +import org.jclouds.date.DateService; public class SnapshotListResponseHandler extends BaseSnapshotResponseHandler<List<Snapshot>> { private final List<Snapshot> snapshots; @Inject - SnapshotListResponseHandler(DateCodecFactory dateCodec) { - super(dateCodec); + SnapshotListResponseHandler(DateService dateService) { + super(dateService); this.snapshots = Lists.newArrayList(); } @@ -38,8 +40,8 @@ public class SnapshotListResponseHandler extends BaseSnapshotResponseHandler<Lis public void endElement(String uri, String localName, String qName) throws SAXException { setPropertyOnEndTag(qName); if ("return".equals(qName)) { - snapshots.add(builder.build()); - builder = Snapshot.builder(); + snapshots.add(builder.build()); + builder = Snapshot.builder(); } clearTextBuffer(); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/ed247e7d/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotResponseHandler.java ---------------------------------------------------------------------- diff --git a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotResponseHandler.java b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotResponseHandler.java index 84316f8..c57e385 100644 --- a/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotResponseHandler.java +++ b/providers/profitbricks/src/main/java/org/jclouds/profitbricks/http/parser/snapshot/SnapshotResponseHandler.java @@ -17,7 +17,8 @@ package org.jclouds.profitbricks.http.parser.snapshot; import com.google.inject.Inject; -import org.jclouds.date.DateCodecFactory; + +import org.jclouds.date.DateService; import org.jclouds.profitbricks.domain.Snapshot; import org.xml.sax.SAXException; @@ -26,17 +27,17 @@ public class SnapshotResponseHandler extends BaseSnapshotResponseHandler<Snapsho private boolean done = false; @Inject - SnapshotResponseHandler(DateCodecFactory dateCodec) { - super(dateCodec); + SnapshotResponseHandler(DateService dateService) { + super(dateService); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { if (done) - return; + return; setPropertyOnEndTag(qName); if ("return".equals(qName)) - done = true; + done = true; clearTextBuffer(); }
