+++ /dev/null
-# Copyright 2019 Whitestack, LLC
-#
-# 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.
-#
-# For those usages not covered by the Apache License, Version 2.0 please
-# contact: esousa@whitestack.com or glavado@whitestack.com
-##
-
-__version__ = '1.0.0'
-
-import argparse
-import logging
-import sys
-
-from datetime import datetime
-
-from .generators.ansible_generator import AnsibleGenerator
-
-
-def configure_logger(args):
- global logger
- logger = logging.getLogger()
-
- if args.verbose:
- logger.setLevel(logging.DEBUG)
- else:
- logger.setLevel(logging.INFO)
-
- handler = logging.StreamHandler(sys.stdout)
-
- if args.verbose:
- handler.setLevel(logging.DEBUG)
- else:
- handler.setLevel(logging.INFO)
-
- formatter = logging.Formatter('[%(levelname)s] %(message)s')
- handler.setFormatter(formatter)
- logger.addHandler(handler)
-
-
-def verify_environment(args):
- pass
-
-
-def input_processing():
- parser = argparse.ArgumentParser(description='Charm generator for OSM VNFs')
-
- # Setting logger from INFO to DEBUG
- parser.add_argument('-v', '--verbose', required=False, action='store_true',
- help='increase output verbosity')
-
- # Backend selection
- backend_parser = parser.add_mutually_exclusive_group(required=True)
-
- backend_parser.add_argument('--ansible', action='store_true',
- help='generate an Ansible charm')
- backend_parser.add_argument('--http', action='store_true',
- help='generate a HTTP charm')
- backend_parser.add_argument('--sol002', action='store_true',
- help='generate a SOL002 charm')
- backend_parser.add_argument('--scripts', action='store_true',
- help='generate a Scripts charm')
-
- # Metadata inputs
- metadata_parser = parser.add_argument_group('metadata')
-
- metadata_parser.add_argument('--summary', required=False, action='store',
- help='summary to be included in the metadata.yaml')
- metadata_parser.add_argument('--maintainer', required=False, action='store',
- help='maintainer information to be included in the metadata.yaml')
- metadata_parser.add_argument('--description', required=False, action='store',
- help='description to be included in the metadata.yaml')
-
- # License header inputs
- license_header_group = parser.add_argument_group('license_header')
-
- license_header_group.add_argument('--company', required=False, action='store',
- help='company name to be included in the license headers')
- license_header_group.add_argument('--email', required=False, action='store',
- help='email to be included in the license headers')
-
- return parser.parse_args()
-
-
-def process_args(args):
- # Metadata information for metadata.yaml
- metadata = {}
-
- if args.summary:
- metadata['summary'] = args.summary
- if args.maintainer:
- metadata['maintainer'] = args.maintainer
- if args.description:
- metadata['description'] = args.description
-
- # Information for license headers
- license = {
- 'year': datetime.now().year
- }
-
- if args.company:
- license['company'] = args.company
- if args.email:
- license['email'] = args.email
-
- # Options to configure the backends
- options = {
- 'backend': None
- }
-
- if args.ansible:
- options['backend'] = 'ansible'
- elif args.http:
- options['backend'] = 'http'
- elif args.sol002:
- options['backend'] = 'sol002'
- elif args.scripts:
- options['backend'] = 'scripts'
-
- return metadata, license, options
-
-
-def main():
- # getting the input from the user
- args = input_processing()
-
- # configure the logger
- configure_logger(args)
-
- logger.info('Starting generation process...')
-
- # verify if the environment is correct and the args are valid
- verify_environment(args)
-
- # process data to input in generator
- metadata, license, options = process_args(args)
-
- logger.debug('Metadata: %s', metadata)
- logger.debug('License: %s', license)
- logger.debug('Options: %s', options)
-
- if options['backend'] == 'ansible':
- generator = AnsibleGenerator(metadata=metadata, license=license, options=options)
- elif options['backend'] == 'http':
- logger.error('HTTP backend not yet available. Available backends are: ansible')
- sys.exit(-1)
- elif options['backend'] == 'sol002':
- logger.error('SOL002 backend not yet available. Available backends are: ansible')
- sys.exit(-1)
- elif options['backend'] == 'scripts':
- logger.error('Scripts backend not yet available. Available backends are: ansible')
- sys.exit(-1)
- else:
- logger.error('Undefined backend for generator. Available backends are: ansible')
- sys.exit(-1)
-
- generator.generate()
-
- logger.info('Generation process complete.')