#!/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=True) parser.add_argument('-r', '--resource', dest="logical_resource_id", help="A Heat logical resource ID", required=True) 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() if not args.stack_name: print 'The Stack name must not be empty.' exit(1) if not args.logical_resource_id: print 'The Resource ID must not be empty' exit(1) 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)