示例#1
0
def main():
    args = PackagerArgParser(__doc__, VERSION, sys.argv[1:])
    args.parse()

    # Define except hook to redirect all erros to file
    sys.excepthook = lambda tp, v, tb: log.error('ERROR', exc_info=(tp, v, tb))

    log.info('Received CLI: %s' % " ".join(sys.argv))
    log.info('')
    log.info('Arguments from config file')
    log.info(args.cliargs['config'])
    args.banner(args.get_config_file_args())
    log.info('Working with Argument Set: ')
    args.banner(args.cliargs)
    log.info('')
    time.sleep(3)
    log.info('')
    start = datetime.datetime.now()

    # Packager
    platform_info = Utils.get_platform_info(args.cliargs['os_version'])
    packager = __import__('%s_packager' % platform_info['default'][0])
    packer = packager.Packager(**args.cliargs)

    # Build
    try:
        packer.ks_build()
    except:
        packer.exec_status = 1
        log.error('** Packager Failed **')
        raise
    else:
        if packer.exec_status != 0:
            sys.exit(packer.exec_status)
    finally:
        log.info('Copying available built ' \
                 'packages to (%s)' %packer.artifacts_dir)
        packer.copy_to_artifacts()
        if packer.exec_status != 0:
            log.info('*' * 78)
            log.info('Packager completed with ERRORs...')
            log.info('Reprinting ALL ERRORS...')
            log.reprint_errors()
            log.error('View detailed logs at (%s)' % args.cliargs['logfile'])
        elif args.cliargs['post_job']:
            log.info('Running Post Job')
            packer.exec_cmd(args.cliargs['post_job'])
        duration = datetime.datetime.now() - start
        log.info('Execution Duration: %s' % str(duration))
    log.info('Packaging Complete!')
