#!/bin/sh
#
# wakame-ebs-mysql-slave-restore.sh <snapshot-id>
#
# description: gihyo.jp記事用Wakameスクリプト
# author: masahito@axsh.net
# see also: http://wakame.axsh.jp/
#

# MySQL Masterのsnapshot-idを第一引数として指定
ebs_master_snapshot_id=$1
[ -z "${ebs_master_snapshot_id}" ] && { echo "usage: $0 [snapshot-id]"; exit 1; }

## 共通設定
pwd=$(cd $(dirname $0) && pwd)
[ -f ${pwd}/_wakame-common.sh ] && . ${pwd}/_wakame-common.sh

## check phase
[ -b "${ebs_slave_dev}" ] && { echo "already attached: ${ebs_slave_dev}"; exit 1; }
df ${ebs_slave_dev} >/dev/null 2>&1 && { echo "already mounted: ${ebs_slave_dev}"; exit 1; }

# snapshot-id指定でAmazon EBS Volumeを生成
ebs_slave_volume=$(ec2-create-volume --snapshot ${ebs_master_snapshot_id} -z ${ec2_zone} | awk '{print $2}')
[ -z "${ebs_slave_volume}" ] && { echo "can't create volume"; exit 1; }
for i in 1 2 3 4 5 6 7 8 9 10; do
  echo -n ". "
  ec2-describe-snapshots | grep ${ebs_master_snapshot_id} | grep completed -q && break
  sleep 1
done
echo

# snapshotから生成したAmazon EBS VolumeをインスタンスIDとデバイス名を指定して取りつける
ec2-attach-volume -d ${ebs_slave_dev} -i ${ec2_instance_id} ${ebs_slave_volume}
for i in 1 2 3 4 5 6 7 8 9 10; do
  echo -n ". "
  sync
  [ -b "${ebs_slave_dev}" ] && break
  sleep 1
done

# datadirとしてマウントする
[ -z "${ebs_slave_mnt}" ] && { echo "please set ebs_slave_mnt"; exit 1; }
[ -d "${ebs_slave_mnt}" ] || mkdir ${ebs_slave_mnt}

mount ${ebs_slave_dev} ${ebs_slave_mnt} >/dev/null 2>&1
mount | grep ${ebs_slave_dev}
df ${ebs_slave_dev} >/dev/null 2>&1 || { echo "not available: ${ebs_slave_dev}"; exit 1; }
echo

# Amazon EBS Volumeの状態を確認
ec2-describe-volumes ${ebs_slave_volume}

exit 0

