glusterfs.common: move the numreduct function to toplevel
This function is not specific to GlusterFS interaction. Partially implements bp gluster-code-cleanup Change-Id: I96ef68f13287d6654b65744df67880ab9deccb3f
This commit is contained in:
parent
1fda615f6f
commit
6bbd199b85
|
@ -328,7 +328,7 @@ class GlusterManager(object):
|
||||||
(given as tuple of integers, example: (3, 6))
|
(given as tuple of integers, example: (3, 6))
|
||||||
"""
|
"""
|
||||||
vers = self.get_gluster_version()
|
vers = self.get_gluster_version()
|
||||||
if self.numreduct(vers) < minvers:
|
if numreduct(vers) < minvers:
|
||||||
raise exception.GlusterfsException(_(
|
raise exception.GlusterfsException(_(
|
||||||
"Unsupported GlusterFS version %(version)s on server "
|
"Unsupported GlusterFS version %(version)s on server "
|
||||||
"%(server)s, minimum requirement: %(minvers)s") % {
|
"%(server)s, minimum requirement: %(minvers)s") % {
|
||||||
|
@ -336,20 +336,20 @@ class GlusterManager(object):
|
||||||
'version': '.'.join(vers),
|
'version': '.'.join(vers),
|
||||||
'minvers': '.'.join(six.text_type(c) for c in minvers)})
|
'minvers': '.'.join(six.text_type(c) for c in minvers)})
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def numreduct(vers):
|
|
||||||
"""The numeric reduct of a tuple of strings.
|
|
||||||
|
|
||||||
That is, applying an integer conversion map on the longest
|
def numreduct(vers):
|
||||||
initial segment of vers which consists of numerals.
|
"""The numeric reduct of a tuple of strings.
|
||||||
"""
|
|
||||||
numvers = []
|
That is, applying an integer conversion map on the longest
|
||||||
for c in vers:
|
initial segment of vers which consists of numerals.
|
||||||
try:
|
"""
|
||||||
numvers.append(int(c))
|
numvers = []
|
||||||
except ValueError:
|
for c in vers:
|
||||||
break
|
try:
|
||||||
return tuple(numvers)
|
numvers.append(int(c))
|
||||||
|
except ValueError:
|
||||||
|
break
|
||||||
|
return tuple(numvers)
|
||||||
|
|
||||||
|
|
||||||
def _mount_gluster_vol(execute, gluster_export, mount_path, ensure=False):
|
def _mount_gluster_vol(execute, gluster_export, mount_path, ensure=False):
|
||||||
|
|
|
@ -140,8 +140,7 @@ class GlusterfsVolumeMappedLayout(layout.GlusterfsShareLayoutBase):
|
||||||
','.join(exceptions.keys())))
|
','.join(exceptions.keys())))
|
||||||
notsupp_servers = []
|
notsupp_servers = []
|
||||||
for srvaddr, vers in glusterfs_versions.items():
|
for srvaddr, vers in glusterfs_versions.items():
|
||||||
if common.GlusterManager.numreduct(
|
if common.numreduct(vers) < self.driver.GLUSTERFS_VERSION_MIN:
|
||||||
vers) < self.driver.GLUSTERFS_VERSION_MIN:
|
|
||||||
notsupp_servers.append(srvaddr)
|
notsupp_servers.append(srvaddr)
|
||||||
if notsupp_servers:
|
if notsupp_servers:
|
||||||
gluster_version_min_str = '.'.join(
|
gluster_version_min_str = '.'.join(
|
||||||
|
@ -356,8 +355,7 @@ class GlusterfsVolumeMappedLayout(layout.GlusterfsShareLayoutBase):
|
||||||
# delete the paths of the two directories, but delete their contents
|
# delete the paths of the two directories, but delete their contents
|
||||||
# along with the rest of the contents of the volume.
|
# along with the rest of the contents of the volume.
|
||||||
srvaddr = gluster_mgr.host_access
|
srvaddr = gluster_mgr.host_access
|
||||||
if common.GlusterManager.numreduct(self.glusterfs_versions[srvaddr]
|
if common.numreduct(self.glusterfs_versions[srvaddr]) < (3, 7):
|
||||||
) < (3, 7):
|
|
||||||
cmd = ['find', tmpdir, '-mindepth', '1', '-delete']
|
cmd = ['find', tmpdir, '-mindepth', '1', '-delete']
|
||||||
else:
|
else:
|
||||||
ignored_dirs = map(lambda x: os.path.join(tmpdir, *x),
|
ignored_dirs = map(lambda x: os.path.join(tmpdir, *x),
|
||||||
|
@ -465,7 +463,7 @@ class GlusterfsVolumeMappedLayout(layout.GlusterfsShareLayoutBase):
|
||||||
# a version check.
|
# a version check.
|
||||||
vers = self.glusterfs_versions[old_gmgr.host_access]
|
vers = self.glusterfs_versions[old_gmgr.host_access]
|
||||||
minvers = (3, 7)
|
minvers = (3, 7)
|
||||||
if common.GlusterManager.numreduct(vers) < minvers:
|
if common.numreduct(vers) < minvers:
|
||||||
minvers_str = '.'.join(six.text_type(c) for c in minvers)
|
minvers_str = '.'.join(six.text_type(c) for c in minvers)
|
||||||
vers_str = '.'.join(vers)
|
vers_str = '.'.join(vers)
|
||||||
msg = (_("GlusterFS version %(version)s on server %(server)s does "
|
msg = (_("GlusterFS version %(version)s on server %(server)s does "
|
||||||
|
@ -537,7 +535,7 @@ class GlusterfsVolumeMappedLayout(layout.GlusterfsShareLayoutBase):
|
||||||
|
|
||||||
if opret == -1:
|
if opret == -1:
|
||||||
vers = self.glusterfs_versions[gluster_mgr.host_access]
|
vers = self.glusterfs_versions[gluster_mgr.host_access]
|
||||||
if common.GlusterManager.numreduct(vers) > (3, 6):
|
if common.numreduct(vers) > (3, 6):
|
||||||
# This logic has not yet been implemented in GlusterFS 3.6
|
# This logic has not yet been implemented in GlusterFS 3.6
|
||||||
if operrno == 0:
|
if operrno == 0:
|
||||||
self.gluster_nosnap_vols_dict[
|
self.gluster_nosnap_vols_dict[
|
||||||
|
|
|
@ -612,7 +612,7 @@ class GlusterManagerTestCase(test.TestCase):
|
||||||
('3', '6', '2beta'),
|
('3', '6', '2beta'),
|
||||||
('3', '6', '2beta', '4'))
|
('3', '6', '2beta', '4'))
|
||||||
def test_numreduct(self, vers):
|
def test_numreduct(self, vers):
|
||||||
ret = common.GlusterManager.numreduct(vers)
|
ret = common.numreduct(vers)
|
||||||
self.assertEqual((3, 6), ret)
|
self.assertEqual((3, 6), ret)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue