[ https://issues.apache.org/jira/browse/CLOUDSTACK-9349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15251396#comment-15251396 ]
ASF GitHub Bot commented on CLOUDSTACK-9349: -------------------------------------------- Github user nitt10prashant commented on a diff in the pull request: https://github.com/apache/cloudstack/pull/1500#discussion_r60533118 --- Diff: test/integration/component/test_volumes.py --- @@ -603,7 +603,144 @@ def test_01_volume_attach_detach(self): "Check the state of VM" ) except Exception as e: - self.fail("Exception occuered: %s" % e) + self.fail("Exception occurred: %s" % e) + return + + @attr(tags=["advanced", "advancedns"], required_hardware="false") + def test_02_root_volume_attach_detach(self): + """Test Root Volume attach/detach to VM + """ + + # Validate the following + # 1. Deploy a VM + # 2. Verify that we are testing a supported hypervisor + # 3. Check for root volume + # 4. Stop VM + # 5. Detach root volume + # 6. Verify root volume detached + # 7. Attach root volume + # 8. Start VM + + # Verify we are using a supported hypervisor + if (self.hypervisor.lower() == 'vmware' + or self.hypervisor.lower() == 'kvm' + or self.hypervisor.lower() == 'simulator' + or self.hypervisor.lower() == 'xenserver'): + + try: + # Check for root volume + root_volume_response = Volume.list( + self.apiclient, + virtualmachineid=self.virtual_machine.id, + type='ROOT', + listall=True + ) + self.assertNotEqual( + root_volume_response, + None, + "Check if root volume exists in ListVolumes" + ) + self.assertEqual( + isinstance(root_volume_response, list), + True, + "Check list volumes response for valid list" + ) + # Grab the root volume for later use + root_volume = root_volume_response[0] + + # Stop VM + self.debug("Stopping the VM: %s" % self.virtual_machine.id) + self.virtual_machine.stop(self.apiclient) + + # Ensure VM is stopped before detaching the root volume + time.sleep(self.services["sleep"]) --- End diff -- No need use sleep time .Marvin automatically wait until it gets stop vm reply > Unable to detach root volume when using Hypervisor Type KVM > ----------------------------------------------------------- > > Key: CLOUDSTACK-9349 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9349 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Components: Volumes > Affects Versions: 4.5.1, 4.6.2, 4.7.1, 4.8.0, 4.9.0 > Environment: Centos 7 > Reporter: Simon Weller > Priority: Minor > Fix For: 4.7.2 > > > Back in 4.5, support was added in CLOUDSTACK-6284 for detaching root volumes. > The original support was meant to work with Xen, VMware and KVM. > After chatting with fuflo in the Cloudstack irc channel, it was pointed out > that a constraint was not correctly modified in VolumeApiServiceImpl.java to > allow the detach to occur when vm.getHypervisorType() == HypervisorType.KVM. > This is a very useful feature, as it allows us to simulate a snapshot revert > with Ceph by using createVolume sourced from a snapshot, then detaching and > reattaching the root volume (new root volume needs to be attached as > device=0). > I'm going to propose a PR for this shortly -- This message was sent by Atlassian JIRA (v6.3.4#6332)