diff options
author | Simon Rettberg | 2017-11-03 17:53:13 +0100 |
---|---|---|
committer | Simon Rettberg | 2017-11-03 17:53:13 +0100 |
commit | 764ec440d8594c68a6c778f58aee2d7888b89204 (patch) | |
tree | e4db86bb1ef7fad95a4d12c57d1d35e36d888333 /modules-available/sysconfig/inc | |
parent | [sysconfig] Fix: Empty config.tgz modules disappeared from the list (diff) | |
download | slx-admin-764ec440d8594c68a6c778f58aee2d7888b89204.tar.gz slx-admin-764ec440d8594c68a6c778f58aee2d7888b89204.tar.xz slx-admin-764ec440d8594c68a6c778f58aee2d7888b89204.zip |
[sysconfig/runmode] Deliver bare config.tgz with just global hook data when "no sysconfig" is set for a runmode
Diffstat (limited to 'modules-available/sysconfig/inc')
-rw-r--r-- | modules-available/sysconfig/inc/configtgz.inc.php | 49 | ||||
-rw-r--r-- | modules-available/sysconfig/inc/sysconfig.inc.php | 2 |
2 files changed, 34 insertions, 17 deletions
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); @@ -199,6 +186,32 @@ class ConfigTgz */ /** + * @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 * that is injected via a hook has changed. @@ -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" |