#!/bin/sh
#
# wakame-ebs-mysql-master-create-volume.sh
#
# description: gihyo.jp記事用Wakameスクリプト
# author: masahito@axsh.net
# see also: http://wakame.axsh.jp/
#

## 共通設定
pwd=$(cd $(dirname $0) && pwd)
[ -f ${pwd}/_wakame-common.sh ] && . ${pwd}/_wakame-common.sh

## check phase
[ -b "${ebs_master_dev}" ] && { echo "already attached: ${ebs_master_dev}"; exit 1; }
df ${ebs_master_dev} >/dev/null 2>&1 && { echo "already mounted: ${ebs_master_dev}"; exit 1; }

# Amazon EBS Volumeを生成
[ -z "${ebs_master_size}" ] && { echo "plese set ebs_master_size"; exit 1; }
echo "$ ec2-create-volume -z ${ec2_zone} -s ${ebs_master_size}"
ebs_master_volume=$(ec2-create-volume -z ${ec2_zone} -s ${ebs_master_size} | awk '{print $2}')
sleep 1

[ -z "${ebs_master_volume}" ] && { echo "can't get ebs_master_volume"; exit 1; }
echo ebs_master_volume:${ebs_master_volume}
echo

# 生成したAmazon EBS Volumeをデバイス名指定でattachする
[ -z "${ebs_master_dev}" ] && { echo "please set ebs_master_dev"; exit 1; }
[ -z "${ebs_master_fstype}" ] && { echo "please set ebs_master_fstype"; exit 1; }
mount | grep -q ${ebs_master_dev} && { echo "not mounted: ${ebs_master_dev}"; exit 1; }
echo "$ ec2-attach-volume -d ${ebs_master_dev} -i ${ec2_instance_id} ${ebs_master_volume}"
ec2-attach-volume -d ${ebs_master_dev} -i ${ec2_instance_id} ${ebs_master_volume}
echo

# attach後、数秒間は準備ステータスなので適度にsleepを入れる
for i in 1 2 3 4 5 6 7 8 9 10; do
  echo -n ". "
  sync
  [ -b "${ebs_master_dev}" ] && break
  sleep 1
done
echo
[ -b "${ebs_master_dev}" ] || { echo "not available: ${ebs_master_dev}"; exit 1; }

# Amazon EBS Volume上にファイルシステムを生成
echo "$ yes | mkfs -t ${ebs_master_fstype} ${ebs_master_dev} >/dev/null 2>&1"
yes | mkfs -t ${ebs_master_fstype} ${ebs_master_dev} >/dev/null 2>&1
sync
sync
sync
sleep 1
echo

# MySQL Master用datadirとしてマウントする
[ -z "${ebs_master_mnt}" ] && { echo "please set ebs_master_mnt"; exit 1; }
[ -d "${ebs_master_mnt}" ] || mkdir ${ebs_master_mnt}

mount ${ebs_master_dev} ${ebs_master_mnt} >/dev/null 2>&1
mount | grep ${ebs_master_dev}
df ${ebs_master_dev} >/dev/null 2>&1 || { echo "not available: ${ebs_master_dev}"; exit 1; }
echo

exit 0

