Add a unit test for removing a disk from a running instance without
using hotplug.

Signed-off-by: Yiannis Tsiouris <[email protected]>
Signed-off-by: Filippos Giannakos <[email protected]>
---
 test/py/cmdlib/instance_unittest.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/test/py/cmdlib/instance_unittest.py 
b/test/py/cmdlib/instance_unittest.py
index 74d48721b..8a285e537 100644
--- a/test/py/cmdlib/instance_unittest.py
+++ b/test/py/cmdlib/instance_unittest.py
@@ -3069,6 +3069,27 @@ class TestLUInstanceSetParams(CmdlibTestCase):
     self.ExecOpCode(op)
     self.assertFalse(self.rpc.call_file_storage_dir_remove.called)
 
+  def testRemoveUsedDiskWithoutHotplug(self):
+    inst = self.cfg.AddNewInstance(disks=[self.cfg.CreateDisk(),
+                                          self.cfg.CreateDisk()])
+    op = self.CopyOpCode(self.op,
+                         instance_name=inst.name,
+                         disks=[[constants.DDM_REMOVE, -1,
+                                 {}]]) # without hotplug
+    self.rpc.call_instance_info.side_effect = [
+      self.RpcResultsBuilder() \
+        .CreateSuccessfulNodeResult(self.master,
+                                {
+                                  "memory": self.mocked_snode_memory_free,
+                                  "vcpus": self.mocked_running_inst_vcpus,
+                                  "state": self.mocked_running_inst_state,
+                                  "time": self.mocked_running_inst_time
+                                })]
+    self.ExecOpCodeExpectOpPrereqError(
+      op, "can't remove volume from a running instance without using hotplug")
+    self.assertFalse(self.rpc.call_blockdev_shutdown.called)
+    self.assertFalse(self.rpc.call_blockdev_remove.called)
+
   def testModifyDiskWithSize(self):
     op = self.CopyOpCode(self.op,
                          disks=[[constants.DDM_MODIFY, 0,
-- 
2.11.0

Reply via email to