def __init__(self, installer, moduleKey):
     self._installer = installer
     self._ctx = installer.builder._ctx
     self._cf = CloudFoundryInstaller(self._ctx)
     self._moduleKey = moduleKey
     self._extn = ''
     self._modules = []
     self._load_modules = self._default_load_method
     self._regex = None
     self._log = _log
Example #2
0
 def __init__(self, installer, moduleKey):
     self._installer = installer
     self._ctx = installer.builder._ctx
     self._cf = CloudFoundryInstaller(self._ctx)
     self._moduleKey = moduleKey
     self._extn = ''
     self._modules = []
     self._load_modules = self._default_load_method
     self._regex = None
     self._log = _log
Example #3
0
class Installer(object):
    def __init__(self, builder):
        self.builder = builder
        self._log = _log
        self._installer = CloudFoundryInstaller(self.builder._ctx)

    def package(self, key):
        if key in self.builder._ctx.keys():
            key = self.builder._ctx[key]
        self.builder._ctx['%s_INSTALL_PATH' % key] = \
            self._installer.install_binary(key)
        self._log.info("Installed [%s] to [%s]", key,
                       self.builder._ctx['%s_INSTALL_PATH' % key])
        return self

    def packages(self, *keys):
        for key in keys:
            self.package(key)
        return self

    def modules(self, key):
        return ModuleInstaller(self, key)

    def config(self):
        return ConfigInstaller(self)

    def extensions(self):
        ctx = self.builder._ctx
        extn_reg = self.builder._extn_reg

        def process(retcode):
            if retcode != 0:
                raise RuntimeError('Extension Failed with [%s]' % retcode)
        for path in extn_reg._paths:
            process_extension(path, ctx, 'compile', process, args=[self])
        ctx['EXTENSIONS'].extend(extn_reg._paths)
        return self

    def build_pack_utils(self):
        self._log.info("Installed build pack utils.")
        (self.builder.copy()
             .under('{BP_DIR}/lib/build_pack_utils')
             .into('{BUILD_DIR}/.bp/lib/build_pack_utils')
             .done())
        return self

    def build_pack(self):
        return BuildPackManager(self)

    def done(self):
        return self.builder
Example #4
0
class Installer(object):
    def __init__(self, builder):
        self.builder = builder
        self._log = _log
        self._installer = CloudFoundryInstaller(self.builder._ctx)

    def package(self, key):
        if key in self.builder._ctx.keys():
            key = self.builder._ctx[key]
        self.builder._ctx['%s_INSTALL_PATH' % key] = \
            self._installer.install_binary(key)
        self._log.info("Installed [%s] to [%s]", key,
                       self.builder._ctx['%s_INSTALL_PATH' % key])
        return self

    def packages(self, *keys):
        for key in keys:
            self.package(key)
        return self

    def modules(self, key):
        return ModuleInstaller(self, key)

    def config(self):
        return ConfigInstaller(self)

    def extensions(self):
        ctx = self.builder._ctx
        extn_reg = self.builder._extn_reg

        def process(retcode):
            if retcode != 0:
                raise RuntimeError('Extension Failed with [%s]' % retcode)
        for path in extn_reg._paths:
            process_extension(path, ctx, 'compile', process, args=[self])
        ctx['EXTENSIONS'].extend(extn_reg._paths)
        return self

    def build_pack_utils(self):
        self._log.info("Installed build pack utils.")
        (self.builder.copy()
             .under('{BP_DIR}/lib/build_pack_utils')
             .into('{BUILD_DIR}/.bp/lib/build_pack_utils')
             .done())
        return self

    def build_pack(self):
        return BuildPackManager(self)

    def done(self):
        return self.builder
