diff options
author | Sri Vignesh <sselvan@redhat.com> | 2019-05-02 09:07:55 +0530 |
---|---|---|
committer | vamahaja <vamahaja@redhat.com> | 2019-08-12 16:12:49 +0530 |
commit | cb815f13c7eab15e89a01e835337a0a5745bf118 (patch) | |
tree | 801c82de10bf5bc7afa9b729922d7cc1a6bad53a /openshift-storage-libs | |
parent | aed2e7e9543969c604a61af020c8a5fbaf38cd04 (diff) |
Move "node reboot" logic from test case to library
Separate node reboot functionality from single test case to re-use
it at other places. Update test case accordingly.
Change-Id: Ib9a7f15d29237e4f21aafc408c074e799e706740
Signed-off-by: Sri Vignesh <sselvan@redhat.com>
Signed-off-by: vamahaja <vamahaja@redhat.com>
Diffstat (limited to 'openshift-storage-libs')
-rw-r--r-- | openshift-storage-libs/openshiftstoragelibs/node_ops.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/openshift-storage-libs/openshiftstoragelibs/node_ops.py b/openshift-storage-libs/openshiftstoragelibs/node_ops.py new file mode 100644 index 00000000..fb4aaa26 --- /dev/null +++ b/openshift-storage-libs/openshiftstoragelibs/node_ops.py @@ -0,0 +1,47 @@ +import time + +from glusto.core import Glusto as g + +from openshiftstoragelibs import exceptions +from openshiftstoragelibs import waiter + + +def node_reboot_by_command(node, timeout=600, wait_step=10): + """Reboot node and wait to start for given timeout. + + Args: + node (str) : Node which needs to be rebooted. + timeout (int) : Seconds to wait before node to be started. + wait_step (int): Interval in seconds to wait before checking + status of node again. + """ + cmd = "sleep 3; /sbin/shutdown -r now 'Reboot triggered by Glusto'" + ret, out, err = g.run(node, cmd) + if ret != 255: + err_msg = "failed to reboot host '%s' error %s" % (node, err) + g.log.error(err_msg) + raise AssertionError(err_msg) + + try: + g.ssh_close_connection(node) + except Exception as e: + g.log.error("failed to close connection with host %s " + "with error: %s" % (node, e)) + raise + + # added sleep as node will restart after 3 sec + time.sleep(3) + + for w in waiter.Waiter(timeout=timeout, interval=wait_step): + try: + if g.rpyc_get_connection(node, user="root"): + g.rpyc_close_connection(node, user="root") + return + except Exception as err: + g.log.info("exception while getting connection: '%s'" % err) + + if w.expired: + error_msg = ("exceeded timeout %s sec, node '%s' is " + "not reachable" % (timeout, node)) + g.log.error(error_msg) + raise exceptions.ExecutionError(error_msg) |