From 7b0f95a4667129ea2c0a26e54be04c644752940b Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Thu, 14 Apr 2011 03:53:51 -0700 Subject: [PATCH] bug 9422: added rows in op_networks table to correspond to the rows in networks table --- .../com/cloud/upgrade/dao/Upgrade218to22.java | 65 +++++++++++++++++-- 1 file changed, 58 insertions(+), 7 deletions(-) diff --git a/server/src/com/cloud/upgrade/dao/Upgrade218to22.java b/server/src/com/cloud/upgrade/dao/Upgrade218to22.java index 832b5aeea99..edab7d4ec14 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade218to22.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade218to22.java @@ -443,8 +443,7 @@ public class Upgrade218to22 implements DbUpgrade { } protected void upgradeVirtualUserVms(Connection conn, long domainRouterId, long networkId, String gateway, String vnet) throws SQLException { - PreparedStatement pstmt = conn - .prepareStatement("SELECT vm_instance.id, vm_instance.private_mac_address, vm_instance.private_ip_address, vm_instance.private_netmask, vm_instance.state, vm_instance.type FROM vm_instance INNER JOIN user_vm ON vm_instance.id=user_vm.id WHERE user_vm.domain_router_id=? and vm_instance.removed IS NULL"); + PreparedStatement pstmt = conn.prepareStatement("SELECT vm_instance.id, vm_instance.private_mac_address, vm_instance.private_ip_address, vm_instance.private_netmask, vm_instance.state, vm_instance.type FROM vm_instance INNER JOIN user_vm ON vm_instance.id=user_vm.id WHERE user_vm.domain_router_id=? and vm_instance.removed IS NULL"); pstmt.setLong(1, domainRouterId); ResultSet rs = pstmt.executeQuery(); List vms = new ArrayList(); @@ -462,16 +461,41 @@ public class Upgrade218to22 implements DbUpgrade { s_logger.debug("Upgrading " + vms.size() + " vms for router " + domainRouterId); + int count = 0; + for (Object[] vm : vms) { String state = (String) vm[4]; boolean running = false; if (state.equals("Running") || state.equals("Starting") || state.equals("Stopping")) { running = true; + count++; } insertNic(conn, networkId, (Long) vm[0], running, (String) vm[1], (String) vm[2], (String) vm[3], "Start", gateway, vnet, "ExternalGuestNetworkGuru", true, 0, "Dhcp", null); } + + pstmt = conn.prepareStatement("SELECT state FROm vm_instance WHERE id=?"); + pstmt.setLong(1, domainRouterId); + rs = pstmt.executeQuery(); + rs.next(); + String state = rs.getString(1); + if (state.equals("Running") || state.equals("Starting") || state.equals("Stopping")) { + count++; + } + rs.close(); + pstmt.close(); + + pstmt = conn.prepareStatement("UPDATE op_networks SET nics_count=?, check_for_gc=? WHERE id=?"); + pstmt.setLong(1, count); + if (count == 0) { + pstmt.setBoolean(2, false); + } else { + pstmt.setBoolean(2, true); + } + pstmt.setLong(3, networkId); + pstmt.executeUpdate(); + pstmt.close(); } protected void upgradeBasicUserVms(Connection conn, long domainRouterId, long networkId, String gateway, String vnet) throws SQLException { @@ -495,16 +519,39 @@ public class Upgrade218to22 implements DbUpgrade { s_logger.debug("Upgrading " + vms.size() + " vms for router " + domainRouterId); + int count = 0; for (Object[] vm : vms) { String state = (String) vm[4]; boolean running = false; if (state.equals("Running") || state.equals("Starting") || state.equals("Stopping")) { running = true; + count++; } insertNic(conn, networkId, (Long) vm[0], running, (String) vm[1], (String) vm[2], (String) vm[3], "Start", gateway, vnet, "DirectPodBasedNetworkGuru", true, 0, "Dhcp", null); - } + + pstmt = conn.prepareStatement("SELECT state FROM vm_instance WHERE id=?"); + pstmt.setLong(1, domainRouterId); + rs = pstmt.executeQuery(); + rs.next(); + String state = rs.getString(1); + if (state.equals("Running") || state.equals("Starting") || state.equals("Stopping")) { + count++; + } + rs.close(); + pstmt.close(); + + pstmt = conn.prepareStatement("UPDATE op_networks SET nics_count=?, check_for_gc=? WHERE id=?"); + pstmt.setLong(1, count); + if (count == 0) { + pstmt.setBoolean(2, false); + } else { + pstmt.setBoolean(2, true); + } + pstmt.setLong(3, networkId); + pstmt.executeUpdate(); + pstmt.close(); } protected long insertNetwork(Connection conn, String name, String displayText, String trafficType, String broadcastDomainType, String broadcastUri, String gateway, String cidr, String mode, @@ -556,10 +603,14 @@ public class Upgrade218to22 implements DbUpgrade { pstmt = conn.prepareStatement("INSERT INTO op_networks(id, mac_address_seq, nics_count, gc, check_for_gc) VALUES(?, ?, ?, ?, ?)"); pstmt.setLong(1, seq); pstmt.setLong(2, 0); - pstmt.setLong(3, 1); - pstmt.setLong(4, 0); - pstmt.setBoolean(5, true); - pstmt.executeUpdate(); + pstmt.setLong(3, 0); + if (trafficType.equals("Guest")) { + pstmt.setBoolean(4, true); + } else { + pstmt.setBoolean(4, false); + } + pstmt.setBoolean(5, false); + pstmt.executeUpdate(); pstmt = conn.prepareStatement("INSERT INTO account_network_ref (account_id, network_id, is_owner) VALUES (?, ?, 1)"); pstmt.setLong(1, accountId);