This repository was archived by the owner on May 23, 2019. It is now read-only.
forked from pelias-deprecated/dockerfiles
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathimport-pad.sh
executable file
·93 lines (72 loc) · 2.9 KB
/
import-pad.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/bash
set -e
set -x
# get timestamp
PELIAS_TIMESTAMP=`date +%s`
# build nycpad docker image
docker-compose build --pull --no-cache nycpad
# set unique indexName using timestamp
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s/\"pelias.*\"/\"pelias_${PELIAS_TIMESTAMP}\"/g" pelias.json
else
sed -i "s/\"pelias.*\"/\"pelias_${PELIAS_TIMESTAMP}\"/g" pelias.json
fi
# create index
docker-compose run --rm schema npm run create_index
# download data
docker-compose run --rm nycpad npm run download
#get filename of downloaded csv
FILENAME=$(jq .imports.nycpad.import[0].filename pelias.json | sed "s/\"//g")
echo $FILENAME
# get rowcount of downloaded CSV
ROWCOUNT=$(wc -l < /data/nycpad/$FILENAME)
ROWCOUNT=$(($ROWCOUNT - 1)) # subtract 1 for csv header row
echo "Row count:" $ROWCOUNT
curl -X POST \
-H 'Content-type: application/json' \
--data '{"text": "Starting NYCPAD import `pelias_'"$PELIAS_TIMESTAMP"'` from `'"$FILENAME"'` containing `'"$ROWCOUNT"'` addresses", "channel": "#labs-geocoder-api", "username": "GeoSearch Import Bot", "icon_emoji": ":robot_face:"}' \
$SLACK_WEBHOOK_URL
# import downloaded data
docker-compose run --rm nycpad npm start
# get rowcount from DB
curl -XPOST "http://localhost:9200/pelias_"$PELIAS_TIMESTAMP"/_refresh"
ES_ROWCOUNT=$(curl "http://localhost:9200/pelias_"$PELIAS_TIMESTAMP"/address/_count" | jq .count)
echo $(curl "http://localhost:9200/pelias_"$PELIAS_TIMESTAMP"/address/_count")
echo $ES_ROWCOUNT
echo "CSV Rowcount" $ROWCOUNT
echo "ES Rowcount" $ES_ROWCOUNT
docker-compose build tests
docker-compose run -e ROWCOUNT="$ROWCOUNT" tests npm start
TESTS_STATUS=$(curl "https://planninglabs.nyc3.digitaloceanspaces.com/geosearch-acceptance-tests/status.json" | jq .status | sed "s/\"//g")
echo $TESTS_STATUS
if [[ "$TESTS_STATUS" = "passed" ]]; then
if [ "$ROWCOUNT" -eq "$ES_ROWCOUNT" ]; then
MESSAGE="Rowcounts Match, setting alias \`pelias\` on index \`pelias_"$PELIAS_TIMESTAMP"\` <https://planninglabs.nyc3.digitaloceanspaces.com/geosearch-acceptance-tests/status.json|Tests Passed>"
# clear all aliases
curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "remove" : { "index" : "*", "alias" : "pelias" } }
]
}
'
# set alias
curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "add" : { "index" : "pelias_'"$PELIAS_TIMESTAMP"'", "alias" : "pelias" } }
]
}
'
else
MESSAGE="I am sorry to inform you that the rowcounts did not match, something went wrong with this import..."
fi
else
MESSAGE="I regret to inform you that the test suite failed."
fi
echo $MESSAGE
curl -X POST \
-H 'Content-type: application/json' \
--data '{"text": "'"$MESSAGE"'", "channel": "#labs-geocoder-api", "username": "GeoSearch Import Bot", "icon_emoji": ":robot_face:"}' \
$SLACK_WEBHOOK_URL
echo $MESSAGE