You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ja...@apache.org on 2013/12/11 08:37:38 UTC

[1/2] git commit: updated refs/heads/4.3 to d221efc

Updated Branches:
  refs/heads/4.3 3af903f43 -> d221efcf8


Fixed the tests related to network acl


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

Branch: refs/heads/4.3
Commit: d221efcf812d609cd8e85eaad0938c8d07540c61
Parents: 903af43
Author: Jayapal <ja...@apache.org>
Authored: Wed Dec 11 13:07:06 2013 +0530
Committer: Jayapal <ja...@apache.org>
Committed: Wed Dec 11 13:07:22 2013 +0530

----------------------------------------------------------------------
 .../test/com/cloud/vpc/NetworkACLManagerTest.java  | 15 ++++++++-------
 .../test/com/cloud/vpc/NetworkACLServiceTest.java  | 17 +++++++----------
 2 files changed, 15 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d221efcf/server/test/com/cloud/vpc/NetworkACLManagerTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/NetworkACLManagerTest.java b/server/test/com/cloud/vpc/NetworkACLManagerTest.java
index d09ce3a..42619b2 100644
--- a/server/test/com/cloud/vpc/NetworkACLManagerTest.java
+++ b/server/test/com/cloud/vpc/NetworkACLManagerTest.java
@@ -22,6 +22,7 @@ import java.util.UUID;
 
 import javax.inject.Inject;
 
+import com.cloud.network.vpc.*;
 import junit.framework.TestCase;
 
 import org.apache.log4j.Logger;
@@ -51,13 +52,6 @@ import com.cloud.network.NetworkModel;
 import com.cloud.network.dao.NetworkDao;
 import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.element.NetworkACLServiceProvider;
-import com.cloud.network.vpc.NetworkACLItem;
-import com.cloud.network.vpc.NetworkACLItemDao;
-import com.cloud.network.vpc.NetworkACLItemVO;
-import com.cloud.network.vpc.NetworkACLManager;
-import com.cloud.network.vpc.NetworkACLManagerImpl;
-import com.cloud.network.vpc.NetworkACLVO;
-import com.cloud.network.vpc.VpcManager;
 import com.cloud.network.vpc.dao.NetworkACLDao;
 import com.cloud.network.vpc.dao.VpcGatewayDao;
 import com.cloud.tags.dao.ResourceTagDao;
