summaryrefslogtreecommitdiffstats
path: root/tools/bcfg2-profile-templates.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/bcfg2-profile-templates.py')
-rwxr-xr-xtools/bcfg2-profile-templates.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/tools/bcfg2-profile-templates.py b/tools/bcfg2-profile-templates.py
index 93314f1e3..f4069e454 100755
--- a/tools/bcfg2-profile-templates.py
+++ b/tools/bcfg2-profile-templates.py
@@ -5,6 +5,7 @@
import sys
import time
import math
+import signal
import logging
import operator
import Bcfg2.Logger
@@ -17,6 +18,19 @@ def stdev(nums):
return math.sqrt(sum((n - mean)**2 for n in nums) / float(len(nums)))
+def get_sigint_handler(core):
+ """ Get a function that handles SIGINT/Ctrl-C by shutting down the
+ core and exiting properly."""
+
+ def hdlr(sig, frame): # pylint: disable=W0613
+ """ Handle SIGINT/Ctrl-C by shutting down the core and exiting
+ properly. """
+ core.shutdown()
+ os._exit(1) # pylint: disable=W0212
+
+ return hdlr
+
+
def main():
optinfo = dict(
client=Bcfg2.Options.Option("Benchmark templates for one client",
@@ -49,6 +63,7 @@ def main():
logger = logging.getLogger(sys.argv[0])
core = Bcfg2.Server.Core.BaseCore(setup)
+ signal.signal(signal.SIGINT, get_sigint_handler(core))
logger.info("Bcfg2 server core loaded")
core.load_plugins()
logger.debug("Plugins loaded")