From d6e77624d973062da6cefd5083b8479eec729617 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Wed, 11 Nov 2015 15:02:28 +0100 Subject: [PATCH 1/3] CLOUDSTACK-9057 remove old system vm upgrade code --- .../cloud/upgrade/dao/Upgrade442to450.java | 151 +----------------- 1 file changed, 1 insertion(+), 150 deletions(-) diff --git a/engine/schema/src/com/cloud/upgrade/dao/Upgrade442to450.java b/engine/schema/src/com/cloud/upgrade/dao/Upgrade442to450.java index 931e353df42..a9fb08905be 100644 --- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade442to450.java +++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade442to450.java @@ -25,16 +25,12 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; - -import com.cloud.hypervisor.Hypervisor; -import com.cloud.utils.crypt.DBEncryptionUtil; import org.apache.log4j.Logger; +import com.cloud.utils.crypt.DBEncryptionUtil; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.script.Script; @@ -68,7 +64,6 @@ public class Upgrade442to450 implements DbUpgrade { @Override public void performDataMigration(Connection conn) { - updateSystemVmTemplates(conn); dropInvalidKeyFromStoragePoolTable(conn); dropDuplicatedForeignKeyFromAsyncJobTable(conn); updateMaxRouterSizeConfig(conn); @@ -152,150 +147,6 @@ public class Upgrade442to450 implements DbUpgrade { return new File[] {new File(script)}; } - private void updateSystemVmTemplates(Connection conn) { - s_logger.debug("Updating System Vm template IDs"); - //Get all hypervisors in use - Set hypervisorsListInUse = new HashSet(); - try (PreparedStatement pstmt = conn.prepareStatement("select distinct(hypervisor_type) from `cloud`.`cluster` where removed is null"); - ResultSet rs = pstmt.executeQuery() - ) { - while(rs.next()){ - switch (Hypervisor.HypervisorType.getType(rs.getString(1))) { - case XenServer: hypervisorsListInUse.add(Hypervisor.HypervisorType.XenServer); - break; - case KVM: hypervisorsListInUse.add(Hypervisor.HypervisorType.KVM); - break; - case VMware: hypervisorsListInUse.add(Hypervisor.HypervisorType.VMware); - break; - case Hyperv: hypervisorsListInUse.add(Hypervisor.HypervisorType.Hyperv); - break; - case LXC: hypervisorsListInUse.add(Hypervisor.HypervisorType.LXC); - break; - default: // no action on cases Any, BareMetal, None, Ovm, Parralels, Simulator and VirtualBox: - break; - } - } - } catch (SQLException e) { - s_logger.error("updateSystemVmTemplates:Exception while getting hypervisor types from clusters: "+e.getMessage()); - throw new CloudRuntimeException("updateSystemVmTemplates:Exception while getting hypervisor types from clusters", e); - } - - Map NewTemplateNameList = new HashMap() { - { - put(Hypervisor.HypervisorType.XenServer, "systemvm-xenserver-4.5"); - put(Hypervisor.HypervisorType.VMware, "systemvm-vmware-4.5"); - put(Hypervisor.HypervisorType.KVM, "systemvm-kvm-4.5"); - put(Hypervisor.HypervisorType.LXC, "systemvm-lxc-4.5"); - put(Hypervisor.HypervisorType.Hyperv, "systemvm-hyperv-4.5"); - } - }; - - Map routerTemplateConfigurationNames = new HashMap() { - { - put(Hypervisor.HypervisorType.XenServer, "router.template.xen"); - put(Hypervisor.HypervisorType.VMware, "router.template.vmware"); - put(Hypervisor.HypervisorType.KVM, "router.template.kvm"); - put(Hypervisor.HypervisorType.LXC, "router.template.lxc"); - put(Hypervisor.HypervisorType.Hyperv, "router.template.hyperv"); - } - }; - - Map newTemplateUrl = new HashMap() { - { - put(Hypervisor.HypervisorType.XenServer, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-xen.vhd.bz2"); - put(Hypervisor.HypervisorType.VMware, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-vmware.ova"); - put(Hypervisor.HypervisorType.KVM, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-kvm.qcow2.bz2"); - put(Hypervisor.HypervisorType.LXC, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-kvm.qcow2.bz2"); - put(Hypervisor.HypervisorType.Hyperv, "http://download.cloud.com/templates/4.5/systemvm64template-4.5-hyperv.vhd.zip"); - } - }; - - Map newTemplateChecksum = new HashMap() { - { - put(Hypervisor.HypervisorType.XenServer, "2b15ab4401c2d655264732d3fc600241"); - put(Hypervisor.HypervisorType.VMware, "3106a79a4ce66cd7f6a7c50e93f2db57"); - put(Hypervisor.HypervisorType.KVM, "aa9f501fecd3de1daeb9e2f357f6f002"); - put(Hypervisor.HypervisorType.LXC, "aa9f501fecd3de1daeb9e2f357f6f002"); - put(Hypervisor.HypervisorType.Hyperv, "70bd30ea02ee9ed67d2c6b85c179cee9"); - } - }; - - for (Map.Entry hypervisorAndTemplateName : NewTemplateNameList.entrySet()) { - s_logger.debug("Updating " + hypervisorAndTemplateName.getKey() + " System Vms"); - try (PreparedStatement pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = ? and removed is null order by id desc limit 1")) { - //Get 4.5.0 system Vm template Id for corresponding hypervisor - long templateId = -1; - pstmt.setString(1, hypervisorAndTemplateName.getValue()); - try (ResultSet rs = pstmt.executeQuery()) { - if(rs.next()){ - templateId = rs.getLong(1); - } - } catch (SQLException e) - { - s_logger.error("updateSystemVmTemplates:Exception while getting ids of templates: "+e.getMessage()); - throw new CloudRuntimeException("updateSystemVmTemplates:Exception while getting ids of templates", e); - } - - // change template type to SYSTEM - if (templateId != -1) { - try(PreparedStatement templ_type_pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?");) - { - templ_type_pstmt.setLong(1, templateId); - templ_type_pstmt.executeUpdate(); - } - catch (SQLException e) - { - s_logger.error("updateSystemVmTemplates:Exception while updating template with id " + templateId + " to be marked as 'system': "+e.getMessage()); - throw new CloudRuntimeException("updateSystemVmTemplates:Exception while updating template with id " + templateId + " to be marked as 'system'", e); - } - // update template ID of system Vms - try(PreparedStatement update_templ_id_pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = ?");) - { - update_templ_id_pstmt.setLong(1, templateId); - update_templ_id_pstmt.setString(2, hypervisorAndTemplateName.getKey().toString()); - update_templ_id_pstmt.executeUpdate(); - }catch (Exception e) - { - s_logger.error("updateSystemVmTemplates:Exception while setting template for " + hypervisorAndTemplateName.getKey().toString() + " to " + templateId + ": "+e.getMessage()); - throw new CloudRuntimeException("updateSystemVmTemplates:Exception while setting template for " + hypervisorAndTemplateName.getKey().toString() + " to " + templateId, e); - } - // Change value of global configuration parameter router.template.* for the corresponding hypervisor - try(PreparedStatement update_pstmt = conn.prepareStatement("UPDATE `cloud`.`configuration` SET value = ? WHERE name = ?");) { - update_pstmt.setString(1, hypervisorAndTemplateName.getValue()); - update_pstmt.setString(2, routerTemplateConfigurationNames.get(hypervisorAndTemplateName.getKey())); - update_pstmt.executeUpdate(); - }catch (SQLException e) - { - s_logger.error("updateSystemVmTemplates:Exception while setting " + routerTemplateConfigurationNames.get(hypervisorAndTemplateName.getKey()) + " to " + hypervisorAndTemplateName.getValue() + ": "+e.getMessage()); - throw new CloudRuntimeException("updateSystemVmTemplates:Exception while setting " + routerTemplateConfigurationNames.get(hypervisorAndTemplateName.getKey()) + " to " + hypervisorAndTemplateName.getValue(), e); - } - } else { - if (hypervisorsListInUse.contains(hypervisorAndTemplateName.getKey())){ - throw new CloudRuntimeException("4.5.0 " + hypervisorAndTemplateName.getKey() + " SystemVm template not found. Cannot upgrade system Vms"); - } else { - s_logger.warn("4.5.0 " + hypervisorAndTemplateName.getKey() + " SystemVm template not found. " + hypervisorAndTemplateName.getKey() + " hypervisor is not used, so not failing upgrade"); - // Update the latest template URLs for corresponding hypervisor - try(PreparedStatement update_templ_url_pstmt = conn.prepareStatement("UPDATE `cloud`.`vm_template` SET url = ? , checksum = ? WHERE hypervisor_type = ? AND type = 'SYSTEM' AND removed is null order by id desc limit 1");) { - update_templ_url_pstmt.setString(1, newTemplateUrl.get(hypervisorAndTemplateName.getKey())); - update_templ_url_pstmt.setString(2, newTemplateChecksum.get(hypervisorAndTemplateName.getKey())); - update_templ_url_pstmt.setString(3, hypervisorAndTemplateName.getKey().toString()); - update_templ_url_pstmt.executeUpdate(); - }catch (SQLException e) - { - s_logger.error("updateSystemVmTemplates:Exception while updating 'url' and 'checksum' for hypervisor type " + hypervisorAndTemplateName.getKey().toString() + ": "+e.getMessage()); - throw new CloudRuntimeException("updateSystemVmTemplates:Exception while updating 'url' and 'checksum' for hypervisor type " + hypervisorAndTemplateName.getKey().toString(), e); - } - } - } - } catch (SQLException e) { - s_logger.error("updateSystemVmTemplates:Exception while getting ids of templates: "+e.getMessage()); - throw new CloudRuntimeException("updateSystemVmTemplates:Exception while getting ids of templates", e); - } - } - s_logger.debug("Updating System Vm Template IDs Complete"); - } - - private void dropInvalidKeyFromStoragePoolTable(Connection conn) { HashMap> uniqueKeys = new HashMap>(); List keys = new ArrayList(); From 66fc7c62f4b21e770ecc6d6dfa99b3b06f410e89 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Wed, 11 Nov 2015 12:18:54 +0100 Subject: [PATCH 2/3] CLOUDSTACK-9055: fix NPE in updating Redundant State of VPC networks --- .../router/VirtualNetworkApplianceManagerImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index f0e5f0916b9..ca1f67dbb69 100644 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -1013,10 +1013,12 @@ Configurable, StateListener { s_logger.warn("Unable to update router " + router.getHostName() + "'s status"); } RedundantState state = RedundantState.UNKNOWN; - if (answer != null && answer.getResult()) { - state = answer.getState(); - } else { - s_logger.info("Agent response doesn't seem to be correct ==> " + answer.getResult()); + if (answer != null) { + if (answer.getResult()) { + state = answer.getState(); + } else { + s_logger.info("Agent response doesn't seem to be correct ==> " + answer.getResult()); + } } router.setRedundantState(state); updated = true; From d40d3498a6faa62fb8dc0df4d4e14b07a8363cb3 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Wed, 18 Nov 2015 22:54:25 +0100 Subject: [PATCH 3/3] CLOUDSTACK-9053 security upgrade as per COLLECTIONS-580 cloustack is not vulnerable but as the classes are in they might be used in the future so we upgrade to prevent accidental vulnerabilities. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2fe6547f25f..8fb0ed2d1fd 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ 1.6 1.10 1.10 - 3.2.1 + 3.2.2 1.1.1 0.5 3.0