]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Add cfn-get-metadata make all cfn tools more consistent
authorAngus Salkeld <asalkeld@redhat.com>
Fri, 27 Apr 2012 03:02:58 +0000 (13:02 +1000)
committerAngus Salkeld <asalkeld@redhat.com>
Fri, 27 Apr 2012 03:15:15 +0000 (13:15 +1000)
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
heat/cfntools/cfn-get-metadata [new file with mode: 0755]
heat/cfntools/cfn-hup
heat/cfntools/cfn-init
heat/cfntools/cfn_helper.py
heat/utils.py

diff --git a/heat/cfntools/cfn-get-metadata b/heat/cfntools/cfn-get-metadata
new file mode 100755 (executable)
index 0000000..9a9468b
--- /dev/null
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+"""
+Implements cfn-get-metadata CloudFormation functionality
+"""
+import argparse
+import io
+import logging
+import os
+import os.path
+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', '--stack',
+        dest="stack_name",
+        help="A Heat stack name",
+        required=False)
+parser.add_argument('-r', '--resource',
+        dest="logical_resource_id",
+        help="A Heat logical resource ID",
+        required=False)
+parser.add_argument('--access-key',
+        dest="access_key",
+        help="A Keystone access key",
+        required=False)
+parser.add_argument('--secret-key',
+        dest="secret_key",
+        help="A Keystone secret key",
+        required=False)
+parser.add_argument('--region',
+        dest="region",
+        help="Openstack region",
+        required=False)
+parser.add_argument('--credential-file',
+        dest="credential_file",
+        help="credential-file",
+        required=False)
+parser.add_argument('-u', '--url',
+        dest="url",
+        help="service url",
+        required=False)
+parser.add_argument('-k', '--key',
+        dest="key",
+        help="key",
+        required=False)
+args = parser.parse_args()
+
+log_format = '%(levelname)s [%(asctime)s] %(message)s'
+logging.basicConfig(format=log_format, level=logging.DEBUG)
+
+logger = logging.getLogger('cfn-get-metadata')
+log_file_name = "/var/log/cfn-get-metadata.log"
+file_handler = logging.FileHandler(log_file_name)
+file_handler.setFormatter(logging.Formatter(log_format))
+logger.addHandler(file_handler)
+
+metadata = Metadata(args.stack_name,
+                    args.logical_resource_id,
+                    access_key=args.access_key,
+                    secret_key=args.secret_key,
+                    region=args.region)
+metadata.retrieve()
+print str(metadata)
index 1291e67bde6c466ae65c101392749a17ff0754de..d4ea2897b464a5c829c9f798f9400a06c41ee75d 100755 (executable)
@@ -47,20 +47,19 @@ parser.add_argument('-v', '--verbose',
         help="Verbose logging",
         required=False)
 args = parser.parse_args()
-# FIXME: implement real arg
 
-logger = logging.getLogger('cfn-hup')
-log_file_name = "/var/log/cfn-hup.log"
 log_format = '%(levelname)s [%(asctime)s] %(message)s'
-file_handler = logging.FileHandler(log_file_name)
-file_handler.setFormatter(logging.Formatter(log_format))
-logging.getLogger().addHandler(file_handler)
-
 if args.verbose:
     logging.basicConfig(format=log_format, level=logging.DEBUG)
 else:
     logging.basicConfig(format=log_format, level=logging.INFO)
 
+logger = logging.getLogger('cfn-hup')
+log_file_name = "/var/log/cfn-hup.log"
+file_handler = logging.FileHandler(log_file_name)
+file_handler.setFormatter(logging.Formatter(log_format))
+logger.addHandler(file_handler)
+
 main_conf_path = '/etc/cfn/cfn-hup.conf'
 try:
     main_config_file = open(main_conf_path)
index 6eb9715b00a9f5f3a878a84b693847b81cfdf6cf..9008170ac7ab5cadd3568f0c9442426867493b63 100755 (executable)
 
 """
 Implements cfn-init CloudFormation functionality
-
-Resource metadata currently implemented:
-    * config/packages
-    * config/services
-
-Not implemented yet:
-    * config sets
-    * config/sources
-    * config/commands
-    * config/files
-    * config/users
-    * config/groups
-    * command line args
-      - placeholders are ignored
 """
 
 import argparse
@@ -42,14 +28,6 @@ if os.path.exists('/opt/aws/bin'):
 else:
     from heat.cfntools.cfn_helper import *
 
-logger = logging.getLogger('cfn-init')
-log_file_name = "/var/log/cfn-init.log"
-log_format = '%(levelname)s [%(asctime)s] %(message)s'
-file_handler = logging.FileHandler(log_file_name)
-file_handler.setFormatter(logging.Formatter(log_format))
-logging.getLogger().addHandler(file_handler)
-logging.basicConfig(format=log_format, level=logging.DEBUG)
-
 description = " "
 parser = argparse.ArgumentParser(description=description)
 parser.add_argument('-s', '--stack',
@@ -73,7 +51,15 @@ parser.add_argument('--region',
         help="Openstack region",
         required=False)
 args = parser.parse_args()
-# FIXME: implement real arg
+
+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-init.log"
+file_handler = logging.FileHandler(log_file_name)
+file_handler.setFormatter(logging.Formatter(log_format))
+logger.addHandler(file_handler)
 
 metadata = Metadata(args.stack_name,
                     args.logical_resource_id,
index 637cdab3e76e80cb4e779cc37fb6b1f9f7efd664..4d69dbd8c677aa45902b672b546770e84bdb4707 100644 (file)
@@ -681,6 +681,9 @@ class Metadata(object):
         else:
             self._metadata = self._data
 
+    def __str__(self):
+        return self._metadata
+
     def _is_valid_metadata(self):
         """
         Should find the AWS::CloudFormation::Init json key
index df4756fe4e768825adc3126a4f47ed7a4d7d57b9..5d7e1532dbec2abc7bf2f8510858e18135493d59 100644 (file)
@@ -137,7 +137,9 @@ def jeos_create(options, arguments):
     # and injecting them into the TDL at the appropriate place
     if instance_type == 'cfntools':
         tdl_xml = libxml2.parseFile(tdl_path)
-        for cfnname in ['cfn-init', 'cfn-hup', 'cfn-signal', 'cfn_helper.py']:
+        cfn_tools = ['cfn-init', 'cfn-hup', 'cfn-signal', \
+                    'cfn-get-metadata', 'cfn_helper.py']
+        for cfnname in cfn_tools:
             f = open('%s/%s' % (cfntools_path, cfnname), 'r')
             cfscript_e64 = base64.b64encode(f.read())
             f.close()