diff options
author | Arthy Loganathan <aloganat@redhat.com> | 2016-05-24 15:23:43 +0530 |
---|---|---|
committer | M S Vishwanath Bhat <msvbhat@gmail.com> | 2016-06-02 01:39:53 -0700 |
commit | 851a58733fe9f78b03819080e4a6883c69d41032 (patch) | |
tree | b2c4c7107f91dec48278447de1407d864c2708e4 | |
parent | 3ae22b61f9aa01f0a97f8f1b3ef75add74c02f7d (diff) |
Added timeout value to wait for rebalance to complete and removed older rebalance library file
Change-Id: I89e2e436ec9306a80a87faab6d6e53f547ce4e42
BUG: 1339166
Signed-off-by: Arthy Loganathan <aloganat@redhat.com>
Reviewed-on: http://review.gluster.org/14515
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: M S Vishwanath Bhat <msvbhat@gmail.com>
-rw-r--r-- | tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance.py | 121 | ||||
-rw-r--r-- | tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance_ops.py | 8 |
2 files changed, 5 insertions, 124 deletions
diff --git a/tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance.py b/tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance.py deleted file mode 100644 index 721e1a907dc..00000000000 --- a/tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance.py +++ /dev/null @@ -1,121 +0,0 @@ -# This file is part of DiSTAF -# Copyright (C) 2015-2016 Red Hat, Inc. <http://www.redhat.com> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - -import re -import time -from distaf.util import tc - -""" - Libraries containing gluster rebalance operations -""" - -def get_rebal_nodes(server): - ''' - This function finds out the number of rebalance nodes from - gluster v info command - - Returns the number of nodes participating in rebalance process - ''' - val = tc.run(server, \ -"gluster v info | grep 'Brick[0-9]' | cut -d ':' -f 2 | sed 's/\ //'") - nlist = val[1].rstrip().split('\n') - nnodes = list(set(nlist)) - return len(nnodes) - -def get_rebal_dict(status): - ''' - This function returns the rebalance status info in the form of dictionary - ''' - _list = status.split('\n') - rebal_dict = {} - for _item in _list: - _match = re.search('.*?(\S+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\w+\s*\w+)\s+(\S+).*', _item, re.S) - if _match is not None: - rebal_dict[_match.group(1)] = [_match.group(2), _match.group(3), \ - _match.group(4), _match.group(5), _match.group(6), \ - _match.group(7),_match.group(8)] - return rebal_dict - - -def get_rebal_status(volname, server=''): - ''' - This function gives rebalance status - Valid states are started/failed/in progress/completed - if the server pararmeter is empty it takes node info from config file - ''' - if server == "": - server = tc.servers[0] - status = tc.run(server, "gluster v rebalance %s status" %volname) - if status[0] != 0: - if "not started" in status[2]: - tc.logger.error("Rebalance has not started") - return ("not started", " ") - else: - tc.logger.error("error") - return ("error", " ") - else: - rebal_dict = get_rebal_dict(status[1]) - if "failed" in status[1]: - tc.logger.error("Rebalance status command failed") - return ("failed", rebal_dict) - elif "in progress" in status[1]: - tc.logger.info("Rebalance is in progress") - return ("in progress", rebal_dict) - elif "completed" in status[1]: - counter = status[1].count("completed") - nnodes = get_rebal_nodes(server) - if counter == nnodes: - tc.logger.info("Rebalance is completed") - return ("completed", rebal_dict) - else: - tc.logger.error("Rebalacne has not completed on all nodes") - return ("invalid status", rebal_dict) - -def wait_rebal_complete(volname, time_out = 300, server=''): - ''' - This function calls rebalance_status_once function and - waits if the rebalance status is in progress, exists on timeout, - default timeout is 300sec(5 min) - ''' - ret = get_rebal_status(volname, server) - while time_out != 0 and ret[0] == "in progress": - time_out = time_out - 20 - time.sleep(20) - ret = get_rebal_status(volname, server) - return ret - - -def rebal_start(volname, server=''): - """ - Simple interface to start the gluster rebalance - @ pararmeter: - * volname - * server - defaults to tc.servers[0] - @ returns: - True on success - False otherwise - """ - if server == '': - server = tc.servers[0] - ret = tc.run(server, "gluster volume rebalance %s start" % volname) - if ret[0] != 0: - tc.logger.error("rebalance start %s failed" % volname) - return False - else: - tc.logger.debug("rebalance start %s successful" % volname) - return True diff --git a/tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance_ops.py b/tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance_ops.py index 271d4f4001f..2679cc3eac3 100644 --- a/tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance_ops.py +++ b/tests/distaf/distaf_libs/distaflibs-gluster/distaflibs/gluster/rebalance_ops.py @@ -290,7 +290,7 @@ def rebalance_stop_and_get_status(volname, mnode=None): return rebal_status -def wait_for_rebalance_to_complete(volname, mnode=None): +def wait_for_rebalance_to_complete(volname, mnode=None, timeout=300): """Waits for the rebalance to complete Args: @@ -299,6 +299,8 @@ def wait_for_rebalance_to_complete(volname, mnode=None): Kwargs: mnode (str): Node on which command has to be executed. If None, defaults to nodes[0]. + timeout (int): timeout value in seconds to wait for rebalance + to complete Returns: True on success, False otherwise @@ -312,7 +314,7 @@ def wait_for_rebalance_to_complete(volname, mnode=None): count = 0 flag = 0 - while (count < 300): + while (count < timeout): status_info = get_rebalance_status(volname, mnode=mnode) if status_info is None: return False @@ -323,7 +325,7 @@ def wait_for_rebalance_to_complete(volname, mnode=None): break time.sleep(10) - count = count + 5 + count = count + 10 if not flag: tc.logger.error("rebalance is not completed") return False |