Uploaded image for project: 'XenServer Org'
  1. XenServer Org
  2. XSO-890

VM migrate in partially upgraded pool (7.0-7.5) not working due to method VM.assert_can_migrate_sender



    • Type: Bug
    • Status: Done (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 7.5
    • Fix Version/s: 8.0
    • Labels:
    • Environment:
      • XenServer Pool 7.0 (2016/10/28, 125380c) on top of two Lenovo x3650 M5 hosts.
      • licensed as a xendesktop/xenapp environment
      • Upgrade to 7.5 (2018/05/21) in progress
      • VMs on local storage and on NFS share
    • Internal JIRA Reference:


      Right now the state of the pool is "partially upgraded to XenServer 7.5". 

      • I cleared the pool-master of all VMs (live migrate to pool-member).
      • Shut down the master and started the upgrade to 7.5 via base-image iso.
      • Upgrade without any problems. 
      • Server comes back online again, now the pool is in state "partially upgraded".
      • Start to migrate all VMs from the pool-member to the now upgraded pool-master.
      • One VM on NFS shared storage migrated live and running without problems.
      • First try to migrate a running VM that is on local storage fails with:

      Migrate to Server: You tried to call a method that does not exist. The method name that you used is VM.assert_can_migrate_sender. 

      And that's the issue. I can't migrate the VMs to the upgraded master to finnish the pool upgrade by emptying the pool-member still on 7.0.

      Tried to move an offline VM on local storage to the master and this breaks with error: INVALID_VALUE

      Found this (via: https://github.com/xapi-project/xen-api/blob/master/ocaml/xapi/xapi_vm_migrate.ml )

      let assert_can_migrate_sender ~__context ~vm ~dest ~live ~vdi_map ~vif_map ~vgpu_map ~options =
       (* Check that the destination host has compatible pGPUs -- if needed *)
       let remote = remote_of_dest dest in
       let remote_for_migration_type =
       match migration_type ~__context ~remote with
       | `intra_pool -> None
       | `cross_pool -> Some (remote.rpc, remote.session)
       (* We only need to check compatibility for "live" vGPUs *)
       if Db.VM.get_power_state ~__context ~self:vm <> `Halted then
       Xapi_pgpu_helpers.assert_destination_has_pgpu_compatible_with_vm ~__context
       ~vm ~vgpu_map ~host:remote.dest_host ?remote:remote_for_migration_type ()

      pGPUs are the same


      I've opened a forum discussion but so far no clues on what's happening (granted it's been just few hours and I'm in Euro timezone)

      Any help much appriciated. If any infos are missing I'm happy to add them..




            • Assignee:
              AndreasG Andreas Goertz
            • Votes:
              0 Vote for this issue
              3 Start watching this issue


              • Created: