Seems to be a 4.2 feature
commit 10b6c1c6c8f8c2ec49145a901fb083e7f362f3a1
Author: Harikrishna Patnala <harikrishna.patn...@citrix.com>
Date:   Tue Apr 30 16:41:25 2013 +0530

    CLOUDSTACK-741: Granular Global Parameters Added parameters to cluster
level cluster.storage.allocated.capacity.notificationthreshold
cluster.storage.capacity.notificationthreshold
    
    CLOUDSTACK-2036
    global parameter for Router Template ID functionality added
    We use 5 parameters to set the router template name for each hypervisor



On 6/7/13 12:44 PM, "Marcus Sorensen" <shadow...@gmail.com> wrote:

>4.1 is the same, but it does away with the router.template.kvm config
>parameter. It literally just matches the last row in the vm_template
>field that is type 'SYSTEM' and your hypervisor type.  It also has a
>router.template.id field that seems to do nothing.
>
>I'm assuming the other system vms work the same way...
>
>On Fri, Jun 7, 2013 at 1:36 PM, Marcus Sorensen <shadow...@gmail.com>
>wrote:
>> Ok, here's what I've figured out so far (for master branch, 4.1 seems
>> different):
>>
>> Specifically for routers, given the hypervisor KVM, it searches the
>> table vm_template for type='SYSTEM' and hypervisor_type='KVM' and
>> chooses the last registered template.
>>
>> There is a 'router.template.kvm' config option, not in the
>> configuration table by default. If that exists, it is supposed to take
>> the value of that config option and search the 'name' field of the
>> vm_template table as well(add to the filter).
>>
>> There is another config parameter called router.template.id, which
>> seems to do nothing in master code. There are references to things
>> that set it in the configuration table, but that's about it. This
>> seems bad because it's exposed to the user but doesn't do anything.
>>
>> So, back to the original question of how to update a system VM
>> template. It looks like you'd register a new template, manually set
>> its type to 'SYSTEM' in the database (or how else can you set it?),
>> and that's it. If you want a particular one out of several SYSTEM
>> templates, rather than the latest, you'd set the router.template.kvm
>> parameter to the name text matching the particular template.
>>
>> Now on to 4.1....
>>
>> On Fri, Jun 7, 2013 at 12:42 PM, Marcus Sorensen <shadow...@gmail.com>
>>wrote:
>>> Ok. That gives me a place to start digging to figure out how to do
>>> this. I'll update the thread when I find out, just for future
>>> reference.
>>>
>>> On Fri, Jun 7, 2013 at 12:06 PM, Chiradeep Vittal
>>> <chiradeep.vit...@citrix.com> wrote:
>>>>  _configServer.getConfigValue(Config.RouterTemplate***.key(),
>>>>                 VMTemplateVO template =
>>>> _templateDao.findRoutingTemplate(hType, templateName);
>>>>
>>>>
>>>>
>>>> On 6/7/13 8:55 AM, "Marcus Sorensen" <shadow...@gmail.com> wrote:
>>>>
>>>>>I'm not sure if this fits in the discussion, I was asking Wei how
>>>>>cloudstack chooses the system vm template during normal operation. I
>>>>>get how the upgrades work, but I don't get how cloudstack chooses the
>>>>>system template to use when actually deploying:
>>>>>
>>>>>I'm looking at it from a different perspective, not a CS
>>>>>upgrade, but say we have to roll a new systemvm template for an
>>>>>existing CS version. Say we rolled 4.2, with a new template, and then
>>>>>two months later we realize that the template is missing dnsmasq or
>>>>>something, and we have to have everyone install a new template. Do we
>>>>>actually have to overwrite the existing template in-place on secondary
>>>>>storage, then on each primary storage while the system vms are down?
>>>>>Or can we register a new template, and the new template gets installed
>>>>>on primary storage as system vms are rebooted.
>>>>>
>>>>> I saw that the upgrade scripts had that 'select max' statement, but
>>>>>that just fetches the id for installing the template to secondary
>>>>>storage. When I deploy a router, how does cloudstack select the
>>>>>template for that?
>>>>>
>>>>>On Fri, Jun 7, 2013 at 12:15 AM, Wei ZHOU <ustcweiz...@gmail.com>
>>>>>wrote:
>>>>>> 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 <kishan.kav...@citrix.com>:
>>>>>>> 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 [ustcweiz...@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 <kishan.kav...@citrix.com>
>>>>>>>
>>>>>>>> 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:ustcweiz...@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 <kis...@apache.org>
>>>>>>>> >
>>>>>>>> > > 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.patn...@citrix.com>
>>>>>>>> > > Authored: Mon Jun 3 12:33:58 2013  0530
>>>>>>>> > > Committer: Kishan Kavala <kis...@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/eng
>>>>>>>>ine
>>>>>>>> > > /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) {
>>>>>>>> > >                  }
>>>>>>>> > >              }
>>>>>>>> > >
>>>>>>>> > >
>>>>>>>>
>>>>>>>
>>>>

Reply via email to