cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kis...@apache.org
Subject git commit: updated refs/heads/master to 9fe7846
Date Wed, 05 Jun 2013 09:51:45 GMT
Updated Branches:
  refs/heads/master 91b15711b -> 9fe7846d7


CLOUDSTACK-2728: 41-42 DB upgrade: add step to upgrade system templates


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

Branch: refs/heads/master
Commit: 9fe7846d72e401720e1dcbce52d021e2646429f1
Parents: 91b1571
Author: Harikrishna Patnala <harikrishna.patnala@citrix.com>
Authored: Mon Jun 3 12:33:58 2013 +0530
Committer: Kishan Kavala <kishan@cloud.com>
Committed: Wed Jun 5 15:14:04 2013 +0530

----------------------------------------------------------------------
 .../src/com/cloud/upgrade/dao/Upgrade410to420.java |  209 ++++++++++++++-
 1 files changed, 204 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9fe7846d/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
index 1584973..955ea56 100644
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
@@ -112,16 +112,215 @@ public class Upgrade410to420 implements DbUpgrade {
     }
 
     private void updateSystemVmTemplates(Connection conn) {
-	    PreparedStatement sql = null;
+
+        PreparedStatement pstmt = null;
+        ResultSet rs = null;
+        boolean xenserver = false;
+        boolean kvm = false;
+        boolean VMware = false;
+        boolean Hyperv = false;
+        boolean LXC = false;
+        s_logger.debug("Updating System Vm template IDs");
+        try{
+            //Get all hypervisors in use
+            try {
+                pstmt = conn.prepareStatement("select distinct(hypervisor_type) from `cloud`.`cluster`
where removed is null");
+                rs = pstmt.executeQuery();
+                while(rs.next()){
+                    if("XenServer".equals(rs.getString(1))){
+                        xenserver = true;
+                    } else if("KVM".equals(rs.getString(1))){
+                        kvm = true;
+                    } else if("VMware".equals(rs.getString(1))){
+                        VMware = true;
+                    } else if("Hyperv".equals(rs.getString(1))) {
+                        Hyperv = true;
+                    } else if("LXC".equals(rs.getString(1))) {
+                        LXC = true;
+                    }
+                }
+            } catch (SQLException e) {
+                throw new CloudRuntimeException("Error while listing hypervisors in use",
e);
+            }
+
+            s_logger.debug("Updating XenSever System Vms");
+            //XenServer
+            try {
+                //Get 4.2.0 xenserer system Vm template Id
+                pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where
name like 'systemvm-xenserver-4.2' and removed is null order by id desc limit 1");
+                rs = pstmt.executeQuery();
+                if(rs.next()){
+                    long templateId = rs.getLong(1);
+                    rs.close();
+                    pstmt.close();
+                    // change template type to SYSTEM
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM'
where id = ?");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                    // update templete ID of system Vms
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id
= ? where type <> 'User' and hypervisor_type = 'XenServer'");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                } else {
+                    if (xenserver){
+                        throw new CloudRuntimeException("4.2.0 XenServer SystemVm template
not found. Cannot upgrade system Vms");
+                    } else {
+                        s_logger.warn("4.2.0 XenServer SystemVm template not found. XenServer
hypervisor is not used, so not failing upgrade");
+                    }
+                }
+            } catch (SQLException e) {
+                throw new CloudRuntimeException("Error while updating XenServer systemVm
template", e);
+            }
+
+            //KVM
+            s_logger.debug("Updating KVM System Vms");
+            try {
+                //Get 4.2.0 KVM system Vm template Id
+                pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where
name = 'systemvm-kvm-4.2' and removed is null order by id desc limit 1");
+                rs = pstmt.executeQuery();
+                if(rs.next()){
+                    long templateId = rs.getLong(1);
+                    rs.close();
+                    pstmt.close();
+                    // change template type to SYSTEM
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM'
where id = ?");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                    // update templete ID of system Vms
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id
= ? where type <> 'User' and hypervisor_type = 'KVM'");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                } else {
+                    if (kvm){
+                        throw new CloudRuntimeException("4.2.0 KVM SystemVm template not
found. Cannot upgrade system Vms");
+                    } else {
+                        s_logger.warn("4.2.0 KVM SystemVm template not found. KVM hypervisor
is not used, so not failing upgrade");
+                    }
+                }
+            } catch (SQLException e) {
+                throw new CloudRuntimeException("Error while updating KVM systemVm template",
e);
+            }
+
+            //VMware
+            s_logger.debug("Updating VMware System Vms");
+            try {
+                //Get 4.2.0 VMware system Vm template Id
+                pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where
name = 'systemvm-vmware-4.2' and removed is null order by id desc limit 1");
+                rs = pstmt.executeQuery();
+                if(rs.next()){
+                    long templateId = rs.getLong(1);
+                    rs.close();
+                    pstmt.close();
+                    // change template type to SYSTEM
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM'
where id = ?");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                    // update templete ID of system Vms
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id
= ? where type <> 'User' and hypervisor_type = 'VMware'");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                } else {
+                    if (VMware){
+                        throw new CloudRuntimeException("4.2.0 VMware SystemVm template not
found. Cannot upgrade system Vms");
+                    } else {
+                        s_logger.warn("4.2.0 VMware SystemVm template not found. VMware hypervisor
is not used, so not failing upgrade");
+                    }
+                }
+            } catch (SQLException e) {
+                throw new CloudRuntimeException("Error while updating VMware systemVm template",
e);
+            }
+
+            //Hyperv
+            s_logger.debug("Updating Hyperv System Vms");
+            try {
+                //Get 4.2.0 Hyperv system Vm template Id
+                pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where
name = 'systemvm-hyperv-4.2' and removed is null order by id desc limit 1");
+                rs = pstmt.executeQuery();
+                if(rs.next()){
+                    long templateId = rs.getLong(1);
+                    rs.close();
+                    pstmt.close();
+                    // change template type to SYSTEM
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM'
where id = ?");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                    // update templete ID of system Vms
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id
= ? where type <> 'User' and hypervisor_type = 'Hyperv'");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                } else {
+                    if (Hyperv){
+                        throw new CloudRuntimeException("4.2.0 HyperV SystemVm template not
found. Cannot upgrade system Vms");
+                    } else {
+                        s_logger.warn("4.2.0 Hyperv SystemVm template not found. Hyperv hypervisor
is not used, so not failing upgrade");
+                    }
+                }
+            } catch (SQLException e) {
+                throw new CloudRuntimeException("Error while updating Hyperv systemVm template",
e);
+            }
+
+            //LXC
+            s_logger.debug("Updating LXC System Vms");
+            try {
+                //Get 4.2.0 LXC system Vm template Id
+                pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where
name = 'systemvm-lxc-4.2' and removed is null order by id desc limit 1");
+                rs = pstmt.executeQuery();
+                if(rs.next()){
+                    long templateId = rs.getLong(1);
+                    rs.close();
+                    pstmt.close();
+                    // change template type to SYSTEM
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM'
where id = ?");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                    // update templete ID of system Vms
+                    pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id
= ? where type <> 'User' and hypervisor_type = 'LXC'");
+                    pstmt.setLong(1, templateId);
+                    pstmt.executeUpdate();
+                    pstmt.close();
+                } else {
+                    if (LXC){
+                        throw new CloudRuntimeException("4.2.0 LXC SystemVm template not
found. Cannot upgrade system Vms");
+                    } else {
+                        s_logger.warn("4.2.0 LXC SystemVm template not found. LXC hypervisor
is not used, so not failing upgrade");
+                    }
+                }
+            } catch (SQLException e) {
+                throw new CloudRuntimeException("Error while updating LXC systemVm template",
e);
+            }
+            s_logger.debug("Updating System Vm Template IDs Complete");
+        }
+        finally {
+            try {
+                if (rs != null) {
+                    rs.close();
+                }
+
+                if (pstmt != null) {
+                    pstmt.close();
+                }
+            } catch (SQLException e) {
+            }
+        }
+        pstmt = null;
         try {
-            sql = conn.prepareStatement("update vm_template set image_data_store_id = 1 where
type = 'SYSTEM' or type = 'BUILTIN'");
-            sql.executeUpdate();
+            pstmt = conn.prepareStatement("update vm_template set image_data_store_id = 1
where type = 'SYSTEM' or type = 'BUILTIN'");
+            pstmt.executeUpdate();
         } catch (SQLException e) {
             throw new CloudRuntimeException("Failed to upgrade vm template data store uuid:
" + e.toString());
         } finally {
-            if (sql != null) {
+            if (pstmt != null) {
                 try {
-                    sql.close();
+                    pstmt.close();
                 } catch (SQLException e) {
                 }
             }


Mime
View raw message