aboutsummaryrefslogtreecommitdiff
path: root/kolla
diff options
context:
space:
mode:
authorJeff Peeler <jpeeler@redhat.com>2016-05-06 17:37:42 -0400
committerJeff Peeler <jpeeler@redhat.com>2016-05-06 17:37:42 -0400
commit75492cf82b4692eca5939f22c8db1fb89d278df7 (patch)
tree49cb57a3d33e1fc931ec5a7a0ef37a2f88ca597a /kolla
parent696f0b9a06e415d8ef320bd8279c4911edbaca7f (diff)
downloadkolla-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-xkolla/cmd/build.py15
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()