Merge "NetApp cDOT driver switch volume efficiency" into stable/queens

This commit is contained in:
Zuul 2019-07-08 20:39:03 +00:00 committed by Gerrit Code Review
commit e80d038854
3 changed files with 30 additions and 15 deletions

View File

@ -1510,11 +1510,9 @@ class NetAppCmodeClient(client_base.NetAppBaseClient):
self.send_request('volume-create', api_args) self.send_request('volume-create', api_args)
# cDOT compression requires that deduplication be enabled. self.update_volume_efficiency_attributes(volume_name,
if dedup_enabled or compression_enabled: dedup_enabled,
self.enable_dedup(volume_name) compression_enabled)
if compression_enabled:
self.enable_compression(volume_name)
if max_files is not None: if max_files is not None:
self.set_volume_max_files(volume_name, max_files) self.set_volume_max_files(volume_name, max_files)
@ -1725,17 +1723,20 @@ class NetAppCmodeClient(client_base.NetAppBaseClient):
"""Update dedupe & compression attributes to match desired values.""" """Update dedupe & compression attributes to match desired values."""
efficiency_status = self.get_volume_efficiency_status(volume_name) efficiency_status = self.get_volume_efficiency_status(volume_name)
if efficiency_status['compression'] != compression_enabled: # cDOT compression requires dedup to be enabled
if compression_enabled: dedup_enabled = dedup_enabled or compression_enabled
self.enable_compression(volume_name)
else:
self.disable_compression(volume_name)
if efficiency_status['dedupe'] != dedup_enabled: # enable/disable dedup if needed
if dedup_enabled: if dedup_enabled and not efficiency_status['dedupe']:
self.enable_dedup(volume_name) self.enable_dedup(volume_name)
else: elif not dedup_enabled and efficiency_status['dedupe']:
self.disable_dedup(volume_name) self.disable_dedup(volume_name)
# enable/disable compression if needed
if compression_enabled and not efficiency_status['compression']:
self.enable_compression(volume_name)
elif not compression_enabled and efficiency_status['compression']:
self.disable_compression(volume_name)
@na_utils.trace @na_utils.trace
def volume_exists(self, volume_name): def volume_exists(self, volume_name):

View File

@ -2641,6 +2641,7 @@ class NetAppClientCmodeTestCase(test.TestCase):
def test_create_volume(self): def test_create_volume(self):
self.mock_object(self.client, 'send_request') self.mock_object(self.client, 'send_request')
self.mock_object(self.client, 'update_volume_efficiency_attributes')
self.client.create_volume( self.client.create_volume(
fake.SHARE_AGGREGATE_NAME, fake.SHARE_NAME, 100) fake.SHARE_AGGREGATE_NAME, fake.SHARE_NAME, 100)
@ -2663,6 +2664,10 @@ class NetAppClientCmodeTestCase(test.TestCase):
self.mock_object(self.client, 'enable_dedup') self.mock_object(self.client, 'enable_dedup')
self.mock_object(self.client, 'enable_compression') self.mock_object(self.client, 'enable_compression')
self.mock_object(self.client, 'send_request') self.mock_object(self.client, 'send_request')
self.mock_object(
self.client,
'get_volume_efficiency_status',
mock.Mock(return_value={'dedupe': False, 'compression': False}))
self.client.create_volume( self.client.create_volume(
fake.SHARE_AGGREGATE_NAME, fake.SHARE_NAME, 100, fake.SHARE_AGGREGATE_NAME, fake.SHARE_NAME, 100,
@ -2697,6 +2702,7 @@ class NetAppClientCmodeTestCase(test.TestCase):
def test_create_encrypted_volume(self): def test_create_encrypted_volume(self):
self.mock_object(self.client, 'send_request') self.mock_object(self.client, 'send_request')
self.mock_object(self.client, 'update_volume_efficiency_attributes')
self.client.features.add_feature('FLEXVOL_ENCRYPTION') self.client.features.add_feature('FLEXVOL_ENCRYPTION')
self.client.create_volume( self.client.create_volume(
@ -2717,6 +2723,7 @@ class NetAppClientCmodeTestCase(test.TestCase):
def test_create_non_encrypted_volume(self): def test_create_non_encrypted_volume(self):
self.mock_object(self.client, 'send_request') self.mock_object(self.client, 'send_request')
self.mock_object(self.client, 'update_volume_efficiency_attributes')
self.client.features.add_feature('FLEXVOL_ENCRYPTION') self.client.features.add_feature('FLEXVOL_ENCRYPTION')
self.client.create_volume( self.client.create_volume(

View File

@ -0,0 +1,7 @@
---
fixes:
- |
NetApp driver volume efficiency settings now behave consistently: like on
volume creation now also modification, which is currently consumed by
manage and migration, will make sure that deduplication and compression
settings are applied correctly.