From 3a21cd3eb9729dfb7f2afb56ff11990189895224 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Tue, 8 Jul 2014 10:24:49 -0700 Subject: [PATCH] ami: support HVM images in copy script --- oem/ami/copy_ami.sh | 51 ++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/oem/ami/copy_ami.sh b/oem/ami/copy_ami.sh index 067261eff9..d356dd12eb 100755 --- a/oem/ami/copy_ami.sh +++ b/oem/ami/copy_ami.sh @@ -72,6 +72,11 @@ if [[ -z "$VER" ]]; then exit 1 fi +zoneurl=http://instance-data/latest/meta-data/placement/availability-zone +zone=$(curl --fail -s $zoneurl) +region=$(echo $zone | sed 's/.$//') +export EC2_URL="http://ec2.${region}.amazonaws.com" + if [[ -z "$AMI" ]]; then AMI=$(ec2-describe-images -F name="CoreOS-$GROUP-$VER" | grep -m1 ^IMAGE \ | cut -f2) || true # Don't die silently, error messages are good @@ -79,6 +84,12 @@ if [[ -z "$AMI" ]]; then echo "$0: Cannot find an AMI for CoreOS $GROUP $VER" >&2 exit 1 fi + HVM=$(ec2-describe-images -F name="CoreOS-$GROUP-$VER-hvm" \ + | grep -m1 ^IMAGE | cut -f2) || true + if [[ -z "$HVM" ]]; then + echo "$0: Cannot find an AMI for CoreOS $GROUP $VER (HVM)" >&2 + exit 1 + fi else # check to make sure this is a valid image if ! ec2-describe-images -F image-id="$AMI" | grep -q "$AMI"; then @@ -95,19 +106,27 @@ fi name=$(sed -e "s%[^A-Za-z0-9()\\./_-]%_%g" <<< "CoreOS-$GROUP-$VER") description="CoreOS $GROUP $VER" -zoneurl=http://instance-data/latest/meta-data/placement/availability-zone -zone=$(curl --fail -s $zoneurl) -region=$(echo $zone | sed 's/.$//') - do_copy() { local r="$1" - local r_amiid=$(ec2-copy-image \ - --source-region "$region" \ - --source-ami-id "$AMI" \ - --name "$name" \ - --description "$description" \ - --region "$r" | + local virt_type="$2" + local r_amiid + if [[ "$virt_type" == "hvm" ]]; then + r_amiid=$(ec2-copy-image \ + --source-region "$region" \ + --source-ami-id "$HVM" \ + --name "${name}-hvm" \ + --description "$description (HVM)" \ + --region "$r" | + cut -f2) + else + r_amiid=$(ec2-copy-image \ + --source-region "$region" \ + --source-ami-id "$AMI" \ + --name "$name" \ + --description "$description (PV)" \ + --region "$r" | cut -f2) + fi echo "AMI copy to $r as $r_amiid in progress" local r_amidesc=$(ec2-describe-images "$r_amiid" --region="$r") @@ -115,10 +134,10 @@ do_copy() { sleep 30 r_amidesc=$(ec2-describe-images "$r_amiid" --region="$r") done - echo "AMI copy to $r as $r_amiid in complete" + echo "AMI $virt_type copy to $r as $r_amiid in complete" local r_snapshotid=$(echo "$r_amidesc" | \ - grep '^BLOCKDEVICEMAPPING.*/dev/sda' | cut -f5) + grep '^BLOCKDEVICEMAPPING.*/dev/xvda' | cut -f5) echo "Sharing snapshot $r_snapshotid in $r with Amazon" ec2-modify-snapshot-attribute "$r_snapshotid" \ -c --add 679593333241 --region "$r" @@ -130,8 +149,12 @@ do_copy() { for r in "${REGIONS[@]}" do [ "${r}" == "${region}" ] && continue - echo "Starting copy of $AMI from $region to $r" - do_copy "$r" & + echo "Starting copy of pv $AMI from $region to $r" + do_copy "$r" pv & + if [[ -n "$HVM" ]]; then + echo "Starting copy of hvm $AMI from $region to $r" + do_copy "$r" hvm & + fi done wait