Return-Path: X-Original-To: apmail-cloudstack-dev-archive@www.apache.org Delivered-To: apmail-cloudstack-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 81E93108E9 for ; Fri, 7 Jun 2013 06:16:15 +0000 (UTC) Received: (qmail 212 invoked by uid 500); 7 Jun 2013 06:16:08 -0000 Delivered-To: apmail-cloudstack-dev-archive@cloudstack.apache.org Received: (qmail 177 invoked by uid 500); 7 Jun 2013 06:16:08 -0000 Mailing-List: contact dev-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list dev@cloudstack.apache.org Received: (qmail 169 invoked by uid 99); 7 Jun 2013 06:16:07 -0000 Received: from Unknown (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Jun 2013 06:16:07 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of ustcweizhou@gmail.com designates 74.125.82.174 as permitted sender) Received: from [74.125.82.174] (HELO mail-we0-f174.google.com) (74.125.82.174) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 07 Jun 2013 06:15:46 +0000 Received: by mail-we0-f174.google.com with SMTP id q58so2714757wes.19 for ; Thu, 06 Jun 2013 23:15:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=xUIDy/f+Mk0RvaJktrqeJYo5ON51Jf+g9aRBZmYNIww=; b=mTf5CldeBMl9MKDgq7EsmUSKTKJxaCG3l5KobuaSAlbuhCZ95Cc1w5eGVweDUhrna3 YXiHI8/YDASgiW0Ep4JD63CfJCQTQAH0g8ldLmlHMwklEQZToS4aKpokTGq2SlrzOeEp T9MXfe6VSSadaDY+nBM4CjxbLcNMNkFIZ2/8hi23Y71ZLKxM3i/hcCpiC8BQCSRv4zpg x+dGq4KZZ/Ly6bRJN2B7+6bbKh3uCfz/z5PCplMyBIccnpOkPxThdFzaQcmjIYpY4OgQ IyxerYPCWG1rxenbg3JgRF5XUjIki3lc06rNrF0Vmkl/RYSjUp4R+gJoCMuQOzD8a/+J RT7A== MIME-Version: 1.0 X-Received: by 10.180.72.230 with SMTP id g6mr593169wiv.8.1370585725292; Thu, 06 Jun 2013 23:15:25 -0700 (PDT) Received: by 10.194.7.136 with HTTP; Thu, 6 Jun 2013 23:15:25 -0700 (PDT) In-Reply-To: References: <7c7bfb402b6e4c958799e0f8071e627a@git.apache.org> Date: Fri, 7 Jun 2013 14:15:25 +0800 Message-ID: Subject: Re: git commit: updated refs/heads/master to 9fe7846 From: Wei ZHOU To: dev@cloudstack.apache.org Content-Type: text/plain; charset=ISO-8859-1 X-Virus-Checked: Checked by ClamAV on apache.org In my point view, we ask users register new template in the upgrade instruction in release notes. If they do not register, it is their fault. If they do but upgrade fails, it is our fault. I admit that it is a good way to change each upgrade process and remove old templates when we use new template. It is not large work. -Wei 2013/6/6, Kishan Kavala : > In the mentioned example, when new template for 4.3 is introduced, we should > remove template upgrade code in Upgrade41to42. This will make upgrade > succeed even when systemvm-kvm-4.2 is not in database. > On the other hand, if we allow 'systemvm-kvm-%', upgrade to 4.3 will succeed > even though the required systemvm-kvm-4.3 is not in database. > > So, every time a new system vm template is added, template upgrade from > previous version should be removed. > > ________________________________________ > From: Wei ZHOU [ustcweizhou@gmail.com] > Sent: Wednesday, June 05, 2013 3:56 PM > To: dev@cloudstack.apache.org > Subject: Re: git commit: updated refs/heads/master to 9fe7846 > > Kishan, > > I know. > > If we upgrade from 4.1 to 4.3 ( assume the systemvm template is > systemvm-kvm-4.3). We need to add systemvm-kvm-4.3 instead of > systemvm-kvm-4.2. Maybe systemvm-kvm-4.2 is not in database. > The upgrade includes Upgrade41to42 and Upgrade42to43. It will fail in the > Upgrade41to42. > > -Wei > > > 2013/6/5 Kishan Kavala > >> Wei, >> If we use other templates, system Vms may not work. Only 4.2 templates >> should be used when upgrading to 4.2. >> >> > -----Original Message----- >> > From: Wei ZHOU [mailto:ustcweizhou@gmail.com] >> > Sent: Wednesday, 5 June 2013 3:26 PM >> > To: dev@cloudstack.apache.org >> > Subject: Re: git commit: updated refs/heads/master to 9fe7846 >> > >> > Kishan, >> > >> > What do you think about change some codes to "name like 'systemvm- >> > xenserver-%' " ? >> > If we use other templates, the upgrade maybe fail. >> > >> > -Wei >> > >> > >> > 2013/6/5 >> > >> > > 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 >> > > Authored: Mon Jun 3 12:33:58 2013 0530 >> > > Committer: Kishan Kavala >> > > 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) { >> > > } >> > > } >> > > >> > > >> >