commit 23c04ea9624d68ce2be3b683cd4744b8a31e88e0
Merge: dbe4681 51620a2
Author: Klaus Aehlig <[email protected]>
Date:   Thu Dec 4 15:56:45 2014 +0100

    Merge branch 'stable-2.13' into master
    
    * stable-2.13
      kvm: Delegate socket handling to monitor module
      kvm: Use vhostfds obtained by OpenTap
      hotplug: Retry VerifyHotplugCommand up to 5 times
      Update hotplug design doc
      qa: Re-enable NIC hotplug tests
      qmp: Log qmp commands and responses
      hotplug: Is not supported for QEMU < 1.7
      hotplug: Remove unused code after refacoring
      hotplug: Use QMP during HotDelDevice
      hotplug: Use QMP during HotAddDevice
      kvm: Use the new interface during instance start
      monitor: Extend HotAddNic() for advanced features
      kvm: Refactor _GetNetworkDeviceFeatures() helper
      netdev: Refactor OpenTap for future use
      hotplug: Use QMP in VerifyHotplugCommand
      hotplug: Use QMP in VerifyHotplugSupport
      monitor: Close socket fd if already connected
      kvm: New _with_qmp decorator
      qmp: Add Disk hotplugging related method
      qmp: Add NIC hotplugging related methods
      qmp: Helper methods for parsing query-pci outpu
      qmp: Add helper methods to verify hotplug support
      qmp: Add GetFd() wrapper around getfd command
      qmp: Refactor of add-fd and remove-fd commands
      utils: Introduce GetFreeSlot() function
      kvm: Minor refactor of MonitorSocket
    
    * stable-2.12
      Check disk size ipolicy during "gnt-instance grow-disk"
      Test function ComputeIPolicyDiskSizesViolation
      Add a helper function for checking the disk size ipolicy
      Add "ignore-ipolicy" option to gnt-instance grow-disk
      Fix the installation instructions for the DRBD module
      Update install docs - DRBD module parameters
    
    * stable-2.11
      (no changes)
    
    * stable-2.10
      Fix hlint warnings found by hlint 1.9.11
      Only check header for non-generated files
    
    Signed-off-by: Klaus Aehlig <[email protected]>

diff --cc lib/cmdlib/instance_storage.py
index 865b241,6251c7e..7cf9510
--- a/lib/cmdlib/instance_storage.py
+++ b/lib/cmdlib/instance_storage.py
@@@ -1729,9 -1707,11 +1730,11 @@@ class LUInstanceGrowDisk(LogicalUnit)
  
      self._CheckDiskSpace(node_uuids, self.disk.ComputeGrowth(self.delta))
  
