[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
This commit is contained in:
Tina committed 2017-03-25 14:24:55 +00:00
1 parent a70261ba50
commit f07e09cbb8
6 files changed
+23 -27

No files matched your search

@@ -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})
@@ -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')
@@ -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
@@ -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):
@@ -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))
@@ -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.