mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
bug 10166: drop account_id/domain_id fields (if exist) in domain_router table
status 10166: resolved fixed
This commit is contained in:
parent
9a2cc8008b
commit
64252b48f2
59
server/src/com/cloud/upgrade/dao/DbUpgradeUtils.java
Normal file
59
server/src/com/cloud/upgrade/dao/DbUpgradeUtils.java
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package com.cloud.upgrade.dao;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
|
|
||||||
|
public class DbUpgradeUtils {
|
||||||
|
final static Logger s_logger = Logger.getLogger(DbUpgradeUtils.class);
|
||||||
|
|
||||||
|
public static void dropKeysIfExist(Connection conn, String tableName, List<String> keys, boolean isForeignKey) {
|
||||||
|
for (String key : keys) {
|
||||||
|
try {
|
||||||
|
PreparedStatement pstmt = null;
|
||||||
|
if (isForeignKey) {
|
||||||
|
pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP FOREIGN KEY " + key);
|
||||||
|
} else {
|
||||||
|
pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP KEY " + key);
|
||||||
|
}
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
s_logger.debug("Key " + key + " is dropped successfully from the table " + tableName);
|
||||||
|
pstmt.close();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
// do nothing here
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void dropTableColumnsIfExist(Connection conn, String tableName, List<String> columns) {
|
||||||
|
PreparedStatement pstmt = null;
|
||||||
|
try {
|
||||||
|
for (String column : columns) {
|
||||||
|
try {
|
||||||
|
pstmt = conn.prepareStatement("SELECT " + column + " FROM " + tableName);
|
||||||
|
pstmt.executeQuery();
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
// if there is an exception, it means that field doesn't exist, so do nothing here
|
||||||
|
s_logger.trace("Field " + column + " doesn't exist in " + tableName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP COLUMN " + column);
|
||||||
|
pstmt.executeUpdate();
|
||||||
|
s_logger.debug("Column " + column + " is dropped successfully from the table " + tableName);
|
||||||
|
pstmt.close();
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
s_logger.warn("Unable to drop columns using query " + pstmt + " due to exception", e);
|
||||||
|
throw new CloudRuntimeException("Unable to drop columns due to ", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -209,32 +209,7 @@ public class Upgrade224to225 implements DbUpgrade {
|
|||||||
|
|
||||||
s_logger.debug("Dropping columns that don't exist in 2.2.5 version of the DB...");
|
s_logger.debug("Dropping columns that don't exist in 2.2.5 version of the DB...");
|
||||||
for (String tableName : tablesToModify.keySet()) {
|
for (String tableName : tablesToModify.keySet()) {
|
||||||
dropTableColumnsIfExist(conn, tableName, tablesToModify.get(tableName));
|
DbUpgradeUtils.dropTableColumnsIfExist(conn, tableName, tablesToModify.get(tableName));
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void dropTableColumnsIfExist(Connection conn, String tableName, List<String> columns) {
|
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
try {
|
|
||||||
for (String column : columns) {
|
|
||||||
try {
|
|
||||||
pstmt = conn.prepareStatement("SELECT " + column + " FROM " + tableName);
|
|
||||||
pstmt.executeQuery();
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
// if there is an exception, it means that field doesn't exist, so do nothing here
|
|
||||||
s_logger.trace("Field " + column + " doesn't exist in " + tableName);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP COLUMN " + column);
|
|
||||||
pstmt.executeUpdate();
|
|
||||||
s_logger.debug("Column " + column + " is dropped successfully from the table " + tableName);
|
|
||||||
pstmt.close();
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
s_logger.warn("Unable to drop columns using query " + pstmt + " due to exception", e);
|
|
||||||
throw new CloudRuntimeException("Unable to drop columns due to ", e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,31 +278,12 @@ public class Upgrade224to225 implements DbUpgrade {
|
|||||||
// drop all foreign keys first
|
// drop all foreign keys first
|
||||||
s_logger.debug("Dropping keys that don't exist in 2.2.5 version of the DB...");
|
s_logger.debug("Dropping keys that don't exist in 2.2.5 version of the DB...");
|
||||||
for (String tableName : foreignKeys.keySet()) {
|
for (String tableName : foreignKeys.keySet()) {
|
||||||
dropKeysIfExist(conn, tableName, foreignKeys.get(tableName), true);
|
DbUpgradeUtils.dropKeysIfExist(conn, tableName, foreignKeys.get(tableName), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// drop indexes now
|
// drop indexes now
|
||||||
for (String tableName : indexes.keySet()) {
|
for (String tableName : indexes.keySet()) {
|
||||||
dropKeysIfExist(conn, tableName, indexes.get(tableName), false);
|
DbUpgradeUtils.dropKeysIfExist(conn, tableName, indexes.get(tableName), false);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void dropKeysIfExist(Connection conn, String tableName, List<String> keys, boolean isForeignKey) {
|
|
||||||
for (String key : keys) {
|
|
||||||
try {
|
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
if (isForeignKey) {
|
|
||||||
pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP FOREIGN KEY " + key);
|
|
||||||
} else {
|
|
||||||
pstmt = conn.prepareStatement("ALTER TABLE " + tableName + " DROP KEY " + key);
|
|
||||||
}
|
|
||||||
pstmt.executeUpdate();
|
|
||||||
s_logger.debug("Key " + key + " is dropped successfully from the table " + tableName);
|
|
||||||
pstmt.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
// do nothing here
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
109
server/src/com/cloud/upgrade/dao/Upgrade225to226.java
Normal file
109
server/src/com/cloud/upgrade/dao/Upgrade225to226.java
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is licensed under the GNU General Public License v3 or later.
|
||||||
|
*
|
||||||
|
* It is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or any later version.
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.cloud.upgrade.dao;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
|
import com.cloud.utils.script.Script;
|
||||||
|
|
||||||
|
public class Upgrade225to226 implements DbUpgrade {
|
||||||
|
final static Logger s_logger = Logger.getLogger(Upgrade225to226.class);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File[] getPrepareScripts() {
|
||||||
|
String file = Script.findScript("", "db/schema-225to226.sql");
|
||||||
|
if (file == null) {
|
||||||
|
throw new CloudRuntimeException("Unable to find the upgrade script, schema-225to226.sql");
|
||||||
|
}
|
||||||
|
|
||||||
|
return new File[] { new File(file) };
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void performDataMigration(Connection conn) {
|
||||||
|
dropKeysIfExist(conn);
|
||||||
|
dropTableColumnsIfExist(conn);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public File[] getCleanupScripts() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String[] getUpgradableVersionRange() {
|
||||||
|
return new String[] { "2.2.5", "2.2.5" };
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUpgradedVersion() {
|
||||||
|
return "2.2.6";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean supportsRollingUpgrade() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dropTableColumnsIfExist(Connection conn) {
|
||||||
|
HashMap<String, List<String>> tablesToModify = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
|
// domain router table
|
||||||
|
List<String> columns = new ArrayList<String>();
|
||||||
|
columns.add("account_id");
|
||||||
|
columns.add("domain_id");
|
||||||
|
tablesToModify.put("domain_router", columns);
|
||||||
|
|
||||||
|
s_logger.debug("Dropping columns that don't exist in 2.2.6 version of the DB...");
|
||||||
|
for (String tableName : tablesToModify.keySet()) {
|
||||||
|
DbUpgradeUtils.dropTableColumnsIfExist(conn, tableName, tablesToModify.get(tableName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dropKeysIfExist(Connection conn) {
|
||||||
|
HashMap<String, List<String>> foreignKeys = new HashMap<String, List<String>>();
|
||||||
|
HashMap<String, List<String>> indexes = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
|
// domain router table
|
||||||
|
List<String> keys = new ArrayList<String>();
|
||||||
|
keys.add("fk_domain_router__account_id");
|
||||||
|
foreignKeys.put("domain_router", keys);
|
||||||
|
|
||||||
|
keys = new ArrayList<String>();
|
||||||
|
keys.add("i_domain_router__account_id");
|
||||||
|
indexes.put("domain_router", keys);
|
||||||
|
|
||||||
|
// drop all foreign keys first
|
||||||
|
s_logger.debug("Dropping keys that don't exist in 2.2.6 version of the DB...");
|
||||||
|
for (String tableName : foreignKeys.keySet()) {
|
||||||
|
DbUpgradeUtils.dropKeysIfExist(conn, tableName, foreignKeys.get(tableName), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// drop indexes now
|
||||||
|
for (String tableName : indexes.keySet()) {
|
||||||
|
DbUpgradeUtils.dropKeysIfExist(conn, tableName, indexes.get(tableName), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1198,7 +1198,7 @@ CREATE TABLE `cloud`.`storage_pool` (
|
|||||||
`cluster_id` bigint unsigned COMMENT 'foreign key to cluster',
|
`cluster_id` bigint unsigned COMMENT 'foreign key to cluster',
|
||||||
`available_bytes` bigint unsigned,
|
`available_bytes` bigint unsigned,
|
||||||
`capacity_bytes` bigint unsigned,
|
`capacity_bytes` bigint unsigned,
|
||||||
`host_address` char(40) NOT NULL COMMENT 'FQDN or IP of storage server',
|
`host_address` varchar(255) NOT NULL COMMENT 'FQDN or IP of storage server',
|
||||||
`path` varchar(255) NOT NULL COMMENT 'Filesystem path that is shared',
|
`path` varchar(255) NOT NULL COMMENT 'Filesystem path that is shared',
|
||||||
`created` datetime COMMENT 'date the pool created',
|
`created` datetime COMMENT 'date the pool created',
|
||||||
`removed` datetime COMMENT 'date removed if not null',
|
`removed` datetime COMMENT 'date removed if not null',
|
||||||
|
|||||||
@ -26,9 +26,6 @@ ALTER TABLE `cloud`.`user_vm` DROP COLUMN `service_offering_id`;
|
|||||||
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `account_id`;
|
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `account_id`;
|
||||||
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `domain_id`;
|
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `domain_id`;
|
||||||
|
|
||||||
ALTER TABLE `cloud`.`domain_router` DROP FOREIGN KEY `fk_domain_router__account_id`;
|
|
||||||
ALTER TABLE `cloud`.`domain_router` DROP INDEX `i_domain_router__account_id`;
|
|
||||||
|
|
||||||
#ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `guid`;
|
#ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `guid`;
|
||||||
|
|
||||||
#ALTER TABLE `cloud`.`vlan` ADD CONSTRAINT `fk_vlan__network_id` FOREIGN KEY `fk_vlan__network_id`(`network_id`) REFERENCES `networks`(`id`);
|
#ALTER TABLE `cloud`.`vlan` ADD CONSTRAINT `fk_vlan__network_id` FOREIGN KEY `fk_vlan__network_id`(`network_id`) REFERENCES `networks`(`id`);
|
||||||
|
|||||||
@ -953,7 +953,7 @@ INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type,
|
|||||||
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type, extractable)
|
INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type, extractable)
|
||||||
VALUES (7, 'centos53-x64', 'CentOS 5.3(64-bit) no GUI (vSphere)', 1, now(), 'BUILTIN', 0, 64, 1, 'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova', 'f6f881b7f2292948d8494db837fe0f47', 0, 'CentOS 5.3(64-bit) no GUI (vSphere)', 'OVA', 12, 1, 1, 'VMware', 1);
|
VALUES (7, 'centos53-x64', 'CentOS 5.3(64-bit) no GUI (vSphere)', 1, now(), 'BUILTIN', 0, 64, 1, 'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova', 'f6f881b7f2292948d8494db837fe0f47', 0, 'CentOS 5.3(64-bit) no GUI (vSphere)', 'OVA', 12, 1, 1, 'VMware', 1);
|
||||||
UPDATE vm_instance SET guest_os_id=15 where vm_template_id=1;
|
UPDATE vm_instance SET guest_os_id=15 where vm_template_id=1;
|
||||||
UPDATE vm_instance SET vm_template_id=(SELECT id FROM vm_template WHERE unique_name='systemvm-xenserver-2.2.4' AND removed IS NULL) where vm_template_id=1;
|
UPDATE vm_instance SET vm_template_id=(SELECT id FROM vm_template WHERE name='systemvm-xenserver-2.2.4' AND removed IS NULL) where vm_template_id=1;
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE `cloud`.`instance_group` ADD CONSTRAINT `fk_instance_group__account_id` FOREIGN KEY `fk_instance_group__account_id` (`account_id`) REFERENCES `account` (`id`);
|
ALTER TABLE `cloud`.`instance_group` ADD CONSTRAINT `fk_instance_group__account_id` FOREIGN KEY `fk_instance_group__account_id` (`account_id`) REFERENCES `account` (`id`);
|
||||||
|
|||||||
7
setup/db/db/schema-225to226.sql
Normal file
7
setup/db/db/schema-225to226.sql
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
--;
|
||||||
|
-- Schema upgrade from 2.2.5 to 2.2.6;
|
||||||
|
--;
|
||||||
|
|
||||||
|
ALTER TABLE `cloud`.`storage_pool` MODIFY `host_address` varchar(255) NOT NULL;
|
||||||
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user