]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Add implementation to cfn-signal
authorAngus Salkeld <asalkeld@redhat.com>
Mon, 7 May 2012 08:29:17 +0000 (18:29 +1000)
committerAngus Salkeld <asalkeld@redhat.com>
Mon, 7 May 2012 08:29:17 +0000 (18:29 +1000)
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
heat/cfntools/cfn-signal

index 5f8c1739fb1dfb3992ff15f4452180bf3a700d2e..c3e80ffd5b1b4d8f6a30b6b980b57cd889144a2c 100755 (executable)
@@ -20,6 +20,14 @@ import logging
 import os
 import sys
 
+
+if os.path.exists('/opt/aws/bin'):
+    sys.path.insert(0, '/opt/aws/bin')
+    from cfn_helper import *
+else:
+    from heat.cfntools.cfn_helper import *
+
+
 description = " "
 parser = argparse.ArgumentParser(description=description)
 parser.add_argument('-s', '--success',
@@ -30,18 +38,22 @@ parser.add_argument('-s', '--success',
 parser.add_argument('-r', '--reason',
         dest="reason",
         help="The reason for the failure",
+        default="Configuration Complete",
         required=False)
 parser.add_argument('--data',
         dest="data",
+        default="Application has completed configuration.",
         help="The data to send",
         required=False)
 parser.add_argument('-i', '--id',
         dest="unique_id",
         help="the unique id to send back to the WaitCondition",
+        default='00000',
         required=False)
 parser.add_argument('-e', '--exit',
         dest="exit_code",
         help="The exit code from a procecc to interpret",
+        default=None,
         required=False)
 parser.add_argument('url',
                    help='the url to post to')
@@ -51,10 +63,28 @@ log_format = '%(levelname)s [%(asctime)s] %(message)s'
 logging.basicConfig(format=log_format, level=logging.DEBUG)
 
 logger = logging.getLogger('cfn-init')
-#log_file_name = "/var/log/cfn-signal.log"
-#file_handler = logging.FileHandler(log_file_name)
-#file_handler.setFormatter(logging.Formatter(log_format))
-#logger.addHandler(file_handler)
+log_file_name = "/var/log/cfn-signal.log"
+file_handler = logging.FileHandler(log_file_name)
+file_handler.setFormatter(logging.Formatter(log_format))
+logger.addHandler(file_handler)
+
+logger.debug('cfn-signal called %s ' % (str(args)))
+
+status = 'FAILURE'
+if args.exit_code:
+    # "exit_code" takes presedence over "success".
+    if args.exit_code == '0':
+        status = 'SUCCESS'
+else:
+    if args.success == 'true':
+        status = 'SUCCESS'
 
-logger.info('cfn-signal called %s ' % (str(args)))
+body = {
+    "Status" : status,
+    "Reason" : args.reason,
+    "UniqueId" : args.unique_id,
+    "Data" : args.data
+}
 
+cmd_str = "curl -X PUT -H 'Content-Type:' --data-binary '%s' %s" % (json.dumps(body), args.url)
+CommandRunner(cmd_str).run()