cleanup script is also running now as well

This commit is contained in:
Alex Huang 2011-02-24 11:35:28 -08:00
parent fb4e67c140
commit a6ac728761
4 changed files with 85 additions and 41 deletions

View File

@ -17,6 +17,8 @@
*/
package com.cloud.upgrade.dao;
import java.io.File;
public interface DbUpgrade {
String[] getUpgradableVersionRange();
@ -24,7 +26,20 @@ public interface DbUpgrade {
boolean supportsRollingUpgrade();
void prepare();
void upgrade();
void cleanup();
/**
* @return the script to prepare the database schema for the
* data migration step.
*/
File getPrepareScript();
/**
* Performs the actual data migration.
*/
void performDataMigration();
/**
*
* @return
*/
File getCleanupScript();
}

View File

@ -18,46 +18,38 @@
package com.cloud.upgrade.dao;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import com.cloud.utils.PropertiesUtil;
import com.cloud.utils.db.ScriptRunner;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException;
public class Upgrade217to22 implements DbUpgrade {
@Override
public void prepare() {
public File getPrepareScript() {
File file = PropertiesUtil.findConfigFile("schema-21to22.sql");
if (file == null) {
throw new CloudRuntimeException("Unable to find the upgrade script, schema-21to22.sql");
}
try {
FileReader reader = new FileReader(file);
Connection conn = Transaction.getStandaloneConnection();
ScriptRunner runner = new ScriptRunner(conn, false, false);
runner.runScript(reader);
} catch (FileNotFoundException e) {
throw new CloudRuntimeException("Unable to find upgrade script, schema-21to22.sql", e);
} catch (IOException e) {
throw new CloudRuntimeException("Unable to read upgrade script, schema-21to22.sql", e);
} catch (SQLException e) {
throw new CloudRuntimeException("Unable to execute upgrade script, schema-21to22.sql", e);
}
return file;
}
protected void upgradeNetworks() {
}
@Override
public void upgrade() {
public void performDataMigration() {
}
@Override
public void cleanup() {
public File getCleanupScript() {
File file = PropertiesUtil.findConfigFile("schema-21to22-cleanup.sql");
if (file == null) {
throw new CloudRuntimeException("Unable to find the upgrade script, schema-21to22-cleanup.sql");
}
return file;
}
@Override

View File

@ -17,6 +17,10 @@
*/
package com.cloud.upgrade.dao;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@ -38,6 +42,7 @@ import com.cloud.utils.db.DB;
import com.cloud.utils.db.Filter;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.GenericSearchBuilder;
import com.cloud.utils.db.ScriptRunner;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.SearchCriteria.Func;
@ -124,6 +129,21 @@ public class VersionDaoImpl extends GenericDaoBase<VersionVO, Long> implements V
return vers.get(0);
}
protected void runScript(File file) {
try {
FileReader reader = new FileReader(file);
Connection conn = Transaction.getStandaloneConnection();
ScriptRunner runner = new ScriptRunner(conn, false, true);
runner.runScript(reader);
} catch (FileNotFoundException e) {
throw new CloudRuntimeException("Unable to find upgrade script, schema-21to22.sql", e);
} catch (IOException e) {
throw new CloudRuntimeException("Unable to read upgrade script, schema-21to22.sql", e);
} catch (SQLException e) {
throw new CloudRuntimeException("Unable to execute upgrade script, schema-21to22.sql", e);
}
}
@DB
protected void upgrade(String dbVersion, String currentVersion) throws ConfigurationException {
s_logger.info("Database upgrade must be performed from " + dbVersion + " to " + currentVersion);
@ -149,8 +169,9 @@ public class VersionDaoImpl extends GenericDaoBase<VersionVO, Long> implements V
s_logger.info("Running upgrade " + upgrade.getClass().getSimpleName() + " to upgrade from " + upgrade.getUpgradableVersionRange()[0] + "-" + upgrade.getUpgradableVersionRange()[1] + " to " + upgrade.getUpgradedVersion());
Transaction txn = Transaction.currentTxn();
txn.start();
upgrade.prepare();
upgrade.upgrade();
File script = upgrade.getPrepareScript();
runScript(script);
upgrade.performDataMigration();
VersionVO version = new VersionVO(upgrade.getUpgradedVersion());
persist(version);
txn.commit();
@ -161,7 +182,8 @@ public class VersionDaoImpl extends GenericDaoBase<VersionVO, Long> implements V
VersionVO version = findByVersion(upgrade.getUpgradedVersion(), Step.Upgrade);
Transaction txn = Transaction.currentTxn();
txn.start();
upgrade.cleanup();
File script = upgrade.getCleanupScript();
runScript(script);
version.setStep(Step.Complete);
version.setUpdated(new Date());
update(version.getId(), version);

View File

@ -5,24 +5,34 @@ DROP TABLE IF EXISTS `cloud`.`disk_template_ref`;
-- Then remove columns
ALTER TABLE `cloud`.`volume` DROP COLUMN `mirror_state`;
ALTER TABLE `cloud`.`volume` DROP COLUMN `mirror_vol`;
ALTER TABLE `cloud`.`volume` DROP COLUMN `destroyed`;
ALTER TABLE `cloud`.`volumes` DROP COLUMN `mirror_state`;
ALTER TABLE `cloud`.`volumes` DROP COLUMN `mirror_vol`;
ALTER TABLE `cloud`.`volumes` DROP COLUMN `destroyed`;
DROP TABLE `cloud`.`ip_forwarding`;
ALTER TABLE `cloud`.`host` DROP COLUMN `sequence`;
DROP TABLE `cloud`,`op_vm_host`;
DROP TABLE `cloud`.`op_vm_host`;
ALTER TABLE `cloud`.vm_instance` DROP COLUMN `iso_id`;
ALTER TABLE `cloud`.vm_instance` DROP COLUMN `display_name`;
ALTER TABLE `cloud`.vm_instance` DROP COLUMN `group`;
ALTER TABLE `cloud`.vm_instance` DROP COLUMN `storage_ip`;
ALTER TABLE `cloud`.vm_instance` DROP COLUMN `mirrored_vols`;
ALTER TABLE `cloud`.`vm_instance` DROP COLUMN `iso_id`;
ALTER TABLE `cloud`.`vm_instance` DROP COLUMN `display_name`;
#ALTER TABLE `cloud`.`vm_instance` DROP COLUMN `group`;
ALTER TABLE `cloud`.`vm_instance` DROP COLUMN `storage_ip`;
ALTER TABLE `cloud`.`vm_instance` DROP COLUMN `mirrored_vols`;
DROP TABLE `cloud`.`pricing`;
ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__domain_router_id`;
ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__domain_router_id`;
ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__service_offering_id`;
ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__service_offering_id`;
ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__account_id`;
ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__account_id`;
ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__external_ip_address`;
ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__external_ip_address`;
ALTER TABLE `cloud`.`user_vm` DROP FOREIGN KEY `fk_user_vm__external_vlan_db_id`;
ALTER TABLE `cloud`.`user_vm` DROP INDEX `i_user_vm__external_vlan_db_id`;
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `domain_router_id`;
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `service_offering_id`;
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `vnet`;
@ -33,6 +43,12 @@ ALTER TABLE `cloud`.`user_vm` DROP COLUMN `external_ip_address`;
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `external_mac_address`;
ALTER TABLE `cloud`.`user_vm` DROP COLUMN `external_vlan_db_id`;
ALTER TABLE `cloud`.`domain_router` DROP FOREIGN KEY `fk_domain_router__account_id`;
ALTER TABLE `cloud`.`domain_router` DROP FOREIGN KEY `fk_domain_router__public_ip_address`;
ALTER TABLE `cloud`.`domain_router` DROP FOREIGN KEY `fk_domain_router__vlan_id`;
ALTER TABLE `cloud`.`domain_router` DROP INDEX `i_domain_router__account_id`;
ALTER TABLE `cloud`.`domain_router` DROP INDEX `i_domain_router__public_ip_address`;
ALTER TABLE `cloud`.`domain_router` DROP INDEX `i_domain_router__vlan_id`;
ALTER TABLE `cloud`.`domain_router` DROP COLUMN `gateway`;
ALTER TABLE `cloud`.`domain_router` DROP COLUMN `ram_size`;
ALTER TABLE `cloud`.`domain_router` DROP COLUMN `dns1`;
@ -47,6 +63,8 @@ ALTER TABLE `cloud`.`domain_router` DROP COLUMN `domain_id`;
ALTER TABLE `cloud`.`domain_router` DROP COLUMN `account_id`;
ALTER TABLE `cloud`.`domain_router` DROP COLUMN `dhcp_ip_address`;
ALTER TABLE `cloud`.`console_proxy` DROP FOREIGN KEY `fk_console_proxy__vlan_id`;
ALTER TABLE `cloud`.`console_proxy` DROP INDEX `i_console_proxy__vlan_id`;
ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `gateway`;
ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `dns1`;
ALTER TABLE `cloud`.`console_proxy` DROP COLUMN `dns2`;
@ -70,15 +88,12 @@ ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `vlan_id`;
ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `ram_size`;
ALTER TABLE `cloud`.`secondary_storage_vm` DROP COLUMN `guid`;
DROP TABLE `cloud`.`vm_disk`;
ALTER TABLE `cloud`.`disk_offering` DROP COLUMN `mirrored`;
ALTER TABLE `cloud`.`service_offering` DROP COLUMN `guest_ip_type`;
DROP TABLE `cloud`.`security_group_vm_map`;
DROP TABLE `cloud`.`load_balancer_vm_map`;
DROP TABLE `cloud`.`security_group`;
ALTER TABLE `cloud`.`load_balancer_vm_map` DROP COLUMN `pending`;