@@ -93,6 +87,8 @@ public class NetworkACLManagerTest extends TestCase{
     NetworkModel _networkModel;
     @Inject
     List<NetworkACLServiceProvider> _networkAclElements;
+    @Inject
+    VpcService _vpcSvc;
 
     private NetworkACLVO acl;
     private NetworkACLItemVO aclItem;
@@ -219,6 +215,11 @@ public class NetworkACLManagerTest extends TestCase{
             return Mockito.mock(VpcGatewayDao.class);
         }
 
+        @Bean
+        public VpcService vpcService() {
+            return Mockito.mock(VpcService.class);
+        }
+
         public static class Library implements TypeFilter {
             @Override
             public boolean match(MetadataReader mdr, MetadataReaderFactory arg1) throws IOException {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d221efcf/server/test/com/cloud/vpc/NetworkACLServiceTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/NetworkACLServiceTest.java b/server/test/com/cloud/vpc/NetworkACLServiceTest.java
index 41a7e32..bcc06c6 100644
--- a/server/test/com/cloud/vpc/NetworkACLServiceTest.java
+++ b/server/test/com/cloud/vpc/NetworkACLServiceTest.java
@@ -20,6 +20,7 @@ import java.util.UUID;
 
 import javax.inject.Inject;
 
+import com.cloud.network.vpc.*;
 import com.cloud.network.vpc.dao.VpcDao;
 import junit.framework.TestCase;
 
@@ -48,16 +49,6 @@ import org.apache.cloudstack.test.utils.SpringUtils;
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.NetworkModel;
 import com.cloud.network.dao.NetworkDao;
-import com.cloud.network.vpc.NetworkACLItem;
-import com.cloud.network.vpc.NetworkACLItemDao;
-import com.cloud.network.vpc.NetworkACLItemVO;
-import com.cloud.network.vpc.NetworkACLManager;
-import com.cloud.network.vpc.NetworkACLService;
-import com.cloud.network.vpc.NetworkACLServiceImpl;
-import com.cloud.network.vpc.NetworkACLVO;
-import com.cloud.network.vpc.Vpc;
-import com.cloud.network.vpc.VpcManager;
-import com.cloud.network.vpc.VpcVO;
 import com.cloud.network.vpc.dao.NetworkACLDao;
 import com.cloud.network.vpc.dao.VpcGatewayDao;
 import com.cloud.tags.dao.ResourceTagDao;
@@ -88,6 +79,8 @@ public class NetworkACLServiceTest extends TestCase{
     EntityManager _entityMgr;
     @Inject
     VpcDao _vpcDao;
+    @Inject
+    VpcService _vpcSvc;
 
     private CreateNetworkACLCmd createACLItemCmd;
     private NetworkACLVO acl;
@@ -253,6 +246,10 @@ public class NetworkACLServiceTest extends TestCase{
             return Mockito.mock(VpcDao.class);
         }
 
+        @Bean
+        public VpcService vpcService() {
+            return Mockito.mock(VpcService.class);
+        }
 
         public static class Library implements TypeFilter {
             @Override


[2/2] git commit: updated refs/heads/4.3 to d221efc

Posted by ja...@apache.org.
CLOUDSTACK-4498 Do not reserve memory and cpu for vmware VMs, if
the vmware.reserve.cpu and vmware.reserve.mem are set to false while not over committing.

Signed-off-by: Jayapal <ja...@apache.org>


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

Branch: refs/heads/4.3
Commit: 903af43be45c5b0e215c3c7ca9ce3ac56692d213
Parents: 3af903f
Author: Bharat Kumar <bh...@citrix.com>
Authored: Mon Dec 9 15:22:27 2013 +0530
Committer: Jayapal <ja...@apache.org>
Committed: Wed Dec 11 13:07:22 2013 +0530

----------------------------------------------------------------------
 .../com/cloud/hypervisor/guru/VMwareGuru.java   | 28 +++++++++++++++++-
 .../vmware/manager/VmwareManagerImpl.java       |  2 --
 .../vmware/resource/VmwareResource.java         | 31 ++++++++++++++++----
 3 files changed, 52 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/903af43b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
index eb3cb6b..326a950 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
@@ -96,9 +96,13 @@ import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineProfile;
 import com.cloud.vm.VmDetailConstants;
 import com.cloud.vm.dao.NicDao;
+import org.apache.cloudstack.framework.config.ConfigKey;
+import org.apache.cloudstack.framework.config.Configurable;
+import com.cloud.dc.dao.ClusterDao;
+import com.cloud.vm.dao.VMInstanceDao;
 
 @Local(value=HypervisorGuru.class)
-public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
+public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru, Configurable {
     private static final Logger s_logger = Logger.getLogger(VMwareGuru.class);
 
     @Inject NetworkDao _networkDao;
@@ -117,11 +121,20 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
     @Inject
     PhysicalNetworkTrafficTypeDao _physicalNetworkTrafficTypeDao;
     @Inject ClusterManager _clusterMgr;
+    @Inject
+    VMInstanceDao _vmDao;
+    @Inject
+    ClusterDao _clusterDao;
 
     protected VMwareGuru() {
         super();
     }
 
+    static final ConfigKey<Boolean> VmwareReserveCpu = new ConfigKey<Boolean>(Boolean.class, "vmware.reserve.cpu", "Advanced", "false",
+            "Specify whether or not to reserve CPU when not overprovisioning, In case of cpu overprovisioning we will always reserve cpu.", true, ConfigKey.Scope.Cluster, null);
+    static final ConfigKey<Boolean> VmwareReserveMemory = new ConfigKey<Boolean>(Boolean.class, "vmware.reserve.cpu", "Advanced", "false",
+            "Specify whether or not to reserve memory when not overprovisioning, In case of memory overprovisioning we will always reserve memory.", true, ConfigKey.Scope.Cluster, null);
+
     @Override
     public HypervisorType getHypervisorType() {
         return HypervisorType.VMware;
@@ -184,6 +197,9 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
             }
         }
 
+        long clusterId = _hostDao.findById( _vmDao.findById(vm.getId()).getHostId()).getClusterId();
+        details.put(Config.VmwareReserveCpu.key(), VmwareReserveCpu.valueIn(clusterId).toString());
+        details.put(Config.VmwareReserveMem.key(), VmwareReserveMemory.valueIn(clusterId).toString());
         to.setDetails(details);
 
         if(vm.getVirtualMachine() instanceof DomainRouterVO) {
@@ -440,4 +456,14 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
         }
         return commands;
     }
+
+    @Override
+    public String getConfigComponentName() {
+        return VMwareGuru.class.getSimpleName();
+    }
+
+    @Override
+    public ConfigKey<?>[] getConfigKeys() {
+        return new ConfigKey<?>[] {VmwareReserveCpu, VmwareReserveMemory};
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/903af43b/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 d306b74..bf56c54 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
@@ -533,8 +533,6 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
         params.put("vm.instancename.flag", _instanceNameFlag);
         params.put("service.console.name", _serviceConsoleName);
         params.put("management.portgroup.name", _managemetPortGroupName);
-        params.put("vmware.reserve.cpu", _reserveCpu);
-        params.put("vmware.reserve.mem", _reserveMem);
         params.put("vmware.root.disk.controller", _rootDiskController);
         params.put("vmware.recycle.hung.wokervm", _recycleHungWorker);
         params.put("ports.per.dvportgroup", _portsPerDvPortGroup);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/903af43b/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 69f1b74..d5f3035 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
@@ -47,6 +47,7 @@ import javax.naming.ConfigurationException;
 
 import com.cloud.agent.api.routing.*;
 
+import com.cloud.configuration.Config;
 import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
 
@@ -341,10 +342,9 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
     protected int _portsPerDvPortGroup;
     protected boolean _fullCloneFlag = false;
     protected boolean _instanceNameFlag = false;
+    protected boolean  _reserveCpu;
+    protected boolean  _reserveMem;
 
-    protected boolean _reserveCpu = false;
-
-    protected boolean _reserveMem = false;
     protected boolean _recycleHungWorker = false;
     protected DiskControllerType _rootDiskController = DiskControllerType.ide;
 
@@ -2688,7 +2688,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                     	vmMo.tearDownDevices(new Class<?>[] { VirtualEthernetCard.class });
                     vmMo.ensureScsiDeviceController();
                 } else {
-                    int ramMb = (int) (vmSpec.getMinRam() / (1024 * 1024));
                     Pair<ManagedObjectReference, DatastoreMO> rootDiskDataStoreDetails = null;
                     for (DiskTO vol : disks) {
                         if (vol.getType() == Volume.Type.ROOT) {
@@ -2706,7 +2705,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                     }
                     
                     if (!hyperHost.createBlankVm(vmNameOnVcenter, vmInternalCSName, vmSpec.getCpus(), vmSpec.getMaxSpeed().intValue(),
-                            vmSpec.getMinSpeed(), vmSpec.getLimitCpuUse(),(int)(vmSpec.getMaxRam()/(1024*1024)), ramMb,
+                            getReservedCpuMHZ(vmSpec), vmSpec.getLimitCpuUse(),(int)(vmSpec.getMaxRam()/(1024*1024)), getReservedMemoryMb(vmSpec),
                             translateGuestOsIdentifier(vmSpec.getArch(), vmSpec.getOs()).value(), rootDiskDataStoreDetails.first(), false)) {
                         throw new Exception("Failed to create VM. vmName: " + vmInternalCSName);
                     }
@@ -2735,7 +2734,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             String guestOsId = translateGuestOsIdentifier(vmSpec.getArch(), vmSpec.getOs()).value();
             
             VmwareHelper.setBasicVmConfig(vmConfigSpec, vmSpec.getCpus(), vmSpec.getMaxSpeed(),
-                    vmSpec.getMinSpeed(),(int) (vmSpec.getMaxRam()/(1024*1024)), ramMb,
+                    getReservedCpuMHZ(vmSpec),(int) (vmSpec.getMaxRam()/(1024*1024)), getReservedMemoryMb(vmSpec),
                     guestOsId, vmSpec.getLimitCpuUse());
             
             // Check for hotadd settings
@@ -2995,6 +2994,26 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             }
         }
     }
+
+    int getReservedMemoryMb(VirtualMachineTO vmSpec) {
+         if (vmSpec.getDetails().get(Config.VmwareReserveMem.key()).equalsIgnoreCase("true")) {
+            return  (int) (vmSpec.getMinRam() / (1024 * 1024));
+         }else if (vmSpec.getMinRam() != vmSpec.getMaxRam()) {
+            s_logger.warn("memory overprovisioning factor is set to "+ (vmSpec.getMaxRam()/vmSpec.getMinRam())+" ignoring the flag vmware.reserve.mem");
+            return  (int) (vmSpec.getMinRam() / (1024 * 1024));
+         }
+         return 0;
+    }
+
+    int getReservedCpuMHZ(VirtualMachineTO vmSpec) {
+        if (vmSpec.getDetails().get(Config.VmwareReserveCpu.key()).equalsIgnoreCase("true")) {
+            return vmSpec.getMinSpeed();
+        }else if (vmSpec.getMinSpeed().intValue() != vmSpec.getMaxSpeed().intValue()) {
+            s_logger.warn("cpu overprovisioning factor is set to "+ (vmSpec.getMaxSpeed().intValue()/vmSpec.getMinSpeed().intValue())+" ignoring the flag vmware.reserve.cpu");
+            return vmSpec.getMinSpeed();
+        }
+        return 0;
+        }
     
     // return the finalized disk chain for startup, from top to bottom
     private String[] syncDiskChain(DatacenterMO dcMo, VirtualMachineMO vmMo, VirtualMachineTO vmSpec,