aboutsummaryrefslogtreecommitdiff
path: root/ec2
diff options
context:
space:
mode:
authorPeter Sankauskas <peter@admobius.com>2012-11-19 14:21:16 -0800
committerPeter Sankauskas <peter@admobius.com>2012-11-19 14:21:16 -0800
commitdc2fb3c4b69cd2c5b6a11a08f642d72330b294d4 (patch)
tree3e6bc89e74b89883151ee848743f33d5b947ff14 /ec2
parent20a1058dd53222d1453087e28c1a90a723974c72 (diff)
downloadspark-dc2fb3c4b69cd2c5b6a11a08f642d72330b294d4.tar.gz
spark-dc2fb3c4b69cd2c5b6a11a08f642d72330b294d4.tar.bz2
spark-dc2fb3c4b69cd2c5b6a11a08f642d72330b294d4.zip
Allow Boto to use the other config options it supports, and gracefully
handling Boto connection exceptions (like AuthFailure)
Diffstat (limited to 'ec2')
-rwxr-xr-xec2/spark_ec2.py31
1 files changed, 20 insertions, 11 deletions
diff --git a/ec2/spark_ec2.py b/ec2/spark_ec2.py
index 17276db6e5..05c06d32bf 100755
--- a/ec2/spark_ec2.py
+++ b/ec2/spark_ec2.py
@@ -19,7 +19,6 @@
from __future__ import with_statement
-import boto
import logging
import os
import random
@@ -32,7 +31,7 @@ import urllib2
from optparse import OptionParser
from sys import stderr
from boto.ec2.blockdevicemapping import BlockDeviceMapping, EBSBlockDeviceType
-
+from boto import ec2
# A static URL from which to figure out the latest Mesos EC2 AMI
LATEST_AMI_URL = "https://s3.amazonaws.com/mesos-images/ids/latest-spark-0.6"
@@ -97,14 +96,20 @@ def parse_args():
if opts.cluster_type not in ["mesos", "standalone"] and action == "launch":
print >> stderr, ("ERROR: Invalid cluster type: " + opts.cluster_type)
sys.exit(1)
- if os.getenv('AWS_ACCESS_KEY_ID') == None:
- print >> stderr, ("ERROR: The environment variable AWS_ACCESS_KEY_ID " +
- "must be set")
- sys.exit(1)
- if os.getenv('AWS_SECRET_ACCESS_KEY') == None:
- print >> stderr, ("ERROR: The environment variable AWS_SECRET_ACCESS_KEY " +
- "must be set")
- sys.exit(1)
+
+ # Boto config check
+ # http://boto.cloudhackers.com/en/latest/boto_config_tut.html
+ home_dir = os.getenv('HOME')
+ if home_dir == None or not os.path.isfile(home_dir + '/.boto'):
+ if not os.path.isfile('/etc/boto.cfg'):
+ if os.getenv('AWS_ACCESS_KEY_ID') == None:
+ print >> stderr, ("ERROR: The environment variable AWS_ACCESS_KEY_ID " +
+ "must be set")
+ sys.exit(1)
+ if os.getenv('AWS_SECRET_ACCESS_KEY') == None:
+ print >> stderr, ("ERROR: The environment variable AWS_SECRET_ACCESS_KEY " +
+ "must be set")
+ sys.exit(1)
return (opts, action, cluster_name)
@@ -476,7 +481,11 @@ def ssh(host, opts, command):
def main():
(opts, action, cluster_name) = parse_args()
- conn = boto.ec2.connect_to_region(opts.region)
+ try:
+ conn = ec2.connect_to_region(opts.region)
+ except Exception as e:
+ print >> stderr, (e)
+ sys.exit(1)
# Select an AZ at random if it was not specified.
if opts.zone == "":