cloudster 2.14.0 → 2.14.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.14.0
1
+ 2.14.1
data/cloudster.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "cloudster"
8
- s.version = "2.14.0"
8
+ s.version = "2.14.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Emil Soman"]
12
- s.date = "2012-12-27"
12
+ s.date = "2012-12-28"
13
13
  s.description = "Cloudster is a Ruby gem that was born to cut the learning curve involved \n in writing your own CloudFormation templates. If you don't know what a CloudFormation template is, \n but know about the AWS Cloud offerings, you can still use cloudster to provision your stack. \n Still in infancy , cloudster can create a very basic stack like a breeze. All kinds of contribution welcome !"
14
14
  s.email = "emil.soman@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -401,6 +401,33 @@ module Cloudster
401
401
  return ec2.describe_security_groups.body["securityGroupInfo"] rescue []
402
402
  end
403
403
 
404
+ # Returns true if S3 bucket name is available, else returns false
405
+ #
406
+ # ==== Examples
407
+ # cloud = Cloudster::Cloud.new(
408
+ # :access_key_id => 'aws_access_key_id',
409
+ # :secret_access_key => 'aws_secret_access_key',
410
+ # :region => 'us-east-1'
411
+ # )
412
+ # cloud.is_s3_bucket_name_available?('test-bucket-name')
413
+ #
414
+ # ==== Parameter
415
+ # * String containing the bucket name
416
+ #
417
+ # ==== Returns
418
+ # * true - If bucket name is available
419
+ # * false - If bucket name is not available
420
+ def is_s3_bucket_name_available?(bucket_name)
421
+ s3 = Fog::Storage::AWS.new(:aws_access_key_id => @access_key_id, :aws_secret_access_key => @secret_access_key)
422
+ begin
423
+ response = s3.get_bucket(bucket_name)
424
+ rescue Exception => e
425
+ response = e.response
426
+ end
427
+ not_found_status = 404
428
+ return response.status == not_found_status
429
+ end
430
+
404
431
  private
405
432
 
406
433
  #Returns a hash {<logical_resource_id> => <physical_resource_id>}
data/spec/cloud_spec.rb CHANGED
@@ -126,4 +126,37 @@ describe Cloudster::Cloud do
126
126
  cloud.delete(:stack_name => 'stack_name')
127
127
  end
128
128
  end
129
+
130
+ describe "#is_s3_bucket_name_available?" do
131
+ it "should return true if bucket is available" do
132
+ cloud = Cloudster::Cloud.new(:access_key_id => 'test', :secret_access_key => 'test')
133
+ response = double('Response')
134
+ response.stub(:status).and_return(404)
135
+ s3 = double('S3')
136
+ s3.should_receive(:get_bucket).and_raise(Excon::Errors.status_error({:expects => 200}, response))
137
+ Fog::Storage::AWS.should_receive(:new).and_return(s3)
138
+ cloud.is_s3_bucket_name_available?('test-bucket-name').should be_true
139
+ end
140
+
141
+ it "should return false if bucket access is forbidden" do
142
+ cloud = Cloudster::Cloud.new(:access_key_id => 'test', :secret_access_key => 'test')
143
+ response = double('Response')
144
+ response.stub(:status).and_return(403)
145
+ s3 = double('S3')
146
+ s3.should_receive(:get_bucket).and_raise(Excon::Errors.status_error({:expects => 200}, response))
147
+ Fog::Storage::AWS.should_receive(:new).and_return(s3)
148
+ cloud.is_s3_bucket_name_available?('test-bucket-name').should be_false
149
+ end
150
+
151
+ it "should return false if bucket is already owned by user" do
152
+ cloud = Cloudster::Cloud.new(:access_key_id => 'test', :secret_access_key => 'test')
153
+ response = double('Response')
154
+ response.stub(:status).and_return(200)
155
+ s3 = double('S3')
156
+ s3.should_receive(:get_bucket).and_return response
157
+ Fog::Storage::AWS.should_receive(:new).and_return(s3)
158
+ cloud.is_s3_bucket_name_available?('test-bucket-name').should be_false
159
+ end
160
+ end
161
+
129
162
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudster
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.14.0
4
+ version: 2.14.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-27 00:00:00.000000000 Z
12
+ date: 2012-12-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
@@ -160,7 +160,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
160
  version: '0'
161
161
  segments:
162
162
  - 0
163
- hash: 667254191
163
+ hash: 524787187
164
164
  required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  none: false
166
166
  requirements: