From 04099a4950359318da10ccea7f34054e8a8dffec Mon Sep 17 00:00:00 2001 From: Alex Huang Date: Tue, 5 Apr 2011 09:10:57 -0700 Subject: [PATCH] bug 9311: changed instance_id to nic_id --- .../dc/DataCenterLinkLocalIpAddressVO.java | 2 +- .../com/cloud/upgrade/dao/Upgrade218to22.java | 52 +++++++++++++++---- .../AdvanceZone217To224UpgradeTest.java | 13 +++++ setup/db/create-schema.sql | 2 +- setup/db/db/schema-21to22.sql | 2 - setup/db/db/schema-222to224.sql | 3 ++ 6 files changed, 61 insertions(+), 13 deletions(-) diff --git a/server/src/com/cloud/dc/DataCenterLinkLocalIpAddressVO.java b/server/src/com/cloud/dc/DataCenterLinkLocalIpAddressVO.java index b98138de8da..7d294e31c72 100644 --- a/server/src/com/cloud/dc/DataCenterLinkLocalIpAddressVO.java +++ b/server/src/com/cloud/dc/DataCenterLinkLocalIpAddressVO.java @@ -50,7 +50,7 @@ public class DataCenterLinkLocalIpAddressVO { @Column(name="pod_id", updatable=false, nullable=false) private long podId; - @Column(name="instance_id") + @Column(name="nic_id") private Long instanceId; @Column(name="reservation_id") diff --git a/server/src/com/cloud/upgrade/dao/Upgrade218to22.java b/server/src/com/cloud/upgrade/dao/Upgrade218to22.java index 25b62734c51..b3bf4815c78 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade218to22.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade218to22.java @@ -210,7 +210,7 @@ public class Upgrade218to22 implements DbUpgrade { return nicId; } - protected void upgradeDomR(Connection conn, long domrId, Long publicNetworkId, long guestNetworkId, long controlNetworkId, String zoneType) throws SQLException { + protected void upgradeDomR(Connection conn, long dcId, long domrId, Long publicNetworkId, long guestNetworkId, long controlNetworkId, String zoneType) throws SQLException { s_logger.debug("Upgrading domR" + domrId); PreparedStatement pstmt = conn.prepareStatement("SELECT vm_instance.id, vm_instance.state, vm_instance.private_mac_address, vm_instance.private_ip_address, vm_instance.private_netmask, domain_router.public_mac_address, domain_router.public_ip_address, domain_router.public_netmask, domain_router.guest_mac_address, domain_router.guest_ip_address, domain_router.guest_netmask, domain_router.vnet, domain_router.gateway, vm_instance.type FROM vm_instance INNER JOIN domain_router ON vm_instance.id=domain_router.id WHERE vm_instance.removed is NULL AND vm_instance.id=?"); pstmt.setLong(1, domrId); @@ -239,11 +239,28 @@ public class Upgrade218to22 implements DbUpgrade { pstmt.close(); if (zoneType.equalsIgnoreCase("Basic")) { - insertNic(conn, controlNetworkId, domrId, running, privateMac, privateIp, privateNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 1, "Static", privateIp != null ? (domrId + privateIp) : null); + long controlNicId = insertNic(conn, controlNetworkId, domrId, running, privateMac, privateIp, privateNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 1, "Static", privateIp != null ? (domrId + privateIp) : null); + if (privateIp != null) { + pstmt = conn.prepareStatement("UPDATE op_dc_link_local_ip_address_alloc SET instance_id=? WHERE ip_address=? AND data_center_id=?"); + pstmt.setLong(1, controlNicId); + pstmt.setString(2, privateIp); + pstmt.setLong(3, dcId); + pstmt.executeUpdate(); + pstmt.close(); + } + insertNic(conn, guestNetworkId, domrId, running, guestMac, guestIp, guestNetmask, "Start", gateway, vnet, "DirectPodBasedNetworkGuru", false, 0, "Static", null); } else { insertNic(conn, publicNetworkId, domrId, running, publicMac, publicIp, publicNetmask, "Create", gateway, null, "PublicNetworkGuru", true, 2, "Static", null); - insertNic(conn, controlNetworkId, domrId, running, privateMac, privateIp, privateNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 1, "Static", privateIp != null ? (domrId + privateIp) : null); + long controlNicId = insertNic(conn, controlNetworkId, domrId, running, privateMac, privateIp, privateNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 1, "Static", privateIp != null ? (domrId + privateIp) : null); + if (privateIp != null) { + pstmt = conn.prepareStatement("UPDATE op_dc_link_local_ip_address_alloc SET instance_id=? WHERE ip_address=? AND data_center_id=?"); + pstmt.setLong(1, controlNicId); + pstmt.setString(2, privateIp); + pstmt.setLong(3, dcId); + pstmt.executeUpdate(); + pstmt.close(); + } insertNic(conn, guestNetworkId, domrId, running, guestMac, guestIp, guestNetmask, "Start", null, vnet, "ExternalGuestNetworkGuru", false, 0, "Static", null); } @@ -300,10 +317,19 @@ public class Upgrade218to22 implements DbUpgrade { insertNic(conn, publicNetworkId, ssvmId, running, publicMac, publicIp, publicNetmask, "Create", gateway, null, "PublicNetworkGuru", true, 2, "Static", null); } - insertNic(conn, controlNetworkId, ssvmId, running, guestMac, guestIp, guestNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 0, "Static", guestIp != null ? (ssvmId + guestIp) : null); + long controlNicId = insertNic(conn, controlNetworkId, ssvmId, running, guestMac, guestIp, guestNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 0, "Static", guestIp != null ? (ssvmId + guestIp) : null); + if (guestIp != null) { + pstmt = conn.prepareStatement("UPDATE op_dc_link_local_ip_address_alloc SET instance_id=? WHERE ip_address=? AND data_center_id=?"); + pstmt.setLong(1, controlNicId); + pstmt.setString(2, guestIp); + pstmt.setLong(3, dataCenterId); + pstmt.executeUpdate(); + pstmt.close(); + } + long mgmtNicId = insertNic(conn, managementNetworkId, ssvmId, running, privateMac, privateIp, privateNetmask, "Start", podGateway, null, "PodBasedNetworkGuru", false, 1, "Static", null); if (privateIp != null) { - pstmt = conn.prepareStatement("UPDATE op_dc_ip_address_alloc SET nic_id=? WHERE ip_address=? AND data_center_id=?"); + pstmt = conn.prepareStatement("UPDATE op_dc_ip_address_alloc SET instance_id=? WHERE ip_address=? AND data_center_id=?"); pstmt.setLong(1, mgmtNicId); pstmt.setString(2, privateIp); pstmt.setLong(3, dataCenterId); @@ -358,10 +384,18 @@ public class Upgrade218to22 implements DbUpgrade { insertNic(conn, publicNetworkId, cpId, running, publicMac, publicIp, publicNetmask, "Create", gateway, null, "PublicNetworkGuru", true, 2, "Static", null); } - insertNic(conn, controlNetworkId, cpId, running, guestMac, guestIp, guestNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 0, "Static", guestIp != null ? (cpId + guestIp) : null); + long controlNicId = insertNic(conn, controlNetworkId, cpId, running, guestMac, guestIp, guestNetmask, "Start", "169.254.0.1", null, "ControlNetworkGuru", false, 0, "Static", guestIp != null ? (cpId + guestIp) : null); + if (guestIp != null) { + pstmt = conn.prepareStatement("UPDATE op_dc_link_local_ip_address_alloc SET instance_id=? WHERE ip_address=? AND data_center_id=?"); + pstmt.setLong(1, controlNicId); + pstmt.setString(2, guestIp); + pstmt.setLong(3, dcId); + pstmt.executeUpdate(); + pstmt.close(); + } long mgmtNicId = insertNic(conn, managementNetworkId, cpId, running, privateMac, privateIp, privateNetmask, "Start", podGateway, null, "PodBasedNetworkGuru", false, 1, "Static", privateIp != null ? (cpId + privateIp) : null); if (privateIp != null) { - pstmt = conn.prepareStatement("UPDATE op_dc_ip_address_alloc SET nic_id=? WHERE ip_address=? AND data_center_id=?"); + pstmt = conn.prepareStatement("UPDATE op_dc_ip_address_alloc SET instance_id=? WHERE ip_address=? AND data_center_id=?"); pstmt.setLong(1, mgmtNicId); pstmt.setString(2, privateIp); pstmt.setLong(3, dcId); @@ -794,7 +828,7 @@ public class Upgrade218to22 implements DbUpgrade { pstmt.close(); upgradeBasicUserVms(conn, (Long)router[0], basicDefaultDirectNetworkId, (String)router[1], "untagged"); - upgradeDomR(conn, (Long)router[0], null, basicDefaultDirectNetworkId, controlNetworkId, "Basic"); + upgradeDomR(conn, dcId, (Long)router[0], null, basicDefaultDirectNetworkId, controlNetworkId, "Basic"); } upgradeSsvm(conn, dcId, basicDefaultDirectNetworkId, mgmtNetworkId, controlNetworkId, "Basic"); @@ -852,7 +886,7 @@ public class Upgrade218to22 implements DbUpgrade { s_logger.debug("Network inserted for " + router[0] + " id = " + virtualNetworkId); upgradeVirtualUserVms(conn, (Long)router[0], virtualNetworkId, (String)router[3], vnet); - upgradeDomR(conn, (Long)router[0], publicNetworkId, virtualNetworkId, controlNetworkId, "Advanced"); + upgradeDomR(conn, dcId, (Long)router[0], publicNetworkId, virtualNetworkId, controlNetworkId, "Advanced"); } upgradePublicUserIpAddress(conn, dcId, publicNetworkId, "VirtualNetwork"); diff --git a/server/test/com/cloud/upgrade/AdvanceZone217To224UpgradeTest.java b/server/test/com/cloud/upgrade/AdvanceZone217To224UpgradeTest.java index 11b334e4544..c119d5eb07f 100644 --- a/server/test/com/cloud/upgrade/AdvanceZone217To224UpgradeTest.java +++ b/server/test/com/cloud/upgrade/AdvanceZone217To224UpgradeTest.java @@ -92,6 +92,19 @@ public class AdvanceZone217To224UpgradeTest extends TestCase { rs.close(); pstmt.close(); + pstmt = conn.prepareStatement("SELECT COUNT(*) FROM op_dc_link_local_ip_address_alloc WHERE nic_id IS NOT NULL"); + rs = pstmt.executeQuery(); + rs.next(); + int controlNics = rs.getInt(1); + rs.close(); + pstmt.close(); + + pstmt = conn.prepareStatement("SELECT COUNT(*) FROM nics WHERE reserver_name='ControlNetworkGuru' and ip4_address is NOT NULL"); + rs = pstmt.executeQuery(); + assert (rs.next() && controlNics == rs.getInt(1)) : "Allocated nics should have been " + controlNics + " but it is " + rs.getInt(1); + rs.close(); + pstmt.close(); + } finally { try { diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql index 2c8104320d5..65a8c463fc5 100755 --- a/setup/db/create-schema.sql +++ b/setup/db/create-schema.sql @@ -518,7 +518,7 @@ CREATE TABLE `cloud`.`op_dc_link_local_ip_address_alloc` ( `ip_address` char(40) NOT NULL COMMENT 'ip address', `data_center_id` bigint unsigned NOT NULL COMMENT 'data center it belongs to', `pod_id` bigint unsigned NOT NULL COMMENT 'pod it belongs to', - `instance_id` bigint unsigned NULL COMMENT 'instance id', + `nic_id` bigint unsigned NULL COMMENT 'instance id', `reservation_id` char(40) NULL COMMENT 'reservation id used to reserve this network', `taken` datetime COMMENT 'Date taken', PRIMARY KEY (`id`) diff --git a/setup/db/db/schema-21to22.sql b/setup/db/db/schema-21to22.sql index b1a5b36887b..26454f13f84 100755 --- a/setup/db/db/schema-21to22.sql +++ b/setup/db/db/schema-21to22.sql @@ -950,5 +950,3 @@ ALTER TABLE `cloud`.`instance_group` ADD CONSTRAINT `fk_instance_group__account_ ALTER TABLE `cloud`.`instance_group_vm_map` ADD CONSTRAINT `fk_instance_group_vm_map___group_id` FOREIGN KEY `fk_instance_group_vm_map___group_id` (`group_id`) REFERENCES `instance_group` (`id`) ON DELETE CASCADE; ALTER TABLE `cloud`.`instance_group_vm_map` ADD CONSTRAINT `fk_instance_group_vm_map___instance_id` FOREIGN KEY `fk_instance_group_vm_map___instance_id` (`instance_id`) REFERENCES `user_vm` (`id`) ON DELETE CASCADE; ALTER TABLE `cloud`.`domain` MODIFY COLUMN `path` varchar(255) UNIQUE NOT NULL; -ALTER TABLE `cloud`.`op_dc_ip_address_alloc` CHANGE COLUMN `instance_id` `nic_id` bigint unsigned DEFAULT NULL; -ALTER TABLE op_dc_ip_address_alloc ADD CONSTRAINT `fk_op_dc_ip_address_alloc__data_center_id` FOREIGN KEY (`data_center_id`) REFERENCES `data_center`(`id`) ON DELETE CASCADE; diff --git a/setup/db/db/schema-222to224.sql b/setup/db/db/schema-222to224.sql index ee5aab6337b..4173b049fc8 100644 --- a/setup/db/db/schema-222to224.sql +++ b/setup/db/db/schema-222to224.sql @@ -113,3 +113,6 @@ INSERT INTO `cloud`.`configuration` VALUES ('Advanced','DEFAULT','management-server','vmware.service.console','Service Console','Specify the service console network name (ESX host only)'), ('Advanced','DEFAULT','AgentManager','xapiwait','600','Time (in seconds) to wait for XAPI to return'); +ALTER TABLE `cloud`.`op_dc_ip_address_alloc` CHANGE COLUMN `instance_id` `nic_id` bigint unsigned DEFAULT NULL; +ALTER TABLE op_dc_ip_address_alloc ADD CONSTRAINT `fk_op_dc_ip_address_alloc__data_center_id` FOREIGN KEY (`data_center_id`) REFERENCES `data_center`(`id`) ON DELETE CASCADE; +ALTER TABLE `cloud`.`op_dc_link_local_ip_address_alloc` CHANGE COLUMN `instance_id` `nic_id` bigint unsigned DEFAULT NULL;