Example #5
0
class Installer(object):
    def __init__(self, builder):
        self.builder = builder
        self._log = _log
        self._installer = CloudFoundryInstaller(self.builder._ctx)

    def package(self, key):
        if key in self.builder._ctx.keys():
            key = self.builder._ctx[key]
        self.builder._ctx['%s_INSTALL_PATH' % key] = \
            self._installer.install_binary(key)
        self._log.info("Installed [%s] to [%s]", key,
                       self.builder._ctx['%s_INSTALL_PATH' % key])
        return self

    def packages(self, *keys):
        for key in keys:
            self.package(key)
        return self

    def modules(self, key):
        return ModuleInstaller(self, key)

    def config(self):
        return ConfigInstaller(self)

    def extension(self):
        return ExtensionInstaller(self)

    def extensions(self):
        return ExtensionInstaller(self)

    def build_pack_utils(self):
        self._log.info("Installed build pack utils.")
        (self.builder.copy()
             .under('{BP_DIR}/lib/build_pack_utils')
             .into('{BUILD_DIR}/.bp/lib/build_pack_utils')
             .done())
        return self

    def build_pack(self):
        return BuildPackManager(self)

    def done(self):
        return self.builder
Example #6
0
class Installer(object):
    def __init__(self, builder):
        self.builder = builder
        self._log = _log
        self._installer = CloudFoundryInstaller(self.builder._ctx)

    def package(self, key):
        if key in self.builder._ctx.keys():
            key = self.builder._ctx[key]
        self.builder._ctx['%s_INSTALL_PATH' % key] = \
            self._installer.install_binary(key)
        self._log.info("Installed [%s] to [%s]", key,
                       self.builder._ctx['%s_INSTALL_PATH' % key])
        return self

    def packages(self, *keys):
        for key in keys:
            self.package(key)
        return self

    def modules(self, key):
        return ModuleInstaller(self, key)

    def config(self):
        return ConfigInstaller(self)

    def extension(self):
        return ExtensionInstaller(self)

    def extensions(self):
        return ExtensionInstaller(self)

    def build_pack_utils(self):
        self._log.info("Installed build pack utils.")
        (self.builder.copy().under('{BP_DIR}/lib/build_pack_utils').into(
            '{BUILD_DIR}/.bp/lib/build_pack_utils').done())
        return self

    def build_pack(self):
        return BuildPackManager(self)

    def done(self):
        return self.builder
Example #7
0
class Installer(object):
    def __init__(self, builder):
        self.builder = builder
        self._installer = CloudFoundryInstaller(self.builder._ctx)

    def package(self, key):
        self.builder._ctx['%s_INSTALL_PATH' % key] = \
            self._installer.install_binary(key)
        return self

    def packages(self, *keys):
        for key in keys:
            self.package(key)
        return self

    def config(self):
        return ConfigInstaller(self)

    def done(self):
        return self.builder
Example #8
0
class Installer(object):
    def __init__(self, builder):
        self.builder = builder
        self._installer = CloudFoundryInstaller(self.builder._ctx)

    def package(self, key):
        self.builder._ctx['%s_INSTALL_PATH' % key] = \
            self._installer.install_binary(key)
        return self

    def packages(self, *keys):
        for key in keys:
            self.package(key)
        return self

    def config(self):
        return ConfigInstaller(self)

    def done(self):
        return self.builder
Example #9
0
class ModuleInstaller(object):
    def __init__(self, installer, moduleKey):
        self._installer = installer
        self._ctx = installer.builder._ctx
        self._cf = CloudFoundryInstaller(self._ctx)
        self._moduleKey = moduleKey
        self._extn = ''
        self._modules = []
        self._load_modules = self._default_load_method
        self._regex = None
        self._log = _log

    def _default_load_method(self, path):
        with open(path, 'rt') as f:
            return [line.strip() for line in f]

    def _regex_load_method(self, path):
        modules = []
        with open(path, 'rt') as f:
            for line in f:
                m = self._regex.match(line.strip())
                if m:
                    modules.append(m.group(1))
        return modules

    def filter_files_by_extension(self, extn):
        self._extn = extn
        return self

    def find_modules_with(self, method):
        self._load_modules = method
        return self

    def find_modules_with_regex(self, regex):
        self._regex = re.compile(regex)
        self._load_modules = self._regex_load_method
        return self

    def include_module(self, module):
        self._modules.append(module)
        return self

    def include_modules_from(self, key):
        self._modules.extend(self._ctx.get(key, []))
        return self

    def from_application(self, path):
        fullPath = os.path.join(self._ctx['BUILD_DIR'], path)
        if os.path.exists(fullPath) and os.path.isdir(fullPath):
            for root, dirs, files in os.walk(fullPath):
                for f in files:
                    if f.endswith(self._extn):
                        self._log.debug('Loading modules from [%s]',
                                        os.path.join(root, f))
                        self._modules.extend(
                            self._load_modules(os.path.join(root, f)))
        elif os.path.exists(fullPath) and os.path.isfile(fullPath):
            self._log.debug('Loading modules from [%s]', fullPath)
            self._modules.extend(self._load_modules(fullPath))
        self._modules = list(set(self._modules))
        return self

    def done(self):
        toPath = os.path.join(self._ctx['BUILD_DIR'],
                              self._moduleKey.lower())
        strip = self._ctx.get('%s_MODULES_STRIP' % self._moduleKey, False)
        for module in set(self._modules):
            try:
                self._ctx['MODULE_NAME'] = module
                url = self._ctx['%s_MODULES_PATTERN' % self._moduleKey]
                self._cf._install_binary_from_manifest(url, toPath,
                                               strip=strip)
            except Exception:
                self._log.warning('Module %s failed to install', module)
                self._log.debug('Module %s failed to install because',
                                module, exc_info=True)
            finally:
                if 'MODULE_NAME' in self._ctx.keys():
                    del self._ctx['MODULE_NAME']
        return self._installer
