diff options
-rw-r--r-- | nova/tests/fake_imagebackend.py | 2 | ||||
-rwxr-xr-x | nova/virt/libvirt/driver.py | 3 | ||||
-rwxr-xr-x | nova/virt/libvirt/imagebackend.py | 14 |
3 files changed, 16 insertions, 3 deletions
diff --git a/nova/tests/fake_imagebackend.py b/nova/tests/fake_imagebackend.py index c284a5042..48426505e 100644 --- a/nova/tests/fake_imagebackend.py +++ b/nova/tests/fake_imagebackend.py @@ -41,7 +41,7 @@ class Backend(object): pass def libvirt_info(self, disk_bus, disk_dev, device_type, - cache_mode): + cache_mode, extra_specs): info = config.LibvirtConfigGuestDisk() info.source_type = 'file' info.source_device = device_type diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 386fe836c..c3bef84ba 100755 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -1680,7 +1680,8 @@ class LibvirtDriver(driver.ComputeDriver): return image.libvirt_info(disk_info['bus'], disk_info['dev'], disk_info['type'], - self.disk_cachemode) + self.disk_cachemode, + instance['extra_specs']) def get_guest_storage_config(self, instance, image_meta, disk_info, diff --git a/nova/virt/libvirt/imagebackend.py b/nova/virt/libvirt/imagebackend.py index 0a84b22e5..bcaf1de5a 100755 --- a/nova/virt/libvirt/imagebackend.py +++ b/nova/virt/libvirt/imagebackend.py @@ -86,13 +86,15 @@ class Image(object): """ pass - def libvirt_info(self, disk_bus, disk_dev, device_type, cache_mode): + def libvirt_info(self, disk_bus, disk_dev, device_type, cache_mode, + extra_specs): """Get `LibvirtConfigGuestDisk` filled for this image. :disk_dev: Disk bus device name :disk_bus: Disk bus type :device_type: Device type for this image. :cache_mode: Caching mode for this image + :extra_specs: Instance type extra specs dict. """ info = vconfig.LibvirtConfigGuestDisk() info.source_type = self.source_type @@ -104,6 +106,16 @@ class Image(object): driver_name = libvirt_utils.pick_disk_driver_name(self.is_block_dev) info.driver_name = driver_name info.source_path = self.path + + tune_items = ['disk_read_bytes_sec', 'disk_read_iops_sec', + 'disk_write_bytes_sec', 'disk_write_iops_sec', + 'disk_total_bytes_sec', 'disk_total_iops_sec'] + # Note(yaguang): Currently, the only tuning available is Block I/O + # throttling for qemu. + if self.source_type in ['file', 'block']: + for key, value in extra_specs.iteritems(): + if key in tune_items: + setattr(info, key, value) return info def cache(self, fetch_func, filename, size=None, *args, **kwargs): |