From 86909785c671d1fbd0addde97df9704b8eeb1320 Mon Sep 17 00:00:00 2001 From: Akarsha Rai Date: Mon, 17 Sep 2018 13:03:24 +0530 Subject: Function to injects the msg to all log files under all dirs specified on nodes Change-Id: Iece112c7d877840bc8cee4faa7e908e50cc548a2 Signed-off-by: Akarsha Rai --- .../glustolibs/gluster/lib_utils.py | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 glustolibs-gluster-gd2/glustolibs/gluster/lib_utils.py (limited to 'glustolibs-gluster-gd2/glustolibs/gluster/lib_utils.py') diff --git a/glustolibs-gluster-gd2/glustolibs/gluster/lib_utils.py b/glustolibs-gluster-gd2/glustolibs/gluster/lib_utils.py new file mode 100644 index 0000000..3eb16e2 --- /dev/null +++ b/glustolibs-gluster-gd2/glustolibs/gluster/lib_utils.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python +# Copyright (C) 2018 Red Hat, Inc. +# +# 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. + +""" + Description: Helper library for gluster modules. +""" + +from glusto.core import Glusto as g + + +def inject_msg_in_logs(nodes, log_msg, list_of_dirs=None, list_of_files=None): + """Injects the message to all log files under all dirs specified on nodes. + Args: + nodes (str|list): A server|List of nodes on which message has to be + injected to logs + log_msg (str): Message to be injected + list_of_dirs (list): List of dirs to inject message on log files. + list_of_files (list): List of files to inject message. + Returns: + bool: True if successfully injected msg on all log files. + """ + if isinstance(nodes, str): + nodes = [nodes] + + if list_of_dirs is None: + list_of_dirs = "" + + if isinstance(list_of_dirs, list): + list_of_dirs = ' '.join(list_of_dirs) + + if list_of_files is None: + list_of_files = '' + + if isinstance(list_of_files, list): + list_of_files = ' '.join(list_of_files) + + inject_msg_on_dirs = "" + inject_msg_on_files = "" + if list_of_dirs: + inject_msg_on_dirs = ( + "for dir in %s ; do " + "for file in `find ${dir} -type f -name '*.log'`; do " + "echo \"%s\" >> ${file} ; done ;" + "done; " % (list_of_dirs, log_msg)) + if list_of_files: + inject_msg_on_files = ("for file in %s ; do " + "echo \"%s\" >> ${file} ; done; " % + (list_of_files, log_msg)) + + cmd = inject_msg_on_dirs + inject_msg_on_files + + results = g.run_parallel(nodes, cmd) + + _rc = True + # Check for return status + for host in results: + ret, _, _ = results[host] + if ret != 0: + g.log.error("Failed to inject log message '%s' in dirs '%s', " + "in files '%s', on node'%s'", + log_msg, list_of_dirs, list_of_files, host) + _rc = False + return _rc -- cgit