[ 
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)

Reply via email to