mirror of https://github.com/apache/cloudstack.git
CS-15381: Upgrade from 3.0.3 to 3.0.4 is failing
CS-15382: Hosts going to Alert state if there were destroyed networks with non-existent tags prior to upgrade Reviewed-By: Alena P. Changes: - If 2.2.14, create the SG provider by looking at is_security_group_enabled flag - if 3.0.3, create the SG provider by looking at the ntwk_service_map.
This commit is contained in:
parent
a8fd70fe0a
commit
709f1b9c78
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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{
|
||||
|
|
|
|||
Loading…
Reference in New Issue