#!/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 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=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) LOG = logging.getLogger('cfntools') log_file_name = "/var/log/cfn-get-metadata.log" file_handler = logging.FileHandler(log_file_name) file_handler.setFormatter(logging.Formatter(log_format)) LOG.addHandler(file_handler) metadata = cfn_helper.Metadata(args.stack_name, args.logical_resource_id, access_key=args.access_key, secret_key=args.secret_key, region=args.region, credentials_file=args.credential_file) metadata.retrieve() LOG.debug(str(metadata)) metadata.display(args.key)