def main():
    args = PackagerArgParser(__doc__, VERSION, sys.argv[1:])
    args.parse()

    # Define except hook to redirect all erros to file
    sys.excepthook = lambda tp, v, tb: log.error('ERROR', exc_info=(tp,v,tb))

    log.info('Received CLI: %s' %" ".join(sys.argv))
    log.info('')
    log.info('Arguments from config file')
    log.info(args.cliargs['config'])
    args.banner(args.get_config_file_args())
    log.info('Working with Argument Set: ')
    args.banner(args.cliargs)
    log.info('')
    time.sleep(3)
    log.info('')
    start = datetime.datetime.now()

    # Packager
    platform_info = Utils.get_platform_info(args.cliargs['os_version'])
    packager = __import__('%s_packager' % platform_info['default'][0])
    packer = packager.Packager(**args.cliargs)

    # Build
    try:
        packer.ks_build()
    except:
        packer.exec_status = 1
        log.error('** Packager Failed **')
        raise
    else:
        if packer.exec_status != 0:
            sys.exit(packer.exec_status)
    finally:
        log.info('Copying available built ' \
                 'packages to (%s)' %packer.artifacts_dir)
        packer.copy_to_artifacts()
        if packer.exec_status != 0:
            log.info('*' * 78)
            log.info('Packager completed with ERRORs...')
            log.info('Reprinting ALL ERRORS...')
            log.reprint_errors()
            log.error('View detailed logs at (%s)' % args.cliargs['logfile'])
        elif args.cliargs['post_job']:
            log.info('Running Post Job')
            packer.exec_cmd(args.cliargs['post_job'])
        duration = datetime.datetime.now() - start
        log.info('Execution Duration: %s' %str(duration))
    log.info('Packaging Complete!')
    def define_args(self):
        ''' Define arguments for packager script '''
        cparser = argparse.ArgumentParser(add_help=False)
        cparser.add_argument('--config', '-c',
                             action='store',
                             default=os.path.join(SCRIPTDIR, 'config.cfg'),
                             help='Config File for the Packager')
        file_ns, rargs = cparser.parse_known_args(self.unparsed_args)
        self.cfg_file = file_ns.config

        os_parser = argparse.ArgumentParser(add_help=False)
        platform_info = Utils.get_platform_info()
        os_parser.add_argument('--os-version', '-O',
                             action='store',
                             default=platform_info['formatted'],
                             help='Specify OS Type and Version. \
                                   eg: centos64, ubuntu1204, redhatlinuxenterprise70')
        file_ns, rargs = os_parser.parse_known_args(self.unparsed_args)

        aparser = argparse.ArgumentParser(parents=[cparser, os_parser],
                                          formatter_class=argparse.RawTextHelpFormatter,
                                          description=self.desc)
        aparser.add_argument('--loglevel',
                             action='store',
                             help='set the loglevel for console output (DEBUG, WARN, ERROR)')
        aparser.add_argument('--logfile',
                             action='store',
                             help='logging file for more verbose output')
        aparser.add_argument('--log_config',
                             action='store',
                             help='file for logger config')
        aparser.add_argument('--version', '-v',
                             action='version',
                             version=self.version,
                             help='Print version and exit')
        aparser.add_argument('--build-id', '-i',
                             action='store',
                             default='Random number from 1000-9999',
                             help='Build ID of the new packages')
        aparser.add_argument('--sku',
                             action='store',
                             default='Derived from manifest sku',
                             help='Specify Contrail-SKU version')
        aparser.add_argument('--branch',
                             action='store',
                             default='from sandbox/controller/src/base/version.info',
                             help='Specify GIT branch name')
        aparser.add_argument('-p', '--package-types',
                             action='store',
                             default=None,
                             nargs='+',
                             help='One or List of package types which ' \
                                  'packager has to build\n' \
                                  'Multiple package types can be provided like \n' \
                                  '--package-types <type1> <type2> ... <typeN>')
        aparser.add_argument('--store-dir', '-s',
                             action='store',
                             default='sandbox/build/',
                             help='Directory Location to which new packages be saved')
        aparser.add_argument('--cache-base-dir', '-C',
                             action='store',
                             default='/cs-shared/builder/cache',
                             nargs='+',
                             help='Base directory location where OS and third '\
                                   'party packages are available.\n'\
                                   'packager will check files in '\
                                   '<cache_base_dir>/os-distribution/contrail-sku/. ' \
                                   'eg /cs-shared/builder/cache/ubuntu1204/grizzly/ \n' \
                                   'Multiple cache base dir can be provided like \n'\
                                   '--cache-base-dir <dir1> <dir2> <dir3> ... <dirN>')
        aparser.add_argument('--absolute-package-dir', '-a',
                             action='store',
                             default=None,
                             nargs='+',
                             help='Absolute Directory Location where OS and third '\
                                   'party packages are available\n'\
                                   'Multiple directories can be provided like \n'\
                                   '--absolute-package-dir <dir1> <dir2> <dir3> ... <dirN>')
        aparser.add_argument('--contrail-package-dir', '-P',
                             action='store',
                             default=None,
                             nargs='+',
                             help='Directory Location where pre-maked Contrail packages '\
                                   'are available \n'\
                                   'Multiple directories can be provided like\n'\
                                   '--contrail-package-dir <dir1> <dir2> <dir3> ... <dirN>')
        aparser.add_argument('--base-package-file', '-b',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/base*_packages.cfg',
                             nargs='+',
                             help='Config files specifying base packages info \n'\
                                  'Multiple package configs can be provided like\n'\
                                  '--base-package-file <file1> <file2> ... <fileN> ')
        aparser.add_argument('--depends-package-file', '-d',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/depends*_packages.cfg',
                             nargs='+',
                             help='Config files specifying dependant pacakges info\n'\
                                   'Multiple package files can be provided like \n'\
                                   '-depends-package-file <file1> <file2> <file3> ... <fileN>')
        aparser.add_argument('--contrail-package-file', '-f',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/contrail*_packages.cfg',
                             nargs='+',
                             help='Config files specifying Contrail packages info\n'\
                                  'Multiple package files can be provided like\n'\
                                  '--contrail-package-file <file1> <file2> <file3> ... <fileN>')
        aparser.add_argument('--make-targets', '-t',
                             action='store',
                             default=None,
                             nargs='+',
                             help='List of Contrail make targets to build \n'\
                                  'Multiple make targets can be provided like \n'\
                                  '--make-targets <target1> <target2> ... <targetN>')
        aparser.add_argument('--make-targets-file', '-T',
                             action='store',
                             default=None,
                             help='Line seperated text file containing list of make targets')
        aparser.add_argument('--fail-on-error', '-e',
                             action='store_true',
                             help='Abort Packager from continuing on first instance of failure')
        aparser.add_argument('--copy-use-hard-link', '-l',
                             action='store_true',
                             help='Use hard links instead of cp when duplicating artifacts like .tgz, .deb, and .rpm')
        aparser.add_argument('--post-job', '-j',
                             action='store',
                             default=None,
                             help='Script to execute after Packaging is successfully complete')
        aparser.add_argument('--populate-defaults',
                             action='store_true',
                             help='Populates packager arguments with default values and prints')
        aparser.parse_args(self.unparsed_args)
        self.parser = aparser
    def define_args(self):
        ''' Define arguments for packager script '''
        cparser = argparse.ArgumentParser(add_help=False)
        cparser.add_argument('--config', '-c',
                             action='store',
                             default=os.path.join(SCRIPTDIR, 'config.cfg'),
                             help='Config File for the Packager')
        file_ns, rargs = cparser.parse_known_args(self.unparsed_args)
        self.cfg_file = file_ns.config

        os_parser = argparse.ArgumentParser(add_help=False)
        platform_info = Utils.get_platform_info()
        os_parser.add_argument('--os-version', '-O',
                             action='store',
                             default=platform_info['formatted'],
                             help='Specify OS Type and Version. \
                                   eg: centos64, ubuntu1204, redhatlinuxenterprise70')
        file_ns, rargs = os_parser.parse_known_args(self.unparsed_args)

        aparser = argparse.ArgumentParser(parents=[cparser, os_parser],
                                          formatter_class=argparse.ArgumentDefaultsHelpFormatter,
                                          description=self.desc)
        aparser.add_argument('--version', '-v',
                             action='version',
                             version=self.version,
                             help='Print version and exit')
        aparser.add_argument('--build-id', '-i',
                             action='store',
                             default='Random number from 1000-9999',
                             help='Build ID of the new packages')
        aparser.add_argument('--sku',
                             action='store',
                             default='Derived from manifest sku',
                             help='Specify Openstack release')
        aparser.add_argument('--branch',
                             action='store',
                             default='from sandbox/controller/src/base/version.info',
                             help='Specify GIT branch name')
        aparser.add_argument('--store-dir', '-s',
                             action='store',
                             default='sandbox/build/',
                             help='Directory Location to which new packages be saved')
        aparser.add_argument('--cache-base-dir', '-C',
                             action='store',
                             default='/cs-shared/builder/cache',
                             nargs='+',
                             help='Base directory location where OS and third\
                                   party packages are available.\
                                   packager will check files in \
                                   base_cache_dir/distribution/sku/. eg\
                                   /cs-shared/builder/cache/centos64/grizzly/')
        aparser.add_argument('--absolute-package-dir', '-a',
                             action='store',
                             default=None,
                             nargs='+',
                             help='Absolute Directory Location where OS and third\
                                   party packages are available')
        aparser.add_argument('--contrail-package-dir', '-P',
                             action='store',
                             default=None,
                             nargs='+',
                             help='Directory Location where pre-maked Contrail packages\
                                   are available')
        aparser.add_argument('--base-package-file', '-b',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/base*_packages.cfg',
                             nargs='+',
                             help='Config files specifying base packages info')
        aparser.add_argument('--depends-package-file', '-d',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/depends*_packages.cfg',
                             nargs='+',
                             help='Config files specifying dependant pacakges info')
        aparser.add_argument('--contrail-package-file', '-f',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/contrail*_packages.cfg',
                             nargs='+',
                             help='Config files specifying Contrail packages info')
        aparser.add_argument('--make-targets', '-t',
                             action='store',
                             default=None,
                             nargs='+',
                             help='List of Contrail make targets to build')
        aparser.add_argument('--make-targets-file', '-T',
                             action='store',
                             default=None,
                             help='Line seperated text file containing list of \
                                   make targets')
        aparser.add_argument('--fail-on-error', '-e',
                             action='store_true',
                             help='Aborts Packager from continuing when make fails')
        aparser.add_argument('--post-job', '-j',
                             action='store',
                             default=None,
                             help='Script to execute after Packaging is successfully complete')
        aparser.add_argument('--populate-defaults',
                             action='store_true',
                             help='Populates packager arguments with default values\
                                   and prints')
        aparser.parse_args(self.unparsed_args)
        self.parser = aparser
