Remove old Upgrade410to420
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/8996ea38 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/8996ea38 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/8996ea38 Branch: refs/heads/vmware-datamodel Commit: 8996ea386b25bdac12057d00015eb101551c7dc8 Parents: 97fe5cb Author: Sateesh Chodapuneedi <sate...@apache.org> Authored: Wed May 22 19:24:46 2013 +0530 Committer: Sateesh Chodapuneedi <sate...@apache.org> Committed: Wed May 22 19:24:46 2013 +0530 ---------------------------------------------------------------------- .../src/com/cloud/upgrade/dao/Upgrade410to420.java | 562 --------------- 1 files changed, 0 insertions(+), 562 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8996ea38/server/src/com/cloud/upgrade/dao/Upgrade410to420.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/upgrade/dao/Upgrade410to420.java b/server/src/com/cloud/upgrade/dao/Upgrade410to420.java deleted file mode 100644 index 0c53280..0000000 --- a/server/src/com/cloud/upgrade/dao/Upgrade410to420.java +++ /dev/null @@ -1,562 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with 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. - -package com.cloud.upgrade.dao; - -import com.cloud.hypervisor.Hypervisor.HypervisorType; -import com.cloud.utils.exception.CloudRuntimeException; -import com.cloud.utils.script.Script; -import org.apache.log4j.Logger; - -import java.io.File; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class Upgrade410to420 implements DbUpgrade { - final static Logger s_logger = Logger.getLogger(Upgrade410to420.class); - - @Override - public String[] getUpgradableVersionRange() { - return new String[] { "4.1.0", "4.2.0" }; - } - - @Override - public String getUpgradedVersion() { - return "4.2.0"; - } - - @Override - public boolean supportsRollingUpgrade() { - return false; - } - - @Override - public File[] getPrepareScripts() { - String script = Script.findScript("", "db/schema-410to420.sql"); - if (script == null) { - throw new CloudRuntimeException("Unable to find db/schema-410to420.sql"); - } - - return new File[] { new File(script) }; - } - - @Override - public void performDataMigration(Connection conn) { - upgradeVmwareLabels(conn); - persistLegacyZones(conn); - createPlaceHolderNics(conn); - updateRemoteAccessVpn(conn); - updateSystemVmTemplates(conn); - updateCluster_details(conn); - updatePrimaryStore(conn); - addEgressFwRulesForSRXGuestNw(conn); - upgradeEIPNetworkOfferings(conn); - } - - private void updateSystemVmTemplates(Connection conn) { - PreparedStatement sql = null; - try { - sql = conn.prepareStatement("update vm_template set image_data_store_id = 1 where type = 'SYSTEM' or type = 'BUILTIN'"); - sql.executeUpdate(); - } catch (SQLException e) { - throw new CloudRuntimeException("Failed to upgrade vm template data store uuid: " + e.toString()); - } finally { - if (sql != null) { - try { - sql.close(); - } catch (SQLException e) { - } - } - } - } - - private void updatePrimaryStore(Connection conn) { - PreparedStatement sql = null; - PreparedStatement sql2 = null; - try { - sql = conn.prepareStatement("update storage_pool set storage_provider_name = ? , scope = ? where pool_type = 'Filesystem' or pool_type = 'LVM'"); - sql.setString(1, "ancient primary data store provider"); - sql.setString(2, "HOST"); - sql.executeUpdate(); - - sql2 = conn.prepareStatement("update storage_pool set storage_provider_name = ? , scope = ? where pool_type != 'Filesystem' and pool_type != 'LVM'"); - sql2.setString(1, "ancient primary data store provider"); - sql2.setString(2, "CLUSTER"); - sql2.executeUpdate(); - } catch (SQLException e) { - throw new CloudRuntimeException("Failed to upgrade vm template data store uuid: " + e.toString()); - } finally { - if (sql != null) { - try { - sql.close(); - } catch (SQLException e) { - } - } - - if (sql2 != null) { - try { - sql2.close(); - } catch (SQLException e) { - } - } - } - } - - //update the cluster_details table with default overcommit ratios. - private void updateCluster_details(Connection conn) { - PreparedStatement pstmt = null; - PreparedStatement pstmt1 = null; - PreparedStatement pstmt2 =null; - ResultSet rs = null; - - try { - pstmt = conn.prepareStatement("select id from `cloud`.`cluster`"); - pstmt1=conn.prepareStatement("INSERT INTO `cloud`.`cluster_details` (cluster_id, name, value) VALUES(?, 'cpuOvercommitRatio', '1')"); - pstmt2=conn.prepareStatement("INSERT INTO `cloud`.`cluster_details` (cluster_id, name, value) VALUES(?, 'memoryOvercommitRatio', '1')"); - rs = pstmt.executeQuery(); - while (rs.next()) { - long id = rs.getLong(1); - //update cluster_details table with the default overcommit ratios. - pstmt1.setLong(1,id); - pstmt1.execute(); - pstmt2.setLong(1,id); - pstmt2.execute(); - } - } catch (SQLException e) { - throw new CloudRuntimeException("Unable to update cluster_details with default overcommit ratios.", e); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } - } - } - - - @Override - public File[] getCleanupScripts() { - String script = Script.findScript("", "db/schema-410to420-cleanup.sql"); - if (script == null) { - throw new CloudRuntimeException("Unable to find db/schema-410to420-cleanup.sql"); - } - - return new File[] { new File(script) }; - } - - private String getNewLabel(ResultSet rs, String oldParamValue) { - int separatorIndex; - String oldGuestLabel; - String newGuestLabel = oldParamValue; - try { - // No need to iterate because the global param setting applies to all physical networks irrespective of traffic type - if (rs.next()) { - oldGuestLabel = rs.getString("vmware_network_label"); - // guestLabel is in format [[<VSWITCHNAME>],VLANID] - separatorIndex = oldGuestLabel.indexOf(","); - if(separatorIndex > -1) { - newGuestLabel += oldGuestLabel.substring(separatorIndex); - } - } - } catch (SQLException e) { - s_logger.error(new CloudRuntimeException("Failed to read vmware_network_label : " + e)); - } finally { - try { - if (rs != null) { - rs.close(); - } - } catch (SQLException e) { - } - } - return newGuestLabel; - } - - private void upgradeVmwareLabels(Connection conn) { - PreparedStatement pstmt = null; - ResultSet rsParams = null; - ResultSet rsLabel = null; - String newLabel; - String trafficType = null; - String trafficTypeVswitchParam; - String trafficTypeVswitchParamValue; - - try { - // update the existing vmware traffic labels - pstmt = conn.prepareStatement("select name,value from `cloud`.`configuration` where category='Hidden' and value is not NULL and name REGEXP 'vmware\\.*\\.vswitch';"); - rsParams = pstmt.executeQuery(); - while (rsParams.next()) { - trafficTypeVswitchParam = rsParams.getString("name"); - trafficTypeVswitchParamValue = rsParams.getString("value"); - // When upgraded from 4.0 to 4.1 update physical network traffic label with trafficTypeVswitchParam - if (trafficTypeVswitchParam.equals("vmware.private.vswitch")) { - trafficType = "Management"; //TODO(sateesh): Ignore storage traffic, as required physical network already implemented, anything else tobe done? - } else if (trafficTypeVswitchParam.equals("vmware.public.vswitch")) { - trafficType = "Public"; - } else if (trafficTypeVswitchParam.equals("vmware.guest.vswitch")) { - trafficType = "Guest"; - } - s_logger.debug("Updating vmware label for " + trafficType + " traffic. Update SQL statement is " + pstmt); - pstmt = conn.prepareStatement("select physical_network_id, traffic_type, vmware_network_label from physical_network_traffic_types where vmware_network_label is not NULL and traffic_type='" + trafficType + "';"); - rsLabel = pstmt.executeQuery(); - newLabel = getNewLabel(rsLabel, trafficTypeVswitchParamValue); - pstmt = conn.prepareStatement("update physical_network_traffic_types set vmware_network_label = " + newLabel + " where traffic_type = '" + trafficType + "' and vmware_network_label is not NULL;"); - pstmt.executeUpdate(); - } - } catch (SQLException e) { - throw new CloudRuntimeException("Unable to set vmware traffic labels ", e); - } finally { - try { - if (rsParams != null) { - rsParams.close(); - } - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } - } - } - - private void persistLegacyZones(Connection conn) { - List<Long> listOfLegacyZones = new ArrayList<Long>(); - PreparedStatement pstmt = null; - PreparedStatement clustersQuery = null; - PreparedStatement clusterDetailsQuery = null; - ResultSet rs = null; - ResultSet clusters = null; - ResultSet clusterDetails = null; - ResultSet dcInfo = null; - Long vmwareDcId = 1L; - Long zoneId; - Long clusterId; - String clusterHypervisorType; - boolean legacyZone; - boolean ignoreZone; - Long count; - String dcOfPreviousCluster = null; - String dcOfCurrentCluster = null; - String[] tokens; - String url; - String user; - String password; - String vc = ""; - String dcName = ""; - String guid; - - try { - clustersQuery = conn.prepareStatement("select id, hypervisor_type from `cloud`.`cluster` where removed is NULL"); - pstmt = conn.prepareStatement("select id from `cloud`.`data_center` where removed is NULL"); - rs = pstmt.executeQuery(); - - while (rs.next()) { - zoneId = rs.getLong("id"); - legacyZone = false; - ignoreZone = true; - count = 0L; - // Legacy zone term is meant only for VMware - // Legacy zone is a zone with atleast 2 clusters & with multiple DCs or VCs - clusters = clustersQuery.executeQuery(); - if (!clusters.next()) { - continue; // Ignore the zone without any clusters - } else { - dcOfPreviousCluster = null; - dcOfCurrentCluster = null; - do { - clusterHypervisorType = clusters.getString("hypervisor_type"); - clusterId = clusters.getLong("id"); - if (clusterHypervisorType.equalsIgnoreCase("VMware")) { - ignoreZone = false; - if (count > 0) { - dcOfPreviousCluster = dcOfCurrentCluster; - clusterDetailsQuery = conn.prepareStatement("select value,username,password from `cloud`.`cluster_details` where name='url' and cluster_id=?"); - clusterDetailsQuery.setLong(1, clusterId); - clusterDetails = clusterDetailsQuery.executeQuery(); - url = clusterDetails.getString("value"); - tokens = url.split("/"); // url format - http://vcenter/dc/cluster - vc = tokens[2]; - dcName = tokens[3]; - dcOfCurrentCluster = dcName + "@" + vc; - if (!dcOfPreviousCluster.equals(dcOfCurrentCluster)) { - legacyZone = true; - s_logger.debug("Marking the zone " + zoneId + " as legacy zone."); - } - } - } else { - s_logger.debug("Ignoring zone " + zoneId + " with hypervisor type " + clusterHypervisorType); - break; - } - count++; - } while (clusters.next()); - if (ignoreZone) { - continue; // Ignore the zone with hypervisors other than VMware - } - } - if (legacyZone) { - listOfLegacyZones.add(zoneId); - } else { - user = clusterDetails.getString("username"); - password = clusterDetails.getString("password"); - guid = dcName + "@" + vc; - - pstmt = conn.prepareStatement("INSERT INTO `cloud`.`vmware_data_center` (uuid, name, guid, vcenter_host, username, password) values(?, ?, ?, ?, ?, ?)"); - pstmt.setString(1, UUID.randomUUID().toString()); - pstmt.setString(2, dcName); - pstmt.setString(3, guid); - pstmt.setString(4, vc); - pstmt.setString(5, user); - pstmt.setString(6, password); - pstmt.executeUpdate(); - - pstmt = conn.prepareStatement("SELECT id FROM `cloud`.`vmware_data_center` where guid=?"); - pstmt.setString(1, guid); - dcInfo = pstmt.executeQuery(); - if(dcInfo.next()) { - vmwareDcId = dcInfo.getLong("id"); - } - - pstmt = conn.prepareStatement("INSERT INTO `cloud`.`vmware_data_center_zone_map` (zone_id, vmware_data_center_id) values(?, ?)"); - pstmt.setLong(1, zoneId); - pstmt.setLong(2, vmwareDcId); - pstmt.executeUpdate(); - } - } - updateLegacyZones(conn, listOfLegacyZones); - } catch (SQLException e) { - throw new CloudRuntimeException("Unable to load legacy zones into cloud.legacy_zones table.", e); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (pstmt != null) { - pstmt.close(); - } - if (dcInfo != null) { - dcInfo.close(); - } - if (clusters != null) { - clusters.close(); - } - if (clusterDetails != null) { - clusterDetails.close(); - } - if (clustersQuery != null) { - clustersQuery.close(); - } - if (clusterDetailsQuery != null) { - clusterDetailsQuery.close(); - } - } catch (SQLException e) { - } - } - } - - private void updateLegacyZones(Connection conn, List<Long> zones) { - PreparedStatement legacyZonesQuery = null; - //Insert legacy zones into table for legacy zones. - try { - legacyZonesQuery = conn.prepareStatement("INSERT INTO `cloud`.`legacy_zones` (zone_id) VALUES (?)"); - for(Long zoneId : zones) { - legacyZonesQuery.setLong(1, zoneId); - legacyZonesQuery.executeUpdate(); - s_logger.debug("Inserted zone " + zoneId + " into cloud.legacyzones table"); - } - } catch (SQLException e) { - throw new CloudRuntimeException("Unable add zones to cloud.legacyzones table.", e); - } finally { - try { - if (legacyZonesQuery != null) { - legacyZonesQuery.close(); - } - } catch (SQLException e) { - } - } - } - - private void createPlaceHolderNics(Connection conn) { - PreparedStatement pstmt = null; - ResultSet rs = null; - - try { - pstmt = conn.prepareStatement("SELECT network_id, gateway, ip4_address FROM `cloud`.`nics` WHERE reserver_name IN ('DirectNetworkGuru','DirectPodBasedNetworkGuru') and vm_type='DomainRouter' AND removed IS null"); - rs = pstmt.executeQuery(); - while (rs.next()) { - Long networkId = rs.getLong(1); - String gateway = rs.getString(2); - String ip = rs.getString(3); - String uuid = UUID.randomUUID().toString(); - //Insert placeholder nic for each Domain router nic in Shared network - pstmt = conn.prepareStatement("INSERT INTO `cloud`.`nics` (uuid, ip4_address, gateway, network_id, state, strategy, vm_type) VALUES (?, ?, ?, ?, 'Reserved', 'PlaceHolder', 'DomainRouter')"); - pstmt.setString(1, uuid); - pstmt.setString(2, ip); - pstmt.setString(3, gateway); - pstmt.setLong(4, networkId); - pstmt.executeUpdate(); - s_logger.debug("Created placeholder nic for the ipAddress " + ip); - - } - } catch (SQLException e) { - throw new CloudRuntimeException("Unable to create placeholder nics", e); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } - } - } - - - private void updateRemoteAccessVpn(Connection conn) { - PreparedStatement pstmt = null; - ResultSet rs = null; - - try { - pstmt = conn.prepareStatement("SELECT vpn_server_addr_id FROM `cloud`.`remote_access_vpn`"); - rs = pstmt.executeQuery(); - long id=1; - while (rs.next()) { - String uuid = UUID.randomUUID().toString(); - Long ipId = rs.getLong(1); - pstmt = conn.prepareStatement("UPDATE `cloud`.`remote_access_vpn` set uuid=?, id=? where vpn_server_addr_id=?"); - pstmt.setString(1, uuid); - pstmt.setLong(2, id); - pstmt.setLong(3, ipId); - pstmt.executeUpdate(); - id++; - } - } catch (SQLException e) { - throw new CloudRuntimeException("Unable to update id/uuid of remote_access_vpn table", e); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } - } - } - private void addEgressFwRulesForSRXGuestNw(Connection conn) { - PreparedStatement pstmt = null; - ResultSet rs = null; - ResultSet rsId = null; - ResultSet rsNw = null; - try { - pstmt = conn.prepareStatement("select network_id FROM `cloud`.`ntwk_service_map` where service='Firewall' and provider='JuniperSRX' "); - rs = pstmt.executeQuery(); - while (rs.next()) { - long netId = rs.getLong(1); - //checking for Isolated OR Virtual - pstmt = conn.prepareStatement("select account_id, domain_id FROM `cloud`.`networks` where (guest_type='Isolated' OR guest_type='Virtual') and traffic_type='Guest' and vpc_id is NULL and (state='implemented' OR state='Shutdown') and id=? "); - pstmt.setLong(1, netId); - s_logger.debug("Getting account_id, domain_id from networks table: " + pstmt); - rsNw = pstmt.executeQuery(); - - if(rsNw.next()) { - long accountId = rsNw.getLong(1); - long domainId = rsNw.getLong(2); - - //Add new rule for the existing networks - s_logger.debug("Adding default egress firewall rule for network " + netId); - pstmt = conn.prepareStatement("INSERT INTO firewall_rules (uuid, state, protocol, purpose, account_id, domain_id, network_id, xid, created, traffic_type) VALUES (?, 'Active', 'all', 'Firewall', ?, ?, ?, ?, now(), 'Egress')"); - pstmt.setString(1, UUID.randomUUID().toString()); - pstmt.setLong(2, accountId); - pstmt.setLong(3, domainId); - pstmt.setLong(4, netId); - pstmt.setString(5, UUID.randomUUID().toString()); - s_logger.debug("Inserting default egress firewall rule " + pstmt); - pstmt.executeUpdate(); - - pstmt = conn.prepareStatement("select id from firewall_rules where protocol='all' and network_id=?"); - pstmt.setLong(1, netId); - rsId = pstmt.executeQuery(); - - long firewallRuleId; - if(rsId.next()) { - firewallRuleId = rsId.getLong(1); - pstmt = conn.prepareStatement("insert into firewall_rules_cidrs (firewall_rule_id,source_cidr) values (?, '0.0.0.0/0')"); - pstmt.setLong(1, firewallRuleId); - s_logger.debug("Inserting rule for cidr 0.0.0.0/0 for the new Firewall rule id=" + firewallRuleId + " with statement " + pstmt); - pstmt.executeUpdate(); - } - } - } - } catch (SQLException e) { - throw new CloudRuntimeException("Unable to set egress firewall rules ", e); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } - } - } - - private void upgradeEIPNetworkOfferings(Connection conn) { - - PreparedStatement pstmt = null; - ResultSet rs = null; - - try { - pstmt = conn.prepareStatement("select id, elastic_ip_service from `cloud`.`network_offerings` where traffic_type='Guest'"); - rs = pstmt.executeQuery(); - while (rs.next()) { - long id = rs.getLong(1); - // check if elastic IP service is enabled for network offering - if (rs.getLong(2) != 0) { - //update network offering with eip_associate_public_ip set to true - pstmt = conn.prepareStatement("UPDATE `cloud`.`network_offerings` set eip_associate_public_ip=? where id=?"); - pstmt.setBoolean(1, true); - pstmt.setLong(2, id); - pstmt.executeUpdate(); - } - } - } catch (SQLException e) { - throw new CloudRuntimeException("Unable to set elastic_ip_service for network offerings with EIP service enabled.", e); - } finally { - try { - if (rs != null) { - rs.close(); - } - if (pstmt != null) { - pstmt.close(); - } - } catch (SQLException e) { - } - } - } -}