From 764ec440d8594c68a6c778f58aee2d7888b89204 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 3 Nov 2017 17:53:13 +0100 Subject: [sysconfig/runmode] Deliver bare config.tgz with just global hook data when "no sysconfig" is set for a runmode --- modules-available/sysconfig/inc/configtgz.inc.php | 49 +++++++++++++++-------- modules-available/sysconfig/inc/sysconfig.inc.php | 2 + 2 files changed, 34 insertions(+), 17 deletions(-) (limited to 'modules-available/sysconfig/inc') diff --git a/modules-available/sysconfig/inc/configtgz.inc.php b/modules-available/sysconfig/inc/configtgz.inc.php index c03d1c5e..dbf1bc99 100644 --- a/modules-available/sysconfig/inc/configtgz.inc.php +++ b/modules-available/sysconfig/inc/configtgz.inc.php @@ -12,7 +12,7 @@ class ConfigTgz { ; } - + public function id() { return $this->configId; @@ -101,22 +101,9 @@ class ConfigTgz if (!empty($module['filepath']) && file_exists($module['filepath'])) $files[] = $module['filepath']; } - // Get stuff other modules want to inject - $handler = function($hook) { - include $hook->file; - return isset($file) ? $file : false; - }; - foreach (Hook::load('config-tgz') as $hook) { - $file = $handler($hook); - if ($file !== false) { - $files[] = $file; - } - } - // Hand over to tm - $task = Taskmanager::submit('RecompressArchive', array( - 'inputFiles' => $files, - 'outputFile' => $this->file - )); + + $task = self::recompress($files, $this->file); + // Wait for completion if ($timeoutMs > 0 && !Taskmanager::isFailed($task) && !Taskmanager::isFinished($task)) $task = Taskmanager::waitComplete($task, $timeoutMs); @@ -198,6 +185,32 @@ class ConfigTgz * Static part */ + /** + * @param string[] $files source files to include + * @param string $destFile where to store final result + * @return false|array taskmanager task + */ + private static function recompress($files, $destFile) + { + // Get stuff other modules want to inject + $handler = function($hook) { + include $hook->file; + return isset($file) ? $file : false; + }; + foreach (Hook::load('config-tgz') as $hook) { + $file = $handler($hook); + if ($file !== false) { + $files[] = $file; + } + } + + // Hand over to tm + return Taskmanager::submit('RecompressArchive', array( + 'inputFiles' => $files, + 'outputFile' =>$destFile + )); + } + /** * Marks all modules as outdated and triggers generate() * on each one. This mostly makes sense to call if a global module @@ -215,6 +228,8 @@ class ConfigTgz $module->generate(); } } + // Build the global "empty" config that just includes global hooks + self::recompress([], SysConfig::GLOBAL_MINIMAL_CONFIG); } public static function insert($title, $moduleIds) diff --git a/modules-available/sysconfig/inc/sysconfig.inc.php b/modules-available/sysconfig/inc/sysconfig.inc.php index 15bd4104..13549948 100644 --- a/modules-available/sysconfig/inc/sysconfig.inc.php +++ b/modules-available/sysconfig/inc/sysconfig.inc.php @@ -3,6 +3,8 @@ class SysConfig { + const GLOBAL_MINIMAL_CONFIG = '/opt/openslx/configs/config-global.tgz'; + public static function getAll() { $res = Database::simpleQuery("SELECT c.configid, c.title, c.filepath, c.status, Group_Concat(cl.locationid) AS locs FROM configtgz c" -- cgit v1.2.3-55-g7522