Slight change to AMI versioning

This commit is contained in:
Patrick Wendell 2013-05-08 22:50:53 -07:00
parent f6c965a98b
commit 36c117a1f1

View file

@ -64,9 +64,9 @@ def parse_args():
help="Availability zone to launch instances in, or 'all' to spread " + help="Availability zone to launch instances in, or 'all' to spread " +
"slaves across multiple (an additional $0.01/Gb for bandwidth" + "slaves across multiple (an additional $0.01/Gb for bandwidth" +
"between zones applies)") "between zones applies)")
parser.add_option("-a", "--ami", default="0.7.0", parser.add_option("-a", "--ami", default="v0.7.0",
help="Amazon Machine Image ID to use, or 'latest' to use latest " + help="Amazon Machine Image ID to use, or 'vX.Y.Z' to use version " +
"available AMI (default: latest)") "X.Y.Z of Spark (default: v0.7.0)")
parser.add_option("-D", metavar="[ADDRESS:]PORT", dest="proxy_port", parser.add_option("-D", metavar="[ADDRESS:]PORT", dest="proxy_port",
help="Use SSH dynamic port forwarding to create a SOCKS proxy at " + help="Use SSH dynamic port forwarding to create a SOCKS proxy at " +
"the given local address (for use with login)") "the given local address (for use with login)")
@ -159,7 +159,7 @@ def is_active(instance):
# Attempt to resolve an appropriate AMI given the architecture and # Attempt to resolve an appropriate AMI given the architecture and
# region of the request. # region of the request.
def get_spark_ami(opts): def get_spark_ami(opts):
version_prefix = opts.ami version = opts.ami
instance_types = { instance_types = {
"m1.small": "pvm", "m1.small": "pvm",
"m1.medium": "pvm", "m1.medium": "pvm",
@ -186,13 +186,15 @@ def get_spark_ami(opts):
instance_type = "pvm" instance_type = "pvm"
print >> stderr,\ print >> stderr,\
"Don't recognize %s, assuming type is pvm" % opts.instance_type "Don't recognize %s, assuming type is pvm" % opts.instance_type
if version_prefix != "latest": if version != "v0.7.0":
print >> stderr, \ print >> stderr, \
"Don't know how to resolve AMI for version: %s" % version_prefix "Don't know how to resolve AMI for version: %s" % version
# TODO(pwendell) Once we have multiple Spark AMI versions, we should let
# people give a version flag here in place of just saying 'latest'.
version = version[1:]
parts = opts.region.split("-") parts = opts.region.split("-")
region = "-".join(parts[0], parts[1], parts[2][0]) # strip any avail. zone region = "-".join([parts[0], parts[1], parts[2][0]]) # strip any avail. zone
ami_path = "%s/%s/%s/%s" % (AMI_PREFIX, version_prefix, region, instance_type) ami_path = "%s/%s/%s/%s" % (AMI_PREFIX, version, region, instance_type)
try: try:
ami = urllib2.urlopen(ami_path).read().strip() ami = urllib2.urlopen(ami_path).read().strip()
print "Spark AMI: " + ami print "Spark AMI: " + ami
@ -252,8 +254,8 @@ def launch_cluster(conn, opts, cluster_name):
"group %s, %s or %s" % (master_group.name, slave_group.name, zoo_group.name)) "group %s, %s or %s" % (master_group.name, slave_group.name, zoo_group.name))
sys.exit(1) sys.exit(1)
# Figure out the latest AMI from our static URL # Figure out Spark AMI
if opts.ami == "latest": if opts.ami[0] == "v":
opts.ami = get_spark_ami(opts) opts.ami = get_spark_ami(opts)
print "Launching instances..." print "Launching instances..."