diff options
| author | Jeff Peeler <jpeeler@redhat.com> | 2016-05-06 17:37:42 -0400 |
|---|---|---|
| committer | Jeff Peeler <jpeeler@redhat.com> | 2016-05-06 17:37:42 -0400 |
| commit | 75492cf82b4692eca5939f22c8db1fb89d278df7 (patch) | |
| tree | 49cb57a3d33e1fc931ec5a7a0ef37a2f88ca597a /kolla | |
| parent | 696f0b9a06e415d8ef320bd8279c4911edbaca7f (diff) | |
| download | kolla-75492cf82b4692eca5939f22c8db1fb89d278df7.tar.gz kolla-75492cf82b4692eca5939f22c8db1fb89d278df7.zip | |
Implement non-default signal handler for SIGINT
Pressing Ctrl-C will stop a build, but does not clean up the /tmp
directory of dockerfiles. Implement a signal handler such that clean up
does occur.
Python apparently ignores signals while calling join on a queue, so
that's why the small modification was needed there.
Change-Id: I43faf67726c154b6640d3596aea61ffc59871999
Closes-Bug: #1579242
Diffstat (limited to 'kolla')
| -rwxr-xr-x | kolla/cmd/build.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/kolla/cmd/build.py b/kolla/cmd/build.py index b305ffd7b..d80375623 100755 --- a/kolla/cmd/build.py +++ b/kolla/cmd/build.py @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# TODO(jpeeler): Add clean up handler for SIGINT from __future__ import print_function import datetime @@ -55,7 +54,13 @@ logging.basicConfig() LOG = logging.getLogger(__name__) LOG.setLevel(logging.INFO) -signal.signal(signal.SIGINT, signal.SIG_DFL) + +def handle_ctrlc(single, frame): + kollaobj = frame.f_locals['kolla'] + kollaobj.cleanup() + sys.exit(1) + +signal.signal(signal.SIGINT, handle_ctrlc) class KollaDirNotFoundException(Exception): @@ -773,9 +778,9 @@ def main(): push_thread = PushThread(conf, push_queue) push_thread.start() - # block until queue is empty - queue.join() - push_queue.join() + # sleep until queue is empty + while queue.unfinished_tasks or push_queue.unfinished_tasks: + time.sleep(3) kolla.summary() kolla.cleanup() |
