cloudstack
cloudstack copied to clipboard
Add live migration of system VMs
Description
Currently, there is no way to migrate running system VMs with volumes; this means, we cannot move their volumes to a new storage pool in runtime. This PR aims to add this feature by altering the behavior of the migrateVirtualMachineWithVolume
API to support system VMs. Furthermore, the listVolumes
API was changed to also return system VMs root volumes, to provide easy access to the system VMs volume's UUID to the root admins. Moreover, it was added unit test for MigrateVirtualMachineWithVolumeCmd
class.
Furthermore, the changes made by this feature required some tweaking in the UI as the system VM's volumes were now available. When these volumes were accessed, the path led to /vm/<vm-uuid>
. However, ACS has a different path to VRs and system VMs resulting in a 404 page. This bug was fixed with the new changes; moreover, it was added a Volumes tab to system VMs and VRs as well.
Types of changes
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] Enhancement (improves an existing feature and functionality)
- [ ] Cleanup (Code refactoring and cleanup, that may add test cases)
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
- [ ] Major
- [x] Minor
Bug Severity
- [ ] BLOCKER
- [ ] Critical
- [ ] Major
- [ ] Minor
- [ ] Trivial
Screenshots (if appropriate):
VR volume's tab:
System volume's tab:
How Has This Been Tested?
This was tested on a local lab through CloudMonkey, using the command migrate virtualmachinewithvolume
with the UUID of a system VM and migrating its volume to another storage pool. The command ran as expected. Furthermore, it was added unit test to verify the API behavior.
For the UI, I tried to access the volumes of system VMs and VRs as well as the volumes of user VMs to check if nothing was broken. I did not find any errors.
Found UI changes, kicking a new UI QA build @blueorangutan ui
@acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.
UI build: :heavy_check_mark: Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6491 (SL-JID-1828)
Found UI changes, kicking a new UI QA build @blueorangutan ui
@acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.
UI build: :heavy_check_mark: Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6491 (SL-JID-1856)
Found UI changes, kicking a new UI QA build @blueorangutan ui
@acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.
UI build: :heavy_check_mark: Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6491 (SL-JID-1873)
@GabrielBrascher @RodrigoDLopez are your concerns all met?
@GabrielBrascher @RodrigoDLopez are your concerns all met?
Yes, I do agree with this proposal. Before I approved this one, I ran some manual tests in a local lab, and everything was good, I think we are good to go.
@GabrielBrascher @RodrigoDLopez are your concerns all met?
Yes, I do agree with this proposal. Before I approved this one, I ran some manual tests in a local lab, and everything was good, I think we are good to go.
ah, your approval status is still ¨left review comments¨. I understand you have tested this. Let's wait for @GabrielBrascher 's reply and then merge.
amend: let's run smoke tests as well; @blueorangutan package
@DaanHoogland a Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.
Packaging result: :heavy_multiplication_x: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 3889
@blueorangutan package
@DaanHoogland a Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.
Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 3895
@blueorangutan test matrix
@DaanHoogland a Trillian-Jenkins matrix job (centos7 mgmt + xs71, centos7 mgmt + vmware65, centos7 mgmt + kvmcentos7) has been kicked to run smoke tests
@Pearl1594 @rohityadavcloud could you shine your lights on this, please?
Trillian test result (tid-4614) Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7 Total time taken: 39017 seconds Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr6491-t4614-kvm-centos7.zip Smoke tests completed. 101 look OK, 0 have errors Only failed tests results shown below:
Test | Result | Time (s) | Test File |
---|
Trillian test result (tid-4613) Environment: xenserver-71 (x2), Advanced Networking with Mgmt server 7 Total time taken: 39371 seconds Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr6491-t4613-xenserver-71.zip Smoke tests completed. 101 look OK, 0 have errors Only failed tests results shown below:
Test | Result | Time (s) | Test File |
---|
Trillian test result (tid-4615) Environment: vmware-65u2 (x2), Advanced Networking with Mgmt server 7 Total time taken: 39770 seconds Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr6491-t4615-vmware-65u2.zip Smoke tests completed. 101 look OK, 0 have errors Only failed tests results shown below:
Test | Result | Time (s) | Test File |
---|
Hey @DaanHoogland, could you take a look on this one again? I think it already has the required number of approvals. EDIT: I will add some changes, to keep the UI consistent.
This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.
Found UI changes, kicking a new UI QA build @blueorangutan ui
@acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.
Found UI changes, kicking a new UI QA build @blueorangutan ui