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()
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()
def execute(self, package, category, subdir, version): return package_path(self._config['app'], self._config['category'], category, subdir, package, version)
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)
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'])
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)