]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge pull request #874 from lonvia/check-for-updates
authorSarah Hoffmann <lonvia@denofr.de>
Wed, 10 Jan 2018 21:51:12 +0000 (22:51 +0100)
committerGitHub <noreply@github.com>
Wed, 10 Jan 2018 21:51:12 +0000 (22:51 +0100)
Add function to check if new updates are available

utils/check_server_for_updates.py [new file with mode: 0755]
utils/update.php

diff --git a/utils/check_server_for_updates.py b/utils/check_server_for_updates.py
new file mode 100755 (executable)
index 0000000..6e3beb8
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/python
+
+import sys
+from osmium.replication import server
+
+if __name__ == '__main__':
+    if len(sys.argv) != 3:
+        print("Usage: python check_server_for_updates.py <server url> <sequence id>")
+        sys.exit(254)
+
+    seqid = int(sys.argv[2])
+
+    state = server.ReplicationServer(sys.argv[1]).get_state_info()
+
+    if state is None:
+        print("ERROR: Cannot get state from URL %s." % (sys.argv[1], ))
+        sys.exit(253)
+
+    if state.sequence <= seqid:
+        print("Database up to date.")
+        sys.exit(1)
+
+    print("New data available (%i => %i)." % (seqid, state.sequence))
+    sys.exit(0)
index 2fc3dba2acfc82285498d89a0e53597afd149c31..d38a854aa09dda5e246ab315c01117cf5d22e3a4 100755 (executable)
@@ -13,6 +13,7 @@ $aCMDOptions
    array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
 
    array('init-updates', '', 0, 1, 0, 0, 'bool', 'Set up database for updating'),
+   array('check-for-updates', '', 0, 1, 0, 0, 'bool', 'Check if new updates are available'),
    array('import-osmosis', '', 0, 1, 0, 0, 'bool', 'Import updates once'),
    array('import-osmosis-all', '', 0, 1, 0, 0, 'bool', 'Import updates forever'),
    array('no-index', '', 0, 1, 0, 0, 'bool', 'Do not index the new data'),
@@ -98,6 +99,17 @@ if ($aResult['init-updates']) {
     echo "Done. Database updates will start at sequence $aOutput[0] ($sWindBack)\n";
 }
 
+if ($aResult['check-for-updates']) {
+    $aLastState = chksql($oDB->getRow('SELECT sequence_id FROM import_status'));
+
+    if (!$aLastState['sequence_id']) {
+        fail('Updates not set up. Please run ./utils/update.php --init-updates.');
+    }
+
+    system(CONST_BasePath.'/utils/check_server_for_updates.py '.CONST_Replication_Url.' '.$aLastState['sequence_id'], $iRet);
+    exit($iRet);
+}
+
 if (isset($aResult['import-diff']) || isset($aResult['import-file'])) {
     // import diffs and files directly (e.g. from osmosis --rri)
     $sNextFile = isset($aResult['import-diff']) ? $aResult['import-diff'] : $aResult['import-file'];