You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ni...@apache.org on 2013/12/16 20:14:09 UTC

git commit: updated refs/heads/4.3 to 2724db6

Updated Branches:
  refs/heads/4.3 307e05869 -> 2724db67f


Cloudstack-5077:  reserve cpu and memory only when
 vmware.reserve.cpu/mem are set to true. Insted of setting
 the ovecommit values to one on upgrade, we popultate them
 from the global values.
Signed off by : nitin mehta<ni...@citrix.com>


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

Branch: refs/heads/4.3
Commit: 2724db67f637f146511e629a3d06136708242f5c
Parents: 307e058
Author: Bharat Kumar <bh...@citrix.com>
Authored: Mon Dec 16 11:13:23 2013 -0800
Committer: Nitin Mehta <ni...@citrix.com>
Committed: Mon Dec 16 11:13:51 2013 -0800

----------------------------------------------------------------------
 .../com/cloud/upgrade/dao/Upgrade410to420.java  |  2 +-
 .../com/cloud/upgrade/dao/Upgrade420to421.java  | 69 +++++++++++++++-----
 .../vmware/resource/VmwareResource.java         | 20 ++----
 setup/db/db/schema-420to421.sql                 |  3 +-
 4 files changed, 62 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
index c2630b0..0b57a0c 100755
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
@@ -893,7 +893,7 @@ public class Upgrade410to420 implements DbUpgrade {
                 }else {
                     //update cluster_details table with the default overcommit ratios.
                     pstmt1.setLong(1,id);
-                    pstmt1.setString(2,"1");
+                    pstmt1.setString(2,global_cpu_overprovisioning_factor);
                     pstmt1.execute();
                     pstmt2.setLong(1,id);
                     pstmt2.setString(2,"1");

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
index d7eccc1..eb2327a 100644
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade420to421.java
@@ -23,6 +23,7 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
+import com.cloud.hypervisor.Hypervisor;
 import org.apache.log4j.Logger;
 
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -68,6 +69,8 @@ public class Upgrade420to421 implements DbUpgrade {
         updateCpuOverprovisioning(conn);
     }
 
+
+
     private void updateCpuOverprovisioning(Connection conn) {
         PreparedStatement pstmt1 = null;
         PreparedStatement pstmt2 = null;
@@ -80,27 +83,49 @@ public class Upgrade420to421 implements DbUpgrade {
         try {
             pstmt1 = conn.prepareStatement("select value from `cloud`.`configuration` where name='cpu.overprovisioning.factor'");
             result1 = pstmt1.executeQuery();
-            String overprov = "1";
+            String cpuoverprov = "1";
+            if(result1.next()){
+                cpuoverprov = result1.getString(1);
+            }
+            pstmt1 = conn.prepareStatement("select value from `cloud`.`configuration` where name='mem.overprovisioning.factor'");
+            result1 = pstmt1.executeQuery();
+            String memoverprov = "1";
             if(result1.next()){
-                overprov = result1.getString(1);
+                memoverprov = result1.getString(1);
             }
+
             // Need to populate only when overprovisioning factor doesn't pre exist.
             s_logger.debug("Starting updating user_vm_details with cpu/memory overprovisioning factors");
-            pstmt2 = conn.prepareStatement("select id from `cloud`.`vm_instance` where removed is null and id not in (select vm_id from  `cloud`.`user_vm_details` where name='cpuOvercommitRatio')");
+            pstmt2 = conn.prepareStatement("select id, hypervisor_type from `cloud`.`vm_instance` where removed is null and id not in (select vm_id from  `cloud`.`user_vm_details` where name='cpuOvercommitRatio')");
             pstmt3 = conn.prepareStatement("INSERT IGNORE INTO cloud.user_vm_details (vm_id, name, value) VALUES (?, ?, ?)");
             result2 = pstmt2.executeQuery();
             while (result2.next()) {
-                //For cpu
-                pstmt3.setLong(1, result2.getLong(1));
-                pstmt3.setString(2, "cpuOvercommitRatio");
-                pstmt3.setString(3, overprov);
-                pstmt3.executeUpdate();
+                String hypervisor_type = result2.getString(2);
+                if (hypervisor_type.equalsIgnoreCase(Hypervisor.HypervisorType.VMware.name())) {
+                    //For cpu
+                    pstmt3.setLong(1, result2.getLong(1));
+                    pstmt3.setString(2, "cpuOvercommitRatio");
+                    pstmt3.setString(3, cpuoverprov);
+                    pstmt3.executeUpdate();
+
+                    // For memory
+                    pstmt3.setLong(1, result2.getLong(1));
+                    pstmt3.setString(2, "memoryOvercommitRatio");
+                    pstmt3.setString(3, memoverprov); // memory overprovisioning was used to reserve memory in case of VMware.
+                    pstmt3.executeUpdate();
+                } else {
+                    //For cpu
+                    pstmt3.setLong(1, result2.getLong(1));
+                    pstmt3.setString(2, "cpuOvercommitRatio");
+                    pstmt3.setString(3, cpuoverprov);
+                    pstmt3.executeUpdate();
 
-                // For memory
-                pstmt3.setLong(1, result2.getLong(1));
-                pstmt3.setString(2, "memoryOvercommitRatio");
-                pstmt3.setString(3, "1"); // memory overprovisioning didn't exist earlier.
-                pstmt3.executeUpdate();
+                    // For memory
+                    pstmt3.setLong(1, result2.getLong(1));
+                    pstmt3.setString(2, "memoryOvercommitRatio");
+                    pstmt3.setString(3, "1"); // memory overprovisioning didn't exist earlier.
+                    pstmt3.executeUpdate();
+                }
             }
             s_logger.debug("Done updating user_vm_details with cpu/memory overprovisioning factors");
 
@@ -109,13 +134,23 @@ public class Upgrade420to421 implements DbUpgrade {
             throw new CloudRuntimeException("Unable to update cpu/memory overprovisioning factors", e);
         } finally {
             try {
-                if (pstmt1 != null)
+                if (pstmt1 != null && !pstmt1.isClosed())  {
                     pstmt1.close();
-                if (pstmt2 != null)
+                }
+                if (pstmt2 != null && !pstmt2.isClosed())  {
                     pstmt2.close();
-                if (pstmt3 != null)
+                }
+                if (pstmt3 != null && !pstmt3.isClosed())  {
                     pstmt3.close();
-            } catch (SQLException e) {
+                }
+                if (result1 != null) {
+                    result1.close();
+                }
+                if (result2 != null) {
+                   result2.close();
+                }
+            }catch (SQLException e){
+
             }
         }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/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 d5f3035..46d0e3e 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
@@ -2997,24 +2997,18 @@ 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  (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;
-        }
-    
+         if (vmSpec.getDetails().get(Config.VmwareReserveCpu.key()).equalsIgnoreCase("true")) {
+             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, 
     	DiskTO vol, VirtualMachineDiskInfo diskInfo,

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/2724db67/setup/db/db/schema-420to421.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-420to421.sql b/setup/db/db/schema-420to421.sql
index 302d44a..c09a1bb 100644
--- a/setup/db/db/schema-420to421.sql
+++ b/setup/db/db/schema-420to421.sql
@@ -24,7 +24,8 @@ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'manag
     'The maximum size limit for S3 single part upload API(in GB). If it is set to 0, then it means always use multi-part upload to upload object to S3. If it is set to -1, then it means always use single-part upload to upload object to S3.');
 
 INSERT IGNORE INTO `cloud`.`configuration` VALUES ("Storage", 'DEFAULT', 'management-server', "enable.ha.storage.migration", "true", "Enable/disable storage migration across primary storage during HA"); 
-
+UPDATE `cloud`.`configuration` SET description="Specify whether or not to reserve CPU based on CPU overprovisioning factor" where name="vmware.reserve.cpu";
+UPDATE `cloud`.`configuration` SET description="Specify whether or not to reserve memory based on memory overprovisioning factor" where name="vmware.reserve.mem";
 -- Remove Windows Server 8 from guest_os_type dropdown to use Windows Server 2012
 DELETE FROM `cloud`.`guest_os_hypervisor` where guest_os_id=168;
 DELETE FROM `cloud`.`guest_os` where id=168;