+     self._CheckIPolicy(self.target)
+ 
    def _CheckDiskSpace(self, node_uuids, req_vgspace):
 -    template = self.instance.disk_template
 -    if (template not in (constants.DTS_NO_FREE_SPACE_CHECK) and
 +    template = self.disk.dev_type
 +    if (template not in constants.DTS_NO_FREE_SPACE_CHECK and
          not any(self.node_es_flags.values())):
        # TODO: check the free disk space for file, when that feature will be
        # supported
diff --cc test/py/cmdlib/cmdlib_unittest.py
index 17bccb8,30cbd83..8428efa
--- a/test/py/cmdlib/cmdlib_unittest.py
+++ b/test/py/cmdlib/cmdlib_unittest.py
@@@ -558,6 -556,105 +558,7 @@@ class TestComputeIPolicySpecViolation(u
      ipolicy1[constants.IPOLICY_DTS] = ["another_template"]
      AssertComputeViolation(ipolicy1, 1)
  
+ 
 -class TestComputeIPolicyDiskSizesViolation(unittest.TestCase):
 -  # Minimal policy accepted by _ComputeIPolicyDiskSizesViolation()
 -  _MICRO_IPOL = {
 -    constants.IPOLICY_DTS: [constants.DT_PLAIN, constants.DT_DISKLESS],
 -    constants.ISPECS_MINMAX: [NotImplemented],
 -    }
 -
 -  def test(self):
 -    compute_fn = _ValidateComputeMinMaxSpec
 -    ret = common.ComputeIPolicyDiskSizesViolation(self._MICRO_IPOL, [1024],
 -                                                  constants.DT_PLAIN,
 -                                                  _compute_fn=compute_fn)
 -    self.assertEqual(ret, [])
 -
 -  def testDiskFull(self):
 -    compute_fn = _NoDiskComputeMinMaxSpec
 -    ret = common.ComputeIPolicyDiskSizesViolation(self._MICRO_IPOL, [1024],
 -                                                  constants.DT_PLAIN,
 -                                                  _compute_fn=compute_fn)
 -    self.assertEqual(ret, [constants.ISPEC_DISK_COUNT])
 -
 -  def testDiskLess(self):
 -    compute_fn = _NoDiskComputeMinMaxSpec
 -    ret = common.ComputeIPolicyDiskSizesViolation(self._MICRO_IPOL, [1024],
 -                                                  constants.DT_DISKLESS,
 -                                                  _compute_fn=compute_fn)
 -    self.assertEqual(ret, [])
 -
 -  def testWrongTemplates(self):
 -    compute_fn = _ValidateComputeMinMaxSpec
 -    ret = common.ComputeIPolicyDiskSizesViolation(self._MICRO_IPOL, [1024],
 -                                                  constants.DT_DRBD8,
 -                                                  _compute_fn=compute_fn)
 -    self.assertEqual(len(ret), 1)
 -    self.assertTrue("Disk template" in ret[0])
 -
 -  def _AssertComputeViolation(self, ipolicy, disk_sizes, disk_template,
 -                              violations):
 -    ret = common.ComputeIPolicyDiskSizesViolation(ipolicy, disk_sizes,
 -                                                  disk_template)
 -    self.assertEqual(len(ret), violations)
 -
 -  def testWithIPolicy(self):
 -    mem_size = 2048
 -    cpu_count = 2
 -    disk_count = 1
 -    disk_sizes = [512]
 -    nic_count = 1
 -    spindle_use = 4
 -    disk_template = "mytemplate"
 -    ispec = {
 -      constants.ISPEC_MEM_SIZE: mem_size,
 -      constants.ISPEC_CPU_COUNT: cpu_count,
 -      constants.ISPEC_DISK_COUNT: disk_count,
 -      constants.ISPEC_DISK_SIZE: disk_sizes[0],
 -      constants.ISPEC_NIC_COUNT: nic_count,
 -      constants.ISPEC_SPINDLE_USE: spindle_use,
 -      }
 -
 -    ipolicy = {
 -      constants.ISPECS_MINMAX: [{
 -        constants.ISPECS_MIN: ispec,
 -        constants.ISPECS_MAX: ispec,
 -        }],
 -      constants.IPOLICY_DTS: [disk_template],
 -      }
 -
 -    self._AssertComputeViolation(ipolicy, [512], disk_template, 0)
 -    self._AssertComputeViolation(ipolicy, [], disk_template, 1)
 -    self._AssertComputeViolation(ipolicy, [512, 512], disk_template, 1)
 -    self._AssertComputeViolation(ipolicy, [511], disk_template, 1)
 -    self._AssertComputeViolation(ipolicy, [513], disk_template, 1)
 -
 -
 -class _StubComputeIPolicySpecViolation:
 -  def __init__(self, mem_size, cpu_count, disk_count, nic_count, disk_sizes,
 -               spindle_use, disk_template):
 -    self.mem_size = mem_size
 -    self.cpu_count = cpu_count
 -    self.disk_count = disk_count
 -    self.nic_count = nic_count
 -    self.disk_sizes = disk_sizes
 -    self.spindle_use = spindle_use
 -    self.disk_template = disk_template
 -
 -  def __call__(self, _, mem_size, cpu_count, disk_count, nic_count, 
disk_sizes,
 -               spindle_use, disk_template):
 -    assert self.mem_size == mem_size
 -    assert self.cpu_count == cpu_count
 -    assert self.disk_count == disk_count
 -    assert self.nic_count == nic_count
 -    assert self.disk_sizes == disk_sizes
 -    assert self.spindle_use == spindle_use
 -    assert self.disk_template == disk_template
 -
 -    return []
 -
 -
  class _FakeConfigForComputeIPolicyInstanceViolation:
    def __init__(self, be, excl_stor):
      self.cluster = objects.Cluster(beparams={"default": be})

-- 
Klaus Aehlig
Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores

Reply via email to