mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-03 04:12:31 +01:00
CLOUDSTACK-5038:
used cpu is getting bumped up when the over provisioning factor > 1. This was because we didnt record the overprovisioning factors of the vms which got deployed pre 4.2 Upgrade path will fix that by populating the cpu/mem overprovisioning factors for each of the vms in user_vm_details table using the global overprovisioning factor. Reviewed by : bharat kumar <bharat.kumar@citrix.com> Signed off by : nitin mehta<nitin.mehta@citrix.com>
This commit is contained in:
parent
2613c0a821
commit
7a042e2330
@ -65,6 +65,52 @@ public class Upgrade420to421 implements DbUpgrade {
|
|||||||
@Override
|
@Override
|
||||||
public void performDataMigration(Connection conn) {
|
public void performDataMigration(Connection conn) {
|
||||||
upgradeResourceCount(conn);
|
upgradeResourceCount(conn);
|
||||||
|
updateCpuOverprovisioning(conn);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCpuOverprovisioning(Connection conn) {
|
||||||
|
PreparedStatement pstmt1 = null;
|
||||||
|
PreparedStatement pstmt2 = null;
|
||||||
|
PreparedStatement pstmt3 = null;
|
||||||
|
ResultSet result1 = null;
|
||||||
|
ResultSet result2 = null;
|
||||||
|
|
||||||
|
// Get cpu overprovisioning factor from global setting and update user vm details table for all the vms if factor > 1
|
||||||
|
|
||||||
|
try {
|
||||||
|
pstmt1 = conn.prepareStatement("select value from `cloud`.`configuration` where name='cpu.overprovisioning.factor'");
|
||||||
|
result1 = pstmt1.executeQuery();
|
||||||
|
String overprov = "1";
|
||||||
|
if(result1.next()){
|
||||||
|
overprov = 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')");
|
||||||
|
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();
|
||||||
|
|
||||||
|
// 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");
|
||||||
|
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new CloudRuntimeException("Unable to update cpu/memory overprovisioning factors", e);
|
||||||
|
} finally {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void upgradeResourceCount(Connection conn) {
|
private void upgradeResourceCount(Connection conn) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user