From a5fddd604ac59ec7ae8f725ed1c9f0f8bcfed2af Mon Sep 17 00:00:00 2001 From: prachi Date: Thu, 19 Apr 2012 13:08:50 -0700 Subject: [PATCH] Bug 14158 - 2.2.x - 3.0 db upgrade for multiple physical networks -Create multiple physical networks if there are distinct tags found in network_tags table. -One physical network per tag. -Currently all tags flow to xenserver traffic type label. --- .../cloud/upgrade/dao/Upgrade2214to30.java | 453 +++++++++++------- 1 file changed, 287 insertions(+), 166 deletions(-) diff --git a/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java b/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java index 5e2a90f0624..a7c420dc02f 100755 --- a/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java @@ -96,6 +96,211 @@ public class Upgrade2214to30 implements DbUpgrade { return new File[] { new File(script) }; } + + private long addPhysicalNetworkToZone(Connection conn, long zoneId, String zoneName, String networkType, String vnet, Long domainId){ + + String getNextNetworkSequenceSql = "SELECT value from `cloud`.`sequence` where name='physical_networks_seq'"; + String advanceNetworkSequenceSql = "UPDATE `cloud`.`sequence` set value=value+1 where name='physical_networks_seq'"; + PreparedStatement pstmtUpdate = null, pstmt2 = null; + // add p.network + try{ + pstmt2 = conn.prepareStatement(getNextNetworkSequenceSql); + + ResultSet rsSeq = pstmt2.executeQuery(); + rsSeq.next(); + + long physicalNetworkId = rsSeq.getLong(1); + rsSeq.close(); + pstmt2.close(); + pstmt2 = conn.prepareStatement(advanceNetworkSequenceSql); + pstmt2.executeUpdate(); + pstmt2.close(); + + String uuid = UUID.randomUUID().toString(); + String broadcastDomainRange = "POD"; + if ("Advanced".equals(networkType)) { + broadcastDomainRange = "ZONE"; + } + + s_logger.debug("Adding PhysicalNetwork " + physicalNetworkId + " for Zone id " + zoneId); + String sql = "INSERT INTO `cloud`.`physical_network` (id, uuid, data_center_id, vnet, broadcast_domain_range, state, name) VALUES (?,?,?,?,?,?,?)"; + + pstmtUpdate = conn.prepareStatement(sql); + pstmtUpdate.setLong(1, physicalNetworkId); + pstmtUpdate.setString(2, uuid); + pstmtUpdate.setLong(3, zoneId); + pstmtUpdate.setString(4, vnet); + pstmtUpdate.setString(5, broadcastDomainRange); + pstmtUpdate.setString(6, "Enabled"); + zoneName = zoneName + "-pNtwk"; + pstmtUpdate.setString(7, zoneName); + s_logger.warn("Statement is " + pstmtUpdate.toString()); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + + if (domainId != null && domainId.longValue() != 0) { + s_logger.debug("Updating domain_id for physical network id=" + physicalNetworkId); + sql = "UPDATE `cloud`.`physical_network` set domain_id=? where id=?"; + pstmtUpdate = conn.prepareStatement(sql); + pstmtUpdate.setLong(1, domainId); + pstmtUpdate.setLong(2, physicalNetworkId); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + } + + return physicalNetworkId; + } catch (SQLException e) { + throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e); + } finally { + if (pstmtUpdate != null) { + try { + pstmtUpdate.close(); + } catch (SQLException e) { + } + } + if (pstmt2 != null) { + try { + pstmt2.close(); + } catch (SQLException e) { + } + } + + } + } + + private void addTrafficType(Connection conn, long physicalNetworkId, String trafficType, String xenPublicLabel, String kvmPublicLabel, String vmwarePublicLabel){ + // add traffic types + PreparedStatement pstmtUpdate = null; + try{ + s_logger.debug("Adding PhysicalNetwork traffic types"); + String insertTraficType = "INSERT INTO `cloud`.`physical_network_traffic_types` (physical_network_id, traffic_type, xen_network_label, kvm_network_label, vmware_network_label, uuid) VALUES ( ?, ?, ?, ?, ?, ?)"; + pstmtUpdate = conn.prepareStatement(insertTraficType); + pstmtUpdate.setLong(1, physicalNetworkId); + pstmtUpdate.setString(2, trafficType); + pstmtUpdate.setString(3, xenPublicLabel); + pstmtUpdate.setString(4, kvmPublicLabel); + pstmtUpdate.setString(5, vmwarePublicLabel); + pstmtUpdate.setString(6, UUID.randomUUID().toString()); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + }catch (SQLException e) { + throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e); + } finally { + if (pstmtUpdate != null) { + try { + pstmtUpdate.close(); + } catch (SQLException e) { + } + } + } + } + + private void addDefaultServiceProviders(Connection conn, long physicalNetworkId, long zoneId){ + PreparedStatement pstmtUpdate = null, pstmt2 = null; + try{ + // add physical network service provider - VirtualRouter + s_logger.debug("Adding PhysicalNetworkServiceProvider VirtualRouter"); + 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,1,1,1,1,1,1,1,1,1,1,0)"; + + pstmtUpdate = conn.prepareStatement(insertPNSP); + pstmtUpdate.setString(1, UUID.randomUUID().toString()); + pstmtUpdate.setLong(2, physicalNetworkId); + pstmtUpdate.setString(3, "VirtualRouter"); + pstmtUpdate.setString(4, "Enabled"); + 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); + ResultSet rsNSPid = pstmt2.executeQuery(); + rsNSPid.next(); + long nspId = rsNSPid.getLong(1); + pstmt2.close(); + + String insertRouter = "INSERT INTO `cloud`.`virtual_router_providers` (`nsp_id`, `uuid` , `type` , `enabled`) " + + "VALUES (?,?,?,?)"; + pstmtUpdate = conn.prepareStatement(insertRouter); + pstmtUpdate.setLong(1, nspId); + pstmtUpdate.setString(2, UUID.randomUUID().toString()); + pstmtUpdate.setString(3, "VirtualRouter"); + pstmtUpdate.setInt(4, 1); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + }catch (SQLException e) { + throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e); + } finally { + if (pstmtUpdate != null) { + try { + pstmtUpdate.close(); + } catch (SQLException e) { + } + } + if (pstmt2 != null) { + try { + pstmt2.close(); + } catch (SQLException e) { + } + } + } + } + + private void addPhysicalNtwk_To_Ntwk_IP_Vlan(Connection conn, long physicalNetworkId, long networkId){ + PreparedStatement pstmtUpdate = null; + try{ + // add physicalNetworkId to vlan for this zone + String updateVLAN = "UPDATE `cloud`.`vlan` SET physical_network_id = " + physicalNetworkId + " WHERE network_id = " + networkId; + pstmtUpdate = conn.prepareStatement(updateVLAN); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + + // add physicalNetworkId to user_ip_address for this zone + String updateUsrIp = "UPDATE `cloud`.`user_ip_address` SET physical_network_id = " + physicalNetworkId + " WHERE source_network_id = " + networkId; + pstmtUpdate = conn.prepareStatement(updateUsrIp); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + + // add physicalNetworkId to guest networks for this zone + String updateNet = "UPDATE `cloud`.`networks` SET physical_network_id = " + physicalNetworkId + " WHERE id = " + networkId + " AND traffic_type = 'Guest'"; + pstmtUpdate = conn.prepareStatement(updateNet); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + }catch (SQLException e) { + throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e); + } finally { + if (pstmtUpdate != null) { + try { + pstmtUpdate.close(); + } catch (SQLException e) { + } + } + } + + } private void setupPhysicalNetworks(Connection conn) { /** @@ -104,14 +309,18 @@ public class Upgrade2214to30 implements DbUpgrade { * add default traffic types, pnsp and virtual router element in enabled state * set p.network.id in op_dc_vnet and vlan and user_ip_address * list guest networks for the zone, set p.network.id + * + * for cases where network_tags are used for multiple guest networks: + * - figure out distinct tags + * - create physical network per tag + * - create traffic types and set the tag to xen_network_label + * - add physical network id to networks, vlan, user_ip_address for networks belonging to this tag */ PreparedStatement pstmt = null; ResultSet rs = null; PreparedStatement pstmtUpdate = null; try { // Load all DataCenters - String getNextNetworkSequenceSql = "SELECT value from `cloud`.`sequence` where name='physical_networks_seq'"; - String advanceNetworkSequenceSql = "UPDATE `cloud`.`sequence` set value=value+1 where name='physical_networks_seq'"; String xenPublicLabel = getNetworkLabelFromConfig(conn, "xen.public.network.device"); String xenPrivateLabel = getNetworkLabelFromConfig(conn, "xen.private.network.device"); @@ -135,175 +344,87 @@ public class Upgrade2214to30 implements DbUpgrade { String vnet = rs.getString(4); String zoneName = rs.getString(5); - // add p.network - PreparedStatement pstmt2 = conn.prepareStatement(getNextNetworkSequenceSql); - ResultSet rsSeq = pstmt2.executeQuery(); - rsSeq.next(); - - long physicalNetworkId = rsSeq.getLong(1); - rsSeq.close(); - pstmt2.close(); - pstmt2 = conn.prepareStatement(advanceNetworkSequenceSql); - pstmt2.executeUpdate(); - pstmt2.close(); - - String uuid = UUID.randomUUID().toString(); - String broadcastDomainRange = "POD"; - if ("Advanced".equals(networkType)) { - broadcastDomainRange = "ZONE"; - } - - s_logger.debug("Adding PhysicalNetwork " + physicalNetworkId + " for Zone id " + zoneId); - String sql = "INSERT INTO `cloud`.`physical_network` (id, uuid, data_center_id, vnet, broadcast_domain_range, state, name) VALUES (?,?,?,?,?,?,?)"; + //check if there are multiple guest networks configured using network_tags - pstmtUpdate = conn.prepareStatement(sql); - pstmtUpdate.setLong(1, physicalNetworkId); - pstmtUpdate.setString(2, uuid); - pstmtUpdate.setLong(3, zoneId); - pstmtUpdate.setString(4, vnet); - pstmtUpdate.setString(5, broadcastDomainRange); - pstmtUpdate.setString(6, "Enabled"); - zoneName = zoneName + "-pNtwk"; - pstmtUpdate.setString(7, zoneName); - s_logger.warn("Statement is " + pstmtUpdate.toString()); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - if (domainId != null && domainId.longValue() != 0) { - s_logger.debug("Updating domain_id for physical network id=" + physicalNetworkId); - sql = "UPDATE `cloud`.`physical_network` set domain_id=? where id=?"; - pstmtUpdate = conn.prepareStatement(sql); - pstmtUpdate.setLong(1, domainId); - pstmtUpdate.setLong(2, physicalNetworkId); + 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); + ResultSet rsTags = pstmt2.executeQuery(); + if(rsTags.next()){ + boolean isFirstPhysicalNtwk = true; + do{ + //create one physical network per tag + String guestNetworkTag = rsTags.getString(1); + long physicalNetworkId = addPhysicalNetworkToZone(conn, zoneId, zoneName, networkType, (isFirstPhysicalNtwk) ? vnet : null, domainId); + //add Traffic types + if(isFirstPhysicalNtwk){ + addTrafficType(conn, physicalNetworkId, "Public", xenPublicLabel, kvmPublicLabel, vmwarePublicLabel); + addTrafficType(conn, physicalNetworkId, "Management", xenPrivateLabel, kvmPrivateLabel, vmwarePrivateLabel); + addTrafficType(conn, physicalNetworkId, "Storage", xenStorageLabel, null, null); + } + addTrafficType(conn, physicalNetworkId, "Guest", guestNetworkTag, kvmGuestLabel, vmwareGuestLabel); + addDefaultServiceProviders(conn, physicalNetworkId, zoneId); + //for all networks with this tag, add physical_network_id + + PreparedStatement pstmt3 = conn.prepareStatement("SELECT network_id FROM `cloud`.`network_tags` where tag = '" + guestNetworkTag + "'"); + ResultSet rsNet = pstmt3.executeQuery(); + s_logger.debug("Adding PhysicalNetwork to VLAN"); + s_logger.debug("Adding PhysicalNetwork to user_ip_address"); + s_logger.debug("Adding PhysicalNetwork to networks"); + while(rsNet.next()){ + Long networkId = rsNet.getLong(1); + addPhysicalNtwk_To_Ntwk_IP_Vlan(conn, physicalNetworkId,networkId); + } + pstmt3.close(); + // add first physicalNetworkId to op_dc_vnet_alloc for this zone - just a placeholder since direct networking dont need this + if(isFirstPhysicalNtwk){ + s_logger.debug("Adding PhysicalNetwork to op_dc_vnet_alloc"); + String updateVnet = "UPDATE `cloud`.`op_dc_vnet_alloc` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId; + pstmtUpdate = conn.prepareStatement(updateVnet); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + } + + isFirstPhysicalNtwk = false; + }while(rsTags.next()); + pstmt2.close(); + }else{ + //default to one physical network + long physicalNetworkId = addPhysicalNetworkToZone(conn, zoneId, zoneName, networkType, vnet, domainId); + // add traffic types + addTrafficType(conn, physicalNetworkId, "Public", xenPublicLabel, kvmPublicLabel, vmwarePublicLabel); + 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); + + // add physicalNetworkId to op_dc_vnet_alloc for this zone + s_logger.debug("Adding PhysicalNetwork to op_dc_vnet_alloc"); + String updateVnet = "UPDATE `cloud`.`op_dc_vnet_alloc` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId; + pstmtUpdate = conn.prepareStatement(updateVnet); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + + // add physicalNetworkId to vlan for this zone + s_logger.debug("Adding PhysicalNetwork to VLAN"); + String updateVLAN = "UPDATE `cloud`.`vlan` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId; + pstmtUpdate = conn.prepareStatement(updateVLAN); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + + // add physicalNetworkId to user_ip_address for this zone + s_logger.debug("Adding PhysicalNetwork to user_ip_address"); + String updateUsrIp = "UPDATE `cloud`.`user_ip_address` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId; + pstmtUpdate = conn.prepareStatement(updateUsrIp); + pstmtUpdate.executeUpdate(); + pstmtUpdate.close(); + + // add physicalNetworkId to guest networks for this zone + s_logger.debug("Adding PhysicalNetwork to networks"); + String updateNet = "UPDATE `cloud`.`networks` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId + " AND traffic_type = 'Guest'"; + pstmtUpdate = conn.prepareStatement(updateNet); pstmtUpdate.executeUpdate(); pstmtUpdate.close(); } - // add traffic types - s_logger.debug("Adding PhysicalNetwork traffic types"); - String insertTraficType = "INSERT INTO `cloud`.`physical_network_traffic_types` (physical_network_id, traffic_type, xen_network_label, kvm_network_label, vmware_network_label, uuid) VALUES ( ?, ?, ?, ?, ?, ?)"; - pstmtUpdate = conn.prepareStatement(insertTraficType); - pstmtUpdate.setLong(1, physicalNetworkId); - pstmtUpdate.setString(2, "Public"); - pstmtUpdate.setString(3, xenPublicLabel); - pstmtUpdate.setString(4, kvmPublicLabel); - pstmtUpdate.setString(5, vmwarePublicLabel); - pstmtUpdate.setString(6, UUID.randomUUID().toString()); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - pstmtUpdate = conn.prepareStatement(insertTraficType); - pstmtUpdate.setLong(1, physicalNetworkId); - pstmtUpdate.setString(2, "Management"); - pstmtUpdate.setString(3, xenPrivateLabel); - pstmtUpdate.setString(4, kvmPrivateLabel); - pstmtUpdate.setString(5, vmwarePrivateLabel); - pstmtUpdate.setString(6, UUID.randomUUID().toString()); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - pstmtUpdate = conn.prepareStatement(insertTraficType); - pstmtUpdate.setLong(1, physicalNetworkId); - pstmtUpdate.setString(2, "Storage"); - pstmtUpdate.setString(3, xenStorageLabel); - pstmtUpdate.setString(4, null); - pstmtUpdate.setString(5, null); - pstmtUpdate.setString(6, UUID.randomUUID().toString()); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - pstmtUpdate = conn.prepareStatement(insertTraficType); - pstmtUpdate.setLong(1, physicalNetworkId); - pstmtUpdate.setString(2, "Guest"); - pstmtUpdate.setString(3, xenGuestLabel); - pstmtUpdate.setString(4, kvmGuestLabel); - pstmtUpdate.setString(5, vmwareGuestLabel); - pstmtUpdate.setString(6, UUID.randomUUID().toString()); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - // add physical network service provider - VirtualRouter - s_logger.debug("Adding PhysicalNetworkServiceProvider VirtualRouter"); - 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,1,1,1,1,1,1,1,1,1,1,0)"; - - pstmtUpdate = conn.prepareStatement(insertPNSP); - pstmtUpdate.setString(1, UUID.randomUUID().toString()); - pstmtUpdate.setLong(2, physicalNetworkId); - pstmtUpdate.setString(3, "VirtualRouter"); - pstmtUpdate.setString(4, "Enabled"); - 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(); - } - - - // add virtual_router_element - String fetchNSPid = "SELECT id from `cloud`.`physical_network_service_providers` where physical_network_id=" + physicalNetworkId; - pstmt2 = conn.prepareStatement(fetchNSPid); - ResultSet rsNSPid = pstmt2.executeQuery(); - rsNSPid.next(); - long nspId = rsNSPid.getLong(1); - rsSeq.close(); - pstmt2.close(); - - String insertRouter = "INSERT INTO `cloud`.`virtual_router_providers` (`nsp_id`, `uuid` , `type` , `enabled`) " + - "VALUES (?,?,?,?)"; - pstmtUpdate = conn.prepareStatement(insertRouter); - pstmtUpdate.setLong(1, nspId); - pstmtUpdate.setString(2, UUID.randomUUID().toString()); - pstmtUpdate.setString(3, "VirtualRouter"); - pstmtUpdate.setInt(4, 1); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - // add physicalNetworkId to op_dc_vnet_alloc for this zone - s_logger.debug("Adding PhysicalNetwork to op_dc_vnet_alloc"); - String updateVnet = "UPDATE `cloud`.`op_dc_vnet_alloc` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId; - pstmtUpdate = conn.prepareStatement(updateVnet); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - // add physicalNetworkId to vlan for this zone - s_logger.debug("Adding PhysicalNetwork to VLAN"); - String updateVLAN = "UPDATE `cloud`.`vlan` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId; - pstmtUpdate = conn.prepareStatement(updateVLAN); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - // add physicalNetworkId to user_ip_address for this zone - s_logger.debug("Adding PhysicalNetwork to user_ip_address"); - String updateUsrIp = "UPDATE `cloud`.`user_ip_address` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId; - pstmtUpdate = conn.prepareStatement(updateUsrIp); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); - - // add physicalNetworkId to guest networks for this zone - s_logger.debug("Adding PhysicalNetwork to networks"); - String updateNet = "UPDATE `cloud`.`networks` SET physical_network_id = " + physicalNetworkId + " WHERE data_center_id = " + zoneId + " AND traffic_type = 'Guest'"; - pstmtUpdate = conn.prepareStatement(updateNet); - pstmtUpdate.executeUpdate(); - pstmtUpdate.close(); } } catch (SQLException e) { throw new CloudRuntimeException("Exception while adding PhysicalNetworks", e);