// Copyright 2012 Citrix Systems, Inc. Licensed under the
// Apache License, Version 2.0 (the "License"); you may not use this
// file except in compliance with the License. Citrix Systems, Inc.
// reserves all rights not expressly granted by the License.
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Automatically generated by addcopyright.py at 04/03/2012
package com.cloud.upgrade.dao;
import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.script.Script;
public class Upgrade218to22Premium extends Upgrade218to22 {
@Override
public File[] getPrepareScripts() {
File[] scripts = super.getPrepareScripts();
File[] newScripts = new File[2];
newScripts[0] = scripts[0];
String file = Script.findScript("","db/schema-21to22-premium.sql");
if (file == null) {
throw new CloudRuntimeException("Unable to find the upgrade script, schema-21to22-premium.sql");
}
newScripts[1] = new File(file);
return newScripts;
}
@Override
public void performDataMigration(Connection conn) {
super.performDataMigration(conn);
updateUserStats(conn);
updateUsageIpAddress(conn);
}
@Override
public File[] getCleanupScripts() {
File[] scripts = super.getCleanupScripts();
File[] newScripts = new File[1];
// Change the array to 2 when you add in the scripts for premium.
newScripts[0] = scripts[0];
return newScripts;
}
private void updateUserStats(Connection conn) {
try {
// update device_id information
PreparedStatement pstmt = conn.prepareStatement("update cloud_usage.user_statistics uus set device_id = " +
"(select device_id from cloud.user_statistics us where uus.id = us.id)");
pstmt.executeUpdate();
pstmt.close();
s_logger.debug("Upgraded cloud_usage user_statistics with deviceId");
// update host_id information in usage_network
PreparedStatement pstmt1 = conn.prepareStatement("update cloud_usage.usage_network un set host_id = " +
"(select device_id from cloud_usage.user_statistics us where us.account_id = un.account_id and us.data_center_id = un.zone_id)");
pstmt1.executeUpdate();
pstmt1.close();
s_logger.debug("Upgraded cloud_usage usage_network with hostId");
} catch (Exception e) {
throw new CloudRuntimeException("Failed to upgrade user stats: ", e);
}
}
private void updateUsageIpAddress(Connection conn) {
try {
// update id information
PreparedStatement pstmt = conn.prepareStatement("update cloud_usage.usage_ip_address uip set id = " +
"(select id from cloud.user_ip_address ip where uip.public_ip_address = ip.public_ip_address and ip.data_center_id = uip.zone_id)");
pstmt.executeUpdate();
pstmt.close();
s_logger.debug("Upgraded cloud_usage usage_ip_address with Id");
} catch (Exception e) {
throw new CloudRuntimeException("Failed to upgrade usage_ip_address: ", e);
}
}
}