on init, connect to AWS and check for the AS group

This commit is contained in:
Anuj Biyani 2013-05-31 13:08:23 -07:00
parent 2bdaca25bb
commit 4f466e1a19
5 changed files with 59 additions and 3 deletions

View File

@ -25,3 +25,6 @@ if opts[:aws_access_key].nil? || opts[:aws_secret_key].nil?
opts[:aws_access_key] = ENV['AWS_ACCESS_KEY'] opts[:aws_access_key] = ENV['AWS_ACCESS_KEY']
opts[:aws_secret_key] = ENV['AWS_SECRET_KEY'] opts[:aws_secret_key] = ENV['AWS_SECRET_KEY']
end end
require 'aws-missing-tools'
AwsHaRelease.new(opts)

View File

@ -1 +1,6 @@
require 'aruba/cucumber' require 'aruba/cucumber'
require 'aws-sdk'
Before do
AWS.stub!
end

View File

@ -1,2 +1,12 @@
class AwsHaRelease class AwsHaRelease
def initialize(opts)
AWS.config(access_key_id: opts[:aws_access_key], secret_access_key: opts[:aws_secret_key], region: opts[:region])
@as = AWS::AutoScaling.new
@group = @as.groups[opts[:as_group_name]]
if @group.nil?
raise ArgumentError, "The Auto Scaling Group named #{opts[:as_group_name]} does not exist in #{opts[:region]}."
end
end
end end

View File

@ -10,13 +10,25 @@ describe 'aws-ha-release' do
} }
end end
let(:as) { AWS::FakeAutoScaling.new }
before do before do
AWS.stub(:config) AWS.stub(:config)
AWS::AutoScaling.stub(:new).and_return(AWS::FakeAutoScaling.new) AWS::AutoScaling.stub(:new).and_return(as)
end end
describe '#initialize' do describe '#initialize' do
it 'initializes the AWS connection' it 'initializes the AWS connection' do
it 'ensures the as group exists' as.groups.create 'test_group'
AWS.should_receive(:config).with(access_key_id: 'testaccesskey', secret_access_key: 'testsecretkey', region: 'test-region')
AwsHaRelease.new(opts)
end
it 'ensures the as group exists' do
lambda {
AwsHaRelease.new(opts.merge!(as_group_name: 'fake_group'))
}.should raise_error
end
end end
end end

View File

@ -2,5 +2,31 @@ module AWS
class FakeAutoScaling class FakeAutoScaling
def initialize def initialize
end end
def groups
@groups ||= GroupCollection.new
end
class GroupCollection
def initialize
@groups = {}
end
def [](name)
@groups[name]
end
def create(name, options = {})
@groups[name] = Group.new name
end
end
class Group
attr_reader :name
def initialize(name)
@name = name
end
end
end end
end end