Example #10
0
 def __init__(self, builder):
     self.builder = builder
     self._log = _log
     self._installer = CloudFoundryInstaller(self.builder._ctx)
class ModuleInstaller(object):
    def __init__(self, installer, moduleKey):
        self._installer = installer
        self._ctx = installer.builder._ctx
        self._cf = CloudFoundryInstaller(self._ctx)
        self._moduleKey = moduleKey
        self._extn = ''
        self._modules = []
        self._load_modules = self._default_load_method
        self._regex = None
        self._log = _log

    def _default_load_method(self, path):
        with open(path, 'rt') as f:
            return [line.strip() for line in f]

    def _regex_load_method(self, path):
        modules = []
        with open(path, 'rt') as f:
            for line in f:
                m = self._regex.match(line.strip())
                if m:
                    modules.append(m.group(1))
        return modules

    def filter_files_by_extension(self, extn):
        self._extn = extn
        return self

    def find_modules_with(self, method):
        self._load_modules = method
        return self

    def find_modules_with_regex(self, regex):
        self._regex = re.compile(regex)
        self._load_modules = self._regex_load_method
        return self

    def include_module(self, module):
        self._modules.append(module)
        return self

    def include_modules_from(self, key):
        self._modules.extend(self._ctx.get(key, []))
        return self

    def from_application(self, path):
        fullPath = os.path.join(self._ctx['BUILD_DIR'], path)
        if os.path.exists(fullPath) and os.path.isdir(fullPath):
            for root, dirs, files in os.walk(fullPath):
                for f in files:
                    if f.endswith(self._extn):
                        self._log.debug('Loading modules from [%s]',
                                        os.path.join(root, f))
                        self._modules.extend(
                            self._load_modules(os.path.join(root, f)))
        elif os.path.exists(fullPath) and os.path.isfile(fullPath):
            self._log.debug('Loading modules from [%s]', fullPath)
            self._modules.extend(self._load_modules(fullPath))
        self._modules = list(set(self._modules))
        return self

    def done(self):
        toPath = os.path.join(self._ctx['BUILD_DIR'], self._moduleKey.lower())
        strip = self._ctx.get('%s_MODULES_STRIP' % self._moduleKey, False)
        for module in set(self._modules):
            try:
                self._ctx['MODULE_NAME'] = module
                url = self._ctx['%s_MODULES_PATTERN' % self._moduleKey]
                self._cf._install_binary_from_manifest(url,
                                                       toPath,
                                                       strip=strip)
            except Exception:
                self._log.warning('Module %s failed to install', module)
                self._log.debug('Module %s failed to install because',
                                module,
                                exc_info=True)
            finally:
                if 'MODULE_NAME' in self._ctx.keys():
                    del self._ctx['MODULE_NAME']
        return self._installer
 def __init__(self, builder):
     self.builder = builder
     self._log = _log
     self._installer = CloudFoundryInstaller(self.builder._ctx)