diff --git a/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java b/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java index 7ec2655bfae..b3a6ccd6161 100755 --- a/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java @@ -142,7 +142,7 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade { String vmwarePrivateLabel = getNetworkLabelFromConfig(conn, "vmware.private.vswitch"); String vmwareGuestLabel = getNetworkLabelFromConfig(conn, "vmware.guest.vswitch"); - pstmt = conn.prepareStatement("SELECT id, domain_id, networktype, vnet, name FROM `cloud`.`data_center`"); + pstmt = conn.prepareStatement("SELECT id, domain_id, networktype, vnet, name FROM `cloud`.`data_center` WHERE removed IS NULL"); rs = pstmt.executeQuery(); while (rs.next()) { long zoneId = rs.getLong(1); @@ -153,7 +153,8 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade { //check if there are multiple guest networks configured using network_tags - PreparedStatement pstmt2 = conn.prepareStatement("SELECT distinct tag FROM `cloud`.`network_tags` t JOIN `cloud`.`networks` n where t.network_id = n.id and n.data_center_id = "+zoneId); + PreparedStatement pstmt2 = conn.prepareStatement("SELECT distinct tag FROM `cloud`.`network_tags` t JOIN `cloud`.`networks` n where t.network_id = n.id and n.data_center_id = ? and n.removed IS NULL"); + pstmt2.setLong(1, zoneId); ResultSet rsTags = pstmt2.executeQuery(); if(rsTags.next()){ boolean isFirstPhysicalNtwk = true; @@ -169,7 +170,8 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade { addTrafficType(conn, physicalNetworkId, "Storage", xenStorageLabel, null, null); } addTrafficType(conn, physicalNetworkId, "Guest", guestNetworkTag, kvmGuestLabel, vmwareGuestLabel); - addDefaultServiceProviders(conn, physicalNetworkId, zoneId); + addDefaultVRProvider(conn, physicalNetworkId, zoneId); + addDefaultSGProvider(conn, physicalNetworkId, zoneId, networkType, false); //for all networks with this tag, add physical_network_id PreparedStatement pstmt3 = conn.prepareStatement("SELECT network_id FROM `cloud`.`network_tags` where tag = '" + guestNetworkTag + "'"); @@ -202,7 +204,9 @@ public class Upgrade2214to30 extends Upgrade30xBase implements DbUpgrade { addTrafficType(conn, physicalNetworkId, "Management", xenPrivateLabel, kvmPrivateLabel, vmwarePrivateLabel); addTrafficType(conn, physicalNetworkId, "Storage", xenStorageLabel, null, null); addTrafficType(conn, physicalNetworkId, "Guest", xenGuestLabel, kvmGuestLabel, vmwareGuestLabel); - addDefaultServiceProviders(conn, physicalNetworkId, zoneId); + addDefaultVRProvider(conn, physicalNetworkId, zoneId); + addDefaultSGProvider(conn, physicalNetworkId, zoneId, networkType, false); + // add physicalNetworkId to op_dc_vnet_alloc for this zone s_logger.debug("Adding PhysicalNetwork to op_dc_vnet_alloc"); diff --git a/server/src/com/cloud/upgrade/dao/Upgrade303to304.java b/server/src/com/cloud/upgrade/dao/Upgrade303to304.java index dda364749e9..2249e4822c9 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade303to304.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade303to304.java @@ -112,7 +112,8 @@ public class Upgrade303to304 extends Upgrade30xBase implements DbUpgrade { //Create a physical network with guest traffic type and this tag long physicalNetworkId = addPhysicalNetworkToZone(conn, zoneId, zoneName, networkType, null, domainId); addTrafficType(conn, physicalNetworkId, "Guest", xenGuestLabel, null, null); - addDefaultServiceProviders(conn, physicalNetworkId, zoneId); + addDefaultVRProvider(conn, physicalNetworkId, zoneId); + addDefaultSGProvider(conn, physicalNetworkId, zoneId, networkType, true); PreparedStatement pstmt3 = conn.prepareStatement("SELECT n.id FROM networks n WHERE n.physical_network_id IS NULL AND n.traffic_type = 'Guest' and n.data_center_id = ? and n.removed is null"); pstmt3.setLong(1, zoneId); diff --git a/server/src/com/cloud/upgrade/dao/Upgrade30xBase.java b/server/src/com/cloud/upgrade/dao/Upgrade30xBase.java index c42ff65c99a..3b1df9d2990 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade30xBase.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade30xBase.java @@ -155,7 +155,66 @@ public abstract class Upgrade30xBase implements DbUpgrade{ } - protected void addDefaultServiceProviders(Connection conn, long physicalNetworkId, long zoneId){ + protected void addDefaultSGProvider(Connection conn, long physicalNetworkId, long zoneId, String networkType, boolean is304){ + PreparedStatement pstmtUpdate = null, pstmt2 = null; + try{ + //add security group service provider (if security group service is enabled for at least one guest network) + boolean isSGServiceEnabled = false; + String selectSG = ""; + + if(is304){ + selectSG = "SELECT nm.* FROM `cloud`.`ntwk_service_map` nm JOIN `cloud`.`networks` n ON nm.network_id = n.id where n.data_center_id = ? and nm.service='SecurityGroup'"; + }else{ + selectSG = "SELECT * from `cloud`.`networks` where is_security_group_enabled=1 and data_center_id=?"; + } + + pstmt2 = conn.prepareStatement(selectSG); + pstmt2.setLong(1, zoneId); + ResultSet sgDcSet = pstmt2.executeQuery(); + if (sgDcSet.next()) { + isSGServiceEnabled = true; + } + sgDcSet.close(); + pstmt2.close(); + + if(isSGServiceEnabled){ + s_logger.debug("Adding PhysicalNetworkServiceProvider SecurityGroupProvider to the physical network id=" + physicalNetworkId); + String insertPNSP = "INSERT INTO `cloud`.`physical_network_service_providers` (`uuid`, `physical_network_id` , `provider_name`, `state` ," + + "`destination_physical_network_id`, `vpn_service_provided`, `dhcp_service_provided`, `dns_service_provided`, `gateway_service_provided`," + + "`firewall_service_provided`, `source_nat_service_provided`, `load_balance_service_provided`, `static_nat_service_provided`," + + "`port_forwarding_service_provided`, `user_data_service_provided`, `security_group_service_provided`) VALUES (?,?,?,?,0,0,0,0,0,0,0,0,0,0,0,1)"; + pstmtUpdate = conn.prepareStatement(insertPNSP); + pstmtUpdate.setString(1, UUID.randomUUID().toString()); + pstmtUpdate.setLong(2, physicalNetworkId); + pstmtUpdate.setString(3, "SecurityGroupProvider"); + if ("Advanced".equals(networkType)) { + pstmtUpdate.setString(4, "Disabled"); + }else{ + pstmtUpdate.setString(4, "Enabled"); + } + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + } + + }catch (SQLException e) { + throw new CloudRuntimeException("Exception while adding default Security Group Provider", e); + } finally { + if (pstmtUpdate != null) { + try { + pstmtUpdate.close(); + } catch (SQLException e) { + } + } + if (pstmt2 != null) { + try { + pstmt2.close(); + } catch (SQLException e) { + } + } + } + } + + protected void addDefaultVRProvider(Connection conn, long physicalNetworkId, long zoneId){ PreparedStatement pstmtUpdate = null, pstmt2 = null; try{ // add physical network service provider - VirtualRouter @@ -173,27 +232,6 @@ public abstract class Upgrade30xBase implements DbUpgrade{ pstmtUpdate.executeUpdate(); pstmtUpdate.close(); - //add security group service provider (if security group service is enabled for at least one guest network) - String selectSG = "SELECT * from `cloud`.`networks` where is_security_group_enabled=1 and data_center_id=?"; - pstmt2 = conn.prepareStatement(selectSG); - pstmt2.setLong(1, zoneId); - ResultSet sgDcSet = pstmt2.executeQuery(); - while (sgDcSet.next()) { - s_logger.debug("Adding PhysicalNetworkServiceProvider SecurityGroupProvider to the physical network id=" + physicalNetworkId); - insertPNSP = "INSERT INTO `cloud`.`physical_network_service_providers` (`uuid`, `physical_network_id` , `provider_name`, `state` ," + - "`destination_physical_network_id`, `vpn_service_provided`, `dhcp_service_provided`, `dns_service_provided`, `gateway_service_provided`," + - "`firewall_service_provided`, `source_nat_service_provided`, `load_balance_service_provided`, `static_nat_service_provided`," + - "`port_forwarding_service_provided`, `user_data_service_provided`, `security_group_service_provided`) VALUES (?,?,?,?,0,0,0,0,0,0,0,0,0,0,0,1)"; - pstmtUpdate = conn.prepareStatement(insertPNSP); - pstmtUpdate.setString(1, UUID.randomUUID().toString()); - pstmtUpdate.setLong(2, physicalNetworkId); - pstmtUpdate.setString(3, "SecurityGroupProvider"); - pstmtUpdate.setString(4, "Enabled"); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - } - pstmt2.close(); - // add virtual_router_element String fetchNSPid = "SELECT id from `cloud`.`physical_network_service_providers` where physical_network_id=" + physicalNetworkId; pstmt2 = conn.prepareStatement(fetchNSPid); @@ -229,7 +267,6 @@ public abstract class Upgrade30xBase implements DbUpgrade{ } } - protected void addPhysicalNtwk_To_Ntwk_IP_Vlan(Connection conn, long physicalNetworkId, long networkId){ PreparedStatement pstmtUpdate = null; try{