add a new helper script -- reload_dictionary.php
authorDenis Ovsienko <denis@ovsienko.info>
Fri, 13 Jul 2018 11:14:04 +0000 (12:14 +0100)
committerDenis Ovsienko <denis@ovsienko.info>
Fri, 13 Jul 2018 11:27:19 +0000 (12:27 +0100)
scripts/reload_dictionary.php [new file with mode: 0755]
tests/express.sh

diff --git a/scripts/reload_dictionary.php b/scripts/reload_dictionary.php
new file mode 100755 (executable)
index 0000000..b423d12
--- /dev/null
@@ -0,0 +1,51 @@
+#!/usr/bin/env php
+<?php
+
+# This file is a part of RackTables, a datacenter and server room management
+# framework. See accompanying file "COPYING" for the full copyright and
+# licensing information.
+
+// A full RackTables upgrade includes reloading RackTables dictionary with the
+// values from the PHP source code. This works well for upgrading a RackTables
+// instance from one release to another, but RackTables development done in git
+// repository clones usually requires to reload the dictionary more often than
+// to run a full upgrade. This script does exactly that job: it only reloads
+// the dictionary.
+
+$script_mode = TRUE;
+require_once 'inc/init.php';
+require_once 'inc/dictionary.php';
+
+// Try one row per query at a time so the user can see which values failed, if any.
+$qlist = reloadDictionary (1);
+$flist = array();
+$dbxlink->beginTransaction();
+foreach ($qlist as $query)
+{
+       try
+       {
+               $success = $dbxlink->exec ($query) !== FALSE;
+       }
+       catch (PDOException $e)
+       {
+               $success = FALSE;
+       }
+       if (! $success)
+               $flist[] = $query;
+}
+
+if (count ($flist))
+{
+       $dbxlink->rollBack();
+       foreach ($flist as $query)
+               fprintf (STDERR, "FAILED: %s\n", $query);
+       fprintf (STDERR, "Dictionary reload has been rolled back due to errors (%u queries failed out of %u).\n",
+               count ($flist), count ($qlist));
+       exit (1);
+}
+else
+{
+       $dbxlink->commit();
+       printf ("Dictionary reload complete (%u SQL queries).\n", count ($qlist));
+       exit (0);
+}
index 9859a2e..9556853 100755 (executable)
@@ -72,6 +72,7 @@ echo
 cd "$BASEDIR/wwwroot"
 echo 'Testing syncdomain.php'; ../scripts/syncdomain.php --help || exit 1
 echo 'Testing cleanup_ldap_cache.php'; ../scripts/cleanup_ldap_cache.php || exit 1
+echo 'Testing reload_dictionary.php'; ../scripts/reload_dictionary.php || exit 1
 
 # At this point it makes sense to test specific functions.
 echo