aboutsummaryrefslogtreecommitdiffstats
path: root/yardstick/benchmark/scenarios/availability/operation/operation_general.py
diff options
context:
space:
mode:
authorRoss Brattain <ross.b.brattain@intel.com>2016-11-30 19:56:38 -0800
committerRoss Brattain <ross.b.brattain@intel.com>2016-12-05 07:41:57 -0500
commit0576844bb2cdae6b479504ec1532a5dc56c0b633 (patch)
tree8c50f7e7f9b6c37d60bdf907bb0a0e7f1c3143d1 /yardstick/benchmark/scenarios/availability/operation/operation_general.py
parentcefc4e95e9b410c12faea47994d5a2162fa90870 (diff)
use context manager for stdin files and use _put_file_shell
requires https://gerrit.opnfv.org/gerrit/#/c/25183/ use new ssh method _put_file_shell to upload files. We have to use _put_file_shell because we rely on ~/ path expansions. Eventually we should move to remote absolute paths so we can use sftp upload. For ssh.execute() replace open() with context manager context managers were invented partly to control freeing resources. Opening files without closing them will leak file descriptors. The old standard method for closing files: f = open('data.txt') try: data = f.read() finally: f.close() was replaced with a context manager with open('data.txt') as f: data = f.read() Reference: Raymond Hettinger's Pycon 2013 presentation: https://speakerdeck.com/pyconslides/transforming-code-into-beautiful-idiomatic-python-by-raymond-hettinger-1 Video: https://youtu.be/OSGv2VnC0go?t=2522 Always use context managers for files Update: rebased now that _put_file_shell was merged Change-Id: Iabfc0e43aa3b7766d7c658115e13d21c31efb2a9 Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
Diffstat (limited to 'yardstick/benchmark/scenarios/availability/operation/operation_general.py')
-rw-r--r--yardstick/benchmark/scenarios/availability/operation/operation_general.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/yardstick/benchmark/scenarios/availability/operation/operation_general.py b/yardstick/benchmark/scenarios/availability/operation/operation_general.py
index b3a20c344..c82df836d 100644
--- a/yardstick/benchmark/scenarios/availability/operation/operation_general.py
+++ b/yardstick/benchmark/scenarios/availability/operation/operation_general.py
@@ -55,13 +55,15 @@ class GeneralOperaion(BaseOperation):
def run(self):
if "action_parameter" in self._config:
- exit_status, stdout, stderr = self.connection.execute(
- self.action_param,
- stdin=open(self.action_script, "r"))
+ with open(self.action_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ self.action_param,
+ stdin=stdin_file)
else:
- exit_status, stdout, stderr = self.connection.execute(
- "/bin/sh -s ",
- stdin=open(self.action_script, "r"))
+ with open(self.action_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ "/bin/sh -s ",
+ stdin=stdin_file)
if exit_status == 0:
LOG.debug("success,the operation's output is: {0}".format(stdout))
@@ -72,10 +74,12 @@ class GeneralOperaion(BaseOperation):
def rollback(self):
if "rollback_parameter" in self._config:
- exit_status, stdout, stderr = self.connection.execute(
- self.rollback_param,
- stdin=open(self.rollback_script, "r"))
+ with open(self.rollback_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ self.rollback_param,
+ stdin=stdin_file)
else:
- exit_status, stdout, stderr = self.connection.execute(
- "/bin/sh -s ",
- stdin=open(self.rollback_script, "r"))
+ with open(self.rollback_script, "r") as stdin_file:
+ exit_status, stdout, stderr = self.connection.execute(
+ "/bin/sh -s ",
+ stdin=stdin_file)