X-Git-Url: https://git.openstreetmap.org/chef.git/blobdiff_plain/53933cb52c3ba909a80ad036041da83644800fb2..3b563e12600d3519011cde414ee0465698a7814f:/cookbooks/overpass/templates/default/overpass-import-db.erb diff --git a/cookbooks/overpass/templates/default/overpass-import-db.erb b/cookbooks/overpass/templates/default/overpass-import-db.erb new file mode 100644 index 000000000..22cfe642e --- /dev/null +++ b/cookbooks/overpass/templates/default/overpass-import-db.erb @@ -0,0 +1,74 @@ +#!/bin/bash -e + +FNAME=$1 + +if [[ "x$FNAME" == "x" ]]; then + echo "Usage: overpass-import-db.sh " + exit 1 +fi + +case "$FNAME" in + *.gz) UNPACKER='gunzip -c' ;; + *.bz2) UNPACKER='bunzip2 -c' ;; + *) UNPACKER='osmium cat -o - -f xml' ;; +esac + +<% if node[:overpass][:meta_mode] == "meta" -%> +META=--meta +<% elsif node[:overpass][:meta_mode] == "attic" -%> +META=--keep-attic +<% else -%> +META= +<% end -%> + +sudo systemctl stop overpass-area-processor.timer +sudo systemctl stop overpass-update +sudo systemctl stop overpass-area-dispatcher +sudo systemctl stop overpass-dispatcher + +sleep 2 + +# Remove old database +sudo -u <%= @username %> rm -rf <%= @basedir %>/db/* + +$UNPACKER $FNAME | sudo -u <%= @username %> <%= @basedir %>/bin/update_database --db-dir='<%= @basedir %>/db' --compression-method=<%= node[:overpass][:compression_mode] %> --map-compression-method=<%= node[:overpass][:compression_mode] %> $META + +sudo -u <%= @username %> ln -s <%= @srcdir %>/rules <%= @basedir %>/db/rules + +echo "Import finished. Catching up with new changes." + +sudo systemctl start overpass-dispatcher +sudo systemctl start overpass-area-dispatcher + +PYOSMIUM="sudo -u <%= @username %> pyosmium-get-changes --server <%= node[:overpass][:replication_url] %> -f <%= @basedir %>/db/replicate-id" +<% if node[:overpass][:meta_mode] == "attic" -%> +PYOSMIUM="$PYOSMIUM --no-deduplicate" +<% end -%> + +# Get the replication id +$PYOSMIUM -v -O $FNAME --ignore-osmosis-headers + +sudo -u <%= @username %> rm -f <%= @basedir %>/diffs/* + +while $PYOSMIUM -v -s 1000 -o <%= @basedir %>/diffs/latest.osc; do + if [ ! -f <%= @basedir %>/db/replicate-id ]; then + echo "Replication ID not written." + exit 1 + fi + DATA_VERSION=`osmium fileinfo -e -g data.timestamp.last <%= @basedir %>/diffs/latest.osc` + echo "Downloaded up to timestamp $DATA_VERSION" + while ! sudo -u <%= @username %> <%= @basedir %>/bin/update_from_dir --osc-dir=<%= @basedir %>/diffs --version=$DATA_VERSION $META --flush-size=0; do + echo "Error while updating. Retry in 1 min." + sleep 60 + done + sudo -u <%= @username %> rm <%= @basedir %>/diffs/latest.osc + echo "Finished up to $DATA_VERSION." +done + +echo "DB up-to-date. Processing areas." + +sudo -u <%= @username %> <%= @basedir %>/bin/osm3s_query --progress --rules <<%= @srcdir %>/rules/areas.osm3s + +echo "All updates done." + +sudo systemctl start overpass-area-processor.timer