[
https://issues.apache.org/jira/browse/CLOUDSTACK-9046?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14996650#comment-14996650
]
ASF GitHub Bot commented on CLOUDSTACK-9046:
--------------------------------------------
Github user wilderrodrigues commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1050#discussion_r44282419
--- Diff: engine/schema/src/com/cloud/upgrade/dao/Upgrade452to460.java ---
@@ -165,4 +171,173 @@ private void addIndexForVMInstance(Connection conn) {
return new File[] { new File(script) };
}
+ @SuppressWarnings("serial")
+ private void updateSystemVmTemplates(final Connection conn) {
+ s_logger.debug("Updating System Vm template IDs");
+ // Get all hypervisors in use
+ final Set<Hypervisor.HypervisorType> hypervisorsListInUse = new
HashSet<Hypervisor.HypervisorType>();
+ 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;
+ case Ovm3:
+
hypervisorsListInUse.add(Hypervisor.HypervisorType.Ovm3);
+ break;
+ default: // no action on cases Any, BareMetal, None, Ovm,
+ // Parralels, Simulator and VirtualBox:
+ break;
+ }
+ }
+ } catch (final 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);
+ }
+
+ final Map<Hypervisor.HypervisorType, String> NewTemplateNameList =
new HashMap<Hypervisor.HypervisorType, String>() {
--- End diff --
@DaanHoogland: do you get that this code was copied from the stuff written
for 4.4/4.5? Sorry, but I won't change it for the following reasons:
1. The PR was already tested and changes will force me to re-test it;
2. This is code executed once - for upgrades only;
3. This was copied from a code pushed in Commit ID
3cb78fc74221e521c205b21590e6d8a4a24e6b91;
4. After working for several weekends, I don't have the energy to do it now.
If you think it's a blocker, you can fork, change, test and push to the PR.
Cheers,
Wilder
> Fix upgrade path from 4.4 and 4.5 to 4.6
> ----------------------------------------
>
> Key: CLOUDSTACK-9046
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9046
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Components: Upgrade
> Affects Versions: 4.6.0
> Reporter: Wilder Rodrigues
> Assignee: Wilder Rodrigues
> Priority: Blocker
> Fix For: 4.6.0
>
>
> When upgrading to 4.6 from 4.5 or earlier, the systemvm template that is
> registered upfront is not marked as SYSTEM and set as the template for the
> existing systemvms. Therefore, new systemvms work fine but existing ones
> don't.
> RCA is missing code in the upgrade path, as is present when upgrading from
> 4.4 to 4.5 for example.
> The code in the Upgrade442to450.java is not generic, as the name suggests,
> and simply configures the whole SystemVM and all the existing Domain VMs to
> use the SystemVM-4.5.0 that was registered. It means that after the upgrade
> all the routers were marked okay, but they were using the old stuff, from
> 4.5.0. The attempt to deploy a new VM was also failing with the following
> error (on the host):
> 2015-11-07 18:17:31,135 DEBUG [kvm.resource.LibvirtComputingResource]
> (agentRequest-Handler-4:null) Exit value is 1
> 2015-11-07 18:17:31,135 DEBUG [kvm.resource.LibvirtComputingResource]
> (agentRequest-Handler-4:null) Traceback (most recent call last): File
> "/opt/cloud/bin/update_con
> fig.py", line 20, in <module> from merge import QueueFile File
> "/opt/cloud/bin/merge.py", line 23, in <module> import cs_ip File
> "/opt/cloud/bin/cs_ip.py", lin
> e 19, in <module> from netaddr import *ImportError: No module named netaddr
> Why that? Because the KVM host has the new systemvm.iso, which contains all
> the new python stuff, but the systemvm template, which installs the Guest OS
> (Debian) is old and does not contain the modules we now need.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)