You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/06/08 05:26:38 UTC
[1/3] Fixed the start
Updated Branches:
refs/heads/vmsync 90df846ad -> ebbd4008a
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
index 660d963..9031966 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -729,7 +729,7 @@ public class VirtualMachineMO extends BaseMO {
else if(prop.getName().startsWith("value[")) {
CustomFieldStringValue val = (CustomFieldStringValue)prop.getVal();
if(val != null)
- gcTagValue = val.getValue();
+ gcTagValue = val.getPresetParams();
}
}
@@ -852,7 +852,7 @@ public class VirtualMachineMO extends BaseMO {
if(values != null) {
for(OptionValue option : values) {
if(option.getKey().equals("RemoteDisplay.vnc.port")) {
- String value = (String)option.getValue();
+ String value = (String)option.getPresetParams();
if(value != null) {
return new Pair<String, Integer>(summary.getHostIp(), Integer.parseInt(value));
}
@@ -872,9 +872,9 @@ public class VirtualMachineMO extends BaseMO {
String rdmDeviceName, int sizeInMb, ManagedObjectReference morDs, int controllerKey) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - createDisk(). target MOR: " + _mor.getValue() + ", vmdkDatastorePath: " + vmdkDatastorePath
+ s_logger.trace("vCenter API trace - createDisk(). target MOR: " + _mor.getPresetParams() + ", vmdkDatastorePath: " + vmdkDatastorePath
+ ", sizeInMb: " + sizeInMb + ", diskType: " + diskType + ", diskMode: " + diskMode + ", rdmDeviceName: " + rdmDeviceName
- + ", datastore: " + morDs.getValue() + ", controllerKey: " + controllerKey);
+ + ", datastore: " + morDs.getPresetParams() + ", controllerKey: " + controllerKey);
assert(vmdkDatastorePath != null);
assert(morDs != null);
@@ -958,8 +958,8 @@ public class VirtualMachineMO extends BaseMO {
public void attachDisk(String[] vmdkDatastorePathChain, ManagedObjectReference morDs) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - attachDisk(). target MOR: " + _mor.getValue() + ", vmdkDatastorePath: "
- + new Gson().toJson(vmdkDatastorePathChain) + ", datastore: " + morDs.getValue());
+ s_logger.trace("vCenter API trace - attachDisk(). target MOR: " + _mor.getPresetParams() + ", vmdkDatastorePath: "
+ + new Gson().toJson(vmdkDatastorePathChain) + ", datastore: " + morDs.getPresetParams());
VirtualDevice newDisk = VmwareHelper.prepareDiskDevice(this, getScsiDeviceControllerKey(),
vmdkDatastorePathChain, morDs, -1, 1);
@@ -991,7 +991,7 @@ public class VirtualMachineMO extends BaseMO {
public void attachDisk(Pair<String, ManagedObjectReference>[] vmdkDatastorePathChain, int controllerKey) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - attachDisk(). target MOR: " + _mor.getValue() + ", vmdkDatastorePath: "
+ s_logger.trace("vCenter API trace - attachDisk(). target MOR: " + _mor.getPresetParams() + ", vmdkDatastorePath: "
+ new Gson().toJson(vmdkDatastorePathChain));
VirtualDevice newDisk = VmwareHelper.prepareDiskDevice(this, controllerKey,
@@ -1025,7 +1025,7 @@ public class VirtualMachineMO extends BaseMO {
public List<Pair<String, ManagedObjectReference>> detachDisk(String vmdkDatastorePath, boolean deleteBackingFile) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - detachDisk(). target MOR: " + _mor.getValue() + ", vmdkDatastorePath: "
+ s_logger.trace("vCenter API trace - detachDisk(). target MOR: " + _mor.getPresetParams() + ", vmdkDatastorePath: "
+ vmdkDatastorePath + ", deleteBacking: " + deleteBackingFile);
// Note: if VM has been taken snapshot, original backing file will be renamed, therefore, when we try to find the matching
@@ -1091,7 +1091,7 @@ public class VirtualMachineMO extends BaseMO {
public void detachAllDisks() throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - detachAllDisk(). target MOR: " + _mor.getValue());
+ s_logger.trace("vCenter API trace - detachAllDisk(). target MOR: " + _mor.getPresetParams());
VirtualDisk[] disks = getAllDiskDevice();
if(disks.length > 0) {
@@ -1126,8 +1126,8 @@ public class VirtualMachineMO extends BaseMO {
boolean connect, boolean connectAtBoot) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - detachIso(). target MOR: " + _mor.getValue() + ", isoDatastorePath: "
- + isoDatastorePath + ", datastore: " + morDs.getValue() + ", connect: " + connect + ", connectAtBoot: " + connectAtBoot);
+ s_logger.trace("vCenter API trace - detachIso(). target MOR: " + _mor.getPresetParams() + ", isoDatastorePath: "
+ + isoDatastorePath + ", datastore: " + morDs.getPresetParams() + ", connect: " + connect + ", connectAtBoot: " + connectAtBoot);
assert(isoDatastorePath != null);
assert(morDs != null);
@@ -1185,7 +1185,7 @@ public class VirtualMachineMO extends BaseMO {
public void detachIso(String isoDatastorePath) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - detachIso(). target MOR: " + _mor.getValue() + ", isoDatastorePath: "
+ s_logger.trace("vCenter API trace - detachIso(). target MOR: " + _mor.getPresetParams() + ", isoDatastorePath: "
+ isoDatastorePath);
VirtualDevice device = getIsoDevice();
@@ -1226,7 +1226,7 @@ public class VirtualMachineMO extends BaseMO {
public Pair<VmdkFileDescriptor, byte[]> getVmdkFileInfo(String vmdkDatastorePath) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - getVmdkFileInfo(). target MOR: " + _mor.getValue() + ", vmdkDatastorePath: "
+ s_logger.trace("vCenter API trace - getVmdkFileInfo(). target MOR: " + _mor.getPresetParams() + ", vmdkDatastorePath: "
+ vmdkDatastorePath);
Pair<DatacenterMO, String> dcPair = getOwnerDatacenter();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
index 4a6a135..a2fc1f3 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
@@ -145,7 +145,7 @@ public class VmwareHelper {
final VirtualDeviceConnectInfo connectInfo = new VirtualDeviceConnectInfo();
dvPortConnection.setSwitchUuid(dvSwitchUuid);
- dvPortConnection.setPortgroupKey(morNetwork.getValue());
+ dvPortConnection.setPortgroupKey(morNetwork.getPresetParams());
dvPortBacking.setPort(dvPortConnection);
nic.setBacking(dvPortBacking);
nic.setKey(30);
[2/3] git commit: updated refs/heads/vmsync to ebbd400
Posted by ah...@apache.org.
Fixed the start
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5e6d2cf5
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5e6d2cf5
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5e6d2cf5
Branch: refs/heads/vmsync
Commit: 5e6d2cf559d988a59997f9341fee8ef39f0a08b5
Parents: 90df846
Author: Alex Huang <al...@gmail.com>
Authored: Fri Jun 7 07:53:36 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Fri Jun 7 10:11:57 2013 -0700
----------------------------------------------------------------------
api/src/com/cloud/deploy/DataCenterDeployment.java | 54 +++-
api/src/com/cloud/deploy/DeploymentPlan.java | 25 +-
api/src/com/cloud/deploy/DeploymentPlanner.java | 25 ++
.../framework/jobs/impl/AsyncJobMonitor.java | 3 +-
.../hypervisor/vmware/VmwareServerDiscoverer.java | 4 +-
.../vmware/manager/VmwareManagerImpl.java | 2 +-
.../vmware/manager/VmwareStorageManagerImpl.java | 2 +-
.../hypervisor/vmware/resource/VmwareResource.java | 10 +-
.../cloud/network/resource/F5BigIpResource.java | 4 +-
pom.xml | 2 +-
.../com/cloud/async/AsyncJobExecutionContext.java | 10 +-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 258 +++++++--------
server/src/com/cloud/vm/VmWorkJobDispatcher.java | 2 +-
.../cloud/async/MockVirtualMachineManagerImpl.java | 15 -
.../com/cloud/utils/db/GenericSearchBuilder.java | 90 +++++-
utils/src/com/cloud/utils/db/SearchCriteria.java | 6 +
.../src/com/cloud/hypervisor/vmware/mo/BaseMO.java | 2 +-
.../com/cloud/hypervisor/vmware/mo/ClusterMO.java | 40 ++--
.../cloud/hypervisor/vmware/mo/DatacenterMO.java | 6 +-
.../vmware/mo/HostDatastoreBrowserMO.java | 6 +-
.../vmware/mo/HostDatastoreSystemMO.java | 2 +-
.../src/com/cloud/hypervisor/vmware/mo/HostMO.java | 28 +-
.../hypervisor/vmware/mo/HypervisorHostHelper.java | 8 +-
.../hypervisor/vmware/mo/VirtualMachineMO.java | 26 +-
.../cloud/hypervisor/vmware/util/VmwareHelper.java | 2 +-
25 files changed, 388 insertions(+), 244 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/api/src/com/cloud/deploy/DataCenterDeployment.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/deploy/DataCenterDeployment.java b/api/src/com/cloud/deploy/DataCenterDeployment.java
index 92bb9b9..d709ce7 100644
--- a/api/src/com/cloud/deploy/DataCenterDeployment.java
+++ b/api/src/com/cloud/deploy/DataCenterDeployment.java
@@ -27,11 +27,15 @@ public class DataCenterDeployment implements DeploymentPlan {
Long _hostId;
Long _physicalNetworkId;
ExcludeList _avoids = null;
- boolean _recreateDisks;
ReservationContext _context;
- public DataCenterDeployment() {
- _dcId = 0;
+ @SuppressWarnings("unused")
+ private DataCenterDeployment() { // Hide this constructor
+ }
+
+ public DataCenterDeployment(DeploymentPlan that) {
+ this(that.getDataCenterId(), that.getPodId(), that.getClusterId(), that.getHostId(), that.getPoolId(), that.getPhysicalNetworkId(), that.getReservationContext());
+ _avoids = new ExcludeList(that.getAvoids());
}
public DataCenterDeployment(long dataCenterId) {
@@ -77,6 +81,22 @@ public class DataCenterDeployment implements DeploymentPlan {
return _poolId;
}
+ public void setPoolId(Long poolId) {
+ _poolId = poolId;
+ }
+
+ public void setClusterId(Long clusterId) {
+ _clusterId = clusterId;
+ }
+
+ public void setHostId(Long hostId) {
+ _hostId = hostId;
+ }
+
+ public void setPodId(Long podId) {
+ _podId = podId;
+ }
+
@Override
public ExcludeList getAvoids() {
return _avoids;
@@ -97,4 +117,32 @@ public class DataCenterDeployment implements DeploymentPlan {
return _context;
}
+ @Override
+ public String toString() {
+ StringBuilder str = new StringBuilder("DeploymentPlan[");
+ if (_hostId != null) {
+ str.append("Host=").append(_hostId);
+ } else if (_clusterId != null) {
+ str.append("Cluster=").append(_clusterId);
+ } else if (_podId != null) {
+ str.append("Pod=").append(_podId);
+ } else {
+ str.append("Zone=").append(_dcId);
+ }
+
+ if (_poolId != null) {
+ str.append(", Storage=").append(_poolId);
+ }
+
+ if (_physicalNetworkId != null) {
+ str.append(", Physical Network = ").append(_physicalNetworkId);
+ }
+
+ if (_avoids != null) {
+ str.append(_avoids.toString());
+ }
+
+ return str.append("]").toString();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/api/src/com/cloud/deploy/DeploymentPlan.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/deploy/DeploymentPlan.java b/api/src/com/cloud/deploy/DeploymentPlan.java
index 456d5b8..4f619a8 100644
--- a/api/src/com/cloud/deploy/DeploymentPlan.java
+++ b/api/src/com/cloud/deploy/DeploymentPlan.java
@@ -20,47 +20,44 @@ import com.cloud.deploy.DeploymentPlanner.ExcludeList;
import com.cloud.vm.ReservationContext;
/**
+ * DeploymentPlan gives explicit direction on where to deploy a virtual machine.
+ *
*/
public interface DeploymentPlan {
- // TODO: This interface is not fully developed. It really
- // number of parameters to be specified.
-
/**
* @return data center the VM should deploy in.
*/
- public long getDataCenterId();
+ long getDataCenterId();
/**
* @return pod the Vm should deploy in; null if no preference.
*/
- public Long getPodId();
+ Long getPodId();
/**
* @return cluster the VM should deploy in; null if no preference.
*/
- public Long getClusterId();
+ Long getClusterId();
/**
* @return host the VM should deploy in; null if no preference.
*/
- public Long getHostId();
+ Long getHostId();
/**
* @return pool the VM should be created in; null if no preference.
*/
- public Long getPoolId();
+ Long getPoolId();
/**
- * @param avoids
- * Set the ExcludeList to avoid for deployment
+ * @param avoids Set the ExcludeList to avoid for deployment
*/
- public void setAvoids(ExcludeList avoids);
+ void setAvoids(ExcludeList avoids);
/**
- * @return
- * the ExcludeList to avoid for deployment
+ * @return the ExcludeList to avoid for deployment
*/
- public ExcludeList getAvoids();
+ ExcludeList getAvoids();
Long getPhysicalNetworkId();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/api/src/com/cloud/deploy/DeploymentPlanner.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/deploy/DeploymentPlanner.java b/api/src/com/cloud/deploy/DeploymentPlanner.java
index 741a804..39edc1b 100644
--- a/api/src/com/cloud/deploy/DeploymentPlanner.java
+++ b/api/src/com/cloud/deploy/DeploymentPlanner.java
@@ -103,6 +103,10 @@ public interface DeploymentPlanner extends Adapter {
public ExcludeList() {
}
+ public ExcludeList(ExcludeList that) {
+ this(that.getDataCentersToAvoid(), that.getPodsToAvoid(), that.getClustersToAvoid(), that.getHostsToAvoid(), that.getPoolsToAvoid());
+ }
+
public ExcludeList(Set<Long> _dcIds, Set<Long> _podIds, Set<Long> _clusterIds, Set<Long> _hostIds, Set<Long> _poolIds) {
if (_dcIds != null) {
this._dcIds = new HashSet<Long>(_dcIds);
@@ -312,5 +316,26 @@ public interface DeploymentPlanner extends Adapter {
public Set<Long> getPoolsToAvoid() {
return _poolIds;
}
+
+ @Override
+ public String toString() {
+ StringBuilder str = new StringBuilder("Avoiding[");
+ if (_dcIds != null) {
+ str.append("Zones={").append(_dcIds.toString()).append("}");
+ }
+ if (_podIds != null) {
+ str.append("; Pods={").append(_podIds.toString()).append("}");
+ }
+ if (_clusterIds != null) {
+ str.append("; Clusters={").append(_clusterIds.toString()).append("}");
+ }
+ if (_hostIds != null) {
+ str.append("; Hosts={").append(_hostIds.toString()).append("}");
+ }
+ if (_poolIds != null) {
+ str.append("; DataStore={").append(_poolIds.toString()).append("}");
+ }
+ return str.append("]").toString();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
index 7a11195..29a4049 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobMonitor.java
@@ -28,7 +28,6 @@ import org.apache.log4j.Logger;
import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.AsyncJobConstants;
-import org.apache.cloudstack.framework.jobs.AsyncJob.Topics;
import org.apache.cloudstack.framework.messagebus.MessageBus;
import org.apache.cloudstack.framework.messagebus.MessageDispatcher;
import org.apache.cloudstack.framework.messagebus.MessageHandler;
@@ -114,7 +113,7 @@ public class AsyncJobMonitor extends ManagerBase {
long threadId = Thread.currentThread().getId();
boolean fromPoolThread = Thread.currentThread().getName().contains(AsyncJobConstants.JOB_POOL_THREAD_PREFIX);
- ActiveTaskRecord record = new ActiveTaskRecord(threadId, jobId, fromPoolThread);
+ ActiveTaskRecord record = new ActiveTaskRecord(jobId, threadId, fromPoolThread);
_activeTasks.put(jobId, record);
if(fromPoolThread)
_activePoolThreads++;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
index 2f82b53..07e40ba 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
@@ -345,7 +345,7 @@ public class VmwareServerDiscoverer extends DiscovererBase implements
details.put("url", hostMo.getHostName());
details.put("username", username);
details.put("password", password);
- String guid = morHost.getType() + ":" + morHost.getValue()
+ String guid = morHost.getType() + ":" + morHost.getPresetParams()
+ "@" + url.getHost();
details.put("guid", guid);
@@ -414,7 +414,7 @@ public class VmwareServerDiscoverer extends DiscovererBase implements
"ClusterComputeResource"))
return false;
- if (!morParent.getValue().equals(morCluster.getValue()))
+ if (!morParent.getPresetParams().equals(morCluster.getPresetParams()))
return false;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
index 1585070..d35ddcd 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
@@ -374,7 +374,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
returnedHostList.add(mor);
return returnedHostList;
} else {
- s_logger.error("Unsupport host type " + mor.getType() + ":" + mor.getValue() + " from inventory path: " + hostInventoryPath);
+ s_logger.error("Unsupport host type " + mor.getType() + ":" + mor.getPresetParams() + " from inventory path: " + hostInventoryPath);
return null;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
index 52d781c..0ff27e1 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareStorageManagerImpl.java
@@ -245,7 +245,7 @@ public class VmwareStorageManagerImpl implements VmwareStorageManager {
try {
VmwareHypervisorHost hyperHost = hostService.getHyperHost(context, cmd);
- String templateUuidName = UUID.nameUUIDFromBytes((templateName + "@" + cmd.getPoolUuid() + "-" + hyperHost.getMor().getValue()).getBytes()).toString();
+ String templateUuidName = UUID.nameUUIDFromBytes((templateName + "@" + cmd.getPoolUuid() + "-" + hyperHost.getMor().getPresetParams()).getBytes()).toString();
// truncate template name to 32 chars to ensure they work well with vSphere API's.
templateUuidName = templateUuidName.replace("-", "");
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index c763640..3ecf49b 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -515,14 +515,14 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
synchronized (this) {
try {
- JmxUtil.registerMBean("VMware " + _morHyperHost.getValue(), "Command " + cmdSequence + "-" + cmd.getClass().getSimpleName(), mbean);
+ JmxUtil.registerMBean("VMware " + _morHyperHost.getPresetParams(), "Command " + cmdSequence + "-" + cmd.getClass().getSimpleName(), mbean);
_cmdMBeans.add(mbean);
if (_cmdMBeans.size() >= MAX_CMD_MBEAN) {
PropertyMapDynamicBean mbeanToRemove = _cmdMBeans.get(0);
_cmdMBeans.remove(0);
- JmxUtil.unregisterMBean("VMware " + _morHyperHost.getValue(), "Command " + mbeanToRemove.getProp("Sequence") + "-" + mbeanToRemove.getProp("Name"));
+ JmxUtil.unregisterMBean("VMware " + _morHyperHost.getPresetParams(), "Command " + mbeanToRemove.getProp("Sequence") + "-" + mbeanToRemove.getProp("Name"));
}
} catch (Exception e) {
if(s_logger.isTraceEnabled())
@@ -4583,7 +4583,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
DatastoreSummary dsSummary = dsMo.getSummary();
String address = hostMo.getHostName();
- StoragePoolInfo pInfo = new StoragePoolInfo(poolUuid, address, dsMo.getMor().getValue(), "", StoragePoolType.LVM, dsSummary.getCapacity(), dsSummary.getFreeSpace());
+ StoragePoolInfo pInfo = new StoragePoolInfo(poolUuid, address, dsMo.getMor().getPresetParams(), "", StoragePoolType.LVM, dsSummary.getCapacity(), dsSummary.getFreeSpace());
StartupStorageCommand cmd = new StartupStorageCommand();
cmd.setName(poolUuid);
cmd.setPoolInfo(pInfo);
@@ -5088,11 +5088,11 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
int endMs = infos.get(infos.size()-1).getTimestamp().getSecond() * 1000 + infos.get(infos.size()-1).getTimestamp().getMillisecond();
int beginMs = infos.get(0).getTimestamp().getSecond() * 1000 + infos.get(0).getTimestamp().getMillisecond();
sampleDuration = (endMs - beginMs) /1000;
- List<PerfMetricSeries> vals = ((PerfEntityMetric)values.get(i)).getValue();
+ List<PerfMetricSeries> vals = ((PerfEntityMetric)values.get(i)).getPresetParams();
for(int vi = 0; ((vals!= null) && (vi < vals.size())); ++vi){
if(vals.get(vi) instanceof PerfMetricIntSeries) {
PerfMetricIntSeries val = (PerfMetricIntSeries)vals.get(vi);
- List<Long> perfValues = val.getValue();
+ List<Long> perfValues = val.getPresetParams();
if (vals.get(vi).getId().getCounterId() == rxPerfCounterInfo.getKey()) {
networkReadKBs = sampleDuration * perfValues.get(3); //get the average RX rate multiplied by sampled duration
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java b/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java
index 1733712..51e2733 100644
--- a/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java
+++ b/plugins/network-elements/f5/src/com/cloud/network/resource/F5BigIpResource.java
@@ -985,8 +985,8 @@ public class F5BigIpResource implements ServerResource {
continue;
}
- long high = stat.getValue().getHigh();
- long low = stat.getValue().getLow();
+ long high = stat.getPresetParams().getHigh();
+ long low = stat.getPresetParams().getLow();
long full = getFullUsage(high, low);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 67d9576..97265b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -56,7 +56,7 @@
<cs.jasypt.version>1.9.0</cs.jasypt.version>
<cs.trilead.version>build213-svnkit-1.3-patch</cs.trilead.version>
<cs.ehcache.version>1.5.0</cs.ehcache.version>
- <cs.gson.version>1.7.1</cs.gson.version>
+ <cs.gson.version>2.2.4</cs.gson.version>
<cs.guava.version>14.0-rc1</cs.guava.version>
<cs.xapi.version>5.6.100-1-SNAPSHOT</cs.xapi.version>
<cs.httpclient.version>3.1</cs.httpclient.version>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/server/src/com/cloud/async/AsyncJobExecutionContext.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/async/AsyncJobExecutionContext.java b/server/src/com/cloud/async/AsyncJobExecutionContext.java
index 82013e0..0e05a98 100644
--- a/server/src/com/cloud/async/AsyncJobExecutionContext.java
+++ b/server/src/com/cloud/async/AsyncJobExecutionContext.java
@@ -18,6 +18,8 @@ package com.cloud.async;
import javax.inject.Inject;
+import org.apache.log4j.Logger;
+
import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.AsyncJobConstants;
import org.apache.cloudstack.framework.jobs.AsyncJobManager;
@@ -81,12 +83,16 @@ public class AsyncJobExecutionContext {
_jobMgr.updateAsyncJobAttachment(_job.getId(), instanceType, instanceId);
}
- public void logJobJournal(AsyncJob.JournalType journalType, String
- journalText, String journalObjJson) {
+ public void logJobJournal(AsyncJob.JournalType journalType, String journalText, String journalObjJson) {
assert(_job != null);
_jobMgr.logJobJournal(_job.getId(), journalType, journalText, journalObjJson);
}
+ public void log(Logger logger, String journalText) {
+ _jobMgr.logJobJournal(_job.getId(), AsyncJob.JournalType.SUCCESS, journalText, null);
+ logger.debug(journalText);
+ }
+
public void joinJob(long joinJobId) {
assert(_job != null);
_jobMgr.joinJob(_job.getId(), joinJobId);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index e3db24c..ec9c3dd 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -39,7 +39,6 @@ import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
-import org.apache.cloudstack.framework.jobs.AsyncJob;
import org.apache.cloudstack.framework.jobs.AsyncJobConstants;
import org.apache.cloudstack.framework.jobs.AsyncJobManager;
import org.apache.cloudstack.framework.messagebus.MessageBus;
@@ -85,6 +84,7 @@ import com.cloud.cluster.ClusterManager;
import com.cloud.configuration.Config;
import com.cloud.configuration.ConfigurationManager;
import com.cloud.configuration.dao.ConfigurationDao;
+import com.cloud.dao.EntityManager;
import com.cloud.dc.ClusterDetailsDao;
import com.cloud.dc.ClusterDetailsVO;
import com.cloud.dc.DataCenter;
@@ -167,6 +167,8 @@ import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.concurrency.NamedThreadFactory;
import com.cloud.utils.db.DB;
import com.cloud.utils.db.GlobalLock;
+import com.cloud.utils.db.SearchBuilder;
+import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.exception.ExecutionException;
@@ -187,6 +189,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
private static final Logger s_logger = Logger.getLogger(VirtualMachineManagerImpl.class);
@Inject
+ protected EntityManager _entityMgr;
+
+ @Inject
protected StorageManager _storageMgr;
@Inject
DataStoreManager dataStoreMgr;
@@ -328,6 +333,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
protected int _lockStateRetry;
protected boolean _forceStop;
+ SearchBuilder<VolumeVO> RootVolumeSearch;
+
@Override
public void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru) {
synchronized (_vmGurus) {
@@ -529,6 +536,13 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
_nodeId = _clusterMgr.getManagementNodeId();
_agentMgr.registerForHostEvents(this, true, true, true);
+
+ RootVolumeSearch = _entityMgr.createSearchBuilder(VolumeVO.class);
+ VolumeVO rvsEntity = RootVolumeSearch.entity();
+ RootVolumeSearch.and(rvsEntity.getVolumeType(), SearchCriteria.Op.EQ).values(Volume.Type.ROOT)
+ .and(rvsEntity.getInstanceId(), SearchCriteria.Op.EQ, "instance")
+ .and(rvsEntity.getDeviceId(), SearchCriteria.Op.EQ).values(0)
+ .done();
return true;
}
@@ -808,175 +822,151 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
return;
}
- public void processVmStartWork(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy)
+ private Pair<DeploymentPlan, DeployDestination> findDestination(VirtualMachineProfileImpl profile, DeploymentPlan planRequested, boolean reuseVolume,
+ ReservationContext reservation, AsyncJobExecutionContext job) throws InsufficientCapacityException, ResourceUnavailableException {
+ VirtualMachine vm = profile.getVirtualMachine();
+
+ DataCenterDeployment plan = null;
+ if (planRequested != null) {
+ plan = new DataCenterDeployment(planRequested);
+ } else {
+ plan = new DataCenterDeployment(vm.getDataCenterId(), vm.getPodIdToDeployIn(), null, null, null, null, reservation);
+ }
+
+ job.log(s_logger, "Starting " + vm + " with requested " + plan);
+
+ boolean planChangedByVolume = false;
+ List<VolumeVO> vols = _entityMgr.search(VolumeVO.class, RootVolumeSearch.create("instance", vm.getId()));
+
+ if (vols.size() > 0 && reuseVolume) {
+ // edit plan if this vm's ROOT volume is in READY state already
+
+ VolumeVO vol = vols.get(0);
+ // make sure if the templateId is unchanged. If it is changed,
+ // let planner reassign pool for the volume even if it ready.
+ Long volTemplateId = vol.getTemplateId();
+ if (vol.isRecreatable() && volTemplateId != null &&
+ vm.getTemplateId() != -1 && volTemplateId.longValue() != vm.getTemplateId()) {
+ job.log(s_logger, "Recreating" + vol + " of " + vm + " because its template has changed.");
+ } else {
+ StoragePool pool = (StoragePool)dataStoreMgr.getPrimaryDataStore(vol.getPoolId());
+ Long rootVolPodId = pool.getPodId();
+ Long rootVolClusterId = pool.getClusterId();
+ Long clusterIdSpecified = plan.getClusterId();
+ if (clusterIdSpecified != null && rootVolClusterId != null &&
+ clusterIdSpecified.longValue() != rootVolClusterId.longValue()) {
+ job.log(s_logger, "Unable to satisfy the deployment plan because it is requesting cluster " + clusterIdSpecified + " but the root volume is in cluster " + rootVolClusterId);
+ throw new ResourceUnavailableException("Unable to satisfy the deployment plan because it is requesting cluster " + clusterIdSpecified
+ + " but the root volume is in cluster " + rootVolClusterId, Cluster.class, clusterIdSpecified);
+ }
+ plan.setPoolId(vol.getPoolId());
+ plan.setClusterId(rootVolClusterId);
+ plan.setPodId(rootVolPodId);
+ planChangedByVolume = true;
+ job.log(s_logger, "Deployment plan has been adjusted to " + plan);
+ }
+ }
+
+ DeployDestination dest = null;
+ try {
+ dest = _dpMgr.planDeployment(profile, plan, plan.getAvoids());
+ } catch (AffinityConflictException e2) {
+ throw new CloudRuntimeException("Unable to create deployment, affinity rules associted to the VM conflict", e2);
+ }
+
+ if (dest == null && planChangedByVolume) {
+ job.log(s_logger, "Unable to find a deploy destination using the adjusted deployment plan. Replanning with ");
+ return findDestination(profile, planRequested, false, reservation, job);
+ }
+
+ if (dest == null) {
+ throw new InsufficientServerCapacityException("Unable to create a deployment for " + vm,
+ DataCenter.class, plan.getDataCenterId(), areAffinityGroupsAssociated(profile));
+ }
+
+ plan.getAvoids().addHost(dest.getHost().getId());
+ job.log(s_logger, "Final deploy destination: " + dest);
+ return new Pair<DeploymentPlan, DeployDestination>(plan, dest);
+ }
+
+ /**
+ * orchestrateStart orchestrates the vm start process. Note that this
+ * method is not in the interface.
+ *
+ * @param vmUuid uuid for the vm
+ * @param params additional parameters passed
+ * @param planRequested deployment requested
+ * @throws InsufficientCapacityException when there's not enough infrastructure capacity to ensure successful start of a vm.
+ * @throws ConcurrentOperationException when there are multiple operations on the vm.
+ * @throws ResourceUnavailableException when the resource being used to start the vm is not available.
+ */
+ public void orchestrateStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planRequested)
throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
CallContext context = CallContext.current();
User caller = context.getCallingUser();
Account account = context.getCallingAccount();
+ AsyncJobExecutionContext job = AsyncJobExecutionContext.getCurrentExecutionContext();
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
+ if (vm == null) {
+ throw new ConcurrentOperationException("Unable to find vm by " + vmUuid);
+ }
+
VirtualMachineGuru vmGuru = getVmGuru(vm);
Ternary<VMInstanceVO, ReservationContext, VmWorkJobVO> start = changeToStartState(vmGuru, vm, caller, account);
assert(start != null);
- ReservationContext ctx = start.second();
+ ReservationContext reservation = start.second();
VmWorkJobVO work = start.third();
VMInstanceVO startedVm = null;
ServiceOfferingVO offering = _offeringDao.findById(vm.getServiceOfferingId());
VMTemplateVO template = _templateDao.findById(vm.getTemplateId());
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Trying to deploy VM, vm has dcId: " + vm.getDataCenterId() + " and podId: " + vm.getPodIdToDeployIn());
- }
- DataCenterDeployment plan = new DataCenterDeployment(vm.getDataCenterId(), vm.getPodIdToDeployIn(), null, null, null, null, ctx);
- if(planToDeploy != null && planToDeploy.getDataCenterId() != 0) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("advanceStart: DeploymentPlan is provided, using dcId:" + planToDeploy.getDataCenterId() + ", podId: " + planToDeploy.getPodId() + ", clusterId: "
- + planToDeploy.getClusterId() + ", hostId: " + planToDeploy.getHostId() + ", poolId: " + planToDeploy.getPoolId());
- }
- plan = new DataCenterDeployment(planToDeploy.getDataCenterId(), planToDeploy.getPodId(), planToDeploy.getClusterId(), planToDeploy.getHostId(), planToDeploy.getPoolId(), planToDeploy.getPhysicalNetworkId(), ctx);
- }
-
HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType());
boolean canRetry = true;
try {
- ExcludeList avoids = null;
- if (planToDeploy != null) {
- avoids = planToDeploy.getAvoids();
- }
- if (avoids == null) {
- avoids = new ExcludeList();
- }
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Deploy avoids pods: " + avoids.getPodsToAvoid() + ", clusters: " + avoids.getClustersToAvoid() + ", hosts: " + avoids.getHostsToAvoid());
- }
- boolean planChangedByVolume = false;
boolean reuseVolume = true;
- DataCenterDeployment originalPlan = plan;
+ DeploymentPlan plan = planRequested;
int retry = _retry;
while (retry-- != 0) { // It's != so that it can match -1.
- if(reuseVolume){
- // edit plan if this vm's ROOT volume is in READY state already
- List<VolumeVO> vols = _volsDao.findReadyRootVolumesByInstance(vm.getId());
- for (VolumeVO vol : vols) {
- // make sure if the templateId is unchanged. If it is changed,
- // let planner
- // reassign pool for the volume even if it ready.
- Long volTemplateId = vol.getTemplateId();
- if (volTemplateId != null && volTemplateId.longValue() != template.getId()) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug(vol + " of " + vm + " is READY, but template ids don't match, let the planner reassign a new pool");
- }
- continue;
- }
-
- StoragePool pool = (StoragePool)dataStoreMgr.getPrimaryDataStore(vol.getPoolId());
- if (!pool.isInMaintenance()) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Root volume is ready, need to place VM in volume's cluster");
- }
- long rootVolDcId = pool.getDataCenterId();
- Long rootVolPodId = pool.getPodId();
- Long rootVolClusterId = pool.getClusterId();
- if (planToDeploy != null && planToDeploy.getDataCenterId() != 0) {
- Long clusterIdSpecified = planToDeploy.getClusterId();
- if (clusterIdSpecified != null && rootVolClusterId != null) {
- if (rootVolClusterId.longValue() != clusterIdSpecified.longValue()) {
- // cannot satisfy the plan passed in to the
- // planner
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Cannot satisfy the deployment plan passed in since the ready Root volume is in different cluster. volume's cluster: " + rootVolClusterId
- + ", cluster specified: " + clusterIdSpecified);
- }
- throw new ResourceUnavailableException("Root volume is ready in different cluster, Deployment plan provided cannot be satisfied, unable to create a deployment for "
- + vm, Cluster.class, clusterIdSpecified);
- }
- }
- plan = new DataCenterDeployment(planToDeploy.getDataCenterId(), planToDeploy.getPodId(), planToDeploy.getClusterId(), planToDeploy.getHostId(), vol.getPoolId(), null, ctx);
- }else{
- plan = new DataCenterDeployment(rootVolDcId, rootVolPodId, rootVolClusterId, null, vol.getPoolId(), null, ctx);
- if (s_logger.isDebugEnabled()) {
- s_logger.debug(vol + " is READY, changing deployment plan to use this pool's dcId: " + rootVolDcId + " , podId: " + rootVolPodId + " , and clusterId: " + rootVolClusterId);
- }
- planChangedByVolume = true;
- }
- }
- }
- }
-
VirtualMachineProfileImpl vmProfile = new VirtualMachineProfileImpl(vm, template, offering, account, params);
- DeployDestination dest = null;
- try {
- dest = _dpMgr.planDeployment(vmProfile, plan, avoids);
- } catch (AffinityConflictException e2) {
- s_logger.warn("Unable to create deployment, affinity rules associted to the VM conflict", e2);
- throw new CloudRuntimeException(
- "Unable to create deployment, affinity rules associted to the VM conflict");
-
- }
- if (dest == null) {
- if (planChangedByVolume) {
- plan = originalPlan;
- planChangedByVolume = false;
- //do not enter volume reuse for next retry, since we want to look for resorces outside the volume's cluster
- reuseVolume = false;
- continue;
- }
- throw new InsufficientServerCapacityException("Unable to create a deployment for " + vmProfile,
- DataCenter.class, plan.getDataCenterId(), areAffinityGroupsAssociated(vmProfile));
- }
-
- if (dest != null) {
- avoids.addHost(dest.getHost().getId());
- AsyncJobExecutionContext.getCurrentExecutionContext().logJobJournal(
- AsyncJob.JournalType.SUCCESS, "Deployment found, dest host: " + dest.getHost().getId(), null);
- break;
- }
+ Pair<DeploymentPlan, DeployDestination> result = findDestination(vmProfile, plan, reuseVolume, reservation, job);
+ plan = result.first();
+ DeployDestination dest = result.second();
long destHostId = dest.getHost().getId();
vm.setPodId(dest.getPod().getId());
Long cluster_id = dest.getCluster().getId();
- ClusterDetailsVO cluster_detail_cpu = _clusterDetailsDao.findDetail(cluster_id,"cpuOvercommitRatio");
- ClusterDetailsVO cluster_detail_ram = _clusterDetailsDao.findDetail(cluster_id,"memoryOvercommitRatio");
+ ClusterDetailsVO cluster_detail_cpu = _clusterDetailsDao.findDetail(cluster_id, "cpuOvercommitRatio");
+ ClusterDetailsVO cluster_detail_ram = _clusterDetailsDao.findDetail(cluster_id, "memoryOvercommitRatio");
vmProfile.setCpuOvercommitRatio(Float.parseFloat(cluster_detail_cpu.getValue()));
vmProfile.setMemoryOvercommitRatio(Float.parseFloat(cluster_detail_ram.getValue()));
- try {
- if (!changeState(vm, Event.OperationRetry, destHostId, work, Step.Prepare)) {
- throw new ConcurrentOperationException("Unable to update the state of the Virtual Machine");
- }
- } catch (NoTransitionException e1) {
- throw new ConcurrentOperationException(e1.getMessage());
+ if (!changeState(vm, Event.OperationRetry, destHostId, work, Step.Prepare)) {
+ throw new ConcurrentOperationException("Unable to update the state of the Virtual Machine");
}
try {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("VM is being created in podId: " + vm.getPodIdToDeployIn());
- }
- _networkMgr.prepare(vmProfile, dest, ctx);
- if (vm.getHypervisorType() != HypervisorType.BareMetal) {
- volumeMgr.prepare(vmProfile, dest);
- }
- //since StorageMgr succeeded in volume creation, reuse Volume for further tries until current cluster has capacity
- if(!reuseVolume){
- reuseVolume = true;
- }
+ _networkMgr.prepare(vmProfile, dest, reservation);
+ volumeMgr.prepare(vmProfile, dest);
+
+ reuseVolume = true;
Commands cmds = null;
- vmGuru.finalizeVirtualMachineProfile(vmProfile, dest, ctx);
+ vmGuru.finalizeVirtualMachineProfile(vmProfile, dest, reservation);
VirtualMachineTO vmTO = hvGuru.implement(vmProfile);
cmds = new Commands(OnError.Stop);
cmds.addCommand(new StartCommand(vmTO, dest.getHost()));
- vmGuru.finalizeDeployment(cmds, vmProfile, dest, ctx);
+ vmGuru.finalizeDeployment(cmds, vmProfile, dest, reservation);
work.setStep(VmWorkJobVO.Step.Starting);
_workJobDao.update(work.getId(), work);
@@ -996,7 +986,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
destHostId = finalHost.getId();
}
- if (vmGuru.finalizeStart(vmProfile, destHostId, cmds, ctx)) {
+ if (vmGuru.finalizeStart(vmProfile, destHostId, cmds, reservation)) {
if (!changeState(vm, Event.OperationSucceeded, destHostId, work, Step.Done)) {
throw new ConcurrentOperationException("Unable to transition to a new state.");
}
@@ -1031,7 +1021,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
throw new AgentUnavailableException("Unable to start " + vm.getHostName(), destHostId, e);
} catch (ResourceUnavailableException e) {
s_logger.info("Unable to contact resource.", e);
- if (!avoids.add(e)) {
+ if (!plan.getAvoids().add(e)) {
if (e.getScope() == Volume.class || e.getScope() == Nic.class) {
throw e;
} else {
@@ -1041,7 +1031,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
} catch (InsufficientCapacityException e) {
s_logger.info("Insufficient capacity ", e);
- if (!avoids.add(e)) {
+ if (!plan.getAvoids().add(e)) {
if (e.getScope() == Volume.class || e.getScope() == Nic.class) {
throw e;
} else {
@@ -1050,7 +1040,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
} catch (Exception e) {
s_logger.error("Failed to start instance " + vm, e);
- throw new AgentUnavailableException("Unable to start instance due to " + e.getMessage(), destHostId, e);
+ throw new CloudRuntimeException("Unable to start instance due to " + e.getMessage(), e);
} finally {
if (startedVm == null && canRetry) {
VmWorkJobVO.Step prevStep = work.getStep();
@@ -1064,14 +1054,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
}
+ } catch (NoTransitionException e1) {
+ throw new CloudRuntimeException(e1.getMessage());
} finally {
if (startedVm == null) {
- if (canRetry) {
- try {
- changeState(vm, Event.OperationFailed, null, work, Step.Done);
- } catch (NoTransitionException e) {
- throw new ConcurrentOperationException(e.getMessage());
- }
+ try {
+ changeState(vm, Event.OperationFailed, null, work, Step.Done);
+ } catch (NoTransitionException e) {
+ throw new ConcurrentOperationException(e.getMessage());
}
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/server/src/com/cloud/vm/VmWorkJobDispatcher.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VmWorkJobDispatcher.java b/server/src/com/cloud/vm/VmWorkJobDispatcher.java
index 04d9204..fa33ecd 100644
--- a/server/src/com/cloud/vm/VmWorkJobDispatcher.java
+++ b/server/src/com/cloud/vm/VmWorkJobDispatcher.java
@@ -69,7 +69,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
if (cmd.equals(Start)) {
VmWorkStart start = (VmWorkStart)work;
- _vmMgr.processVmStartWork(vm.getUuid(), start.getParams(), start.getPlan());
+ _vmMgr.orchestrateStart(vm.getUuid(), start.getParams(), start.getPlan());
} else if (cmd.equals(Stop)) {
VmWorkStop stop = (VmWorkStop)work;
_vmMgr.processVmStopWork(vm.getUuid(), stop.isForceStop());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/server/test/com/cloud/async/MockVirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/async/MockVirtualMachineManagerImpl.java b/server/test/com/cloud/async/MockVirtualMachineManagerImpl.java
index bc25b11..e164d05 100644
--- a/server/test/com/cloud/async/MockVirtualMachineManagerImpl.java
+++ b/server/test/com/cloud/async/MockVirtualMachineManagerImpl.java
@@ -353,21 +353,6 @@ public class MockVirtualMachineManagerImpl implements VirtualMachineManager {
return false;
}
- public VirtualMachine processVmStartWork(String vmUuid,
- Map<Param, Object> params, User caller, Account account,
- DeploymentPlan planToDeploy) throws InsufficientCapacityException,
- ConcurrentOperationException, ResourceUnavailableException {
- // TODO Auto-generated method stub
- return null;
- }
-
- public boolean processVmStopWork(String vmUuid, boolean forced, User user,
- Account account) throws AgentUnavailableException,
- OperationTimedoutException, ConcurrentOperationException {
- // TODO Auto-generated method stub
- return false;
- }
-
@Override
public NicTO toNicTO(NicProfile nic, HypervisorType hypervisorType) {
// TODO Auto-generated method stub
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/utils/src/com/cloud/utils/db/GenericSearchBuilder.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/GenericSearchBuilder.java b/utils/src/com/cloud/utils/db/GenericSearchBuilder.java
index 337d444..4bae344 100755
--- a/utils/src/com/cloud/utils/db/GenericSearchBuilder.java
+++ b/utils/src/com/cloud/utils/db/GenericSearchBuilder.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Transient;
@@ -199,6 +200,16 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
return this;
}
+ public GenericSearchBuilder<T, K> and(Object useless, Op op, String name) {
+ constructCondition(name, " AND ", _specifiedAttrs.get(0), op);
+ return this;
+ }
+
+ public Preset and(Object useless, Op op) {
+ Condition condition = constructCondition(UUID.randomUUID().toString(), " AND ", _specifiedAttrs.get(0), op);
+ return new Preset(this, condition);
+ }
+
public GenericSearchBuilder<T, K> and() {
constructCondition(null, " AND ", null, null);
return this;
@@ -217,19 +228,53 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
return and(name, useless, op);
}
+ public GenericSearchBuilder<T, K> where(Object useless, Op op, String name) {
+ return and(name, useless, op);
+ }
+
+ public Preset where(Object useless, Op op) {
+ return and(useless, op);
+ }
+
public GenericSearchBuilder<T, K> left(String name, Object useless, Op op) {
constructCondition(name, " ( ", _specifiedAttrs.get(0), op);
return this;
}
+ public GenericSearchBuilder<T, K> left(Object useless, Op op, String name) {
+ constructCondition(name, " ( ", _specifiedAttrs.get(0), op);
+ return this;
+ }
+
+ public Preset left(Object useless, Op op) {
+ Condition condition = constructCondition(UUID.randomUUID().toString(), " ( ", _specifiedAttrs.get(0), op);
+ return new Preset(this, condition);
+ }
+
+ public GenericSearchBuilder<T, K> op(Object useless, Op op, String name) {
+ return left(useless, op, name);
+ }
+
+ public Preset op(Object useless, Op op) {
+ return left(useless, op);
+ }
+
public GenericSearchBuilder<T, K> op(String name, Object useless, Op op) {
return left(name, useless, op);
}
+ public GenericSearchBuilder<T, K> openParen(Object useless, Op op, String name) {
+ return left(name, useless, op);
+ }
+
public GenericSearchBuilder<T, K> openParen(String name, Object useless, Op op) {
return left(name, useless, op);
}
+ public Preset openParen(Object useless, Op op) {
+ return left(useless, op);
+ }
+
public GroupBy<T, K> groupBy(Object... useless) {
assert _groupBy == null : "Can't do more than one group bys";
_groupBy = new GroupBy<T, K>(this);
@@ -254,6 +299,16 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
return this;
}
+ public GenericSearchBuilder<T, K> or(Object useless, Op op, String name) {
+ constructCondition(name, " OR ", _specifiedAttrs.get(0), op);
+ return this;
+ }
+
+ public Preset or(Object useless, Op op) {
+ Condition condition = constructCondition(UUID.randomUUID().toString(), " OR ", _specifiedAttrs.get(0), op);
+ return new Preset(this, condition);
+ }
+
public GenericSearchBuilder<T, K> join(String name, GenericSearchBuilder<?, ?> builder, Object useless, Object useless2, JoinBuilder.JoinType joinType) {
assert _entity != null : "SearchBuilder cannot be modified once it has been setup";
assert _specifiedAttrs.size() == 1 : "You didn't select the attribute.";
@@ -272,7 +327,7 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
return this;
}
- protected void constructCondition(String conditionName, String cond, Attribute attr, Op op) {
+ protected Condition constructCondition(String conditionName, String cond, Attribute attr, Op op) {
assert _entity != null : "SearchBuilder cannot be modified once it has been setup";
assert op == null || _specifiedAttrs.size() == 1 : "You didn't select the attribute.";
assert op != Op.SC : "Call join";
@@ -280,6 +335,7 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
Condition condition = new Condition(conditionName, cond, attr, op);
_conditions.add(condition);
_specifiedAttrs.clear();
+ return condition;
}
/**
@@ -360,6 +416,7 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
protected final String cond;
protected final Op op;
protected final Attribute attr;
+ protected Object[] presets;
protected Condition(String name) {
this(name, null, null, null);
@@ -370,8 +427,21 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
this.attr = attr;
this.cond = cond;
this.op = op;
+ this.presets = null;
}
+ public boolean isPreset() {
+ return presets != null;
+ }
+
+ public void setPresets(Object... presets) {
+ this.presets = presets;
+ }
+
+ public Object[] getPresets() {
+ return presets;
+ }
+
public void toSql(StringBuilder sql, Object[] params, int count) {
if (count > 0) {
sql.append(cond);
@@ -445,4 +515,22 @@ public class GenericSearchBuilder<T, K> implements MethodInterceptor {
this.field = field;
}
}
+
+ public class Preset {
+ GenericSearchBuilder<T, K> builder;
+ Condition condition;
+
+ protected Preset(GenericSearchBuilder<T, K> builder, Condition condition) {
+ this.builder = builder;
+ this.condition = condition;
+ }
+
+ public GenericSearchBuilder<T, K> values(Object... params) {
+ if (condition.op.getParams() > 0 && condition.op.params != params.length) {
+ throw new CloudRuntimeException("The # of parameters set " + params.length + " does not match # of parameters required by " + condition.op);
+ }
+ condition.setPresets(params);
+ return builder;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/utils/src/com/cloud/utils/db/SearchCriteria.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/SearchCriteria.java b/utils/src/com/cloud/utils/db/SearchCriteria.java
index 85f7708..22bccd3 100755
--- a/utils/src/com/cloud/utils/db/SearchCriteria.java
+++ b/utils/src/com/cloud/utils/db/SearchCriteria.java
@@ -295,6 +295,9 @@ public class SearchCriteria<K> {
StringBuilder sql = new StringBuilder();
int i = 0;
for (Condition condition : _conditions) {
+ if (condition.isPreset()) {
+ _params.put(condition.name, condition.presets);
+ }
Object[] params = _params.get(condition.name);
if ((condition.op == null || condition.op.params == 0) || (params != null)) {
condition.toSql(sql, params, i++);
@@ -302,6 +305,9 @@ public class SearchCriteria<K> {
}
for (Condition condition : _additionals) {
+ if (condition.isPreset()) {
+ _params.put(condition.name, condition.presets);
+ }
Object[] params = _params.get(condition.name);
if ((condition.op.params == 0) || (params != null)) {
condition.toSql(sql, params, i++);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/BaseMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/BaseMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/BaseMO.java
index 0ac93e4..c039d80 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/BaseMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/BaseMO.java
@@ -129,7 +129,7 @@ public class BaseMO {
CustomFieldStringValue cfValue = (CustomFieldStringValue)_context.getVimClient().getDynamicProperty(getMor(),
String.format("value[%d]", key));
if(cfValue != null)
- return cfValue.getValue();
+ return cfValue.getPresetParams();
return null;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/ClusterMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/ClusterMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/ClusterMO.java
index d112c34..58afc93 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/ClusterMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/ClusterMO.java
@@ -120,7 +120,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ObjectContent[] getVmPropertiesOnHyperHost(String[] propertyPaths) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - retrieveProperties() for VM properties. target MOR: " + _mor.getValue() + ", properties: " + new Gson().toJson(propertyPaths));
+ s_logger.trace("vCenter API trace - retrieveProperties() for VM properties. target MOR: " + _mor.getPresetParams() + ", properties: " + new Gson().toJson(propertyPaths));
PropertySpec pSpec = new PropertySpec();
pSpec.setType("VirtualMachine");
@@ -158,7 +158,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ObjectContent[] getDatastorePropertiesOnHyperHost(String[] propertyPaths) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - retrieveProperties() on Datastore properties. target MOR: " + _mor.getValue() + ", properties: " + new Gson().toJson(propertyPaths));
+ s_logger.trace("vCenter API trace - retrieveProperties() on Datastore properties. target MOR: " + _mor.getPresetParams() + ", properties: " + new Gson().toJson(propertyPaths));
PropertySpec pSpec = new PropertySpec();
pSpec.setType("Datastore");
@@ -190,7 +190,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
private ObjectContent[] getHostPropertiesOnCluster(String[] propertyPaths) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - retrieveProperties() on Host properties. target MOR: " + _mor.getValue() + ", properties: " + new Gson().toJson(propertyPaths));
+ s_logger.trace("vCenter API trace - retrieveProperties() on Host properties. target MOR: " + _mor.getPresetParams() + ", properties: " + new Gson().toJson(propertyPaths));
PropertySpec pSpec = new PropertySpec();
pSpec.setType("HostSystem");
@@ -224,7 +224,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public boolean createVm(VirtualMachineConfigSpec vmSpec) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - createVM_Task(). target MOR: " + _mor.getValue() + ", VirtualMachineConfigSpec: " + new Gson().toJson(vmSpec));
+ s_logger.trace("vCenter API trace - createVM_Task(). target MOR: " + _mor.getPresetParams() + ", VirtualMachineConfigSpec: " + new Gson().toJson(vmSpec));
assert(vmSpec != null);
DatacenterMO dcMo = new DatacenterMO(_context, getHyperHostDatacenter());
@@ -252,14 +252,14 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public void importVmFromOVF(String ovfFilePath, String vmName, DatastoreMO dsMo, String diskOption) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - importVmFromOVF(). target MOR: " + _mor.getValue() + ", ovfFilePath: " + ovfFilePath + ", vmName: " + vmName
- + ", datastore: " + dsMo.getMor().getValue() + ", diskOption: " + diskOption);
+ s_logger.trace("vCenter API trace - importVmFromOVF(). target MOR: " + _mor.getPresetParams() + ", ovfFilePath: " + ovfFilePath + ", vmName: " + vmName
+ + ", datastore: " + dsMo.getMor().getPresetParams() + ", diskOption: " + diskOption);
ManagedObjectReference morRp = getHyperHostOwnerResourcePool();
assert(morRp != null);
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - importVmFromOVF(). resource pool: " + morRp.getValue());
+ s_logger.trace("vCenter API trace - importVmFromOVF(). resource pool: " + morRp.getPresetParams());
HypervisorHostHelper.importVmFromOVF(this, ovfFilePath, vmName, dsMo, diskOption, morRp, null);
@@ -272,9 +272,9 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
String guestOsIdentifier, ManagedObjectReference morDs, boolean snapshotDirToParent) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - createBlankVm(). target MOR: " + _mor.getValue() + ", vmName: " + vmName + ", cpuCount: " + cpuCount
+ s_logger.trace("vCenter API trace - createBlankVm(). target MOR: " + _mor.getPresetParams() + ", vmName: " + vmName + ", cpuCount: " + cpuCount
+ ", cpuSpeedMhz: " + cpuSpeedMHz + ", cpuReservedMHz: " + cpuReservedMHz + ", limitCpu: " + limitCpuUse + ", memoryMB: " + memoryMB
- + ", guestOS: " + guestOsIdentifier + ", datastore: " + morDs.getValue() + ", snapshotDirToParent: " + snapshotDirToParent);
+ + ", guestOS: " + guestOsIdentifier + ", datastore: " + morDs.getPresetParams() + ", snapshotDirToParent: " + snapshotDirToParent);
boolean result = HypervisorHostHelper.createBlankVm(this, vmName, cpuCount, cpuSpeedMHz, cpuReservedMHz, limitCpuUse,
memoryMB, memoryReserveMB, guestOsIdentifier, morDs, snapshotDirToParent);
@@ -290,7 +290,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
int poolHostPort, String poolPath, String poolUuid) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - mountDatastore(). target MOR: " + _mor.getValue() + ", vmfs: " + vmfsDatastore + ", poolHost: " + poolHostAddress
+ s_logger.trace("vCenter API trace - mountDatastore(). target MOR: " + _mor.getPresetParams() + ", vmfs: " + vmfsDatastore + ", poolHost: " + poolHostAddress
+ ", poolHostPort: " + poolHostPort + ", poolPath: " + poolPath + ", poolUuid: " + poolUuid);
ManagedObjectReference morDs = null;
@@ -304,7 +304,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
morDsFirst = morDs;
// assume datastore is in scope of datacenter
- assert(morDsFirst.getValue().equals(morDs.getValue()));
+ assert(morDsFirst.getPresetParams().equals(morDs.getPresetParams()));
}
}
@@ -326,7 +326,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public void unmountDatastore(String poolUuid) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - unmountDatastore(). target MOR: " + _mor.getValue() + ", poolUuid: " + poolUuid);
+ s_logger.trace("vCenter API trace - unmountDatastore(). target MOR: " + _mor.getPresetParams() + ", poolUuid: " + poolUuid);
List<ManagedObjectReference> hosts = (List<ManagedObjectReference>)_context.getVimClient().getDynamicProperty(_mor, "host");
if(hosts != null && hosts.size() > 0) {
@@ -344,7 +344,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
public ManagedObjectReference findDatastore(String poolUuid) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - findDatastore(). target MOR: " + _mor.getValue() + ", poolUuid: " + poolUuid);
+ s_logger.trace("vCenter API trace - findDatastore(). target MOR: " + _mor.getPresetParams() + ", poolUuid: " + poolUuid);
CustomFieldsManagerMO cfmMo = new CustomFieldsManagerMO(_context,
_context.getServiceContent().getCustomFieldsManager());
@@ -361,7 +361,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
DynamicProperty prop = oc.getPropSet().get(1);
if(prop != null && prop.getVal() != null) {
if(prop.getVal() instanceof CustomFieldStringValue) {
- String val = ((CustomFieldStringValue)prop.getVal()).getValue();
+ String val = ((CustomFieldStringValue)prop.getVal()).getPresetParams();
if(val.equalsIgnoreCase(poolUuid)) {
if(s_logger.isTraceEnabled())
@@ -382,7 +382,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ManagedObjectReference findDatastoreByExportPath(String exportPath) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - findDatastoreByExportPath(). target MOR: " + _mor.getValue() + ", exportPath: " + exportPath);
+ s_logger.trace("vCenter API trace - findDatastoreByExportPath(). target MOR: " + _mor.getPresetParams() + ", exportPath: " + exportPath);
ObjectContent[] ocs = getDatastorePropertiesOnHyperHost(new String[] {"info"});
if(ocs != null && ocs.length > 0) {
@@ -415,7 +415,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ManagedObjectReference findMigrationTarget(VirtualMachineMO vmMo) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - findMigrationTarget(). target MOR: " + _mor.getValue() + ", vm: " + vmMo.getName());
+ s_logger.trace("vCenter API trace - findMigrationTarget(). target MOR: " + _mor.getPresetParams() + ", vm: " + vmMo.getName());
List<ClusterHostRecommendation> candidates = recommendHostsForVm(vmMo);
if(candidates != null && candidates.size() > 0) {
@@ -464,7 +464,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public VmwareHypervisorHostResourceSummary getHyperHostResourceSummary() throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - getHyperHostResourceSummary(). target MOR: " + _mor.getValue());
+ s_logger.trace("vCenter API trace - getHyperHostResourceSummary(). target MOR: " + _mor.getPresetParams());
VmwareHypervisorHostResourceSummary summary = new VmwareHypervisorHostResourceSummary();
@@ -496,7 +496,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
public VmwareHypervisorHostNetworkSummary getHyperHostNetworkSummary(String esxServiceConsolePort) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - getHyperHostNetworkSummary(). target MOR: " + _mor.getValue() + ", mgmtPortgroup: " + esxServiceConsolePort);
+ s_logger.trace("vCenter API trace - getHyperHostNetworkSummary(). target MOR: " + _mor.getPresetParams() + ", mgmtPortgroup: " + esxServiceConsolePort);
List<ManagedObjectReference> hosts = (List<ManagedObjectReference>)_context.getVimClient().getDynamicProperty(_mor, "host");
if(hosts != null && hosts.size() > 0) {
@@ -515,7 +515,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ComputeResourceSummary getHyperHostHardwareSummary() throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - getHyperHostHardwareSummary(). target MOR: " + _mor.getValue());
+ s_logger.trace("vCenter API trace - getHyperHostHardwareSummary(). target MOR: " + _mor.getPresetParams());
ClusterComputeResourceSummary hardwareSummary = (ClusterComputeResourceSummary)
_context.getVimClient().getDynamicProperty(_mor, "summary");
@@ -562,7 +562,7 @@ public class ClusterMO extends BaseMO implements VmwareHypervisorHost {
name = (String)objProp.getVal();
} else {
OptionValue optValue = (OptionValue)objProp.getVal();
- value = (String)optValue.getValue();
+ value = (String)optValue.getPresetParams();
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
index 0a3e20b..0f7bb3a 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/DatacenterMO.java
@@ -117,7 +117,7 @@ public class DatacenterMO extends BaseMO {
break; // break out inner loop
}
} else if(prop.getVal() instanceof CustomFieldStringValue) {
- String val = ((CustomFieldStringValue)prop.getVal()).getValue();
+ String val = ((CustomFieldStringValue)prop.getVal()).getPresetParams();
if(val.equals(vmLabel)) {
list.add(new VirtualMachineMO(_context, oc.getObj()));
break; // break out inner loop
@@ -451,7 +451,7 @@ public class DatacenterMO extends BaseMO {
dvSwitchMor = (ManagedObjectReference) prop.getVal();
}
}
- if ((dvPortGroupKey != null) && dvPortGroupKey.equals(dvPortGroupMor.getValue())) {
+ if ((dvPortGroupKey != null) && dvPortGroupKey.equals(dvPortGroupMor.getPresetParams())) {
return dvSwitchMor;
}
}
@@ -474,7 +474,7 @@ public class DatacenterMO extends BaseMO {
ManagedObjectReference dvsMor = getDvSwitchMor(networkInfo.first());
String dvSwitchUuid = getDvSwitchUuid(dvsMor);
dvPortConnection.setSwitchUuid(dvSwitchUuid);
- dvPortConnection.setPortgroupKey(networkInfo.first().getValue());
+ dvPortConnection.setPortgroupKey(networkInfo.first().getPresetParams());
dvPortBacking.setPort(dvPortConnection);
System.out.println("Plugging NIC device into network " + networkInfo.second() + " backed by dvSwitch: "
+ dvSwitchUuid);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreBrowserMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreBrowserMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreBrowserMO.java
index 59e754c..a9d2205 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreBrowserMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreBrowserMO.java
@@ -37,7 +37,7 @@ public class HostDatastoreBrowserMO extends BaseMO {
public void DeleteFile(String datastoreFullPath) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - deleteFile(). target mor: " + _mor.getValue() + ", file datastore path: " + datastoreFullPath);
+ s_logger.trace("vCenter API trace - deleteFile(). target mor: " + _mor.getPresetParams() + ", file datastore path: " + datastoreFullPath);
_context.getService().deleteFile(_mor, datastoreFullPath);
@@ -47,7 +47,7 @@ public class HostDatastoreBrowserMO extends BaseMO {
public HostDatastoreBrowserSearchResults searchDatastore(String datastorePath, HostDatastoreBrowserSearchSpec searchSpec) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - searchDatastore(). target mor: " + _mor.getValue() + ", file datastore path: " + datastorePath);
+ s_logger.trace("vCenter API trace - searchDatastore(). target mor: " + _mor.getPresetParams() + ", file datastore path: " + datastorePath);
try {
ManagedObjectReference morTask = _context.getService().searchDatastoreTask(_mor, datastorePath, searchSpec);
@@ -78,7 +78,7 @@ public class HostDatastoreBrowserMO extends BaseMO {
public HostDatastoreBrowserSearchResults searchDatastoreSubFolders(String datastorePath, HostDatastoreBrowserSearchSpec searchSpec) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - searchDatastoreSubFolders(). target mor: " + _mor.getValue() + ", file datastore path: " + datastorePath);
+ s_logger.trace("vCenter API trace - searchDatastoreSubFolders(). target mor: " + _mor.getPresetParams() + ", file datastore path: " + datastorePath);
try {
ManagedObjectReference morTask = _context.getService().searchDatastoreSubFoldersTask(_mor, datastorePath, searchSpec);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreSystemMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreSystemMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreSystemMO.java
index 3dcd724..898e82b 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreSystemMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostDatastoreSystemMO.java
@@ -63,7 +63,7 @@ public class HostDatastoreSystemMO extends BaseMO {
DynamicProperty prop = oc.getPropSet().get(1);
if(prop != null && prop.getVal() != null) {
if(prop.getVal() instanceof CustomFieldStringValue) {
- String val = ((CustomFieldStringValue)prop.getVal()).getValue();
+ String val = ((CustomFieldStringValue)prop.getVal()).getPresetParams();
if(val.equalsIgnoreCase(name))
return oc.getObj();
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
index a866fdc..a228fc3 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HostMO.java
@@ -544,7 +544,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
name = (String)objProp.getVal();
} else {
OptionValue optValue = (OptionValue)objProp.getVal();
- value = (String)optValue.getValue();
+ value = (String)optValue.getPresetParams();
}
}
@@ -561,7 +561,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ObjectContent[] getVmPropertiesOnHyperHost(String[] propertyPaths) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - retrieveProperties() for VM properties. target MOR: " + _mor.getValue() + ", properties: " + new Gson().toJson(propertyPaths));
+ s_logger.trace("vCenter API trace - retrieveProperties() for VM properties. target MOR: " + _mor.getPresetParams() + ", properties: " + new Gson().toJson(propertyPaths));
PropertySpec pSpec = new PropertySpec();
pSpec.setType("VirtualMachine");
@@ -594,7 +594,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ObjectContent[] getDatastorePropertiesOnHyperHost(String[] propertyPaths) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - retrieveProperties() on Datastore properties. target MOR: " + _mor.getValue() + ", properties: " + new Gson().toJson(propertyPaths));
+ s_logger.trace("vCenter API trace - retrieveProperties() on Datastore properties. target MOR: " + _mor.getPresetParams() + ", properties: " + new Gson().toJson(propertyPaths));
PropertySpec pSpec = new PropertySpec();
pSpec.setType("Datastore");
@@ -628,7 +628,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
List<Pair<ManagedObjectReference, String>> mounts = new ArrayList<Pair<ManagedObjectReference, String>>();
ObjectContent[] ocs = getDatastorePropertiesOnHyperHost(new String[] {
- String.format("host[\"%s\"].mountInfo.path", _mor.getValue()) });
+ String.format("host[\"%s\"].mountInfo.path", _mor.getPresetParams()) });
if(ocs != null) {
for(ObjectContent oc : ocs) {
Pair<ManagedObjectReference, String> mount = new Pair<ManagedObjectReference, String>(
@@ -659,7 +659,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
public void importVmFromOVF(String ovfFilePath, String vmName, String datastoreName, String diskOption) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - importVmFromOVF(). target MOR: " + _mor.getValue() + ", ovfFilePath: " + ovfFilePath + ", vmName: " + vmName
+ s_logger.trace("vCenter API trace - importVmFromOVF(). target MOR: " + _mor.getPresetParams() + ", ovfFilePath: " + ovfFilePath + ", vmName: " + vmName
+ ",datastoreName: " + datastoreName + ", diskOption: " + diskOption);
DatastoreMO dsMo = getHostDatastoreMO(datastoreName);
@@ -686,9 +686,9 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
String guestOsIdentifier, ManagedObjectReference morDs, boolean snapshotDirToParent) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - createBlankVm(). target MOR: " + _mor.getValue() + ", vmName: " + vmName + ", cpuCount: " + cpuCount
+ s_logger.trace("vCenter API trace - createBlankVm(). target MOR: " + _mor.getPresetParams() + ", vmName: " + vmName + ", cpuCount: " + cpuCount
+ ", cpuSpeedMhz: " + cpuSpeedMHz + ", cpuReservedMHz: " + cpuReservedMHz + ", limitCpu: " + limitCpuUse + ", memoryMB: " + memoryMB
- + ", guestOS: " + guestOsIdentifier + ", datastore: " + morDs.getValue() + ", snapshotDirToParent: " + snapshotDirToParent);
+ + ", guestOS: " + guestOsIdentifier + ", datastore: " + morDs.getPresetParams() + ", snapshotDirToParent: " + snapshotDirToParent);
boolean result = HypervisorHostHelper.createBlankVm(this, vmName, cpuCount, cpuSpeedMHz, cpuReservedMHz, limitCpuUse,
memoryMB, memoryReserveMB, guestOsIdentifier, morDs, snapshotDirToParent);
@@ -736,7 +736,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
int poolHostPort, String poolPath, String poolUuid) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - mountDatastore(). target MOR: " + _mor.getValue() + ", vmfs: " + vmfsDatastore + ", poolHost: " + poolHostAddress
+ s_logger.trace("vCenter API trace - mountDatastore(). target MOR: " + _mor.getPresetParams() + ", vmfs: " + vmfsDatastore + ", poolHost: " + poolHostAddress
+ ", poolHostPort: " + poolHostPort + ", poolPath: " + poolPath + ", poolUuid: " + poolUuid);
HostDatastoreSystemMO hostDatastoreSystemMo = getHostDatastoreSystemMO();
@@ -751,7 +751,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
poolUuid);
} catch (AlreadyExistsFaultMsg e) {
s_logger.info("Creation of NFS datastore on vCenter failed since datastore already exists." +
- " Details: vCenter API trace - mountDatastore(). target MOR: " + _mor.getValue() + ", vmfs: " +
+ " Details: vCenter API trace - mountDatastore(). target MOR: " + _mor.getPresetParams() + ", vmfs: " +
vmfsDatastore + ", poolHost: " + poolHostAddress + ", poolHostPort: " + poolHostPort +
", poolPath: " + poolPath + ", poolUuid: " + poolUuid);
// Retrieve the morDatastore and return it.
@@ -759,7 +759,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
poolHostPort, poolPath, poolUuid, hostDatastoreSystemMo));
} catch (Exception e) {
s_logger.info("Creation of NFS datastore on vCenter failed. " +
- " Details: vCenter API trace - mountDatastore(). target MOR: " + _mor.getValue() + ", vmfs: " +
+ " Details: vCenter API trace - mountDatastore(). target MOR: " + _mor.getPresetParams() + ", vmfs: " +
vmfsDatastore + ", poolHost: " + poolHostAddress + ", poolHostPort: " + poolHostPort +
", poolPath: " + poolPath + ", poolUuid: " + poolUuid + ". Exception mesg: " + e.getMessage());
throw new Exception("Creation of NFS datastore on vCenter failed.");
@@ -800,7 +800,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
public void unmountDatastore(String poolUuid) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - unmountDatastore(). target MOR: " + _mor.getValue() + ", poolUuid: " + poolUuid);
+ s_logger.trace("vCenter API trace - unmountDatastore(). target MOR: " + _mor.getPresetParams() + ", poolUuid: " + poolUuid);
HostDatastoreSystemMO hostDatastoreSystemMo = getHostDatastoreSystemMO();
if(!hostDatastoreSystemMo.deleteDatastore(poolUuid)) {
@@ -836,7 +836,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
@Override
public VmwareHypervisorHostResourceSummary getHyperHostResourceSummary() throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - getHyperHostResourceSummary(). target MOR: " + _mor.getValue());
+ s_logger.trace("vCenter API trace - getHyperHostResourceSummary(). target MOR: " + _mor.getPresetParams());
VmwareHypervisorHostResourceSummary summary = new VmwareHypervisorHostResourceSummary();
@@ -854,7 +854,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
@Override
public VmwareHypervisorHostNetworkSummary getHyperHostNetworkSummary(String managementPortGroup) throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - getHyperHostNetworkSummary(). target MOR: " + _mor.getValue() + ", mgmtPortgroup: " + managementPortGroup);
+ s_logger.trace("vCenter API trace - getHyperHostNetworkSummary(). target MOR: " + _mor.getPresetParams() + ", mgmtPortgroup: " + managementPortGroup);
VmwareHypervisorHostNetworkSummary summary = new VmwareHypervisorHostNetworkSummary();
@@ -906,7 +906,7 @@ public class HostMO extends BaseMO implements VmwareHypervisorHost {
@Override
public ComputeResourceSummary getHyperHostHardwareSummary() throws Exception {
if(s_logger.isTraceEnabled())
- s_logger.trace("vCenter API trace - getHyperHostHardwareSummary(). target MOR: " + _mor.getValue());
+ s_logger.trace("vCenter API trace - getHyperHostHardwareSummary(). target MOR: " + _mor.getPresetParams());
//
// This is to adopt the model when using Cluster as a big host while ComputeResourceSummary is used
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5e6d2cf5/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
----------------------------------------------------------------------
diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
index 20f8478..7cabc8a 100755
--- a/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/mo/HypervisorHostHelper.java
@@ -746,9 +746,9 @@ public class HypervisorHostHelper {
averageBandwidth.setValue((long) networkRateMbps.intValue() * 1024L * 1024L);
// We chose 50% higher allocation than average bandwidth.
// TODO(sateesh): Also let user specify the peak coefficient
- peakBandwidth.setValue((long) (averageBandwidth.getValue() * 1.5));
+ peakBandwidth.setValue((long) (averageBandwidth.getPresetParams() * 1.5));
// TODO(sateesh): Also let user specify the burst coefficient
- burstSize.setValue((long) (5 * averageBandwidth.getValue() / 8));
+ burstSize.setValue((long) (5 * averageBandwidth.getPresetParams() / 8));
shapingPolicy.setEnabled(isEnabled);
shapingPolicy.setAverageBandwidth(averageBandwidth);
@@ -892,14 +892,14 @@ public class HypervisorHostHelper {
ManagedObjectReference morParent = hostMo.getParentMor();
if(morParent != null && morParent.getType().equals("ClusterComputeResource")) {
// to be conservative, lock cluster
- GlobalLock lock = GlobalLock.getInternLock("ClusterLock." + morParent.getValue());
+ GlobalLock lock = GlobalLock.getInternLock("ClusterLock." + morParent.getPresetParams());
try {
if(lock.lock(DEFAULT_LOCK_TIMEOUT_SECONDS)) {
try {
List<ManagedObjectReference> hosts = (List<ManagedObjectReference>)hostMo.getContext().getVimClient().getDynamicProperty(morParent, "host");
if(hosts != null) {
for(ManagedObjectReference otherHost: hosts) {
- if(!otherHost.getValue().equals(hostMo.getMor().getValue())) {
+ if(!otherHost.getPresetParams().equals(hostMo.getMor().getPresetParams())) {
HostMO otherHostMo = new HostMO(hostMo.getContext(), otherHost);
try {
if(s_logger.isDebugEnabled())
[3/3] git commit: updated refs/heads/vmsync to ebbd400
Posted by ah...@apache.org.
zone creation complete once more
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ebbd4008
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ebbd4008
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ebbd4008
Branch: refs/heads/vmsync
Commit: ebbd4008ad779fb0f296d1f6c1c8d31a821023eb
Parents: 5e6d2cf
Author: Alex Huang <al...@gmail.com>
Authored: Fri Jun 7 18:15:55 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Fri Jun 7 18:15:55 2013 -0700
----------------------------------------------------------------------
api/src/com/cloud/agent/api/to/NetworkTO.java | 4 +-
api/src/com/cloud/agent/api/to/NicTO.java | 10 +-
api/src/com/cloud/deploy/DataCenterDeployment.java | 1 +
.../cloudstack/api/response/AsyncJobResponse.java | 8 --
.../cloudstack/api/response/SystemVmResponse.java | 8 +--
.../org/apache/cloudstack/context/CallContext.java | 59 ++++++++-------
core/src/com/cloud/agent/api/StopAnswer.java | 7 --
.../org/apache/cloudstack/vm/jobs/VmWorkJobVO.java | 7 +-
.../apache/cloudstack/framework/jobs/AsyncJob.java | 2 +
.../cloudstack/framework/jobs/impl/AsyncJobVO.java | 18 ++++-
.../hypervisor/kvm/resource/OvsVifDriver.java | 2 +-
.../xen/resource/CitrixResourceBase.java | 4 +-
.../cloud/network/resource/MidoNetVifDriver.java | 2 +-
.../src/com/cloud/api/ApiAsyncJobDispatcher.java | 2 +-
server/src/com/cloud/api/ApiServer.java | 2 +-
server/src/com/cloud/api/ApiServlet.java | 4 +-
.../com/cloud/hypervisor/HypervisorGuruBase.java | 2 +-
.../src/com/cloud/network/NetworkManagerImpl.java | 2 +-
.../router/VirtualNetworkApplianceManagerImpl.java | 2 +-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 12 ++-
server/src/com/cloud/vm/VmWorkJobDispatcher.java | 2 +-
server/test/com/cloud/vm/VmWorkTest.java | 31 ++++----
.../com/cloud/vm/VmWorkTestApiJobDispatcher.java | 2 +-
server/test/com/cloud/vm/dao/VmDaoTest.java | 15 ++--
setup/db/db/schema-410to420.sql | 2 +
utils/src/com/cloud/utils/db/GenericDaoBase.java | 11 ++-
26 files changed, 117 insertions(+), 104 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/api/src/com/cloud/agent/api/to/NetworkTO.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/agent/api/to/NetworkTO.java b/api/src/com/cloud/agent/api/to/NetworkTO.java
index 3edd4c0..4790c91 100644
--- a/api/src/com/cloud/agent/api/to/NetworkTO.java
+++ b/api/src/com/cloud/agent/api/to/NetworkTO.java
@@ -42,11 +42,11 @@ public class NetworkTO {
public NetworkTO() {
}
- public String getUuid() {
+ public String getNicUuid() {
return uuid;
}
- public void setUuid(String uuid) {
+ public void setNicUuid(String uuid) {
this.uuid = uuid;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/api/src/com/cloud/agent/api/to/NicTO.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/agent/api/to/NicTO.java b/api/src/com/cloud/agent/api/to/NicTO.java
index ccebe11..29f04ae 100644
--- a/api/src/com/cloud/agent/api/to/NicTO.java
+++ b/api/src/com/cloud/agent/api/to/NicTO.java
@@ -23,7 +23,7 @@ public class NicTO extends NetworkTO {
Integer networkRateMbps;
Integer networkRateMulticastMbps;
boolean defaultNic;
- String uuid;
+ String nicUuid;
List <String> nicSecIps;
public NicTO() {
@@ -59,13 +59,13 @@ public class NicTO extends NetworkTO {
}
@Override
- public String getUuid() {
- return uuid;
+ public String getNicUuid() {
+ return nicUuid;
}
@Override
- public void setUuid(String uuid) {
- this.uuid = uuid;
+ public void setNicUuid(String uuid) {
+ this.nicUuid = uuid;
}
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/api/src/com/cloud/deploy/DataCenterDeployment.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/deploy/DataCenterDeployment.java b/api/src/com/cloud/deploy/DataCenterDeployment.java
index d709ce7..b17bae1 100644
--- a/api/src/com/cloud/deploy/DataCenterDeployment.java
+++ b/api/src/com/cloud/deploy/DataCenterDeployment.java
@@ -54,6 +54,7 @@ public class DataCenterDeployment implements DeploymentPlan {
_poolId = poolId;
_physicalNetworkId = physicalNetworkId;
_context = context;
+ _avoids = new ExcludeList();
}
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/api/src/org/apache/cloudstack/api/response/AsyncJobResponse.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/response/AsyncJobResponse.java b/api/src/org/apache/cloudstack/api/response/AsyncJobResponse.java
index dadcf6c..622c7c0 100644
--- a/api/src/org/apache/cloudstack/api/response/AsyncJobResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/AsyncJobResponse.java
@@ -40,9 +40,6 @@ public class AsyncJobResponse extends BaseResponse {
@SerializedName("cmd") @Param(description="the async command executed")
private String cmd;
- @SerializedName("jobstatus") @Param(description="the current job status-should be 0 for PENDING")
- private Integer jobStatus;
-
@SerializedName("jobprocstatus") @Param(description="the progress information of the PENDING job")
private Integer jobProcStatus;
@@ -76,11 +73,6 @@ public class AsyncJobResponse extends BaseResponse {
this.cmd = cmd;
}
- @Override
- public void setJobStatus(Integer jobStatus) {
- this.jobStatus = jobStatus;
- }
-
public void setJobProcStatus(Integer jobProcStatus) {
this.jobProcStatus = jobProcStatus;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/api/src/org/apache/cloudstack/api/response/SystemVmResponse.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/response/SystemVmResponse.java b/api/src/org/apache/cloudstack/api/response/SystemVmResponse.java
index aff5534..3f1d955 100644
--- a/api/src/org/apache/cloudstack/api/response/SystemVmResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/SystemVmResponse.java
@@ -35,12 +35,6 @@ public class SystemVmResponse extends BaseResponse {
@SerializedName("systemvmtype") @Param(description="the system VM type")
private String systemVmType;
- @SerializedName("jobid") @Param(description="the job ID associated with the system VM. This is only displayed if the router listed is part of a currently running asynchronous job.")
- private String jobId;
-
- @SerializedName("jobstatus") @Param(description="the job status associated with the system VM. This is only displayed if the router listed is part of a currently running asynchronous job.")
- private Integer jobStatus;
-
@SerializedName("zoneid") @Param(description="the Zone ID for the system VM")
private String zoneId;
@@ -119,7 +113,7 @@ public class SystemVmResponse extends BaseResponse {
@Override
public String getObjectId() {
- return this.getId();
+ return getId();
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/api/src/org/apache/cloudstack/context/CallContext.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/context/CallContext.java b/api/src/org/apache/cloudstack/context/CallContext.java
index c804c87..6610896 100644
--- a/api/src/org/apache/cloudstack/context/CallContext.java
+++ b/api/src/org/apache/cloudstack/context/CallContext.java
@@ -18,6 +18,7 @@ package org.apache.cloudstack.context;
import java.util.HashMap;
import java.util.Map;
+import java.util.UUID;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
@@ -26,6 +27,7 @@ import com.cloud.dao.EntityManager;
import com.cloud.exception.CloudAuthenticationException;
import com.cloud.user.Account;
import com.cloud.user.User;
+import com.cloud.utils.UuidUtils;
import com.cloud.utils.exception.CloudRuntimeException;
/**
@@ -37,7 +39,7 @@ public class CallContext {
private static final Logger s_logger = Logger.getLogger(CallContext.class);
private static ThreadLocal<CallContext> s_currentContext = new ThreadLocal<CallContext>();
- private String sessionId;
+ private String contextId;
private Account account;
private long startEventId = 0;
private String eventDetails;
@@ -53,10 +55,10 @@ public class CallContext {
public CallContext() {
}
- protected CallContext(User user, Account account, String sessionId) {
+ protected CallContext(User user, Account account, String contextId) {
this.user = user;
this.account = account;
- this.sessionId = sessionId;
+ this.contextId = contextId;
}
public void putContextParameter(String key, Object value) {
@@ -75,8 +77,8 @@ public class CallContext {
return user;
}
- public String getSessionId() {
- return sessionId;
+ public String getContextId() {
+ return contextId;
}
public Account getCallingAccount() {
@@ -87,17 +89,18 @@ public class CallContext {
return s_currentContext.get();
}
- public static CallContext register(User callingUser, Account callingAccount, String sessionId) {
+ public static CallContext register(User callingUser, Account callingAccount, String contextId) {
assert s_currentContext.get() == null : "There's a context already so what does this new register context mean? " + s_currentContext.get().toString();
if (s_currentContext.get() != null) { // FIXME: This should be removed soon. I added this check only to surface all the places that have this problem.
throw new CloudRuntimeException("There's a context already so what does this new register context mean? " + s_currentContext.get().toString());
}
- CallContext callingContext = new CallContext(callingUser, callingAccount, sessionId);
- s_currentContext.set(callingContext);
- if (sessionId != null) {
- NDC.push("job-" + sessionId);
+ if (contextId == null) {
+ contextId = UUID.randomUUID().toString();
}
- s_logger.debug("Setting calling context: " + s_currentContext.get());
+ CallContext callingContext = new CallContext(callingUser, callingAccount, contextId);
+ s_currentContext.set(callingContext);
+ NDC.push("ctx-" + UuidUtils.first(contextId));
+ s_logger.debug("Setting calling context: " + callingContext);
return callingContext;
}
@@ -111,7 +114,7 @@ public class CallContext {
return context;
}
- public static CallContext register(String callingUserUuid, String callingAccountUuid, String sessionId) {
+ public static CallContext register(String callingUserUuid, String callingAccountUuid, String contextId) {
Account account = s_entityMgr.findByUuid(Account.class, callingAccountUuid);
if (account == null) {
throw new CloudAuthenticationException("The account is no longer current.").add(Account.class, callingAccountUuid);
@@ -121,10 +124,10 @@ public class CallContext {
if (user == null) {
throw new CloudAuthenticationException("The user is no longer current.").add(User.class, callingUserUuid);
}
- return register(user, account, sessionId);
+ return register(user, account, contextId);
}
- public static CallContext register(long callingUserId, long callingAccountId, String sessionId) throws CloudAuthenticationException {
+ public static CallContext register(long callingUserId, long callingAccountId, String contextId) throws CloudAuthenticationException {
Account account = s_entityMgr.findById(Account.class, callingAccountId);
if (account == null) {
throw new CloudAuthenticationException("The account is no longer current.").add(Account.class, Long.toString(callingAccountId));
@@ -133,15 +136,15 @@ public class CallContext {
if (user == null) {
throw new CloudAuthenticationException("The user is no longer current.").add(User.class, Long.toString(callingUserId));
}
- return register(user, account, sessionId);
+ return register(user, account, contextId);
}
- public static CallContext register(long callingUserId, Account callingAccount, String sessionId, boolean apiServer) {
+ public static CallContext register(long callingUserId, Account callingAccount, String contextId, boolean apiServer) {
User user = s_entityMgr.findById(User.class, callingUserId);
if (user == null) {
throw new CloudAuthenticationException("The user is no longer current.").add(User.class, Long.toString(callingUserId));
}
- return register(user, callingAccount, sessionId);
+ return register(user, callingAccount, contextId);
}
public static CallContext unregister() {
@@ -152,17 +155,15 @@ public class CallContext {
}
s_currentContext.remove();
s_logger.debug("Context removed " + context);
- String sessionId = context.getSessionId();
- if (sessionId != null) {
- String sessionIdOnStack = null;
- String sessionIdPushedToNDC = "job-" + sessionId;
- while ((sessionIdOnStack = NDC.pop()) != null) {
- if (sessionIdPushedToNDC.equals(sessionIdOnStack)) {
- break;
- }
- if (s_logger.isTraceEnabled()) {
- s_logger.trace("Popping from NDC: " + sessionId);
- }
+ String contextId = context.getContextId();
+ String sessionIdOnStack = null;
+ String sessionIdPushedToNDC = "ctx-" + UuidUtils.first(contextId);
+ while ((sessionIdOnStack = NDC.pop()) != null) {
+ if (sessionIdPushedToNDC.equals(sessionIdOnStack)) {
+ break;
+ }
+ if (s_logger.isTraceEnabled()) {
+ s_logger.trace("Popping from NDC: " + contextId);
}
}
return context;
@@ -200,7 +201,7 @@ public class CallContext {
public String toString() {
return new StringBuffer("CallContext[acct=").append(account.getId())
.append("; user=").append(user.getId())
- .append("; session=").append(sessionId)
+ .append("; session=").append(contextId)
.append("]").toString();
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/core/src/com/cloud/agent/api/StopAnswer.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/StopAnswer.java b/core/src/com/cloud/agent/api/StopAnswer.java
index 1111fed..034534a 100755
--- a/core/src/com/cloud/agent/api/StopAnswer.java
+++ b/core/src/com/cloud/agent/api/StopAnswer.java
@@ -17,8 +17,6 @@
package com.cloud.agent.api;
public class StopAnswer extends RebootAnswer {
- Integer vncPort;
-
protected StopAnswer() {
}
@@ -37,9 +35,4 @@ public class StopAnswer extends RebootAnswer {
super(cmd, e);
}
- @Override
- public Integer getVncPort() {
- return vncPort;
- }
-
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java b/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
index f4dd395..ca52263 100644
--- a/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
+++ b/engine/schema/src/org/apache/cloudstack/vm/jobs/VmWorkJobVO.java
@@ -27,7 +27,6 @@ import javax.persistence.Table;
import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO;
import com.cloud.vm.VirtualMachine;
-import com.cloud.vm.VirtualMachine.Type;
@Entity
@@ -56,7 +55,11 @@ public class VmWorkJobVO extends AsyncJobVO {
@Column(name="vm_instance_id")
long vmInstanceId;
- public VmWorkJobVO() {
+ protected VmWorkJobVO() {
+ }
+
+ public VmWorkJobVO(String related) {
+ setRelated(related);
}
public Step getStep() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/framework/jobs/src/org/apache/cloudstack/framework/jobs/AsyncJob.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/AsyncJob.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/AsyncJob.java
index 14d6479..8f52073 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/AsyncJob.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/AsyncJob.java
@@ -101,4 +101,6 @@ public interface AsyncJob extends Job {
SyncQueueItem getSyncSource();
void setSyncSource(SyncQueueItem item);
+
+ String getRelated();
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobVO.java
----------------------------------------------------------------------
diff --git a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobVO.java b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobVO.java
index bb7d872..13b0d12 100644
--- a/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobVO.java
+++ b/framework/jobs/src/org/apache/cloudstack/framework/jobs/impl/AsyncJobVO.java
@@ -71,6 +71,9 @@ public class AsyncJobVO implements AsyncJob, Job {
@Column(name="job_cmd_ver")
private int cmdVersion;
+ @Column(name = "related")
+ private String related;
+
@Column(name="job_cmd_info", length=65535)
private String cmdInfo;
@@ -123,14 +126,16 @@ public class AsyncJobVO implements AsyncJob, Job {
public AsyncJobVO() {
uuid = UUID.randomUUID().toString();
+ related = UUID.randomUUID().toString();
}
- public AsyncJobVO(String uuid, long userId, long accountId, String cmd, String cmdInfo, Long instanceId, String instanceType) {
+ public AsyncJobVO(String related, long userId, long accountId, String cmd, String cmdInfo, Long instanceId, String instanceType) {
this.userId = userId;
this.accountId = accountId;
this.cmd = cmd;
this.cmdInfo = cmdInfo;
- this.uuid = uuid;
+ uuid = UUID.randomUUID().toString();
+ this.related = related;
this.instanceId = instanceId;
this.instanceType = instanceType;
}
@@ -149,6 +154,15 @@ public class AsyncJobVO implements AsyncJob, Job {
return UuidUtils.first(uuid);
}
+ public void setRelated(String related) {
+ this.related = related;
+ }
+
+ @Override
+ public String getRelated() {
+ return related;
+ }
+
@Override
public String getType() {
return type;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
index eac3248..3f153a0 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
@@ -93,7 +93,7 @@ public class OvsVifDriver extends VifDriverBase {
}
} else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch) {
s_logger.debug("nic " + nic + " needs to be connected to LogicalSwitch " + logicalSwitchUuid);
- intf.setVirtualPortInterfaceId(nic.getUuid());
+ intf.setVirtualPortInterfaceId(nic.getNicUuid());
String brName = (trafficLabel != null && !trafficLabel.isEmpty()) ? _pifs.get(trafficLabel) : _pifs.get("private");
intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType));
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 8f6eb8d..03d86d7 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -1055,7 +1055,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
protected VIF createVif(Connection conn, String vmName, VM vm, NicTO nic) throws XmlRpcException, XenAPIException {
- assert(nic.getUuid() != null) : "Nic should have a uuid value";
+ assert(nic.getNicUuid() != null) : "Nic should have a uuid value";
if (s_logger.isDebugEnabled()) {
s_logger.debug("Creating VIF for " + vmName + " on nic " + nic);
@@ -1067,7 +1067,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
// Nicira needs these IDs to find the NIC
vifr.otherConfig = new HashMap<String, String>();
- vifr.otherConfig.put("nicira-iface-id", nic.getUuid());
+ vifr.otherConfig.put("nicira-iface-id", nic.getNicUuid());
vifr.otherConfig.put("nicira-vm-id", vm.getUuid(conn));
vifr.network = getNetwork(conn, nic);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/plugins/network-elements/midonet/src/com/cloud/network/resource/MidoNetVifDriver.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/midonet/src/com/cloud/network/resource/MidoNetVifDriver.java b/plugins/network-elements/midonet/src/com/cloud/network/resource/MidoNetVifDriver.java
index 3c7c23d..96f2549 100644
--- a/plugins/network-elements/midonet/src/com/cloud/network/resource/MidoNetVifDriver.java
+++ b/plugins/network-elements/midonet/src/com/cloud/network/resource/MidoNetVifDriver.java
@@ -145,7 +145,7 @@ public class MidoNetVifDriver extends VifDriverBase {
if (b.getName().equals(netName)) {
for (BridgePort p : b.getPorts()) {
UUID pvif = p.getVifId();
- if (pvif != null && p.getVifId().toString().equals(nic.getUuid())){
+ if (pvif != null && p.getVifId().toString().equals(nic.getNicUuid())){
getMyHost(api).addHostInterfacePort()
.interfaceName(tapName)
.portId(p.getId())
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/api/ApiAsyncJobDispatcher.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiAsyncJobDispatcher.java b/server/src/com/cloud/api/ApiAsyncJobDispatcher.java
index 081bcc1..c442559 100644
--- a/server/src/com/cloud/api/ApiAsyncJobDispatcher.java
+++ b/server/src/com/cloud/api/ApiAsyncJobDispatcher.java
@@ -87,7 +87,7 @@ public class ApiAsyncJobDispatcher extends AdapterBase implements AsyncJobDispat
accountObject = _accountDao.findById(Long.parseLong(acctIdStr));
}
- CallContext.register(userId, accountObject, "job-" + job.getShortUuid(), false);
+ CallContext.register(userId, accountObject, job.getRelated(), false);
try {
// dispatch could ultimately queue the job
_dispatcher.dispatch(cmdObj, params, true);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/api/ApiServer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java
index 2863803..11e873f 100755
--- a/server/src/com/cloud/api/ApiServer.java
+++ b/server/src/com/cloud/api/ApiServer.java
@@ -520,7 +520,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer
params.put("ctxStartEventId", String.valueOf(startEventId));
Long instanceId = (objectId == null) ? asyncCmd.getInstanceId() : objectId;
- AsyncJobVO job = new AsyncJobVO(ctx.getSessionId(), callerUserId, caller.getId(), cmdObj.getClass().getName(),
+ AsyncJobVO job = new AsyncJobVO(ctx.getContextId(), callerUserId, caller.getId(), cmdObj.getClass().getName(),
ApiGsonHelper.getBuilder().create().toJson(params), instanceId,
asyncCmd.getInstanceType() != null ? asyncCmd.getInstanceType().toString() : null);
job.setDispatcher(_asyncDispatcher.getName());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/api/ApiServlet.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiServlet.java b/server/src/com/cloud/api/ApiServlet.java
index 0ac002d..7afb797 100755
--- a/server/src/com/cloud/api/ApiServlet.java
+++ b/server/src/com/cloud/api/ApiServlet.java
@@ -266,7 +266,7 @@ public class ApiServlet extends HttpServlet {
writeResponse(resp, serializedResponse, HttpServletResponse.SC_BAD_REQUEST, responseType);
return;
}
- CallContext.register(userId, ((Account)accountObj).getId(), session.getId());
+ CallContext.register(userId, ((Account)accountObj).getId(), null);
} else {
// Invalidate the session to ensure we won't allow a request across management server
// restarts if the userId was serialized to the stored session
@@ -332,7 +332,7 @@ public class ApiServlet extends HttpServlet {
s_logger.debug("===END=== " + StringUtils.cleanString(reqStr));
}
// cleanup user context to prevent from being peeked in other request context ???
- CallContext.unregister();
+ CallContext.unregister();
} catch(Throwable e) {
s_logger.error("Really unexpected exception", e);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
index e18c164..80575da 100644
--- a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
+++ b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
@@ -73,7 +73,7 @@ public abstract class HypervisorGuruBase extends AdapterBase implements Hypervis
// Workaround to make sure the TO has the UUID we need for Niciri integration
NicVO nicVO = _nicDao.findById(profile.getId());
- to.setUuid(nicVO.getUuid());
+ to.setNicUuid(nicVO.getUuid());
//check whether the this nic has secondary ip addresses set
//set nic secondary ip address in NicTO which are used for security group
// configuration. Use full when vm stop/start
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index 69a39a3..4ce8c6d 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -1771,7 +1771,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L
Integer networkRate = _networkModel.getNetworkRate(config.getId(), null);
to.setNetworkRateMbps(networkRate);
- to.setUuid(config.getUuid());
+ to.setNicUuid(config.getUuid());
return to;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index ac61da9..df1687b 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -1282,7 +1282,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
@Override
public void run() {
try {
- CallContext.register(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, null);
+ CallContext.registerOnceOnly();
while (true) {
try {
Long networkId = _vrUpdateQueue.take();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index ec9c3dd..1774e1b 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -351,7 +351,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
@Override
public VirtualMachineGuru getVmGuru(VirtualMachine vm) {
- return _vmGurus.values().iterator().next();
+ return _vmGurus.get(vm.getType());
}
@Override
@@ -540,6 +540,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
RootVolumeSearch = _entityMgr.createSearchBuilder(VolumeVO.class);
VolumeVO rvsEntity = RootVolumeSearch.entity();
RootVolumeSearch.and(rvsEntity.getVolumeType(), SearchCriteria.Op.EQ).values(Volume.Type.ROOT)
+ .and(rvsEntity.getState(), SearchCriteria.Op.EQ).values(Volume.State.Ready)
.and(rvsEntity.getInstanceId(), SearchCriteria.Op.EQ, "instance")
.and(rvsEntity.getDeviceId(), SearchCriteria.Op.EQ).values(0)
.done();
@@ -761,7 +762,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
assert(pendingWorkJobs.size() == 1);
workJob = pendingWorkJobs.get(0);
} else {
- workJob = new VmWorkJobVO();
+ workJob = new VmWorkJobVO(context.getContextId());
workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkJobDispatcher.Start);
@@ -848,6 +849,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
if (vol.isRecreatable() && volTemplateId != null &&
vm.getTemplateId() != -1 && volTemplateId.longValue() != vm.getTemplateId()) {
job.log(s_logger, "Recreating" + vol + " of " + vm + " because its template has changed.");
+ plan.setPoolId(null);
} else {
StoragePool pool = (StoragePool)dataStoreMgr.getPrimaryDataStore(vol.getPoolId());
Long rootVolPodId = pool.getPodId();
@@ -1176,6 +1178,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
@Override
public void advanceStop(final String vmUuid, boolean forced, User user, Account account) throws ResourceUnavailableException,
OperationTimedoutException, ConcurrentOperationException {
+ CallContext context = CallContext.current();
final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
VmWorkJobVO workJob = null;
Transaction txn = Transaction.currentTxn();
@@ -1191,7 +1194,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
assert(pendingWorkJobs.size() == 1);
workJob = pendingWorkJobs.get(0);
} else {
- workJob = new VmWorkJobVO();
+ workJob = new VmWorkJobVO(context.getContextId());
workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
workJob.setCmd(VmWorkJobDispatcher.Stop);
@@ -1953,6 +1956,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
public VirtualMachine migrateWithStorage(String vmUuid, long srcHostId, long destHostId,
Map<VolumeVO, StoragePoolVO> volumeToPool) throws ResourceUnavailableException, ConcurrentOperationException,
ManagementServerException, VirtualMachineMigrationException {
+ CallContext context = CallContext.current();
VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
HostVO srcHost = _hostDao.findById(srcHostId);
@@ -1989,7 +1993,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType());
VirtualMachineTO to = hvGuru.implement(profile);
- VmWorkJobVO work = new VmWorkJobVO();
+ VmWorkJobVO work = new VmWorkJobVO(context.getContextId());
// VmWorkJobVO work = new VmWorkJobVO(UUID.randomUUID().toString(), _nodeId, State.Migrating, vm.getType(), vm.getId());
// work.setStep(Step.Prepare);
// work.setResourceType(ItWorkVO.ResourceType.Host);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/src/com/cloud/vm/VmWorkJobDispatcher.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VmWorkJobDispatcher.java b/server/src/com/cloud/vm/VmWorkJobDispatcher.java
index fa33ecd..dcb91d2 100644
--- a/server/src/com/cloud/vm/VmWorkJobDispatcher.java
+++ b/server/src/com/cloud/vm/VmWorkJobDispatcher.java
@@ -59,7 +59,7 @@ public class VmWorkJobDispatcher extends AdapterBase implements AsyncJobDispatch
work = (VmWork)ApiSerializerHelper.fromSerializedString(job.getCmdInfo());
assert(work != null);
- CallContext context = CallContext.register(work.getUserId(), work.getAccountId(), "job-" + job.getShortUuid());
+ CallContext.register(work.getUserId(), work.getAccountId(), job.getRelated());
VMInstanceVO vm = _instanceDao.findById(work.getVmId());
if (vm == null) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/test/com/cloud/vm/VmWorkTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VmWorkTest.java b/server/test/com/cloud/vm/VmWorkTest.java
index d236cc3..4a6ccb8 100644
--- a/server/test/com/cloud/vm/VmWorkTest.java
+++ b/server/test/com/cloud/vm/VmWorkTest.java
@@ -20,9 +20,12 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
+import java.util.UUID;
import javax.inject.Inject;
+import junit.framework.TestCase;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -32,7 +35,14 @@ import org.mockito.Mockito;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import junit.framework.TestCase;
+import com.google.gson.Gson;
+
+import org.apache.cloudstack.framework.jobs.AsyncJobManager;
+import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO;
+import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
+import org.apache.cloudstack.vm.jobs.VmWorkJobDao;
+import org.apache.cloudstack.vm.jobs.VmWorkJobVO;
+import org.apache.cloudstack.vm.jobs.VmWorkJobVO.Step;
import com.cloud.api.ApiSerializerHelper;
import com.cloud.cluster.ClusterManager;
@@ -45,14 +55,6 @@ import com.cloud.utils.LogUtils;
import com.cloud.utils.Predicate;
import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.db.Transaction;
-import com.google.gson.Gson;
-
-import org.apache.cloudstack.framework.jobs.AsyncJobManager;
-import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO;
-import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
-import org.apache.cloudstack.vm.jobs.VmWorkJobDao;
-import org.apache.cloudstack.vm.jobs.VmWorkJobVO;
-import org.apache.cloudstack.vm.jobs.VmWorkJobVO.Step;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:/VmWorkTestContext.xml")
@@ -90,10 +92,11 @@ public class VmWorkTest extends TestCase {
}
}
- @After
- public void tearDown() {
- Transaction.currentTxn().close();
- }
+ @Override
+ @After
+ public void tearDown() {
+ Transaction.currentTxn().close();
+ }
@Test
public void testDeployPlanSerialization() {
@@ -122,7 +125,7 @@ public class VmWorkTest extends TestCase {
}
public void testVmWorkDispatcher() {
- VmWorkJobVO workJob = new VmWorkJobVO();
+ VmWorkJobVO workJob = new VmWorkJobVO(UUID.randomUUID().toString());
workJob.setDispatcher("VmWorkJobDispatcher");
workJob.setCmd("doVmWorkStart");
workJob.setAccountId(1L);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/test/com/cloud/vm/VmWorkTestApiJobDispatcher.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VmWorkTestApiJobDispatcher.java b/server/test/com/cloud/vm/VmWorkTestApiJobDispatcher.java
index 064fab7..4e7d90c 100644
--- a/server/test/com/cloud/vm/VmWorkTestApiJobDispatcher.java
+++ b/server/test/com/cloud/vm/VmWorkTestApiJobDispatcher.java
@@ -54,7 +54,7 @@ public class VmWorkTestApiJobDispatcher extends AdapterBase implements AsyncJobD
}
}
- VmWorkJobVO workJob = new VmWorkJobVO();
+ VmWorkJobVO workJob = new VmWorkJobVO(job.getRelated());
workJob.setDispatcher("TestWorkJobDispatcher");
workJob.setCmd(VmWorkJobDispatcher.Start);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/server/test/com/cloud/vm/dao/VmDaoTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/dao/VmDaoTest.java b/server/test/com/cloud/vm/dao/VmDaoTest.java
index d981916..72c04b1 100644
--- a/server/test/com/cloud/vm/dao/VmDaoTest.java
+++ b/server/test/com/cloud/vm/dao/VmDaoTest.java
@@ -19,9 +19,13 @@ package com.cloud.vm.dao;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
+import java.util.UUID;
import javax.inject.Inject;
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -38,9 +42,6 @@ import com.cloud.vm.UserVmVO;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:/vmdaoTestContext.xml")
public class VmDaoTest extends TestCase {
@@ -76,11 +77,11 @@ public class VmDaoTest extends TestCase {
@Test
public void testPowerStateUpdate() {
- UserVmVO userVmInstance = new UserVmVO(1L, "Dummy", "DummyInstance",
+ UserVmVO userVmInstance = new UserVmVO(1L, "Dummy", "DummyInstance",
1L, HypervisorType.Any, 1L, true, false, 1L, 1L, 1L, null, null, null);
userVmDao.persist(userVmInstance);
- userVmInstance = new UserVmVO(2L, "Dummy2", "DummyInstance2",
+ userVmInstance = new UserVmVO(2L, "Dummy2", "DummyInstance2",
1L, HypervisorType.Any, 1L, true, false, 1L, 1L, 1L, null, null, null);
userVmDao.persist(userVmInstance);
@@ -147,7 +148,7 @@ public class VmDaoTest extends TestCase {
@Test
public void testVmWork() {
- VmWorkJobVO workJob = new VmWorkJobVO();
+ VmWorkJobVO workJob = new VmWorkJobVO(UUID.randomUUID().toString());
workJob.setAccountId(1);
workJob.setUserId(1L);
workJob.setCmd("StartVM");
@@ -158,7 +159,7 @@ public class VmDaoTest extends TestCase {
workJobDao.persist(workJob);
- VmWorkJobVO workJob2 = new VmWorkJobVO();
+ VmWorkJobVO workJob2 = new VmWorkJobVO(UUID.randomUUID().toString());
workJob2.setAccountId(1);
workJob2.setUserId(1L);
workJob2.setCmd("StopVM");
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index 6517cc4..0cf7356 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -83,6 +83,8 @@ CREATE TABLE `cloud`.`image_data_store` (
PRIMARY KEY(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ALTER TABLE `cloud`.`async_job` ADD COLUMN `related` CHAR(40) NOT NULL;
+
ALTER TABLE `cloud`.`vm_template` ADD COLUMN `image_data_store_id` bigint unsigned;
ALTER TABLE `cloud`.`service_offering` ADD COLUMN `is_volatile` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT 'true if the vm needs to be volatile, i.e., on every reboot of vm from API root disk is discarded and creates a new root disk';
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ebbd4008/utils/src/com/cloud/utils/db/GenericDaoBase.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/db/GenericDaoBase.java b/utils/src/com/cloud/utils/db/GenericDaoBase.java
index f0fc700..9e91ef6 100755
--- a/utils/src/com/cloud/utils/db/GenericDaoBase.java
+++ b/utils/src/com/cloud/utils/db/GenericDaoBase.java
@@ -68,7 +68,6 @@ import com.cloud.utils.DateUtil;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.Ternary;
-import com.cloud.utils.component.ComponentContext;
import com.cloud.utils.component.ComponentLifecycle;
import com.cloud.utils.component.ComponentLifecycleBase;
import com.cloud.utils.component.ComponentMethodInterceptable;
@@ -130,8 +129,8 @@ public abstract class GenericDaoBase<T, ID extends Serializable> extends Compone
protected Field[] _embeddedFields;
// This is private on purpose. Everyone should use createPartialSelectSql()
- private Pair<StringBuilder, Attribute[]> _partialSelectSql;
- private Pair<StringBuilder, Attribute[]> _partialQueryCacheSelectSql;
+ private final Pair<StringBuilder, Attribute[]> _partialSelectSql;
+ private final Pair<StringBuilder, Attribute[]> _partialQueryCacheSelectSql;
protected StringBuilder _discriminatorClause;
protected Map<String, Object> _discriminatorValues;
protected String _selectByIdSql;
@@ -178,6 +177,7 @@ public abstract class GenericDaoBase<T, ID extends Serializable> extends Compone
return builder;
}
+ @Override
public Map<String, Attribute> getAllAttributes() {
return _allAttributes;
}
@@ -351,7 +351,7 @@ public abstract class GenericDaoBase<T, ID extends Serializable> extends Compone
}
@Override
- public List<T> searchIncludingRemoved(SearchCriteria<T> sc, final Filter filter, final Boolean lock,
+ public List<T> searchIncludingRemoved(SearchCriteria<T> sc, final Filter filter, final Boolean lock,
final boolean cache, final boolean enable_query_cache) {
String clause = sc != null ? sc.getWhereClause() : null;
if (clause != null && clause.length() == 0) {
@@ -420,6 +420,9 @@ public abstract class GenericDaoBase<T, ID extends Serializable> extends Compone
@Override @SuppressWarnings("unchecked")
public <M> List<M> customSearchIncludingRemoved(SearchCriteria<M> sc, final Filter filter) {
+ if (sc.isSelectAll()) {
+ return (List<M>)searchIncludingRemoved((SearchCriteria<T>)sc, filter, null, false);
+ }
String clause = sc != null ? sc.getWhereClause() : null;
if (clause != null && clause.length() == 0) {
clause = null;