virt-manager/9c8ffe51-fix-multiple-warnings-1.patch
Charles Arnold 558728377c - bsc#1027942 - virt-manager: Missing upstream bug fixes
f5d709d9-lang-it-1.patch
  c66098f3-lang-it-2.patch
  452a693e-lang-update.patch
  6b5106ea-lang-it-ko-fix.patch
  9c8ffe51-fix-multiple-warnings-1.patch
  cb182f7e-skip-authentication-only-for-VNC-with-listen-type-none.patch
  0610cd6a-ensure-bool-value-used-for-set_sensitive-call.patch
  f341352c-remove-redundant-error-string.patch
  ff3b4dc5-dont-overwrite-install-bootorder.patch
  2099a194-reset-guest-domain-to-none-on-domain-creation-error.patch
  7aee124d-fix-multiple-warnings-2.patch

- Check for SLE15 and Leap 15 bsc#1035779 
  virtman-default-guest-from-host-os.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=348
2017-04-27 20:58:57 +00:00

125 lines
4.8 KiB
Diff

Subject: storage: Move alloc/cap validation to validate()
From: Cole Robinson crobinso@redhat.com Fri Mar 17 12:00:03 2017 -0400
Date: Fri Mar 17 12:14:05 2017 -0400:
Git: 9c8ffe51dacee208af4d5d7cc3e439ae7197fc09
Doing this at property set time is overly noisy. Follow the same
pattern of VirtualDisk and only do this in the validate() function.
https://bugzilla.redhat.com/show_bug.cgi?id=1433239
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index f70f5b21..5198057c 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -345,10 +345,11 @@ class _StorageCreator(_StorageBase):
if self._vol_install:
self._vol_install.validate()
- else:
- if self._size is None:
- raise ValueError(_("size is required for non-existent disk "
- "'%s'" % self.get_path()))
+ return
+
+ if self._size is None:
+ raise ValueError(_("size is required for non-existent disk "
+ "'%s'" % self.get_path()))
err, msg = self.is_size_conflict()
if err:
diff --git a/virtinst/storage.py b/virtinst/storage.py
index cd74467a..808891f3 100644
--- a/virtinst/storage.py
+++ b/virtinst/storage.py
@@ -683,22 +683,6 @@ class StorageVolume(_StorageObject):
raise ValueError(_("Name '%s' already in use by another volume." %
name))
- def _validate_allocation(self, val):
- ret = self.is_size_conflict(allocation=val)
- if ret[0]:
- raise ValueError(ret[1])
- elif ret[1]:
- logging.warn(ret[1])
- return val
-
- def _validate_capacity(self, val):
- ret = self.is_size_conflict(capacity=val)
- if ret[0]:
- raise ValueError(ret[1])
- elif ret[1]:
- logging.warn(ret[1])
- return val
-
def _default_format(self):
if self.file_type == self.TYPE_FILE:
return "raw"
@@ -728,10 +712,8 @@ class StorageVolume(_StorageObject):
type = XMLProperty("./@type")
key = XMLProperty("./key")
- capacity = XMLProperty("./capacity", is_int=True,
- validate_cb=_validate_capacity)
- allocation = XMLProperty("./allocation", is_int=True,
- validate_cb=_validate_allocation)
+ capacity = XMLProperty("./capacity", is_int=True)
+ allocation = XMLProperty("./allocation", is_int=True)
format = XMLProperty("./target/format/@type", default_cb=_default_format)
target_path = XMLProperty("./target/path")
backing_store = XMLProperty("./backingStore/path")
@@ -809,6 +791,12 @@ class StorageVolume(_StorageObject):
"setting allocation equal to capacity"))
self.allocation = self.capacity
+ isfatal, errmsg = self.is_size_conflict()
+ if isfatal:
+ raise ValueError(errmsg)
+ if errmsg:
+ logging.warn(errmsg)
+
def install(self, meter=None):
"""
Build and install storage volume from xml
@@ -891,7 +879,7 @@ class StorageVolume(_StorageObject):
time.sleep(1)
- def is_size_conflict(self, capacity=None, allocation=None):
+ def is_size_conflict(self):
"""
Report if requested size exceeds its pool's available amount
@@ -900,27 +888,22 @@ class StorageVolume(_StorageObject):
2. String message if some collision was encountered.
@rtype: 2 element C{tuple}: (C{bool}, C{str})
"""
- if capacity is None:
- capacity = self.capacity
- if allocation is None:
- allocation = self.allocation
-
if not self.pool:
return (False, "")
# pool info is [pool state, capacity, allocation, available]
avail = self.pool.info()[3]
- if allocation > avail:
+ if self.allocation > avail:
return (True, _("There is not enough free space on the storage "
"pool to create the volume. "
"(%d M requested allocation > %d M available)") %
- ((allocation / (1024 * 1024)),
+ ((self.allocation / (1024 * 1024)),
(avail / (1024 * 1024))))
- elif capacity > avail:
+ elif self.capacity > avail:
return (False, _("The requested volume capacity will exceed the "
"available pool space when the volume is fully "
"allocated. "
"(%d M requested capacity > %d M available)") %
- ((capacity / (1024 * 1024)),
+ ((self.capacity / (1024 * 1024)),
(avail / (1024 * 1024))))
return (False, "")