cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bhais...@apache.org
Subject [1/2] git commit: updated refs/heads/useraccount-refactoring to eb8fba3
Date Fri, 14 Nov 2014 08:29:54 GMT
Repository: cloudstack
Updated Branches:
  refs/heads/useraccount-refactoring [created] eb8fba3e0


Upgrade450to460: Add user_id column in vm_instance

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cb018b84
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cb018b84
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cb018b84

Branch: refs/heads/useraccount-refactoring
Commit: cb018b840b08a7c43586895c02d74f1209403d8a
Parents: 92d4a41
Author: Rohit Yadav <rohit.yadav@shapeblue.com>
Authored: Fri Nov 14 13:57:04 2014 +0530
Committer: Rohit Yadav <rohit.yadav@shapeblue.com>
Committed: Fri Nov 14 13:57:04 2014 +0530

----------------------------------------------------------------------
 .../com/cloud/upgrade/dao/Upgrade450to460.java  | 39 ++++++++++++++++++++
 setup/db/db/schema-450to460.sql                 |  4 +-
 2 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cb018b84/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to460.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to460.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to460.java
index 990371c..a0fdb54 100644
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to460.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade450to460.java
@@ -19,6 +19,9 @@ package com.cloud.upgrade.dao;
 
 import java.io.File;
 import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
 
 import org.apache.log4j.Logger;
 
@@ -55,6 +58,42 @@ public class Upgrade450to460 implements DbUpgrade {
 
     @Override
     public void performDataMigration(Connection conn) {
+        updateVMInstanceUserId(conn);
+    }
+
+    public void updateVMInstanceUserId(Connection conn) {
+        // For schemas before this, copy first user from an account_id which deployed already
running VMs
+        s_logger.debug("Updating vm_instance column user_id using first user in vm_instance's
account_id");
+        String vmInstanceSql = "SELECT id, account_id FROM `cloud`.`vm_instance`";
+        String userSql = "SELECT id FROM `cloud`.`user` where account_id=?";
+        String userIdUpdateSql = "update `cloud`.`vm_instance` set user_id=? where id=?";
+        try(PreparedStatement selectStatement = conn.prepareStatement(vmInstanceSql)) {
+            ResultSet results = selectStatement.executeQuery();
+            while (results.next()) {
+                long vmId = results.getLong(1);
+                long accountId = results.getLong(2);
+                try (PreparedStatement selectUserStatement = conn.prepareStatement(userSql))
{
+                    selectUserStatement.setLong(1, accountId);
+                    ResultSet userResults = selectUserStatement.executeQuery();
+                    if (userResults.next()) {
+                        long userId = userResults.getLong(1);
+                        try (PreparedStatement updateStatement = conn.prepareStatement(userIdUpdateSql))
{
+                            updateStatement.setLong(1, userId);
+                            updateStatement.setLong(2, vmId);
+                            updateStatement.executeUpdate();
+                        } catch (SQLException e) {
+                            throw new CloudRuntimeException("Unable to update user ID " +
userId + " on vm_instance id=" + vmId, e);
+                        }
+                    }
+
+                } catch (SQLException e) {
+                    throw new CloudRuntimeException("Unable to update user ID using accountId
" + accountId + " on vm_instance id=" + vmId, e);
+                }
+            }
+        } catch (SQLException e) {
+            throw new CloudRuntimeException("Unable to update user Ids for previously deployed
VMs", e);
+        }
+        s_logger.debug("Done updating user Ids for previously deployed VMs");
     }
 
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cb018b84/setup/db/db/schema-450to460.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-450to460.sql b/setup/db/db/schema-450to460.sql
index 8480c85..21a747d 100644
--- a/setup/db/db/schema-450to460.sql
+++ b/setup/db/db/schema-450to460.sql
@@ -19,4 +19,6 @@
 -- Schema upgrade from 4.5.0 to 4.6.0
 --
 
-INSERT IGNORE INTO `cloud`.`configuration` VALUES ("Advanced", 'DEFAULT', 'management-server',
"stats.output.uri", "", "URI to additionally send StatsCollector statistics to", "", NULL,
NULL, 0);
\ No newline at end of file
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ("Advanced", 'DEFAULT', 'management-server',
"stats.output.uri", "", "URI to additionally send StatsCollector statistics to", "", NULL,
NULL, 0);
+
+ALTER TABLE `cloud`.`vm_instance` ADD COLUMN `user_id` bigint unsigned NOT NULL COMMENT 'user
id of VM deployer';


Mime
View raw message