diff --git a/build/build-cloud.xml b/build/build-cloud.xml
index 85550a3dd3f..9c0202bf89d 100755
--- a/build/build-cloud.xml
+++ b/build/build-cloud.xml
@@ -317,7 +317,7 @@
-
+
diff --git a/build/package.xml b/build/package.xml
index 31aee189c73..5bc293f05e5 100755
--- a/build/package.xml
+++ b/build/package.xml
@@ -57,7 +57,7 @@
-
+
@@ -169,7 +169,7 @@
-
+
diff --git a/core/src/com/cloud/agent/api/ModifyStoragePoolCommand.java b/core/src/com/cloud/agent/api/ModifyStoragePoolCommand.java
index 5941b1b5471..5d8ca2ae545 100644
--- a/core/src/com/cloud/agent/api/ModifyStoragePoolCommand.java
+++ b/core/src/com/cloud/agent/api/ModifyStoragePoolCommand.java
@@ -38,7 +38,7 @@ public class ModifyStoragePoolCommand extends Command {
public ModifyStoragePoolCommand(boolean add, StoragePoolVO pool, String localPath) {
this.add = add;
- this.pool = pool;
+ this.pool = new StoragePoolVO(pool);
this.localPath = localPath;
}
diff --git a/core/src/com/cloud/agent/api/StartRouterCommand.java b/core/src/com/cloud/agent/api/StartRouterCommand.java
index c4d3fed8325..3afc6b4e0ec 100755
--- a/core/src/com/cloud/agent/api/StartRouterCommand.java
+++ b/core/src/com/cloud/agent/api/StartRouterCommand.java
@@ -21,8 +21,8 @@ import java.util.List;
import com.cloud.storage.VolumeVO;
import com.cloud.vm.DomainRouter;
-import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.DomainRouter.Role;
+import com.cloud.vm.DomainRouterVO;
public class StartRouterCommand extends AbstractStartCommand {
@@ -46,7 +46,7 @@ public class StartRouterCommand extends AbstractStartCommand {
String routerName, String[] storageIps, List vols, boolean mirroredVols,
String guestOSDescription, String mgmtHost) {
super(routerName, storageIps, vols, mirroredVols);
- this.router = router;
+ this.router = new DomainRouterVO(router);
this.networkRateMbps = networkRateMbps;
this.networkRateMulticastMbps = networkRateMulticastMbps;
this.guestOSDescription = guestOSDescription;
diff --git a/core/src/com/cloud/agent/api/StartSecStorageVmCommand.java b/core/src/com/cloud/agent/api/StartSecStorageVmCommand.java
index f356b0d60d2..089281add4a 100644
--- a/core/src/com/cloud/agent/api/StartSecStorageVmCommand.java
+++ b/core/src/com/cloud/agent/api/StartSecStorageVmCommand.java
@@ -38,7 +38,7 @@ public class StartSecStorageVmCommand extends AbstractStartCommand {
protected StartSecStorageVmCommand() {
}
-
+
public StartSecStorageVmCommand(int networkRateMbps, int networkRateMulticastMbps, int proxyCmdPort,
SecondaryStorageVmVO secStorageVm, String vmName, String storageHost,
List vols, String mgmtHost, int mgmtPort, boolean sslCopy, String guestOSDescription) {
@@ -46,7 +46,7 @@ public class StartSecStorageVmCommand extends AbstractStartCommand {
this.networkRateMbps = networkRateMbps;
this.networkRateMulticastMbps = networkRateMulticastMbps;
this.proxyCmdPort = proxyCmdPort;
- this.secStorageVm = secStorageVm;
+ this.secStorageVm = new SecondaryStorageVmVO(secStorageVm);
this.mgmt_host = mgmtHost;
this.mgmt_port = mgmtPort;
diff --git a/core/src/com/cloud/agent/transport/ArrayTypeAdaptor.java b/core/src/com/cloud/agent/transport/ArrayTypeAdaptor.java
index fdabc6fb666..40c6bf8bb25 100755
--- a/core/src/com/cloud/agent/transport/ArrayTypeAdaptor.java
+++ b/core/src/com/cloud/agent/transport/ArrayTypeAdaptor.java
@@ -22,10 +22,9 @@ import java.lang.reflect.Array;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Iterator;
-import java.util.List;
+import java.util.Map;
import com.cloud.agent.api.Command;
-import com.cloud.storage.VolumeVO;
import com.cloud.utils.exception.CloudRuntimeException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -33,19 +32,18 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
-import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
-import com.google.gson.reflect.TypeToken;
public class ArrayTypeAdaptor implements JsonDeserializer, JsonSerializer {
static final GsonBuilder s_gBuilder;
static {
- s_gBuilder = new GsonBuilder();
- final Type listType = new TypeToken>() {}.getType();
- s_gBuilder.registerTypeAdapter(listType, new VolListTypeAdaptor());
+ s_gBuilder = Request.initBuilder();
+// final Type listType = new TypeToken>() {}.getType();
+// s_gBuilder.registerTypeAdapter(listType, new VolListTypeAdaptor());
}
@@ -53,35 +51,39 @@ public class ArrayTypeAdaptor implements JsonDeserializer, JsonSerialize
public ArrayTypeAdaptor() {
}
+ @Override
public JsonElement serialize(T[] src, Type typeOfSrc, JsonSerializationContext context) {
Gson gson = s_gBuilder.create();
JsonArray array = new JsonArray();
for (T cmd : src) {
- String result = gson.toJson(cmd);
- array.add(new JsonPrimitive(cmd.getClass().getName().substring(s_pkg.length())));
- array.add(new JsonPrimitive(result));
+ JsonObject obj = new JsonObject();
+ obj.add(cmd.getClass().getName().substring(s_pkg.length()), gson.toJsonTree(cmd));
+ array.add(obj);
}
return array;
}
+ @Override
@SuppressWarnings("unchecked")
public T[] deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
JsonArray array = json.getAsJsonArray();
Iterator it = array.iterator();
ArrayList cmds = new ArrayList();
- Gson gson = Request.initBuilder().create();
+ Gson gson = s_gBuilder.create();
while (it.hasNext()) {
- JsonElement element = it.next();
- String name = s_pkg + element.getAsString();
+ JsonObject element = (JsonObject)it.next();
+ Map.Entry entry = element.entrySet().iterator().next();
+
+ String name = s_pkg + entry.getKey();
Class> clazz;
try {
clazz = Class.forName(name);
} catch (ClassNotFoundException e) {
throw new CloudRuntimeException("can't find " + name);
}
- T cmd = (T)gson.fromJson(it.next().getAsString(), clazz);
+ T cmd = (T)gson.fromJson(entry.getValue(), clazz);
cmds.add(cmd);
}
Class> type = ((Class>)typeOfT).getComponentType();
diff --git a/core/src/com/cloud/storage/StoragePoolVO.java b/core/src/com/cloud/storage/StoragePoolVO.java
index f15be056f97..a2b9cf3c640 100644
--- a/core/src/com/cloud/storage/StoragePoolVO.java
+++ b/core/src/com/cloud/storage/StoragePoolVO.java
@@ -161,6 +161,7 @@ public class StoragePoolVO implements StoragePool {
private Long clusterId;
+ @Override
public Long getClusterId() {
return clusterId;
}
@@ -195,6 +196,10 @@ public class StoragePoolVO implements StoragePool {
this.setStatus(Status.Up);
}
+ public StoragePoolVO(StoragePoolVO that) {
+ this(that.id, that.name, that.uuid, that.poolType, that.dataCenterId, that.podId, that.availableBytes, that.capacityBytes, that.hostAddress, that.port, that.path);
+ }
+
public StoragePoolVO(StoragePoolType type, String hostAddress, int port, String path) {
this.poolType = type;
this.hostAddress = hostAddress;
@@ -224,6 +229,7 @@ public class StoragePoolVO implements StoragePool {
this.uuid = uuid;
}
+ @Override
public int getPort() {
return port;
}
@@ -257,7 +263,8 @@ public class StoragePoolVO implements StoragePool {
return null;
}
- public Long getPodId() {
+ @Override
+ public Long getPodId() {
return podId;
}
diff --git a/core/src/com/cloud/vm/DomainRouterVO.java b/core/src/com/cloud/vm/DomainRouterVO.java
index a191836dbe9..34e173dbdab 100755
--- a/core/src/com/cloud/vm/DomainRouterVO.java
+++ b/core/src/com/cloud/vm/DomainRouterVO.java
@@ -90,6 +90,11 @@ public class DomainRouterVO extends VMInstanceVO implements DomainRouter {
@Enumerated(EnumType.STRING)
private Role role = Role.DHCP_FIREWALL_LB_PASSWD_USERDATA;
+ public DomainRouterVO(DomainRouterVO that) {
+ this(that.id, that.serviceOfferingId, that.instanceName, that.privateMacAddress, that.privateIpAddress, that.privateNetmask, that.templateId, that.guestOSId, that.guestMacAddress, that.guestIpAddress, that.guestNetmask, that.accountId, that.domainId, that.publicMacAddress, that.publicIpAddress, that.publicNetmask, that.vlanDbId, that.vlanId, that.podId, that.dataCenterId, that.ramSize, that.gateway, that.domain, that.dns1, that.dns2);
+ this.vnet = that.vnet;
+ }
+
public DomainRouterVO(long id,
long serviceOfferingId,
String name,
diff --git a/core/src/com/cloud/vm/SecondaryStorageVmVO.java b/core/src/com/cloud/vm/SecondaryStorageVmVO.java
index a97f690638e..5afb42c8633 100644
--- a/core/src/com/cloud/vm/SecondaryStorageVmVO.java
+++ b/core/src/com/cloud/vm/SecondaryStorageVmVO.java
@@ -26,8 +26,6 @@ import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
-
-import com.cloud.vm.VirtualMachine.Type;
/**
* SecondaryStorageVmVO domain object
@@ -87,7 +85,9 @@ public class SecondaryStorageVmVO extends VMInstanceVO implements SecondaryStora
@Temporal(TemporalType.TIMESTAMP)
@Column(name="last_update", updatable=true, nullable=true)
- private Date lastUpdateTime;
+ private Date lastUpdateTime;
+
+
public SecondaryStorageVmVO(long id, long serviceOfferingId, String name, long templateId, long guestOSId, long dataCenterId,
long domainId, long accountId) {
@@ -140,6 +140,10 @@ public class SecondaryStorageVmVO extends VMInstanceVO implements SecondaryStora
this.ramSize = ramSize;
this.setGuid(guid);
this.nfsShare = nfsShare;
+ }
+
+ public SecondaryStorageVmVO(SecondaryStorageVmVO that) {
+ this(that.id, that.serviceOfferingId, that.instanceName, that.guestMacAddress, that.guestIpAddress, that.guestNetmask, that.privateMacAddress, that.privateIpAddress, that.privateNetmask, that.templateId, that.guestOSId, that.publicMacAddress, that.publicIpAddress, that.publicNetmask, that.vlanDbId, that.vlanId, that.podId, that.dataCenterId, that.domainId, that.accountId, that.gateway, that.hostId, that.dns1, that.dns2, that.domain, that.ramSize, that.guid, that.nfsShare);
}
protected SecondaryStorageVmVO() {
diff --git a/core/src/com/cloud/vm/VMInstanceVO.java b/core/src/com/cloud/vm/VMInstanceVO.java
index 07e8e1c16a7..8bfa0906c36 100644
--- a/core/src/com/cloud/vm/VMInstanceVO.java
+++ b/core/src/com/cloud/vm/VMInstanceVO.java
@@ -47,20 +47,20 @@ public class VMInstanceVO implements VirtualMachine, FiniteStateObject