mirror of https://github.com/apache/cloudstack.git
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.
This commit is contained in:
parent
e98899cd13
commit
a5fddd604a
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue