Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate oauth to GitHub app #155

Merged
merged 63 commits into from
May 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
c62dc97
New env vars and private files for GitHub apps.
jimallman Apr 10, 2020
c14ccf8
Populate the installation IDs for GitHub apps
jimallman Apr 11, 2020
e7e490d
comment out failing steps
snacktavish Apr 12, 2020
77b01f9
lots of interactive steps too
snacktavish Apr 13, 2020
9b13491
big web2py jump
snacktavish Apr 13, 2020
d29c635
Fix number of expected args
jimallman Apr 13, 2020
c49a19c
TMP change to user
snacktavish Apr 13, 2020
2c0776a
web2py updates
snacktavish Apr 13, 2020
7e40aaa
or exit everywhere
mtholder Apr 13, 2020
10debd6
noweb2py in apache config
snacktavish Apr 13, 2020
590f573
no web2py common, change echo to log
snacktavish Apr 13, 2020
5404378
some controller updates
mtholder Apr 13, 2020
a74348e
No push
snacktavish Apr 14, 2020
1abdbe6
Merge branch 'phylesystemapi' of github.com:OpenTreeOfLife/germinator…
snacktavish Apr 14, 2020
a7c181b
forwarding hack for machine running otcetera
snacktavish Apr 14, 2020
a14def4
Merge branch 'phylesystemapi' into otcetera-conf
snacktavish Apr 15, 2020
90b2feb
unify changes
snacktavish Apr 15, 2020
494d974
no java
snacktavish Apr 15, 2020
3398452
current on ot54
snacktavish Apr 15, 2020
4436074
new certs, web2pyversion
snacktavish Apr 16, 2020
61596ba
devtree
snacktavish Apr 16, 2020
cf8cd65
hardcoded user change to opentree
snacktavish Apr 16, 2020
9759397
fix caching
snacktavish Apr 16, 2020
6d77bd0
Add a minimal parametric router w/ default app
jimallman Apr 16, 2020
1572412
Merge branch 'easter-fix' of github.com:OpenTreeOfLife/germinator int…
jimallman Apr 16, 2020
975cf24
Add minimal router for phylesystem-api
jimallman Apr 16, 2020
ea8521e
Adding diagnostic pwd for web2py install scripts.
jimallman Apr 16, 2020
541b71e
Fix pwd output in install scripts
jimallman Apr 16, 2020
6f7b985
Don't extract the synth tree each time.
bredelings Apr 16, 2020
b542d60
update apache conf
snacktavish Apr 23, 2020
990ffa7
don't rewrite confs
snacktavish Apr 23, 2020
eca0536
no caching for now
snacktavish Apr 23, 2020
84ca86c
Merge branch 'easter-fix' of github.com:OpenTreeOfLife/germinator int…
snacktavish Apr 23, 2020
7d72ef2
fix restart apache typo
snacktavish Apr 23, 2020
906a35e
Add switches for web2py and apache config
jimallman May 6, 2020
6ac47b4
Revert "don't rewrite confs"
jimallman May 6, 2020
51ef19d
Replace hard-coded ot51 with PHYLAPI_BASE_URL
jimallman May 6, 2020
92f5353
Back up existing config files at start of push
jimallman May 7, 2020
c57264e
Add do-nothing builtin for valid bash script
jimallman May 7, 2020
c9272a9
Fix bash errors in restart-apache.sh
jimallman May 7, 2020
8136aab
Replace shortcut '~' with /home/admin
jimallman May 7, 2020
84e2d53
Restore test of local path to private key files
jimallman May 7, 2020
fcdc828
Merge branch 'master' into easter-fix
jimallman May 7, 2020
1b52641
Restore wget commands to files.opentreeoflife.org
jimallman May 8, 2020
600a7f6
Removing unused apache config (shared forwards)
jimallman May 8, 2020
3467b8b
Revert "No push"
jimallman May 8, 2020
2dad12b
Restore URLs for cached content (fingers crossed!)
jimallman May 8, 2020
238b973
Merge pull request #154 from OpenTreeOfLife/easter-fix
jimallman May 8, 2020
0d05429
Fix bad error message
jimallman May 9, 2020
d41940d
Move web2py patches into germinator repo
jimallman May 10, 2020
65ce583
Commit vanilla version from web2py 2.19.1
jimallman May 10, 2020
ab3b29d
Revive old hot fix to always add CORS headers
jimallman May 10, 2020
57dc7bb
Update source path of web2py patch(es)
jimallman May 10, 2020
0931f2f
Patch existing web2py as well as new installations
jimallman May 10, 2020
1f40554
Add confirmation message for web2py patches
jimallman May 12, 2020
9363857
Add unchanged source file from web2py v2.19.1
jimallman May 12, 2020
1d80ff6
Revive old hot fix to handle OAuth when proxied
jimallman May 12, 2020
0afbddb
Correct commit-history URL (still in original repo)
jimallman May 12, 2020
a5c2446
Revive another web2py patch
jimallman May 12, 2020
9484a1a
Remove third legacy patch (FIXED in recent web2py)
jimallman May 12, 2020
62fbf3e
Customize phylesystem-api config for read-only
jimallman May 12, 2020
b49eb7e
pip install redis as well
snacktavish May 18, 2020
d08aab9
Merge branch 'master' into migrate-oauth-to-github-app
jimallman May 19, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
*~
*.pem
deploy/janrain.key
deploy/GITHUB_CLIENT_SECRET
GITHUB_CLIENT_SECRET
GITHUB_APP_PRIVATE_KEY_PEM
deploy/setup/CONFIG
*.pyc
*gz
Expand Down
38 changes: 16 additions & 22 deletions deploy/as-admin.sh
Original file line number Diff line number Diff line change
Expand Up @@ -202,28 +202,6 @@ if [ `which virtualenv`x = x ]; then
apt_get_install python-virtualenv virtualenv
fi

# ---------- JAVA ----------
# N.b. Java 8 isn't available for woody, and is available for jessie
# only with the addition of unstable to /etc/apt/sources.list and a
# corresponding prioritization in /etc/apt/preferences (to prevent
# unstable from taking over the whole system).

if [ `which javac`x != x ] && ( javac -version 2>&1 | egrep -q 1.8 ); then
echo "Java 8 OK"
elif apt-cache policy openjdk-8-jre-headless | grep -q "Installed.*none"; then
apt_get_install openjdk-8-jre-headless
apt_get_install openjdk-8-jdk
sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
elif [ `which javac`x != x ] && ( javac -version 2>&1 | egrep -q 1.7 ); then
echo path is $PATH
echo "Java 7 OK"
elif [ `which javac`x != x ]; then
echo "** Possible wrong version of java"
else
apt_get_install openjdk-7-jre-headless
apt_get_install openjdk-7-jdk
fi

# ---------- MAVEN 3 ----------
if [ `which mvn`x = x ]; then
Expand All @@ -242,6 +220,22 @@ if [ ! -r /etc/ntp.conf ]; then
fi


# ---------- BACKUP EXISTING CONFIG FILES ---------

# Copy all possible Open Tree config files. A given target machine will have
# some but not all of these, so suppress "file not found" messages.
CONFIG_BACKUP_DIR="/home/admin/otol-backups.$(date +'%b-%d-%Y-%H%M%S')"
mkdir -p $CONFIG_BACKUP_DIR
cp --parents --preserve=all \
/etc/apache2/sites-available/opentree.conf \
/etc/apache2/sites-available/opentree-ssl.conf \
/etc/apache2/opentree-shared.conf \
/home/opentree/repo/opentree/curator/private/config \
/home/opentree/repo/opentree/webapp/private/config \
/home/phylesystemapi/repo/phylesystem-api/private/config \
$CONFIG_BACKUP_DIR 2>/dev/null


# ---------- APACHE VHOST ----------

# Set up apache so that web2py takes over the vhost
Expand Down
115 changes: 73 additions & 42 deletions deploy/push.sh
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ done
[ "x$CONFIGFILE" != x ] || err "No configuration file given (need -c {filename})"

# Configurable parameters
[ "x$CERTIFICATE_FILE" != x ] || CERTIFICATE_FILE=/etc/ssl/certs/opentree/STAR_opentreeoflife_org.pem
[ "x$CERTIFICATE_KEY_FILE" != x ] || CERTIFICATE_KEY_FILE=/etc/ssl/private/opentreeoflife.org.key
[ "x$CERTIFICATE_FILE" != x ] || CERTIFICATE_FILE=/etc/letsencrypt/live/opentreeoflife.org/fullchain.pem
[ "x$CERTIFICATE_KEY_FILE" != x ] || CERTIFICATE_KEY_FILE=/etc/letsencrypt/live/opentreeoflife.org/privkey.pem

# OPENTREE_HOST (the server being set up) must always be specified, e.g.
# OPENTREE_HOST=devapi.opentreeoflife.org
Expand Down Expand Up @@ -107,15 +107,17 @@ done

# Used by oauth
if [ "x$OPENTREE_PUBLIC_DOMAIN" = x ]; then
echo "Defaulting OPENTREE_PUBLIC_DOMAIN to $OPENTREE_HOST"
echo "Defaulting OPENTREE_PUBLIC_DOMAIN to $OPENTREE_HOST" || exit 1
OPENTREE_PUBLIC_DOMAIN=$OPENTREE_HOST
fi
# WEBAPP_BASE_URL is only needed for defaulting other things
if [ "x$WEBAPP_BASE_URL" = x ]; then
WEBAPP_BASE_URL=https://$OPENTREE_PUBLIC_DOMAIN
fi
[ "x$CURATION_GITHUB_APP_ID" != x ] || CURATION_GITHUB_APP_ID=ID_NOT_PROVIDED
[ "x$CURATION_GITHUB_CLIENT_ID" != x ] || CURATION_GITHUB_CLIENT_ID=ID_NOT_PROVIDED
[ "x$CURATION_GITHUB_REDIRECT_URI" != x ] || CURATION_GITHUB_REDIRECT_URI=$WEBAPP_BASE_URL/webapp/user/login
[ "x$TREEVIEW_GITHUB_APP_ID" != x ] || TREEVIEW_GITHUB_APP_ID=ID_NOT_PROVIDED
[ "x$TREEVIEW_GITHUB_CLIENT_ID" != x ] || TREEVIEW_GITHUB_CLIENT_ID=ID_NOT_PROVIDED
[ "x$TREEVIEW_GITHUB_REDIRECT_URI" != x ] || TREEVIEW_GITHUB_REDIRECT_URI=$WEBAPP_BASE_URL/curator/user/login

Expand Down Expand Up @@ -144,13 +146,18 @@ ASSH="ssh -i ${ADMIN_IDENTITY}"
# For unprivileged actions to server
OT_USER=$OPENTREE_USER

echo "host=$OPENTREE_HOST, admin=$OPENTREE_ADMIN, pem=$OPENTREE_IDENTITY, controller=$CONTROLLER"

echo "host=$OPENTREE_HOST, admin=$OPENTREE_ADMIN, pem=$OPENTREE_IDENTITY, controller=$CONTROLLER" || exit 1
installing_web2py=no
update_apache_config=yes
restart_apache=no

function process_arguments {
sync_system
docommand $*
if [ $installing_web2py = "yes" ]; then
# TODO: is there a uniform action here?
: # for now, do nothing
fi
if [ $restart_apache = "yes" ]; then
restart_apache
fi
Expand Down Expand Up @@ -185,10 +192,14 @@ function docommand {
;;
index | indexoti | index-db)
index_doc_store
;;
;;
apache)
restart_apache=yes
;;
# if used as a standalone command, don't change configuration!
if [ $OPENTREE_COMPONENTS = "apache" ]; then
update_apache_config=no
fi
;;
echo)
# Test ability to do remote commands inline...
${SSH} "$OT_USER@$OPENTREE_HOST" bash <<EOF
Expand All @@ -204,7 +215,7 @@ EOF
err "Unrecognized command, or component not in OPENTREE_COMPONENTS: $command"
fi
# Default if not a recognized command: treat as component name
docomponent $command
docomponent $command || exit 1
esac
}

Expand All @@ -214,33 +225,36 @@ function docomponent {
component=$1
case $component in
opentree)
push_webapps
push_webapps || exit 1
installing_web2py=yes
restart_apache=yes
;;
phylesystem-api | api)
# 'api' option is for backward compatibility
push_phylesystem_api
push_phylesystem_api || exit 1
installing_web2py=yes
restart_apache=yes
;;
oti)
push_neo4j oti
push_neo4j oti || exit 1
;;
treemachine)
push_neo4j treemachine
push_neo4j treemachine || exit 1
# restart apache to clear the RAM cache (stale results)
restart_apache=yes
;;
taxomachine)
push_neo4j taxomachine
push_neo4j taxomachine || exit 1
# restart apache to clear the RAM cache (stale results)
restart_apache=yes
;;
smasher)
push_smasher
push_smasher || exit 1
;;
otcetera)
push_otcetera
;;
push_otcetera || exit 1
restart_apache=yes
;;
*)
echo "Unrecognized component: $component"
;;
Expand Down Expand Up @@ -280,7 +294,7 @@ function restart_apache {
if [ $DRYRUN = "yes" ]; then echo "[restarting apache]"; return; fi
scp -p -i "${ADMIN_IDENTITY}" restart-apache.sh "$ADMIN@$OPENTREE_HOST":
${ASSH} "$ADMIN@$OPENTREE_HOST" bash restart-apache.sh "$OT_USER" "$OPENTREE_HOST" \
"$CERTIFICATE_FILE" "$CERTIFICATE_KEY_FILE" "$OTINDEX_BASE_URL"
"$CERTIFICATE_FILE" "$CERTIFICATE_KEY_FILE" "$OTINDEX_BASE_URL" "$PHYLAPI_BASE_URL" "$installing_web2py"
}

# Commands
Expand All @@ -294,26 +308,28 @@ function push_neo4j_db {
err "Usage: $0 -c {configfile} push-db {tarball} {application}"
fi
HEREBALL=downloads/$APP.db.tgz
time rsync -vax -e "${SSH}" $TARBALL "$OT_USER@$OPENTREE_HOST":$HEREBALL
install_neo4j_db $HEREBALL $APP
time rsync -vax -e "${SSH}" $TARBALL "$OT_USER@$OPENTREE_HOST":$HEREBALL || exit 1
install_neo4j_db $HEREBALL $APP || exit 1
}

function install_neo4j_db {
HEREBALL=$1
APP=$2
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-db.sh $HEREBALL $APP $CONTROLLER
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-db.sh $HEREBALL $APP $CONTROLLER || exit 1
}

function index_doc_store {
if [ $DRYRUN = "yes" ]; then echo "[index_doc_store]"; return; fi
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/index-doc-store.sh $OPENTREE_API_BASE_URL $CONTROLLER
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/index-doc-store.sh $OPENTREE_API_BASE_URL $CONTROLLER || exit 1
}

# Component installation

