From: Sarah Hoffmann Date: Mon, 1 Jan 2018 21:22:06 +0000 (+0100) Subject: add function to check if new updates are available X-Git-Tag: v3.1.0~6^2 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/b06bc799bcc558e582cdea5198885c246c6ef256 add function to check if new updates are available --- diff --git a/utils/check_server_for_updates.py b/utils/check_server_for_updates.py new file mode 100755 index 00000000..6e3beb83 --- /dev/null +++ b/utils/check_server_for_updates.py @@ -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 ") + 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) diff --git a/utils/update.php b/utils/update.php index c5b5e4de..492cb6c4 100755 --- a/utils/update.php +++ b/utils/update.php @@ -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'];