diff options
author | Peter Barabas <peter.barabas@ericsson.com> | 2016-06-16 13:19:43 +0200 |
---|---|---|
committer | Jonas Bjurel <jonas.bjurel@ericsson.com> | 2016-06-16 13:36:29 +0000 |
commit | b89bb115265ecda35dac2f9d4356bfbf0368faed (patch) | |
tree | 913d8a4b6b3fb525348436089bd6a239e32230ed /deploy/common.py | |
parent | 294150c7f9e36477ff0a25f947fb2c8002999a3b (diff) |
Add command line argument masking for exec_cmd
exec_cmd() now takes 2 additional optional arguments: mask_args and
mask_str. The former expects an array of positions to mask, the latter
expects a string to be used as mask.
Change-Id: I445141a68929a0d2837e7692ce8b4d071154cfa7
Signed-off-by: Peter Barabas <peter.barabas@ericsson.com>
Diffstat (limited to 'deploy/common.py')
-rw-r--r-- | deploy/common.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/deploy/common.py b/deploy/common.py index 9c0f8abd1..9654b3771 100644 --- a/deploy/common.py +++ b/deploy/common.py @@ -1,6 +1,7 @@ ############################################################################### # Copyright (c) 2015 Ericsson AB and others. # szilard.cserey@ericsson.com +# peter.barabas@ericsson.com # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at @@ -38,7 +39,21 @@ out_handler.setFormatter(formatter) LOG.addHandler(out_handler) os.chmod(LOGFILE, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO) -def exec_cmd(cmd, check=True, attempts=1, delay=5, verbose=False): + +def mask_arguments(cmd, mask_args, mask_str): + cmd_line = cmd.split() + for pos in mask_args: + # Don't mask the actual command; also check if we don't reference + # beyond bounds + if pos == 0 or pos >= len(cmd_line): + continue + cmd_line[pos] = mask_str + return ' '.join(cmd_line) + + +def exec_cmd(cmd, check=True, attempts=1, delay=5, verbose=False, mask_args=[], mask_str='*****'): + masked_cmd = mask_arguments(cmd, mask_args, mask_str) + # a negative value means forever while attempts != 0: attempts = attempts - 1 @@ -52,18 +67,18 @@ def exec_cmd(cmd, check=True, attempts=1, delay=5, verbose=False): break time.sleep(delay) if verbose: - log('%d attempts left: %s' % (attempts, cmd)) + log('%d attempts left: %s' % (attempts, masked_cmd)) response = response.strip() if check: if return_code > 0: stderr = stderr.strip() - print "Failed command: " + str(cmd) + print "Failed command: " + str(masked_cmd) print "Command returned response: " + str(stderr) print "Command return code: " + str(return_code) raise Exception(stderr) else: - print "Command: " + str(cmd) + print "Command: " + str(masked_cmd) print str(response) return response return response, return_code |