import sys
import copy
import shutil
import logging
import getpass
import tempfile
import operator
import platform
import traceback
from lxml import etree

#from utils import Utils
from libs.packager.utils import Utils

log = logging.getLogger("pkg")
PLATFORM = Utils.get_platform_info()

class MakeError(Exception):
    pass

class BasePackager(Utils):
    ''' Base class for packager methods '''
    def __init__(self, **kwargs):
        self.base_pkg_files        = self.expanduser(kwargs['base_package_file'])
        self.depends_pkg_files     = self.expanduser(kwargs['depends_package_file'])
        self.contrail_pkg_files    = self.expanduser(kwargs['contrail_package_file'])
        self.id                    = kwargs.get('build_id', 999)
        self.sku                   = kwargs.get('sku', 'grizzly')
        self.branch                = kwargs.get('branch', None)
        self.store                 = self.expanduser(kwargs['store_dir'])
        self.abs_pkg_dirs          = self.expanduser(kwargs['absolute_package_dir'])
示例#6
0
    def define_args(self):
        ''' Define arguments for packager script '''
        cparser = argparse.ArgumentParser(add_help=False)
        cparser.add_argument('--config',
                             '-c',
                             action='store',
                             default=os.path.join(SCRIPTDIR, 'config.cfg'),
                             help='Config File for the Packager')
        file_ns, rargs = cparser.parse_known_args(self.unparsed_args)
        self.cfg_file = file_ns.config

        os_parser = argparse.ArgumentParser(add_help=False)
        platform_info = Utils.get_platform_info()
        os_parser.add_argument('--os-version',
                               '-O',
                               action='store',
                               default=platform_info['formatted'],
                               help='Specify OS Type and Version. \
                                   eg: centos64, ubuntu1204, redhatlinuxenterprise70'
                               )
        file_ns, rargs = os_parser.parse_known_args(self.unparsed_args)

        aparser = argparse.ArgumentParser(
            parents=[cparser, os_parser],
            formatter_class=argparse.RawTextHelpFormatter,
            description=self.desc)
        aparser.add_argument('--version',
                             '-v',
                             action='version',
                             version=self.version,
                             help='Print version and exit')
        aparser.add_argument('--build-id',
                             '-i',
                             action='store',
                             default='Random number from 1000-9999',
                             help='Build ID of the new packages')
        aparser.add_argument('--sku',
                             action='store',
                             default='Derived from manifest sku',
                             help='Specify Contrail-SKU version')
        aparser.add_argument(
            '--branch',
            action='store',
            default='from sandbox/controller/src/base/version.info',
            help='Specify GIT branch name')
        aparser.add_argument('-p', '--package-types',
                             action='store',
                             default=None,
                             nargs='+',
                             help='One or List of package types which ' \
                                  'packager has to build\n' \
                                  'Multiple package types can be provided like \n' \
                                  '--package-types <type1> <type2> ... <typeN>')
        aparser.add_argument(
            '--store-dir',
            '-s',
            action='store',
            default='sandbox/build/',
            help='Directory Location to which new packages be saved')
        aparser.add_argument('--cache-base-dir', '-C',
                             action='store',
                             default='/cs-shared/builder/cache',
                             nargs='+',
                             help='Base directory location where OS and third '\
                                   'party packages are available.\n'\
                                   'packager will check files in '\
                                   '<cache_base_dir>/os-distribution/contrail-sku/. ' \
                                   'eg /cs-shared/builder/cache/ubuntu1204/grizzly/ \n' \
                                   'Multiple cache base dir can be provided like \n'\
                                   '--cache-base-dir <dir1> <dir2> <dir3> ... <dirN>')
        aparser.add_argument('--absolute-package-dir', '-a',
                             action='store',
                             default=None,
                             nargs='+',
                             help='Absolute Directory Location where OS and third '\
                                   'party packages are available\n'\
                                   'Multiple directories can be provided like \n'\
                                   '--absolute-package-dir <dir1> <dir2> <dir3> ... <dirN>')
        aparser.add_argument('--contrail-package-dir', '-P',
                             action='store',
                             default=None,
                             nargs='+',
                             help='Directory Location where pre-maked Contrail packages '\
                                   'are available \n'\
                                   'Multiple directories can be provided like\n'\
                                   '--contrail-package-dir <dir1> <dir2> <dir3> ... <dirN>')
        aparser.add_argument('--base-package-file', '-b',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/base*_packages.cfg',
                             nargs='+',
                             help='Config files specifying base packages info \n'\
                                  'Multiple package configs can be provided like\n'\
                                  '--base-package-file <file1> <file2> ... <fileN> ')
        aparser.add_argument('--depends-package-file', '-d',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/depends*_packages.cfg',
                             nargs='+',
                             help='Config files specifying dependant pacakges info\n'\
                                   'Multiple package files can be provided like \n'\
                                   '-depends-package-file <file1> <file2> <file3> ... <fileN>')
        aparser.add_argument('--contrail-package-file', '-f',
                             action='store',
                             default='sandbox/tools/packaging/build/package_configs/<os>/<sku>/contrail*_packages.cfg',
                             nargs='+',
                             help='Config files specifying Contrail packages info\n'\
                                  'Multiple package files can be provided like\n'\
                                  '--contrail-package-file <file1> <file2> <file3> ... <fileN>')
        aparser.add_argument('--make-targets', '-t',
                             action='store',
                             default=None,
                             nargs='+',
                             help='List of Contrail make targets to build \n'\
                                  'Multiple make targets can be provided like \n'\
                                  '--make-targets <target1> <target2> ... <targetN>')
        aparser.add_argument(
            '--make-targets-file',
            '-T',
            action='store',
            default=None,
            help='Line seperated text file containing list of make targets')
        aparser.add_argument(
            '--fail-on-error',
            '-e',
            action='store_true',
            help='Abort Packager from continuing on first instance of failure')
        aparser.add_argument(
            '--post-job',
            '-j',
            action='store',
            default=None,
            help='Script to execute after Packaging is successfully complete')
        aparser.add_argument(
            '--populate-defaults',
            action='store_true',
            help='Populates packager arguments with default values and prints')
        aparser.parse_args(self.unparsed_args)
        self.parser = aparser
示例#7
0
import sys
import copy
import shutil
import logging
import getpass
import tempfile
import operator
import platform
import traceback
from lxml import etree

#from utils import Utils
from libs.packager.utils import Utils

log = logging.getLogger("pkg")
PLATFORM = Utils.get_platform_info()


class MakeError(Exception):
    pass


class BasePackager(Utils):
    ''' Base class for packager methods '''
    def __init__(self, **kwargs):
        self.base_pkg_files = self.expanduser(kwargs['base_package_file'])
        self.depends_pkg_files = self.expanduser(
            kwargs['depends_package_file'])
        self.contrail_pkg_files = self.expanduser(
            kwargs['contrail_package_file'])
        self.id = kwargs.get('build_id', 999)