From b37670de8407880b2f7f89078a2ee496d68b6e23 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Mon, 23 Nov 2015 08:55:19 -0800 Subject: [PATCH] make DO backend a binary --- images/createImage | 34 ++++++------- ...gitalOceanFunctions.sh => digitalocean.sh} | 49 +++++++++++++++++++ 2 files changed, 66 insertions(+), 17 deletions(-) rename images/{digitalOceanFunctions.sh => digitalocean.sh} (88%) mode change 100644 => 100755 diff --git a/images/createImage b/images/createImage index b99f9d4b7..e31e4c8b0 100755 --- a/images/createImage +++ b/images/createImage @@ -8,7 +8,7 @@ assertNotEmpty() { readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly INSTALLER_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)" -readonly JSON="${INSTALLER_DIR}/node_modules/.bin/json" +export JSON="${INSTALLER_DIR}/node_modules/.bin/json" provider="digitalocean" installer_revision=$(git rev-parse HEAD) @@ -43,21 +43,21 @@ while true; do done if [[ "${provider}" == "digitalocean" ]]; then - # set DO token, picked up by digitalOceanFunctions.sh if [[ "${deploy_env}" == "staging" ]]; then assertNotEmpty DIGITAL_OCEAN_TOKEN_STAGING - readonly DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_STAGING}" + export DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_STAGING}" elif [[ "${deploy_env}" == "dev" ]]; then assertNotEmpty DIGITAL_OCEAN_TOKEN_DEV - readonly DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_DEV}" + export DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_DEV}" elif [[ "${deploy_env}" == "prod" ]]; then assertNotEmpty DIGITAL_OCEAN_TOKEN_PROD - readonly DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_PROD}" + export DIGITAL_OCEAN_TOKEN="${DIGITAL_OCEAN_TOKEN_PROD}" else echo "No such env ${deploy_env}." exit 1 fi - source "${SCRIPT_DIR}/digitalOceanFunctions.sh" + + vps="${SCRIPT_DIR}/digitalocean.sh" else echo "Unknown provider : ${provider}" exit 1 @@ -90,7 +90,7 @@ if [[ -z "${box_name}" ]]; then box_name="box-${deploy_env}-${pretty_revision}-${now}" # remove slashes # create a new server if no name given - caas_ssh_key_id=$(get_ssh_key_id "caas") + caas_ssh_key_id=$($vps get_ssh_key_id "caas") if [[ -z "${caas_ssh_key_id}" ]]; then echo "Could not query caas ssh key" exit 1 @@ -98,7 +98,7 @@ if [[ -z "${box_name}" ]]; then echo "Detected caas ssh key id: ${caas_ssh_key_id}" echo "Creating Server with name [${box_name}] at [${image_regions[0]}] with size [${box_size}]" - server_id=$(create_droplet ${caas_ssh_key_id} ${box_name} ${box_size} ${image_regions[0]}) + server_id=$($vps create_droplet ${caas_ssh_key_id} ${box_name} ${box_size} ${image_regions[0]}) if [[ -z "${server_id}" ]]; then echo "Failed to create server" exit 1 @@ -113,16 +113,16 @@ if [[ -z "${box_name}" ]]; then done echo "" else - server_id=$(get_droplet_id "${box_name}") + server_id=$($vps get_droplet_id "${box_name}") echo "Reusing server with id: ${server_id}" - power_on_droplet "${server_id}" + $vps power_on_droplet "${server_id}" fi # Query DO until we get an IP while true; do echo "Trying to get the server IP" - server_ip=$(get_droplet_ip "${server_id}") + server_ip=$($vps get_droplet_ip "${server_id}") if [[ "${server_ip}" != "" ]]; then echo "Server IP : [${server_ip}]" break @@ -167,18 +167,18 @@ echo "Waiting for 10 seconds for server to shutdown" sleep 30 echo "Powering off server" -power_off_droplet "${server_id}" +$vps power_off_droplet "${server_id}" snapshot_name="box-${deploy_env}-${pretty_revision}-${now}" echo "Snapshotting as ${snapshot_name}" -snapshot_droplet "${server_id}" "${snapshot_name}" +$vps snapshot_droplet "${server_id}" "${snapshot_name}" -image_id=$(get_image_id "${snapshot_name}") +image_id=$($vps get_image_id "${snapshot_name}") echo "Image id is ${image_id}" if [[ "${destroy_server}" == "yes" ]]; then echo "Destroying server" - destroy_droplet "${server_id}" + $vps destroy_droplet "${server_id}" else echo "Skipping server destroy" fi @@ -187,7 +187,7 @@ echo "Transferring image to other regions" xfer_events=() # skip the first region, as the image was created there for image_region in ${image_regions[@]:1}; do - xfer_event=$(transfer_image ${image_id} ${image_region}) + xfer_event=$($vps transfer_image ${image_id} ${image_region}) echo "Image transfer to ${image_region} initiated. Event id: ${xfer_event}" xfer_events+=("${xfer_event}") sleep 1 @@ -196,7 +196,7 @@ done echo "Image transfer initiated, but they will take some time to get transferred." for xfer_event in ${xfer_events[@]}; do - wait_for_image_event "${image_id}" "${xfer_event}" + $vps wait_for_image_event "${image_id}" "${xfer_event}" done echo "Done." diff --git a/images/digitalOceanFunctions.sh b/images/digitalocean.sh old mode 100644 new mode 100755 similarity index 88% rename from images/digitalOceanFunctions.sh rename to images/digitalocean.sh index 63fb18a9e..6499cccd4 --- a/images/digitalOceanFunctions.sh +++ b/images/digitalocean.sh @@ -159,3 +159,52 @@ function wait_for_image_event() { echo "" } +if [[ $# -lt 1 ]]; then + echo " " +fi + +case $1 in +get_ssh_key_id) + get_ssh_key_id "${@:2}" + ;; + +create_droplet) + create_droplet "${@:2}" + ;; + +get_droplet_id) + get_droplet_id "${@:2}" + ;; + +get_droplet_ip) + get_droplet_ip "${@:2}" + ;; + +power_on_droplet) + power_on_droplet "${@:2}" + ;; + +power_off_droplet) + power_off_droplet "${@:2}" + ;; + +snapshot_droplet) + snapshot_droplet "${@:2}" + ;; + +destroy_droplet) + destroy_droplet "${@:2}" + ;; + +wait_for_image_event) + wait_for_image_event "${@:2}" + ;; + +transfer_image) + transfer_image "${@:2}" + ;; + +*) + echo "Unknown command $1" + exit 1 +esac