diff --git a/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java b/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java index 2ddebfaa91b..556ecf380e4 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade2214to30.java @@ -84,6 +84,8 @@ public class Upgrade2214to30 implements DbUpgrade { createNetworkServices(conn); //migrate user concentrated deployment planner choice to new global setting migrateUserConcentratedPlannerChoice(conn); + // update domain router table for element it; + updateRouters(conn); } @Override @@ -672,6 +674,26 @@ public class Upgrade2214to30 implements DbUpgrade { } } } + + protected void updateRouters(Connection conn) { + PreparedStatement pstmt = null; + try { + s_logger.debug("Updating domain_router table"); + pstmt = conn + .prepareStatement("UPDATE domain_router, virtual_router_providers vrp LEFT JOIN (physical_network_service_providers pnsp INNER JOIN networks ntwk INNER JOIN domain_router vr) ON (vrp.nsp_id = pnsp.id and pnsp.physical_network_id = ntwk.physical_network_id and ntwk.id=vr.network_id) SET vr.element_id=vrp.id;"); + pstmt.executeUpdate(); + } catch (SQLException e) { + throw new CloudRuntimeException("Unable to update router table. ", e); + } finally { + try { + if (pstmt != null) { + pstmt.close(); + } + } catch (SQLException e) { + throw new CloudRuntimeException("Unable to close statement for router table. ", e); + } + } + } protected void updateReduntantRouters(Connection conn) { PreparedStatement pstmt = null; diff --git a/setup/db/db/schema-2214to30.sql b/setup/db/db/schema-2214to30.sql index 725a1cf9e2c..51e199dca69 100755 --- a/setup/db/db/schema-2214to30.sql +++ b/setup/db/db/schema-2214to30.sql @@ -485,6 +485,8 @@ CREATE TABLE `cloud`.`virtual_router_providers` ( CONSTRAINT `uc_virtual_router_providers__uuid` UNIQUE (`uuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +ALTER TABLE `cloud`.`domain_router` ADD COLUMN `element_id` bigint unsigned NOT NULL COMMENT 'correlated virtual router provider ID' AFTER id; +ALTER TABLE `cloud`.`domain_router` ADD CONSTRAINT `fk_domain_router__element_id` FOREIGN KEY `fk_domain_router__element_id`(`element_id`) REFERENCES `virtual_router_providers`(`id`); INSERT INTO `cloud`.`sequence` (name, value) VALUES ('physical_networks_seq', 200); ALTER TABLE `cloud`.`networks` ADD COLUMN `physical_network_id` bigint unsigned COMMENT 'physical network id that this configuration is based on' AFTER network_offering_id;