You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by sa...@apache.org on 2013/05/22 15:57:33 UTC
[50/50] [abbrv] git commit: updated refs/heads/vmware-datamodel to
8996ea3
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 <sa...@apache.org>
Authored: Wed May 22 19:24:46 2013 +0530
Committer: Sateesh Chodapuneedi <sa...@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) {
- }
- }
- }
-}