diff --git a/nova/tests/unit/virt/libvirt/volume/test_scaleio.py b/nova/tests/unit/virt/libvirt/volume/test_scaleio.py index 0939a93f783c..5dd29ef2d3d9 100644 --- a/nova/tests/unit/virt/libvirt/volume/test_scaleio.py +++ b/nova/tests/unit/virt/libvirt/volume/test_scaleio.py @@ -58,3 +58,19 @@ class LibvirtScaleIOVolumeDriverTestCase( sio.disconnect_volume(conn, mock.sentinel.instance) sio.connector.disconnect_volume.assert_called_once_with( mock.sentinel.conn_data, None) + + def test_libvirt_scaleio_driver_extend_volume(self): + def brick_extend_vol(data): + return data['size'] + + extended_vol_size = 8 + sio = scaleio.LibvirtScaleIOVolumeDriver(self.fake_host) + disk_info = {'size': extended_vol_size, + 'name': 'vol01', + 'device_path': '/dev/vol01'} + conn = {'data': disk_info} + with mock.patch.object(sio.connector, + 'extend_volume', + side_effect=brick_extend_vol): + self.assertEqual(extended_vol_size, + sio.extend_volume(conn, mock.sentinel.instance)) diff --git a/nova/virt/libvirt/volume/scaleio.py b/nova/virt/libvirt/volume/scaleio.py index 197c595aa6b7..4195bc1096e2 100644 --- a/nova/virt/libvirt/volume/scaleio.py +++ b/nova/virt/libvirt/volume/scaleio.py @@ -61,3 +61,12 @@ class LibvirtScaleIOVolumeDriver(libvirt_volume.LibvirtBaseVolumeDriver): super(LibvirtScaleIOVolumeDriver, self).disconnect_volume( connection_info, instance) + + def extend_volume(self, connection_info, instance): + LOG.debug("calling os-brick to extend ScaleIO Volume", + instance=instance) + new_size = self.connector.extend_volume(connection_info['data']) + LOG.debug("Extend ScaleIO Volume %s; new_size=%s", + connection_info['data']['device_path'], + new_size, instance=instance) + return new_size diff --git a/releasenotes/notes/scaleio-extend-volume-d82c39a30e0a09ca.yaml b/releasenotes/notes/scaleio-extend-volume-d82c39a30e0a09ca.yaml new file mode 100644 index 000000000000..6433638317b5 --- /dev/null +++ b/releasenotes/notes/scaleio-extend-volume-d82c39a30e0a09ca.yaml @@ -0,0 +1,5 @@ +--- +features: + - Added ability to extend an attached ScaleIO volume + when using the libvirt compute driver. + diff --git a/requirements.txt b/requirements.txt index e34ac84fc7cf..6f740abf6d5a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -52,7 +52,7 @@ rfc3986>=0.3.1 # Apache-2.0 oslo.middleware>=3.31.0 # Apache-2.0 psutil>=3.2.2 # BSD oslo.versionedobjects>=1.31.2 # Apache-2.0 -os-brick>=2.2.0 # Apache-2.0 +os-brick>=2.4.0 # Apache-2.0 os-traits>=0.4.0 # Apache-2.0 os-vif!=1.8.0,>=1.7.0 # Apache-2.0 os-win>=3.0.0 # Apache-2.0