From f07e09cbb8ad65b40a058d07c52d9257100b1315 Mon Sep 17 00:00:00 2001 From: Tina Date: Mon, 20 Mar 2017 08:57:41 +0000 Subject: [PATCH] [Dell EMC Unity] Create with user capacity The unity driver is creating the file system with allocated capacity which caused the usable space is less then the size specified by user. This patch changed the driver to create file system with user capacity. Besides, change the version to 3.0.0 for Pike release. Closes-Bug: 1674882 Change-Id: I2acf294d45662fd91a153fcd1f76202c3ad10132 --- .../drivers/dell_emc/plugins/unity/client.py | 26 ++++++------------- .../dell_emc/plugins/unity/connection.py | 2 +- .../drivers/dell_emc/plugins/unity/utils.py | 5 ++++ .../dell_emc/plugins/unity/test_client.py | 8 ------ .../dell_emc/plugins/unity/test_utils.py | 4 +++ ...ty-use-user-capacity-322f8bbb7c536453.yaml | 5 ++++ 6 files changed, 23 insertions(+), 27 deletions(-) create mode 100644 releasenotes/notes/dell-emc-unity-use-user-capacity-322f8bbb7c536453.yaml diff --git a/manila/share/drivers/dell_emc/plugins/unity/client.py b/manila/share/drivers/dell_emc/plugins/unity/client.py index 06d6694602..16217aa038 100644 --- a/manila/share/drivers/dell_emc/plugins/unity/client.py +++ b/manila/share/drivers/dell_emc/plugins/unity/client.py @@ -17,7 +17,6 @@ import six from oslo_log import log from oslo_utils import excutils from oslo_utils import importutils -from oslo_utils import units storops = importutils.try_import('storops') if storops: @@ -27,12 +26,10 @@ if storops: from manila.common import constants as const from manila import exception from manila.i18n import _, _LI, _LE, _LW +from manila.share.drivers.dell_emc.plugins.unity import utils LOG = log.getLogger(__name__) -# Minimun file system size in Unity -MIN_FS_SIZE_IN_GB = 3 - class UnityClient(object): def __init__(self, host, username, password): @@ -81,9 +78,9 @@ class UnityClient(object): :param share_name: file system and share name :param size_gb: file system size """ - size = self.get_valid_fs_size_in_byte(size_gb) + size = utils.gib_to_byte(size_gb) pool.create_nfs_share( - nas_server, share_name, size) + nas_server, share_name, size, user_cap=True) def get_share(self, name, share_proto): # Validate the share protocol @@ -103,11 +100,12 @@ class UnityClient(object): def create_filesystem(self, pool, nas_server, share_name, size_gb, proto): try: - size = self.get_valid_fs_size_in_byte(size_gb) + size = utils.gib_to_byte(size_gb) return pool.create_filesystem(nas_server, share_name, size, - proto=proto) + proto=proto, + user_cap=True) except storops_ex.UnityFileSystemNameAlreadyExisted: LOG.debug('Filesystem %s already exists, ' 'ignoring filesystem creation.', share_name) @@ -297,18 +295,10 @@ class UnityClient(object): return link_up_ports - @staticmethod - def get_valid_fs_size_in_byte(size_gb): - if size_gb < MIN_FS_SIZE_IN_GB: - LOG.debug('Using %(min_size)s GB file system for shares less than ' - '%(min_size)s GB.', {'min_size': MIN_FS_SIZE_IN_GB}) - size_gb = MIN_FS_SIZE_IN_GB - return size_gb * units.Gi - def extend_filesystem(self, fs, new_size_gb): - size = self.get_valid_fs_size_in_byte(new_size_gb) + size = utils.gib_to_byte(new_size_gb) try: - fs.extend(size) + fs.extend(size, user_cap=True) except storops_ex.UnityNothingToModifyError: LOG.debug('The size of the file system %(id)s is %(size)s ' 'bytes.', {'id': fs.get_id(), 'size': size}) diff --git a/manila/share/drivers/dell_emc/plugins/unity/connection.py b/manila/share/drivers/dell_emc/plugins/unity/connection.py index 4d150738e5..d33ded805f 100644 --- a/manila/share/drivers/dell_emc/plugins/unity/connection.py +++ b/manila/share/drivers/dell_emc/plugins/unity/connection.py @@ -35,7 +35,7 @@ from manila.share.drivers.dell_emc.plugins.vnx import utils as emc_utils from manila.share import utils as share_utils from manila import utils -VERSION = "2.0.0" +VERSION = "3.0.0" LOG = log.getLogger(__name__) SUPPORTED_NETWORK_TYPES = (None, 'flat', 'vlan') diff --git a/manila/share/drivers/dell_emc/plugins/unity/utils.py b/manila/share/drivers/dell_emc/plugins/unity/utils.py index beb594c0f5..175bb3bf2a 100644 --- a/manila/share/drivers/dell_emc/plugins/unity/utils.py +++ b/manila/share/drivers/dell_emc/plugins/unity/utils.py @@ -15,6 +15,7 @@ """ Utility module for EMC Unity Manila Driver """ from oslo_utils import fnmatch +from oslo_utils import units from manila import exception from manila.i18n import _ @@ -73,3 +74,7 @@ def find_ports_by_mtu(all_ports, port_ids_conf, mtu): '%{mtu}s.') % {'conf': port_ids_conf, 'mtu': mtu}) raise exception.ShareBackendException(msg=msg) return managed_port_map + + +def gib_to_byte(size_gib): + return size_gib * units.Gi diff --git a/manila/tests/share/drivers/dell_emc/plugins/unity/test_client.py b/manila/tests/share/drivers/dell_emc/plugins/unity/test_client.py index d498422198..2bea7ac5e3 100644 --- a/manila/tests/share/drivers/dell_emc/plugins/unity/test_client.py +++ b/manila/tests/share/drivers/dell_emc/plugins/unity/test_client.py @@ -170,14 +170,6 @@ class TestClient(test.TestCase): self.assertEqual('SPA', sp.name) - @ddt.data((1, 3), (2, 3), (3, 3), (4, 4), (10, 10)) - @ddt.unpack - @res_mock.patch_client - def test_get_valid_fs_size(self, client, share_size_gb, fs_size_gb): - size = client.get_valid_fs_size_in_byte(share_size_gb) - - self.assertEqual(fs_size_gb * units.Gi, size) - @res_mock.mock_client_input @res_mock.patch_client def test_extend_filesystem(self, client, mocked_input): diff --git a/manila/tests/share/drivers/dell_emc/plugins/unity/test_utils.py b/manila/tests/share/drivers/dell_emc/plugins/unity/test_utils.py index 84f088bab7..a19e295baf 100644 --- a/manila/tests/share/drivers/dell_emc/plugins/unity/test_utils.py +++ b/manila/tests/share/drivers/dell_emc/plugins/unity/test_utils.py @@ -14,6 +14,7 @@ # under the License. import ddt +from oslo_utils import units from manila.share.drivers.dell_emc.plugins.unity import utils from manila import test @@ -111,3 +112,6 @@ class TestUtils(test.TestCase): self.assertEqual({'spa': {'spa_eth0', 'spa_la_1'}, 'spb': {'spb_eth0', 'spb_la_1'}}, port_map) + + def test_gb_to_byte(self): + self.assertEqual(3 * units.Gi, utils.gib_to_byte(3)) diff --git a/releasenotes/notes/dell-emc-unity-use-user-capacity-322f8bbb7c536453.yaml b/releasenotes/notes/dell-emc-unity-use-user-capacity-322f8bbb7c536453.yaml new file mode 100644 index 0000000000..f1ff9e9405 --- /dev/null +++ b/releasenotes/notes/dell-emc-unity-use-user-capacity-322f8bbb7c536453.yaml @@ -0,0 +1,5 @@ +--- +features: + - Dell EMC Unity driver is changed to create shares with the available space + instead of allocated space as the same as the size specified by user. + - Dell EMC Unity driver version is changed to 3.0.0 for Pike release.