From 3d39f347c2e01d1933400a29634e6eeb052ac01e Mon Sep 17 00:00:00 2001 From: Nick Foti Date: Fri, 20 Nov 2015 13:47:58 -0800 Subject: [PATCH] Default to instances in correct zone when creating and resizing EBS volumens. --- starcluster/commands/createvolume.py | 4 ++++ starcluster/commands/resizevolume.py | 5 +++++ starcluster/static.py | 10 +++++++--- starcluster/templates/config.py | 6 +++--- starcluster/volume.py | 4 ++-- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/starcluster/commands/createvolume.py b/starcluster/commands/createvolume.py index b8d754db2..7a3329f72 100644 --- a/starcluster/commands/createvolume.py +++ b/starcluster/commands/createvolume.py @@ -16,6 +16,7 @@ # along with StarCluster. If not, see . import os +import re from starcluster import node from starcluster import volume @@ -141,6 +142,9 @@ def execute(self, args): kwargs = self.specified_options_dict kwargs.update(dict(keypair=keypair, key_location=key_location, host_instance=host_instance)) + if 'image_id' not in kwargs.keys(): + zone_short = re.match(".+-.+-[1-9]+", zone).group() + kwargs['image_id'] = static.BASE_AMI_64[zone_short] vc = volume.VolumeCreator(self.ec2, **kwargs) if host_instance: vc._validate_host_instance(host_instance, zone) diff --git a/starcluster/commands/resizevolume.py b/starcluster/commands/resizevolume.py index b3aa75a93..f8b41439b 100644 --- a/starcluster/commands/resizevolume.py +++ b/starcluster/commands/resizevolume.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with StarCluster. If not, see . +import re + from starcluster import node from starcluster import volume from starcluster import static @@ -96,6 +98,9 @@ def execute(self, args): kwargs = self.specified_options_dict kwargs.update(dict(keypair=keypair, key_location=key_location, host_instance=host_instance)) + if 'image_id' not in kwargs.keys(): + zone_short = re.match(".+-.+-[1-9]+", zone).group() + kwargs['image_id'] = static.BASE_AMI_64[zone_short] vc = volume.VolumeCreator(self.ec2, **kwargs) if host_instance: vc._validate_host_instance(host_instance, zone) diff --git a/starcluster/static.py b/starcluster/static.py index 554565fce..53c5ecc6f 100644 --- a/starcluster/static.py +++ b/starcluster/static.py @@ -81,9 +81,13 @@ def create_sc_config_dirs(): CRASH_FILE = os.path.join(STARCLUSTER_LOG_DIR, 'crash-report-%d.txt' % PID) # StarCluster BASE AMIs (us-east-1) -BASE_AMI_32 = "ami-9bf9c9f2" -BASE_AMI_64 = "ami-3393a45a" -BASE_AMI_HVM = "ami-6b211202" +BASE_AMI_32 = {'us-east-1': "ami-9bf9c9f2", 'us-west-1': "ami-52112317", + 'us-west-2': "ami-b2badb82"} +BASE_AMI_64 = {'us-east-1': "ami-3393a45a", 'us-west-1': "ami-56172513", + 'us-west-2': "ami-04bedf34"} +BASE_AMI_HVM = {'us-east-1': "ami-6b211202", 'us-west-1': "ami-06172543", + 'us-west-2': "ami-80bedfb0"} + SECURITY_GROUP_PREFIX = "@sc-" SECURITY_GROUP_TEMPLATE = SECURITY_GROUP_PREFIX + "%s" diff --git a/starcluster/templates/config.py b/starcluster/templates/config.py index 885d741c3..8490a496d 100644 --- a/starcluster/templates/config.py +++ b/starcluster/templates/config.py @@ -349,9 +349,9 @@ # [plugin xvfb] # SETUP_CLASS = starcluster.plugins.xvfb.XvfbSetup """ % { - 'x86_ami': static.BASE_AMI_32, - 'x86_64_ami': static.BASE_AMI_64, - 'hvm_ami': static.BASE_AMI_HVM, + 'x86_ami': static.BASE_AMI_32['us-east-1'], + 'x86_64_ami': static.BASE_AMI_64['us-east-1'], + 'hvm_ami': static.BASE_AMI_HVM['us-east-1'], 'instance_types': ', '.join(static.INSTANCE_TYPES.keys()), 'shells': ', '.join(static.AVAILABLE_SHELLS.keys()), } diff --git a/starcluster/volume.py b/starcluster/volume.py index d0fa67380..8926ec95d 100644 --- a/starcluster/volume.py +++ b/starcluster/volume.py @@ -43,7 +43,7 @@ class VolumeCreator(cluster.Cluster): """ def __init__(self, ec2_conn, spot_bid=None, keypair=None, key_location=None, host_instance=None, device='/dev/sdz', - image_id=static.BASE_AMI_32, instance_type="t1.micro", + image_id=static.BASE_AMI_32['us-east-1'], instance_type="t1.micro", shutdown_instance=False, detach_vol=False, mkfs_cmd='mkfs.ext3 -F', resizefs_cmd='resize2fs', **kwargs): self._host_instance = host_instance @@ -51,7 +51,7 @@ def __init__(self, ec2_conn, spot_bid=None, keypair=None, self._volume = None self._aws_block_device = device or '/dev/sdz' self._real_device = None - self._image_id = image_id or static.BASE_AMI_32 + self._image_id = image_id or static.BASE_AMI_32['us-east-1'] self._instance_type = instance_type or 'm1.small' self._shutdown = shutdown_instance self._detach_vol = detach_vol