function push_webapps {

if [ $CURATION_GITHUB_APP_ID = ID_NOT_PROVIDED ]; then echo "WARNING: Missing GitHub app ID! Curation feedback will be disabled."; fi
if [ $CURATION_GITHUB_CLIENT_ID = ID_NOT_PROVIDED ]; then echo "WARNING: Missing GitHub client ID! Curation UI will be disabled."; fi
if [ $TREEVIEW_GITHUB_APP_ID = ID_NOT_PROVIDED ]; then echo "WARNING: Missing GitHub app ID! Tree-view feedback will be disabled."; fi
if [ $TREEVIEW_GITHUB_CLIENT_ID = ID_NOT_PROVIDED ]; then echo "WARNING: Missing GitHub client ID! Tree-view feedback will be disabled."; fi
# We could default these (used by webapps), but for some reason we don't
[ "x$TREEMACHINE_BASE_URL" != x ] || err "TREEMACHINE_BASE_URL not configured"
Expand All @@ -322,24 +338,36 @@ function push_webapps {
[ "x$CONFLICT_BASE_URL" != x ] || err "CONFLICT_BASE_URL not configured"

if [ $DRYRUN = "yes" ]; then echo "[opentree]"; return; fi
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-web2py-apps.sh "$OPENTREE_HOST" "${OPENTREE_PUBLIC_DOMAIN}" "${OPENTREE_DEFAULT_APPLICATION}" "$CONTROLLER" "${CURATION_GITHUB_CLIENT_ID}" "${CURATION_GITHUB_REDIRECT_URI}" "${TREEVIEW_GITHUB_CLIENT_ID}" "${TREEVIEW_GITHUB_REDIRECT_URI}" "${TREEMACHINE_BASE_URL}" "${TAXOMACHINE_BASE_URL}" "${OTI_BASE_URL}" "${OPENTREE_API_BASE_URL}" "${COLLECTIONS_API_BASE_URL}" "${AMENDMENTS_API_BASE_URL}" "${FAVORITES_API_BASE_URL}" "${CONFLICT_API_BASE_URL}"
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-web2py-apps.sh "$OPENTREE_HOST" "${OPENTREE_PUBLIC_DOMAIN}" "${OPENTREE_DEFAULT_APPLICATION}" "$CONTROLLER" "${CURATION_GITHUB_APP_ID}" "${CURATION_GITHUB_CLIENT_ID}" "${CURATION_GITHUB_REDIRECT_URI}" "${CURATION_GITHUB_INSTALLATION_ID}" "${TREEVIEW_GITHUB_APP_ID}" "${TREEVIEW_GITHUB_CLIENT_ID}" "${TREEVIEW_GITHUB_REDIRECT_URI}" "${TREEVIEW_GITHUB_INSTALLATION_ID}" "${TREEMACHINE_BASE_URL}" "${TAXOMACHINE_BASE_URL}" "${OTI_BASE_URL}" "${OPENTREE_API_BASE_URL}" "${COLLECTIONS_API_BASE_URL}" "${AMENDMENTS_API_BASE_URL}" "${FAVORITES_API_BASE_URL}" "${CONFLICT_API_BASE_URL}"
# place the files with secret GitHub API keys for curator and webapp (tree browser feedback) apps
# N.B. This includes the final domain name, since we'll need different keys for dev.opentreeoflife.org, www.opentreeoflife.org, etc.
keyfile=${OPENTREE_SECRETS}/treeview-GITHUB_CLIENT_SECRET-$OPENTREE_PUBLIC_DOMAIN
if [ -r $keyfile ]; then
rsync -pr -e "${SSH}" $keyfile "$OT_USER@$OPENTREE_HOST":repo/opentree/webapp/private/GITHUB_CLIENT_SECRET
rsync -pr -e "${SSH}" $keyfile "$OT_USER@$OPENTREE_HOST":repo/opentree/webapp/private/GITHUB_CLIENT_SECRET || exit 1
else
echo "** Cannot find GITHUB_CLIENT_SECRET file $keyfile"
echo "** Cannot find GITHUB_CLIENT_SECRET file $keyfile" || exit 1
fi
keyfile=${OPENTREE_SECRETS}/treeview-GITHUB_APP_PRIVATE_KEY_PEM-$OPENTREE_PUBLIC_DOMAIN
if [ -r $keyfile ]; then
rsync -pr -e "${SSH}" $keyfile "$OT_USER@$OPENTREE_HOST":repo/opentree/webapp/private/GITHUB_APP_PRIVATE_KEY_PEM
else
echo "** Cannot find GITHUB_APP_PRIVATE_KEY_PEM file $keyfile"
fi
keyfile=${OPENTREE_SECRETS}/curation-GITHUB_CLIENT_SECRET-$OPENTREE_PUBLIC_DOMAIN
if [ -r $keyfile ]; then
rsync -pr -e "${SSH}" $keyfile "$OT_USER@$OPENTREE_HOST":repo/opentree/curator/private/GITHUB_CLIENT_SECRET
rsync -pr -e "${SSH}" $keyfile "$OT_USER@$OPENTREE_HOST":repo/opentree/curator/private/GITHUB_CLIENT_SECRET || exit 1
else
echo "** Cannot find GITHUB_CLIENT_SECRET file $keyfile" || exit 1
fi
keyfile=${OPENTREE_SECRETS}/curation-GITHUB_APP_PRIVATE_KEY_PEM-$OPENTREE_PUBLIC_DOMAIN
if [ -r $keyfile ]; then
rsync -pr -e "${SSH}" $keyfile "$OT_USER@$OPENTREE_HOST":repo/opentree/curator/private/GITHUB_APP_PRIVATE_KEY_PEM
else
echo "** Cannot find GITHUB_CLIENT_SECRET file $keyfile"
echo "** Cannot find GITHUB_APP_PRIVATE_KEY_PEM file $keyfile"
fi

# we’re using the bot for “anonymous” comments in the synth-tree explorer
push_bot_identity
push_bot_identity || exit 1
}

# Utility for all the webapps.
Expand All @@ -349,11 +377,13 @@ function push_bot_identity {
# place an OAuth token for GitHub API by bot user 'opentreeapi'
tokenfile=${OPENTREE_SECRETS}/OPENTREEAPI_OAUTH_TOKEN
if [ -r $tokenfile ]; then
rsync -pr -e "${SSH}" $tokenfile "$OT_USER@$OPENTREE_HOST":.ssh/OPENTREEAPI_OAUTH_TOKEN
${SSH} "$OT_USER@$OPENTREE_HOST" chmod 600 .ssh/OPENTREEAPI_OAUTH_TOKEN
rsync -pr -e "${SSH}" $tokenfile "$OT_USER@$OPENTREE_HOST":.ssh/OPENTREEAPI_OAUTH_TOKEN || exit 1
${SSH} "$OT_USER@$OPENTREE_HOST" chmod 600 .ssh/OPENTREEAPI_OAUTH_TOKEN || exit 1
else
echo "** Cannot find OPENTREEAPI_OAUTH_TOKEN file $tokenfile"
echo "** Cannot find OPENTREEAPI_OAUTH_TOKEN file $tokenfile" || exit 1
fi


}

# Set up server's clone of phylesystem repo, and the web API
Expand All @@ -366,49 +396,50 @@ function push_phylesystem_api {
[ "x$AMENDMENTS_REPO" != "x" ] || err "AMENDMENTS_REPO not configured"
[ "x$FAVORITES_REPO" != "x" ] || err "FAVORITES_REPO not configured"
[ "x$OTI_BASE_URL" != "x" ] || err "OTI_BASE_URL not configured"
[ "x$READ_ONLY_MODE" != "x" ] || err "READ_ONLY_MODE not configured"
[ "x$OTINDEX_BASE_URL" != "x" ] || err "OTINDEX_BASE_URL not configured"

push_bot_identity
push_bot_identity || exit 1

# Place private key for GitHub access
if [ "x$OPENTREE_GH_IDENTITY" = "x" ]; then
echo "Warning: OPENTREE_GH_IDENTITY not specified"
echo "Warning: OPENTREE_GH_IDENTITY not specified" || exit 1
elif [ ! -r $OPENTREE_GH_IDENTITY ]; then
echo "Warning: $OPENTREE_GH_IDENTITY not found"
echo "Warning: $OPENTREE_GH_IDENTITY not found" || exit 1
else
rsync -p -e "${SSH}" "$OPENTREE_GH_IDENTITY" "$OT_USER@$OPENTREE_HOST":.ssh/opentree
${SSH} "$OT_USER@$OPENTREE_HOST" chmod 600 .ssh/opentree
rsync -p -e "${SSH}" "$OPENTREE_GH_IDENTITY" "$OT_USER@$OPENTREE_HOST":.ssh/opentree || exit 1
${SSH} "$OT_USER@$OPENTREE_HOST" chmod 600 .ssh/opentree || exit 1
fi

# Try to place an OAuth token for GitHub API by bot user 'opentreeapi'
tokenfile=${OPENTREE_SECRETS}/OPENTREEAPI_OAUTH_TOKEN
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit confused about what should be happening here. I should have the OPENTREE_OAUTH_TOKEN saved in .ssh/opentree/ on my local machine (https://github.com/OpenTreeOfLife/germinator/pull/155/files#diff-028ee22cd145bc1227616bfad2602bdeR90), and then it gets copied over? Is this how it should still work?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah - following conversation with Mark I believe we are using a keypair generated directly on phylsystemapi/devphylesystemapi for the pushes to phylesystem. So I think we don't need this bit.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if [ -r $tokenfile ]; then
rsync -p -e "${SSH}" $tokenfile "$OT_USER@$OPENTREE_HOST":.ssh/OPENTREEAPI_OAUTH_TOKEN
${SSH} "$OT_USER@$OPENTREE_HOST" chmod 600 .ssh/OPENTREEAPI_OAUTH_TOKEN
rsync -p -e "${SSH}" $tokenfile "$OT_USER@$OPENTREE_HOST":.ssh/OPENTREEAPI_OAUTH_TOKEN || exit 1
${SSH} "$OT_USER@$OPENTREE_HOST" chmod 600 .ssh/OPENTREEAPI_OAUTH_TOKEN || exit 1
else
echo "****************************\n OAuth token file (${tokenfile}) not found!\n Falling back to any existing token on the server, OR a prompt for manual creation of webhooks.\n****************************"
fi

${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-api.sh "$OPENTREE_HOST" \
$OPENTREE_DOCSTORE $COLLECTIONS_REPO $AMENDMENTS_REPO $FAVORITES_REPO $CONTROLLER $OTI_BASE_URL $OPENTREE_API_BASE_URL $COLLECTIONS_API_BASE_URL $AMENDMENTS_API_BASE_URL $FAVORITES_API_BASE_URL $OPENTREE_DEFAULT_APPLICATION $OTINDEX_BASE_URL
$OPENTREE_DOCSTORE $COLLECTIONS_REPO $AMENDMENTS_REPO $FAVORITES_REPO $CONTROLLER $OTI_BASE_URL $OPENTREE_API_BASE_URL $COLLECTIONS_API_BASE_URL $AMENDMENTS_API_BASE_URL $FAVORITES_API_BASE_URL $OPENTREE_DEFAULT_APPLICATION $OTINDEX_BASE_URL $READ_ONLY_MODE || exit 1
}

function push_neo4j {
APP=$1
if [ $DRYRUN = "yes" ]; then echo "[neo4j app: $APP]"; return; fi
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-neo4j-app.sh $CONTROLLER $APP $FORCE_COMPILE
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-neo4j-app.sh $CONTROLLER $APP $FORCE_COMPILE || exit 1
}

function push_smasher {
if [ $DRYRUN = "yes" ]; then echo "[push_smasher]"; return; fi
echo push_smasher: ${OPENTREE_WEBAPI_BASE_URL}
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-smasher.sh ${CONTROLLER} ${OPENTREE_WEBAPI_BASE_URL}
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-smasher.sh ${CONTROLLER} ${OPENTREE_WEBAPI_BASE_URL} || exit 1
}

function push_otcetera {
if [ $DRYRUN = "yes" ]; then echo "[push_otcetera]"; return; fi
echo push_otcetera:
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-otcetera.sh ${CONTROLLER} ${OPENTREE_WEBAPI_BASE_URL}
${SSH} "$OT_USER@$OPENTREE_HOST" ./setup/install-otcetera.sh ${CONTROLLER} ${OPENTREE_WEBAPI_BASE_URL} || exit 1
}

process_arguments $*
process_arguments $* || exit 1