#!/usr/bin/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-init CloudFormation functionality """ import argparse import logging from heat_cfntools.cfntools import cfn_helper 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('-c', '--configsets', dest="configsets", help="An optional list of configSets (default: default)", required=False) args = parser.parse_args() log_format = '%(levelname)s [%(asctime)s] %(message)s' log_file_name = "/var/log/cfn-init.log" logging.basicConfig(filename=log_file_name, format=log_format, level=logging.DEBUG) LOG = logging.getLogger('cfntools') metadata = cfn_helper.Metadata(args.stack_name, args.logical_resource_id, access_key=args.access_key, secret_key=args.secret_key, region=args.region, configsets=args.configsets) metadata.retrieve() try: metadata.cfn_init() except Exception as e: LOG.exception("Error processing metadata") exit(1)