Example #1
0
    def execute(self,
                package,
                category,
                subdir,
                version,
                category_origin,
                subdir_origin,
                version_origin,
                from_install=False):
        config_package_name = 'package_install' if from_install else 'package_runtime'

        pkg_cfg_origin = copy.deepcopy(
            self._config[config_package_name].package_config(
                category_origin, subdir_origin, package,
                version_origin)['config_origin'])
        pkg_cfg_origin['version'] = version

        pkg_path = package_path(self._config['app'], self._config['category'],
                                category, subdir, package, version)

        ctg_cf, sd_cf, pkg_cf, ver_cf = check_conflict_package(
            pkg_path['main_dir'], self._config['package_runtime'])
        if ctg_cf:
            raise InstallPackageConfigError(
                'Package path conflicts with package "{0}", category "{1}", subdir "{2}", version "{3}"'
                .format(pkg_cf, ctg_cf, sd_cf, ver_cf))

        safe_mkdir(pkg_path['config_dir'])
        dump_config(pkg_cfg_origin, pkg_path['config_file'])

        self._config.reset()
Example #2
0
    def execute(self, package, category, subdir, version):
        pkg_path = package_path(self._config['app'], self._config['category'],
                                category, subdir, package, version)

        ctg_cf, sd_cf, pkg_cf, ver_cf = check_conflict_package(
            pkg_path['main_dir'], self._config['package_runtime'])
        if ctg_cf:
            raise CreatePackageConfigError(
                'Package path conflicts with package "{0}", category "{1}", subdir "{2}", version "{3}"'
                .format(pkg_cf, ctg_cf, sd_cf, ver_cf))

        safe_mkdir(pkg_path['config_dir'])

        if not os.path.exists(pkg_path['config_file']):
            open(pkg_path['config_file'], 'w').close()

        self._config.reset()
Example #3
0
 def execute(self, package, category, subdir, version):
     return package_path(self._config['app'], self._config['category'],
                         category, subdir, package, version)
Example #4
0
    def _init_package(self, handler, config_entry, config_app, config_output,
                      config_scenario, config_option, config_release_path,
                      config_attribute, config_release, config_release_install,
                      config_category, config_category_priority):
        reinstall = config_entry.get('reinstall', False)

        category_runtime = [
            ctg for ctg, cfg in config_category.items()
            if cfg.get('root') and not cfg.get('pre_check')
        ]

        _logger.debug('Category for runtime: {0}'.format(category_runtime))

        for category in category_runtime:
            version_dir = config_category[category]['version_dir']
            config_package_dir = config_category[category][
                'config_package_dir']

            for full_path, rel_dir, f in walk_rel_dir(config_package_dir):
                if f != config_app['config_package_file']:
                    continue

                try:
                    subdir, package, version = package_param_from_rel_dir(
                        rel_dir, version_dir)
                except ConfigPackageParamError:
                    continue

                pkg_cfg = config_from_file(full_path)

                pkg_path = package_path(config_app, config_category, category,
                                        subdir, package, version)

                final_pkg_cfg = transform_package(
                    handler, 'runtime', category, subdir, package, version,
                    pkg_cfg, pkg_path, config_app, config_output,
                    config_scenario, config_option, config_release_path,
                    config_attribute, config_release, config_release_install,
                    config_category, config_category_priority)

                if not version_dir:
                    if 'version' in final_pkg_cfg and final_pkg_cfg['version']:
                        version = final_pkg_cfg['version']
                    else:
                        version = 'unknown'

                self.setdefault(category, {})
                self[category].setdefault(subdir, {})
                self[category][subdir].setdefault(package, {})
                self[category][subdir][package].setdefault(version, {})

                final_config = self[category][subdir][package][version]

                final_config['config_origin'] = copy.deepcopy(pkg_cfg)

                final_config['config'] = final_pkg_cfg
                final_config['config']['name'] = package
                final_config['config']['category'] = category
                final_config['config']['subdir'] = subdir
                final_config['config']['version'] = version

                final_config['package_path'] = package_path(
                    config_app, config_category, category, subdir, package,
                    final_config['config']['version'])
                expand_package_path(final_config['package_path']['main_dir'],
                                    final_config['config'])
                expand_package_env(final_config['config'])

                final_config['install_status'] = install_status(
                    final_config['package_path']['status_install_file'])

                final_config['step'] = install_step(
                    config_release_install, final_config['config'],
                    final_config['install_status'], reinstall)
Example #5
0
    def execute(self, package, category, subdir, version):
        pkg_path = package_path(self._config['app'], self._config['category'], category, subdir, package, version)

        safe_rmdir(pkg_path['config_dir'])
        safe_rmdir(pkg_path['work_dir'])
Example #6
0
    def _init_package(self, handler, config_entry, config_app, config_output,
                      config_scenario, config_option, config_release_path,
                      config_attribute, config_release, config_release_install,
                      config_category, config_category_priority):
        reinstall = config_entry.get('reinstall', False)

        category_install = [
            ctg for ctg, ctg_cfg in config_category.items()
            if ctg_cfg['install']
        ]

        _logger.debug('Category for install: {0}'.format(category_install))

        for identifier, pkg_cfg in config_release.get('package', {}).items():
            try:
                category_name, subdir, pkg_name = package_param_from_identifier(
                    identifier, pkg_cfg)
            except ConfigPackageParamError:
                continue

            if category_name not in category_install:
                _logger.debug(
                    'Package "{0}" could not be installed with category "{1}"'.
                    format(pkg_name, category_name))
                continue

            version = ensure_list(pkg_cfg.get('version', []))

            version_dir = config_category[category_name]['version_dir']
            if (not version_dir) and len(version) > 1:
                _logger.warning(
                    'Only one version could be installed when category version_dir is false'
                )
                version = version[:1]

            if not version:
                _logger.warning(
                    'No version is specified for category({0}), package({1})'.
                    format(category_name, pkg_name))

            for ver in version:
                self.setdefault(category_name, {})
                self[category_name].setdefault(subdir, {})
                self[category_name][subdir].setdefault(pkg_name, {})
                if ver in self[category_name][subdir][pkg_name]:
                    _logger.warning(
                        'Duplicated package found: category({0}), subdir({1}), package({2}), version({3})'
                        .format(category_name, subdir, pkg_name, ver))
                self[category_name][subdir][pkg_name].setdefault(ver, {})
                final_config = self[category_name][subdir][pkg_name][ver]

                final_config['config_origin'] = copy.deepcopy(pkg_cfg)
                final_config['config_origin']['version'] = ver

                pkg_path = package_path(config_app, config_category,
                                        category_name, subdir, pkg_name, ver)

                final_config['config'] = transform_package(
                    handler, 'install', category_name, subdir, pkg_name, ver,
                    pkg_cfg, pkg_path, config_app, config_output,
                    config_scenario, config_option, config_release_path,
                    config_attribute, config_release, config_release_install,
                    config_category, config_category_priority)
                final_config['config']['name'] = pkg_name
                final_config['config']['category'] = category_name
                final_config['config']['subdir'] = subdir
                if 'version' not in final_config['config']:
                    final_config['config']['version'] = ver

                final_config['package_path'] = package_path(
                    config_app, config_category, category_name, subdir,
                    pkg_name, final_config['config']['version'])
                expand_package_path(final_config['package_path']['main_dir'],
                                    final_config['config'])
                expand_package_env(final_config['config'])

                final_config['install_status'] = install_status(
                    final_config['package_path']['status_install_file'])

                final_config['step'] = install_step(
                    config_release_install, final_config['config'],
                    final_config['install_status'], reinstall)