lib/builderator/util.rb in builderator-2.0.3 vs lib/builderator/util.rb in builderator-2.0.4

- old
+ new

@@ -87,11 +87,13 @@ if group_id.nil? puts "Not removing security group" return end ec2 = ec2(region) - resp = ec2.delete_security_group(group_id: group_id) + Retryable.retryable(:sleep => lambda { |n| 4**n }, :tries => 4, :on => [Aws::EC2::Errors::ServiceError, Aws::EC2::Errors::InternalError]) do |retries, _| + resp = ec2.delete_security_group(group_id: group_id) + end puts "Deleted SecurityGroup #{group_id}" end def get_security_group_id(region = Config.aws.region) group_id = nil @@ -106,23 +108,25 @@ external_ip = open('http://checkip.amazonaws.com').read.strip cidr_ip = external_ip + '/32' # Create a security group with microsecond timestamp (to avoid collisions when using seconds) ts_usec = (Time.now.to_f*1000000).to_i - resp = ec2.create_security_group(group_name: "BuilderatorSecurityGroupSSHOnly-#{ts_usec}", - description: "Created by Builderator at #{Time.now}") - group_id = resp[:group_id] + Retryable.retryable(:sleep => lambda { |n| 4**n }, :tries => 4, :on => [Aws::EC2::Errors::ServiceError, Aws::EC2::Errors::InternalError]) do |retries, _| + resp = ec2.create_security_group(group_name: "BuilderatorSecurityGroupSSHOnly-#{ts_usec}", + description: "Created by Builderator at #{Time.now}") + group_id = resp[:group_id] - resp = ec2.describe_security_groups(group_ids: [group_id]) - groups = resp[:security_groups] - group = groups.first + resp = ec2.describe_security_groups(group_ids: [group_id]) + groups = resp[:security_groups] + group = groups.first - # Ensure the group_id has the right permissions - resp = ec2.authorize_security_group_ingress(group_id: group_id, - ip_protocol: 'tcp', - from_port: 22, - to_port: 22, - cidr_ip: cidr_ip) + # Ensure the group_id has the right permissions + resp = ec2.authorize_security_group_ingress(group_id: group_id, + ip_protocol: 'tcp', + from_port: 22, + to_port: 22, + cidr_ip: cidr_ip) + end puts "Created SecurityGroup #{group_id}" group_id end private