You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2015/04/28 13:18:37 UTC

[1/3] git commit: updated refs/heads/4.5 to ea7fd37

Repository: cloudstack
Updated Branches:
  refs/heads/4.5 681d8c051 -> ea7fd3778


CLOUDSTACK-8405: Restore VM results in deletion of data disk.
Dont evict template when a delete command has been sent to VMware resource for deletion of volume.

(cherry picked from commit f45e6b94edf3af1feaf4613daf292e5bb8ba7758)
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/db379bf0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/db379bf0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/db379bf0

Branch: refs/heads/4.5
Commit: db379bf0e8040a20d4db2944963f4d441783efe2
Parents: 681d8c0
Author: Likitha Shetty <li...@citrix.com>
Authored: Thu Mar 12 14:32:58 2015 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 27 14:29:37 2015 +0200

----------------------------------------------------------------------
 .../cloud/hypervisor/vmware/resource/VmwareResource.java |  2 +-
 .../cloud/storage/resource/VmwareStorageProcessor.java   | 11 -----------
 2 files changed, 1 insertion(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db379bf0/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 ac93f9d..f992b70 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
@@ -5148,7 +5148,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             ClusterMO clusterMo = new ClusterMO(context, morCluster);
 
             VirtualMachineMO vmMo = clusterMo.findVmOnHyperHost(vol.getPath());
-            if (vmMo != null) {
+            if (vmMo != null && vmMo.isTemplate()) {
                 if (s_logger.isInfoEnabled()) {
                     s_logger.info("Destroy template volume " + vol.getPath());
                 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db379bf0/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
index 82cda82..60cd682 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -1679,17 +1679,6 @@ public class VmwareStorageProcessor implements StorageProcessor {
                 if (s_logger.isInfoEnabled()) {
                     s_logger.info("Destroy root volume directly from datastore");
                 }
-            } else {
-                // evitTemplate will be converted into DestroyCommand, test if we are running in this case
-                VirtualMachineMO vmMo = clusterMo.findVmOnHyperHost(vol.getPath());
-                if (vmMo != null) {
-                    if (s_logger.isInfoEnabled()) {
-                        s_logger.info("Destroy template volume " + vol.getPath());
-                    }
-
-                    vmMo.destroy();
-                    return new Answer(cmd, true, "Success");
-                }
             }
 
             VmwareStorageLayoutHelper.deleteVolumeVmdkFiles(dsMo, vol.getPath(), new DatacenterMO(context, morDc));


[2/3] git commit: updated refs/heads/4.5 to ea7fd37

Posted by bh...@apache.org.
Fixed few coverity issues

Signed-off-by: Santhosh Edukulla <sa...@gmail.com>
(cherry picked from commit 0a9742f91462867cc9d5f9321a13a73483fcf149)
Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/86943da2
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/86943da2
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/86943da2

Branch: refs/heads/4.5
Commit: 86943da26e0bff316ae91062cdc741ff29bf619e
Parents: db379bf
Author: Santhosh Edukulla <sa...@gmail.com>
Authored: Tue Oct 14 16:47:03 2014 +0530
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Mon Apr 27 14:43:48 2015 +0200

----------------------------------------------------------------------
 agent/src/com/cloud/agent/Agent.java            |  4 +--
 .../com/cloud/vm/VirtualMachineManagerImpl.java |  4 ++-
 .../allocator/AbstractStoragePoolAllocator.java | 30 +++++++++-----------
 .../framework/rpc/RpcServerCallImpl.java        |  2 +-
 .../kvm/resource/LibvirtComputingResource.java  |  2 +-
 .../src/com/cloud/ovm/object/Connection.java    |  4 +--
 .../vmware/resource/VmwareResource.java         | 25 +++++++---------
 .../resource/VmwareStorageProcessor.java        |  6 ++--
 .../xenserver/resource/CitrixResourceBase.java  |  2 +-
 .../impl/UserConcentratedAllocator.java         |  2 +-
 .../cloud/ha/HighAvailabilityManagerImpl.java   |  2 +-
 .../hypervisor/vmware/util/VmwareHelper.java    |  2 +-
 12 files changed, 40 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/agent/src/com/cloud/agent/Agent.java
----------------------------------------------------------------------
diff --git a/agent/src/com/cloud/agent/Agent.java b/agent/src/com/cloud/agent/Agent.java
index 7d5f7b1..ac2d9ba 100755
--- a/agent/src/com/cloud/agent/Agent.java
+++ b/agent/src/com/cloud/agent/Agent.java
@@ -426,7 +426,7 @@ public class Agent implements HandlerFactory, IAgentControl {
         s_logger.info("Proccess agent startup answer, agent id = " + startup.getHostId());
 
         setId(startup.getHostId());
-        _pingInterval = startup.getPingInterval() * 1000; // change to ms.
+        _pingInterval = (long)startup.getPingInterval() * 1000; // change to ms.
 
         setLastPingResponseTime();
         scheduleWatch(link, response, _pingInterval, _pingInterval);
@@ -461,7 +461,7 @@ public class Agent implements HandlerFactory, IAgentControl {
 
                     if (cmd instanceof CronCommand) {
                         final CronCommand watch = (CronCommand)cmd;
-                        scheduleWatch(link, request, watch.getInterval() * 1000, watch.getInterval() * 1000);
+                        scheduleWatch(link, request, (long)watch.getInterval() * 1000, watch.getInterval() * 1000);
                         answer = new Answer(cmd, true, null);
                     } else if (cmd instanceof ShutdownCommand) {
                         ShutdownCommand shutdown = (ShutdownCommand)cmd;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 387abda..3cf8c2d 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -435,7 +435,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
 
     private VirtualMachineGuru getVmGuru(VirtualMachine vm) {
-        return _vmGurus.get(vm.getType());
+        if(vm != null)
+            return _vmGurus.get(vm.getType());
+        return null;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java b/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
index 71360ee..1bb85c1 100755
--- a/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
@@ -76,24 +76,20 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
     @Override
     public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
         super.configure(name, params);
-
-        Map<String, String> configs = _configDao.getConfiguration(null, params);
-
-        String globalStorageOverprovisioningFactor = configs.get("storage.overprovisioning.factor");
-        _storageOverprovisioningFactor = new BigDecimal(NumbersUtil.parseFloat(globalStorageOverprovisioningFactor, 2.0f));
-
-        _extraBytesPerVolume = 0;
-
-        _rand = new Random(System.currentTimeMillis());
-
-        _dontMatter = Boolean.parseBoolean(configs.get("storage.overwrite.provisioning"));
-
-        String allocationAlgorithm = configs.get("vm.allocation.algorithm");
-        if (allocationAlgorithm != null) {
-            _allocationAlgorithm = allocationAlgorithm;
+        if(_configDao != null) {
+            Map<String, String> configs = _configDao.getConfiguration(null, params);
+            String globalStorageOverprovisioningFactor = configs.get("storage.overprovisioning.factor");
+            _storageOverprovisioningFactor = new BigDecimal(NumbersUtil.parseFloat(globalStorageOverprovisioningFactor, 2.0f));
+            _extraBytesPerVolume = 0;
+            _rand = new Random(System.currentTimeMillis());
+            _dontMatter = Boolean.parseBoolean(configs.get("storage.overwrite.provisioning"));
+            String allocationAlgorithm = configs.get("vm.allocation.algorithm");
+            if (allocationAlgorithm != null) {
+                _allocationAlgorithm = allocationAlgorithm;
+            }
+            return true;
         }
-
-        return true;
+        return false;
     }
 
     protected abstract List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/framework/ipc/src/org/apache/cloudstack/framework/rpc/RpcServerCallImpl.java
----------------------------------------------------------------------
diff --git a/framework/ipc/src/org/apache/cloudstack/framework/rpc/RpcServerCallImpl.java b/framework/ipc/src/org/apache/cloudstack/framework/rpc/RpcServerCallImpl.java
index 40995da..4d04ec3 100644
--- a/framework/ipc/src/org/apache/cloudstack/framework/rpc/RpcServerCallImpl.java
+++ b/framework/ipc/src/org/apache/cloudstack/framework/rpc/RpcServerCallImpl.java
@@ -64,6 +64,6 @@ public class RpcServerCallImpl implements RpcServerCall {
             pdu.setSerializedResult(_rpcProvider.getMessageSerializer().serializeTo(returnObject.getClass(), returnObject));
         }
 
-        _rpcProvider.sendRpcPdu(_targetAddress, _sourceAddress, _rpcProvider.getMessageSerializer().serializeTo(RpcCallResponsePdu.class, pdu));
+        _rpcProvider.sendRpcPdu(_sourceAddress,_targetAddress,_rpcProvider.getMessageSerializer().serializeTo(RpcCallResponsePdu.class, pdu));
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 294891e..974e3b2 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -964,7 +964,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
         String unameKernelVersion = Script.runSimpleBashScript("uname -r");
         String[] kernelVersions = unameKernelVersion.split("[\\.\\-]");
-        _kernelVersion = Integer.parseInt(kernelVersions[0]) * 1000 * 1000 + Integer.parseInt(kernelVersions[1]) * 1000 + Integer.parseInt(kernelVersions[2]);
+        _kernelVersion = Integer.parseInt(kernelVersions[0]) * 1000 * 1000 + (long)Integer.parseInt(kernelVersions[1]) * 1000 + Integer.parseInt(kernelVersions[2]);
 
         getOsVersion();
         return true;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/plugins/hypervisors/ovm/src/com/cloud/ovm/object/Connection.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm/src/com/cloud/ovm/object/Connection.java b/plugins/hypervisors/ovm/src/com/cloud/ovm/object/Connection.java
index 495c28d..8d2edac 100755
--- a/plugins/hypervisors/ovm/src/com/cloud/ovm/object/Connection.java
+++ b/plugins/hypervisors/ovm/src/com/cloud/ovm/object/Connection.java
@@ -108,8 +108,8 @@ public class Connection {
             throw new XmlRpcException(-2, e.getMessage());
         } finally {
             long endTime = System.currentTimeMillis();
-            float during = (endTime - startTime) / 1000; // in secs
-            s_logger.debug("Ovm call " + method + " finished in " + during + " secs");
+            long during = (endTime - startTime) / 1000; // in secs
+            s_logger.debug("Ovm call " + method + " finished in " + String.valueOf(during) + " secs");
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/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 f992b70..9f90901 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
@@ -2228,21 +2228,18 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             }
 
             VolumeObjectTO volInSpec = getVolumeInSpec(vmSpec, volumeTO);
-
-            if (managed) {
-                String datastoreVolumePath = diskChain[0];
-
-                iqnToPath.put(details.get(DiskTO.IQN), datastoreVolumePath);
-
-                vol.setPath(datastoreVolumePath);
-                volumeTO.setPath(datastoreVolumePath);
-                volInSpec.setPath(datastoreVolumePath);
-            }
-            else {
-                volInSpec.setPath(file.getFileBaseName());
+            if (volInSpec != null) {
+                if (managed) {
+                    String datastoreVolumePath = diskChain[0];
+                    iqnToPath.put(details.get(DiskTO.IQN), datastoreVolumePath);
+                    vol.setPath(datastoreVolumePath);
+                    volumeTO.setPath(datastoreVolumePath);
+                    volInSpec.setPath(datastoreVolumePath);
+                } else {
+                    volInSpec.setPath(file.getFileBaseName());
+                }
+                volInSpec.setChainInfo(_gson.toJson(diskInfo));
             }
-
-            volInSpec.setChainInfo(_gson.toJson(diskInfo));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
index 60cd682..0ab97c0 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -562,7 +562,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
                 }
             }
 
-            Pair<String, String> result = copyVolumeFromSecStorage(hyperHost, srcVolume.getPath(), new DatastoreMO(context, morDatastore), srcStore.getUrl(), cmd.getWait() * 1000);
+            Pair<String, String> result = copyVolumeFromSecStorage(hyperHost, srcVolume.getPath(), new DatastoreMO(context, morDatastore), srcStore.getUrl(), (long)cmd.getWait() * 1000);
             deleteVolumeDirOnSecondaryStorage(result.first(), srcStore.getUrl());
             VolumeObjectTO newVolume = new VolumeObjectTO();
             newVolume.setPath(result.second());
@@ -1013,7 +1013,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
             }
 
             NfsTO nfsSvr = (NfsTO)imageStore;
-            Ternary<String, Long, Long> result = createTemplateFromSnapshot(template.getPath(), uniqeName, nfsSvr.getUrl(), snapshot.getPath(), template.getId(), cmd.getWait() * 1000);
+            Ternary<String, Long, Long> result = createTemplateFromSnapshot(template.getPath(), uniqeName, nfsSvr.getUrl(), snapshot.getPath(), template.getId(), (long)cmd.getWait() * 1000);
 
             TemplateObjectTO newTemplate = new TemplateObjectTO();
             newTemplate.setPath(result.first());
@@ -2183,7 +2183,7 @@ public class VmwareStorageProcessor implements StorageProcessor {
                 backedUpSnapshotUuid = backedUpSnapshotUuid.replace(".ovf", "");
             }
             DatastoreMO primaryDsMo = new DatastoreMO(hyperHost.getContext(), morPrimaryDs);
-            restoreVolumeFromSecStorage(hyperHost, primaryDsMo, newVolumeName, secondaryStorageUrl, backupPath, backedUpSnapshotUuid, cmd.getWait() * 1000);
+            restoreVolumeFromSecStorage(hyperHost, primaryDsMo, newVolumeName, secondaryStorageUrl, backupPath, backedUpSnapshotUuid, (long)cmd.getWait() * 1000);
 
             VolumeObjectTO newVol = new VolumeObjectTO();
             newVol.setPath(newVolumeName);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
index f24b214..de11de1 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
@@ -3391,7 +3391,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         try {
             task = vdi.copyAsync(conn, sr);
             // poll every 1 seconds , timeout after 2 hours
-            waitForTask(conn, task, 1000, wait * 1000);
+            waitForTask(conn, task, 1000, (long)wait * 1000);
             checkForSuccess(conn, task);
             VDI dvdi = Types.toVDI(task, conn);
             return dvdi;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java b/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
index 946eee6..885032e 100755
--- a/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
+++ b/server/src/com/cloud/agent/manager/allocator/impl/UserConcentratedAllocator.java
@@ -120,7 +120,7 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
 
                     // test for enough CPU in the pod
                     enoughCapacity =
-                        dataCenterAndPodHasEnoughCapacity(zoneId, podId, (offering.getCpu() * offering.getSpeed()), Capacity.CAPACITY_TYPE_CPU, hostCandiates);
+                        dataCenterAndPodHasEnoughCapacity(zoneId, podId, ((long)offering.getCpu() * offering.getSpeed()), Capacity.CAPACITY_TYPE_CPU, hostCandiates);
                     if (!enoughCapacity) {
                         if (s_logger.isDebugEnabled()) {
                             s_logger.debug("Not enough cpu available in zone/pod to allocate storage for user VM (zone: " + zoneId + ", pod: " + podId + ")");

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
index ce6239a..b96247a 100755
--- a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
+++ b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
@@ -782,7 +782,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
         _forceHA = Boolean.parseBoolean(value);
 
         value = params.get("time.to.sleep");
-        _timeToSleep = NumbersUtil.parseInt(value, 60) * 1000;
+        _timeToSleep = (long)NumbersUtil.parseInt(value, 60) * 1000;
 
         value = params.get("max.retries");
         _maxRetries = NumbersUtil.parseInt(value, 5);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/86943da2/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 7c69210..b2b1090 100644
--- a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
+++ b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareHelper.java
@@ -577,7 +577,7 @@ public class VmwareHelper {
 
         ResourceAllocationInfo cpuInfo = new ResourceAllocationInfo();
         if (limitCpuUse) {
-            cpuInfo.setLimit((long)(cpuSpeedMHz * cpuCount));
+            cpuInfo.setLimit(((long)cpuSpeedMHz * cpuCount));
         } else {
             cpuInfo.setLimit(-1L);
         }


[3/3] git commit: updated refs/heads/4.5 to ea7fd37

Posted by bh...@apache.org.
CLOUDSTACK-8424: Add cpu features if guest.cpu.features is set

This improvements checks for "guest.cpu.features" property which is a space
separated list of cpu features that is specific for a host. When added, it
will add  <feature policy='require' name='{{feature-you-listed}}'/> in the
<cpu> section of the generated vm spec xml.

Signed-off-by: Rohit Yadav <ro...@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ea7fd377
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ea7fd377
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ea7fd377

Branch: refs/heads/4.5
Commit: ea7fd37783cbc7ec78de5a5e84395381b1800a3e
Parents: 86943da
Author: Rohit Yadav <ro...@shapeblue.com>
Authored: Tue Apr 28 13:16:04 2015 +0200
Committer: Rohit Yadav <ro...@shapeblue.com>
Committed: Tue Apr 28 13:16:04 2015 +0200

----------------------------------------------------------------------
 agent/conf/agent.properties                            |  3 +++
 .../kvm/resource/LibvirtComputingResource.java         | 12 ++++++++++++
 .../cloud/hypervisor/kvm/resource/LibvirtVMDef.java    | 13 +++++++++++++
 3 files changed, 28 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ea7fd377/agent/conf/agent.properties
----------------------------------------------------------------------
diff --git a/agent/conf/agent.properties b/agent/conf/agent.properties
index 13138f8..fcd8b5c 100644
--- a/agent/conf/agent.properties
+++ b/agent/conf/agent.properties
@@ -126,6 +126,9 @@ hypervisor.type=kvm
 # on,run virsh capabilities for more details.
 # guest.cpu.model=
 #
+# This param will require CPU features on the <cpu> section
+# guest.cpu.features=vmx vme
+#
 # vm.memballoon.disable=true
 # Disable memory ballooning on vm guests for overcommit, by default overcommit
 # feature enables balloon and sets currentMemory to a minimum value.

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ea7fd377/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 974e3b2..2f5202b 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -451,6 +451,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
     protected boolean _noMemBalloon = false;
     protected String _guestCpuMode;
     protected String _guestCpuModel;
+    protected List<String> _cpuFeatures;
     protected boolean _noKvmClock;
     protected String _videoHw;
     protected int _videoRam;
@@ -863,6 +864,16 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             params.put("guest.cpu.model", _guestCpuModel);
         }
 
+        String cpuFeatures = (String)params.get("guest.cpu.features");
+        if (cpuFeatures != null) {
+            _cpuFeatures = new ArrayList<String>();
+            for (String feature: cpuFeatures.split(" ")) {
+                if (feature != null || !feature.isEmpty()) {
+                    _cpuFeatures.add(feature);
+                }
+            }
+        }
+
         String[] info = NetUtils.getNetworkParams(_privateNic);
 
         _monitor = new KVMHAMonitor(null, info[0], _heartBeatPath);
@@ -3674,6 +3685,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         CpuModeDef cmd = new CpuModeDef();
         cmd.setMode(_guestCpuMode);
         cmd.setModel(_guestCpuModel);
+        cmd.setFeatures(_cpuFeatures);
         // multi cores per socket, for larger core configs
         if (vcpus % 6 == 0) {
             int sockets = vcpus / 6;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ea7fd377/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index 5c8d337..bd6e042 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -1043,6 +1043,7 @@ public class LibvirtVMDef {
     public static class CpuModeDef {
         private String _mode;
         private String _model;
+        private List<String> _features;
         private int _coresPerSocket = -1;
         private int _sockets = -1;
 
@@ -1050,6 +1051,12 @@ public class LibvirtVMDef {
             _mode = mode;
         }
 
+        public void setFeatures(List<String> features) {
+            if (features != null) {
+                _features = features;
+            }
+        }
+
         public void setModel(String model) {
             _model = model;
         }
@@ -1074,6 +1081,12 @@ public class LibvirtVMDef {
                 modeBuilder.append("<cpu>");
             }
 
+            if (_features != null) {
+                for (String feature : _features) {
+                    modeBuilder.append("<feature policy='require' name='" + feature + "'/>");
+                }
+            }
+
             // add topology
             if (_sockets > 0 && _coresPerSocket > 0) {
                 modeBuilder.append("<topology sockets='" + _sockets + "' cores='" + _coresPerSocket + "' threads='1' />");