diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/lib/oeqa/controllers/masterimage.py | 6 | ||||
-rw-r--r-- | meta/lib/oeqa/utils/__init__.py | 12 | ||||
-rw-r--r-- | meta/lib/oeqa/utils/commands.py | 10 |
3 files changed, 24 insertions, 4 deletions
diff --git a/meta/lib/oeqa/controllers/masterimage.py b/meta/lib/oeqa/controllers/masterimage.py index d151e24bd7..f2585d4860 100644 --- a/meta/lib/oeqa/controllers/masterimage.py +++ b/meta/lib/oeqa/controllers/masterimage.py | |||
@@ -20,6 +20,7 @@ import subprocess | |||
20 | import oeqa.targetcontrol | 20 | import oeqa.targetcontrol |
21 | import oeqa.utils.sshcontrol as sshcontrol | 21 | import oeqa.utils.sshcontrol as sshcontrol |
22 | import oeqa.utils.commands as commands | 22 | import oeqa.utils.commands as commands |
23 | from oeqa.utils import CommandError | ||
23 | 24 | ||
24 | from abc import ABCMeta, abstractmethod | 25 | from abc import ABCMeta, abstractmethod |
25 | 26 | ||
@@ -94,7 +95,10 @@ class MasterImageHardwareTarget(oeqa.targetcontrol.BaseTarget): | |||
94 | def power_ctl(self, msg): | 95 | def power_ctl(self, msg): |
95 | if self.powercontrol_cmd: | 96 | if self.powercontrol_cmd: |
96 | cmd = "%s %s" % (self.powercontrol_cmd, msg) | 97 | cmd = "%s %s" % (self.powercontrol_cmd, msg) |
97 | commands.runCmd(cmd, preexec_fn=os.setsid, env=self.origenv) | 98 | try: |
99 | commands.runCmd(cmd, assert_error=False, preexec_fn=os.setsid, env=self.origenv) | ||
100 | except CommandError as e: | ||
101 | bb.fatal(str(e)) | ||
98 | 102 | ||
99 | def power_cycle(self, conn): | 103 | def power_cycle(self, conn): |
100 | if self.powercontrol_cmd: | 104 | if self.powercontrol_cmd: |
diff --git a/meta/lib/oeqa/utils/__init__.py b/meta/lib/oeqa/utils/__init__.py index 8eda92763c..2260046026 100644 --- a/meta/lib/oeqa/utils/__init__.py +++ b/meta/lib/oeqa/utils/__init__.py | |||
@@ -1,3 +1,15 @@ | |||
1 | # Enable other layers to have modules in the same named directory | 1 | # Enable other layers to have modules in the same named directory |
2 | from pkgutil import extend_path | 2 | from pkgutil import extend_path |
3 | __path__ = extend_path(__path__, __name__) | 3 | __path__ = extend_path(__path__, __name__) |
4 | |||
5 | |||
6 | # Borrowed from CalledProcessError | ||
7 | |||
8 | class CommandError(Exception): | ||
9 | def __init__(self, retcode, cmd, output = None): | ||
10 | self.retcode = retcode | ||
11 | self.cmd = cmd | ||
12 | self.output = output | ||
13 | def __str__(self): | ||
14 | return "Command '%s' returned non-zero exit status %d with output: %s" % (self.cmd, self.retcode, self.output) | ||
15 | |||
diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py index 9b42620610..7637b9def8 100644 --- a/meta/lib/oeqa/utils/commands.py +++ b/meta/lib/oeqa/utils/commands.py | |||
@@ -1,4 +1,4 @@ | |||
1 | # Copyright (c) 2013 Intel Corporation | 1 | # Copyright (c) 2013-2014 Intel Corporation |
2 | # | 2 | # |
3 | # Released under the MIT license (see COPYING.MIT) | 3 | # Released under the MIT license (see COPYING.MIT) |
4 | 4 | ||
@@ -14,6 +14,7 @@ import signal | |||
14 | import subprocess | 14 | import subprocess |
15 | import threading | 15 | import threading |
16 | import logging | 16 | import logging |
17 | from oeqa.utils import CommandError | ||
17 | 18 | ||
18 | class Command(object): | 19 | class Command(object): |
19 | def __init__(self, command, bg=False, timeout=None, data=None, **options): | 20 | def __init__(self, command, bg=False, timeout=None, data=None, **options): |
@@ -84,8 +85,8 @@ class Command(object): | |||
84 | class Result(object): | 85 | class Result(object): |
85 | pass | 86 | pass |
86 | 87 | ||
87 | def runCmd(command, ignore_status=False, timeout=None, **options): | ||
88 | 88 | ||
89 | def runCmd(command, ignore_status=False, timeout=None, assert_error=True, **options): | ||
89 | result = Result() | 90 | result = Result() |
90 | 91 | ||
91 | cmd = Command(command, timeout=timeout, **options) | 92 | cmd = Command(command, timeout=timeout, **options) |
@@ -97,7 +98,10 @@ def runCmd(command, ignore_status=False, timeout=None, **options): | |||
97 | result.pid = cmd.process.pid | 98 | result.pid = cmd.process.pid |
98 | 99 | ||
99 | if result.status and not ignore_status: | 100 | if result.status and not ignore_status: |
100 | raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, result.output)) | 101 | if assert_error: |
102 | raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, result.output)) | ||
103 | else: | ||
104 | raise CommandError(result.status, command, result.output) | ||
101 | 105 | ||
102 | return result | 106 | return result |
103 | 107 | ||