cloudster 2.19.6 → 2.19.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 714fdfb934ab6e43b39832bcb3b280415f208562
4
+ data.tar.gz: a8b009d410769dcbff93ffda190ad2851bcf7622
5
+ SHA512:
6
+ metadata.gz: d441d0b8cee377c24ab15f4aff6ad048b123820a6e7e7be49f81387007f4aecb812dc29ff2f51aa7f8e61d2967cae8edd6fc34f315a77aa2bd7cfbc08c1fdc76
7
+ data.tar.gz: c1c4f004ff2c2606fbd9b08b73f0944e1bea0288ba6dc79a3d8336e2a889cd22486b8e24debae9d7dec3131609b3bc400bd27df29539fef0e4548169d23789e8
@@ -4,4 +4,5 @@ before_install:
4
4
  rvm:
5
5
  - 1.9.3
6
6
  - 1.9.2
7
+ - 2.0.0
7
8
  - ruby-head
data/Gemfile CHANGED
@@ -5,11 +5,15 @@ source "http://rubygems.org"
5
5
 
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
- gem "fog"
8
+ gem "fog", "1.10.0"
9
9
  gem "json", "~>1.7.7"
10
10
  group :development do
11
- gem "rspec"
12
11
  gem "rdoc"
13
12
  gem "bundler"
14
- gem "jeweler", "~> 1.8.4"
13
+ gem "jeweler", "~> 1.8.7"
14
+ end
15
+
16
+ group :test do
17
+ gem "rspec"
18
+ gem 'coveralls', '>=0.5.7', :require => false
15
19
  end
@@ -1,76 +1,97 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- builder (3.1.4)
5
- diff-lcs (1.1.3)
6
- excon (0.16.10)
7
- faraday (0.8.4)
8
- multipart-post (~> 1.1)
9
- fog (1.9.0)
4
+ addressable (2.3.5)
5
+ builder (3.2.2)
6
+ colorize (0.5.8)
7
+ coveralls (0.6.7)
8
+ colorize
9
+ multi_json (~> 1.3)
10
+ rest-client
11
+ simplecov (>= 0.7)
12
+ thor
13
+ diff-lcs (1.2.4)
14
+ excon (0.25.3)
15
+ faraday (0.8.8)
16
+ multipart-post (~> 1.2.0)
17
+ fog (1.10.0)
10
18
  builder
11
19
  excon (~> 0.14)
12
20
  formatador (~> 0.2.0)
13
21
  mime-types
14
22
  multi_json (~> 1.0)
15
- net-scp (~> 1.0.4)
23
+ net-scp (~> 1.1)
16
24
  net-ssh (>= 2.1.3)
17
25
  nokogiri (~> 1.5.0)
18
26
  ruby-hmac
19
27
  formatador (0.2.4)
20
- git (1.2.5)
21
- github_api (0.8.1)
28
+ git (1.2.6)
29
+ github_api (0.10.1)
30
+ addressable
22
31
  faraday (~> 0.8.1)
23
- hashie (~> 1.2.0)
24
- multi_json (~> 1.3)
32
+ hashie (>= 1.2)
33
+ multi_json (~> 1.4)
25
34
  nokogiri (~> 1.5.2)
26
35
  oauth2
27
- hashie (1.2.0)
28
- highline (1.6.15)
36
+ hashie (2.0.5)
37
+ highline (1.6.19)
29
38
  httpauth (0.2.0)
30
- jeweler (1.8.4)
39
+ jeweler (1.8.7)
40
+ builder
31
41
  bundler (~> 1.0)
32
42
  git (>= 1.2.5)
33
- github_api (>= 0.8.1)
43
+ github_api (= 0.10.1)
34
44
  highline (>= 1.6.15)
45
+ nokogiri (= 1.5.10)
35
46
  rake
36
47
  rdoc
37
48
  json (1.7.7)
38
- jwt (0.1.5)
39
- multi_json (>= 1.0)
40
- mime-types (1.20.1)
41
- multi_json (1.5.0)
42
- multipart-post (1.1.5)
43
- net-scp (1.1)
49
+ jwt (0.1.8)
50
+ multi_json (>= 1.5)
51
+ mime-types (1.25)
52
+ multi_json (1.7.9)
53
+ multi_xml (0.5.5)
54
+ multipart-post (1.2.0)
55
+ net-scp (1.1.2)
44
56
  net-ssh (>= 2.6.5)
45
- net-ssh (2.6.5)
46
- nokogiri (1.5.6)
47
- oauth2 (0.8.0)
57
+ net-ssh (2.6.8)
58
+ nokogiri (1.5.10)
59
+ oauth2 (0.9.2)
48
60
  faraday (~> 0.8)
49
- httpauth (~> 0.1)
61
+ httpauth (~> 0.2)
50
62
  jwt (~> 0.1.4)
51
63
  multi_json (~> 1.0)
64
+ multi_xml (~> 0.5)
52
65
  rack (~> 1.2)
53
- rack (1.4.4)
54
- rake (10.0.3)
55
- rdoc (3.12.1)
66
+ rack (1.5.2)
67
+ rake (10.1.0)
68
+ rdoc (4.0.1)
56
69
  json (~> 1.4)
57
- rspec (2.12.0)
58
- rspec-core (~> 2.12.0)
59
- rspec-expectations (~> 2.12.0)
60
- rspec-mocks (~> 2.12.0)
61
- rspec-core (2.12.2)
62
- rspec-expectations (2.12.1)
63
- diff-lcs (~> 1.1.3)
64
- rspec-mocks (2.12.2)
70
+ rest-client (1.6.7)
71
+ mime-types (>= 1.16)
72
+ rspec (2.14.1)
73
+ rspec-core (~> 2.14.0)
74
+ rspec-expectations (~> 2.14.0)
75
+ rspec-mocks (~> 2.14.0)
76
+ rspec-core (2.14.5)
77
+ rspec-expectations (2.14.2)
78
+ diff-lcs (>= 1.1.3, < 2.0)
79
+ rspec-mocks (2.14.3)
65
80
  ruby-hmac (0.4.0)
81
+ simplecov (0.7.1)
82
+ multi_json (~> 1.0)
83
+ simplecov-html (~> 0.7.1)
84
+ simplecov-html (0.7.1)
85
+ thor (0.18.1)
66
86
 
67
87
  PLATFORMS
68
88
  ruby
69
89
 
70
90
  DEPENDENCIES
71
91
  bundler
72
- fog
73
- jeweler (~> 1.8.4)
92
+ coveralls (>= 0.5.7)
93
+ fog (= 1.10.0)
94
+ jeweler (~> 1.8.7)
74
95
  json (~> 1.7.7)
75
96
  rdoc
76
97
  rspec
data/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  # Cloudster
2
2
  ### The fastest way to provision your AWS stack !
3
+ [![Gem Version](https://badge.fury.io/rb/cloudster.png)](https://rubygems.org/gems/cloudster)
3
4
  [![Build Status](https://travis-ci.org/emilsoman/cloudster.png)](https://travis-ci.org/emilsoman/cloudster)
4
- [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/emilsoman/cloudster)
5
+ [![Coverage Status](https://coveralls.io/repos/emilsoman/cloudster/badge.png?branch=master)](https://coveralls.io/r/emilsoman/cloudster)
6
+ [![Code Climate](https://codeclimate.com/github/emilsoman/cloudster.png)](https://codeclimate.com/github/emilsoman/cloudster)
5
7
  [![Dependency Status](https://gemnasium.com/emilsoman/cloudster.png)](https://gemnasium.com/emilsoman/cloudster)
6
8
  [![still maintained](http://stillmaintained.com/emilsoman/cloudster.png)](http://stillmaintained.com/emilsoman/cloudster)
7
9
 
@@ -242,5 +244,5 @@ MIT
242
244
  *Free Software, Forever . YEAH !*
243
245
 
244
246
  ## Thanks
245
-
247
+ To [Fog](https://github.com/fog/fog) for making AWS APIs simple
246
248
  To Sinatra README for having a nice 'Contribute' section which I'm using(with minor changes) for Cloudster.
data/TODO.md ADDED
@@ -0,0 +1,2 @@
1
+ 1. Add puppet client to compute resource
2
+ 2. Decouple from AWS and include common resources that exist across vendors
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.19.6
1
+ 2.19.7
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "cloudster"
8
- s.version = "2.19.6"
8
+ s.version = "2.19.7"
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 = "2013-02-14"
12
+ s.date = "2013-09-05"
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 = [
@@ -25,17 +25,18 @@ Gem::Specification.new do |s|
25
25
  "LICENSE.txt",
26
26
  "README.md",
27
27
  "Rakefile",
28
+ "TODO.md",
28
29
  "VERSION",
29
30
  "cloudster.gemspec",
30
31
  "lib/cloudster.rb",
31
32
  "lib/cloudster/chef_client.rb",
32
33
  "lib/cloudster/cloud.rb",
33
34
  "lib/cloudster/cloud_front.rb",
34
- "lib/cloudster/deep_merge.rb",
35
35
  "lib/cloudster/ec2.rb",
36
36
  "lib/cloudster/elastic_ip.rb",
37
37
  "lib/cloudster/elasticache.rb",
38
38
  "lib/cloudster/elb.rb",
39
+ "lib/cloudster/inner_merge.rb",
39
40
  "lib/cloudster/options_manager.rb",
40
41
  "lib/cloudster/output.rb",
41
42
  "lib/cloudster/rds.rb",
@@ -43,11 +44,11 @@ Gem::Specification.new do |s|
43
44
  "spec/chef_client_spec.rb",
44
45
  "spec/cloud_front_spec.rb",
45
46
  "spec/cloud_spec.rb",
46
- "spec/deep_merge_spec.rb",
47
47
  "spec/ec2_spec.rb",
48
48
  "spec/elastic_ip_spec.rb",
49
49
  "spec/elasticache_spec.rb",
50
50
  "spec/elb_spec.rb",
51
+ "spec/inner_merge_spec.rb",
51
52
  "spec/output_spec.rb",
52
53
  "spec/rds_spec.rb",
53
54
  "spec/s3_spec.rb",
@@ -56,34 +57,31 @@ Gem::Specification.new do |s|
56
57
  s.homepage = "http://github.com/emilsoman/cloudster"
57
58
  s.licenses = ["MIT"]
58
59
  s.require_paths = ["lib"]
59
- s.rubygems_version = "1.8.24"
60
+ s.rubygems_version = "2.0.3"
60
61
  s.summary = "Cloudster gem - a Ruby interface for provisioning your Amazon Cloud."
61
62
 
62
63
  if s.respond_to? :specification_version then
63
- s.specification_version = 3
64
+ s.specification_version = 4
64
65
 
65
66
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
66
- s.add_runtime_dependency(%q<fog>, [">= 0"])
67
+ s.add_runtime_dependency(%q<fog>, ["= 1.10.0"])
67
68
  s.add_runtime_dependency(%q<json>, ["~> 1.7.7"])
68
- s.add_development_dependency(%q<rspec>, [">= 0"])
69
69
  s.add_development_dependency(%q<rdoc>, [">= 0"])
70
70
  s.add_development_dependency(%q<bundler>, [">= 0"])
71
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
71
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
72
72
  else
73
- s.add_dependency(%q<fog>, [">= 0"])
73
+ s.add_dependency(%q<fog>, ["= 1.10.0"])
74
74
  s.add_dependency(%q<json>, ["~> 1.7.7"])
75
- s.add_dependency(%q<rspec>, [">= 0"])
76
75
  s.add_dependency(%q<rdoc>, [">= 0"])
77
76
  s.add_dependency(%q<bundler>, [">= 0"])
78
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
77
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
79
78
  end
80
79
  else
81
- s.add_dependency(%q<fog>, [">= 0"])
80
+ s.add_dependency(%q<fog>, ["= 1.10.0"])
82
81
  s.add_dependency(%q<json>, ["~> 1.7.7"])
83
- s.add_dependency(%q<rspec>, [">= 0"])
84
82
  s.add_dependency(%q<rdoc>, [">= 0"])
85
83
  s.add_dependency(%q<bundler>, [">= 0"])
86
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
84
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
87
85
  end
88
86
  end
89
87
 
@@ -4,7 +4,7 @@ require 'json'
4
4
  require 'fog'
5
5
  require 'cloudster/output'
6
6
  require 'cloudster/options_manager'
7
- require 'cloudster/deep_merge'
7
+ require 'cloudster/inner_merge'
8
8
  include OptionsManager
9
9
  require 'cloudster/ec2'
10
10
  require 'cloudster/elb'
@@ -56,7 +56,7 @@ module Cloudster
56
56
  ec2_template = ec2.template
57
57
  @instance_name = ec2.name
58
58
  chef_client_template = template
59
- ec2.template.deep_merge(chef_client_template)
59
+ ec2.template.inner_merge(chef_client_template)
60
60
  end
61
61
 
62
62
  private
@@ -456,7 +456,7 @@ module Cloudster
456
456
  response = e.response
457
457
  end
458
458
  not_found_status = 404
459
- return response.status == not_found_status
459
+ return response[:status] == not_found_status
460
460
  end
461
461
 
462
462
  private
@@ -38,7 +38,7 @@ module Cloudster
38
38
  s3_template = s3.template
39
39
  @instance_name = s3.name
40
40
  cloud_front_template = template
41
- s3.template.deep_merge(cloud_front_template)
41
+ s3.template.inner_merge(cloud_front_template)
42
42
  end
43
43
 
44
44
  private
@@ -96,7 +96,8 @@ module Cloudster
96
96
  'private_dns_name' => {'Fn::GetAtt' => [options[:name], 'PrivateDnsName']},
97
97
  'public_dns_name' => {'Fn::GetAtt' => [options[:name], 'PublicDnsName']},
98
98
  'private_ip' => {'Fn::GetAtt' => [options[:name], 'PrivateIp']},
99
- 'public_ip' => {'Fn::GetAtt' => [options[:name], 'PublicIp']}
99
+ 'public_ip' => {'Fn::GetAtt' => [options[:name], 'PublicIp']},
100
+ 'instance_id' => { "Ref" => options[:name] }
100
101
  }
101
102
  }
102
103
  template['Outputs'] = output_template(outputs)
@@ -40,7 +40,7 @@ module Cloudster
40
40
  ec2_template = ec2.template
41
41
  @instance_name = ec2.name
42
42
  elastic_ip_template = template
43
- ec2.template.deep_merge(elastic_ip_template)
43
+ ec2.template.inner_merge(elastic_ip_template)
44
44
  end
45
45
 
46
46
  private
@@ -0,0 +1,10 @@
1
+ # Comes from Rails : http://apidock.com/rails/Hash/deep_merge!
2
+ class Hash
3
+ def inner_merge(other_hash)
4
+ other_hash.each_pair do |k,v|
5
+ tv = self[k]
6
+ self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.inner_merge(v) : v
7
+ end
8
+ self
9
+ end
10
+ end
@@ -95,7 +95,8 @@ describe Cloudster::ChefClient do
95
95
  {"Fn::Join"=>["|", ["private_dns_name", {"Fn::GetAtt"=>["AppServer", "PrivateDnsName"]}]]},
96
96
  {"Fn::Join"=>["|", ["public_dns_name", {"Fn::GetAtt"=>["AppServer", "PublicDnsName"]}]]},
97
97
  {"Fn::Join"=>["|", ["private_ip", {"Fn::GetAtt"=>["AppServer", "PrivateIp"]}]]},
98
- {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["AppServer", "PublicIp"]}]]}
98
+ {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["AppServer", "PublicIp"]}]]},
99
+ {"Fn::Join"=>["|", ["instance_id", {"Ref"=> "AppServer"}]]}
99
100
  ]
100
101
  ]
101
102
  }
@@ -74,7 +74,8 @@ describe Cloudster::Cloud do
74
74
  {"Fn::Join" => ["|", ["private_dns_name", {'Fn::GetAtt' => ['Ec2Instance1', 'PrivateDnsName']}]]},
75
75
  {"Fn::Join" => ["|", ["public_dns_name", {'Fn::GetAtt' => ['Ec2Instance1', 'PublicDnsName']}]]},
76
76
  {"Fn::Join" => ["|", ["private_ip", {'Fn::GetAtt' => ['Ec2Instance1', 'PrivateIp']}]]},
77
- {"Fn::Join" => ["|", ["public_ip", {'Fn::GetAtt' => ['Ec2Instance1', 'PublicIp']}]]}
77
+ {"Fn::Join" => ["|", ["public_ip", {'Fn::GetAtt' => ['Ec2Instance1', 'PublicIp']}]]},
78
+ {"Fn::Join"=>["|", ["instance_id", {"Ref"=> "Ec2Instance1"}]]}
78
79
  ]
79
80
  ]
80
81
  }
@@ -87,7 +88,8 @@ describe Cloudster::Cloud do
87
88
  {"Fn::Join" => ["|", ["private_dns_name", {'Fn::GetAtt' => ['Ec2Instance2', 'PrivateDnsName']}]]},
88
89
  {"Fn::Join" => ["|", ["public_dns_name", {'Fn::GetAtt' => ['Ec2Instance2', 'PublicDnsName']}]]},
89
90
  {"Fn::Join" => ["|", ["private_ip", {'Fn::GetAtt' => ['Ec2Instance2', 'PrivateIp']}]]},
90
- {"Fn::Join" => ["|", ["public_ip", {'Fn::GetAtt' => ['Ec2Instance2', 'PublicIp']}]]}
91
+ {"Fn::Join" => ["|", ["public_ip", {'Fn::GetAtt' => ['Ec2Instance2', 'PublicIp']}]]},
92
+ {"Fn::Join"=>["|", ["instance_id", {"Ref"=> "Ec2Instance2"}]]}
91
93
  ]
92
94
  ]
93
95
  }
@@ -215,30 +217,24 @@ describe Cloudster::Cloud do
215
217
  describe "#is_s3_bucket_name_available?" do
216
218
  it "should return true if bucket is available" do
217
219
  cloud = Cloudster::Cloud.new(:access_key_id => 'test', :secret_access_key => 'test')
218
- response = double('Response')
219
- response.stub(:status).and_return(404)
220
220
  s3 = double('S3')
221
- s3.should_receive(:get_bucket).and_raise(Excon::Errors.status_error({:expects => 200}, response))
221
+ s3.should_receive(:get_bucket).and_raise(Excon::Errors.status_error({:expects => 200}, {:status => 404}))
222
222
  Fog::Storage::AWS.should_receive(:new).and_return(s3)
223
223
  cloud.is_s3_bucket_name_available?('test-bucket-name').should be_true
224
224
  end
225
225
 
226
226
  it "should return false if bucket access is forbidden" do
227
227
  cloud = Cloudster::Cloud.new(:access_key_id => 'test', :secret_access_key => 'test')
228
- response = double('Response')
229
- response.stub(:status).and_return(403)
230
228
  s3 = double('S3')
231
- s3.should_receive(:get_bucket).and_raise(Excon::Errors.status_error({:expects => 200}, response))
229
+ s3.should_receive(:get_bucket).and_raise(Excon::Errors.status_error({:expects => 200}, {:status => 403}))
232
230
  Fog::Storage::AWS.should_receive(:new).and_return(s3)
233
231
  cloud.is_s3_bucket_name_available?('test-bucket-name').should be_false
234
232
  end
235
233
 
236
234
  it "should return false if bucket is already owned by user" do
237
235
  cloud = Cloudster::Cloud.new(:access_key_id => 'test', :secret_access_key => 'test')
238
- response = double('Response')
239
- response.stub(:status).and_return(200)
240
236
  s3 = double('S3')
241
- s3.should_receive(:get_bucket).and_return response
237
+ s3.should_receive(:get_bucket).and_return({:status => 200})
242
238
  Fog::Storage::AWS.should_receive(:new).and_return(s3)
243
239
  cloud.is_s3_bucket_name_available?('test-bucket-name').should be_false
244
240
  end
@@ -36,7 +36,8 @@ describe Cloudster::Ec2 do
36
36
  {"Fn::Join"=>["|", ["private_dns_name", {"Fn::GetAtt"=>["name", "PrivateDnsName"]}]]},
37
37
  {"Fn::Join"=>["|", ["public_dns_name", {"Fn::GetAtt"=>["name", "PublicDnsName"]}]]},
38
38
  {"Fn::Join"=>["|", ["private_ip", {"Fn::GetAtt"=>["name", "PrivateIp"]}]]},
39
- {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["name", "PublicIp"]}]]}
39
+ {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["name", "PublicIp"]}]]},
40
+ {"Fn::Join"=>["|", ["instance_id", {"Ref"=> "name"}]]}
40
41
  ]
41
42
  ]
42
43
  }
@@ -72,7 +73,8 @@ describe Cloudster::Ec2 do
72
73
  {"Fn::Join"=>["|", ["private_dns_name", {"Fn::GetAtt"=>["name", "PrivateDnsName"]}]]},
73
74
  {"Fn::Join"=>["|", ["public_dns_name", {"Fn::GetAtt"=>["name", "PublicDnsName"]}]]},
74
75
  {"Fn::Join"=>["|", ["private_ip", {"Fn::GetAtt"=>["name", "PrivateIp"]}]]},
75
- {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["name", "PublicIp"]}]]}
76
+ {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["name", "PublicIp"]}]]},
77
+ {"Fn::Join"=>["|", ["instance_id", {"Ref"=> "name"}]]}
76
78
  ]
77
79
  ]
78
80
  }
@@ -43,7 +43,8 @@ describe Cloudster::ChefClient do
43
43
  {"Fn::Join"=>["|", ["private_dns_name", {"Fn::GetAtt"=>["AppServer", "PrivateDnsName"]}]]},
44
44
  {"Fn::Join"=>["|", ["public_dns_name", {"Fn::GetAtt"=>["AppServer", "PublicDnsName"]}]]},
45
45
  {"Fn::Join"=>["|", ["private_ip", {"Fn::GetAtt"=>["AppServer", "PrivateIp"]}]]},
46
- {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["AppServer", "PublicIp"]}]]}
46
+ {"Fn::Join"=>["|", ["public_ip", {"Fn::GetAtt"=>["AppServer", "PublicIp"]}]]},
47
+ {"Fn::Join"=>["|", ["instance_id", {"Ref"=> "AppServer"}]]}
47
48
  ]
48
49
  ]
49
50
  }
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "Hash" do
4
- describe "#deep_merge" do
4
+ describe "#inner_merge" do
5
5
  it "should do a deep merge for new keys and deep override for existing keys" do
6
6
  hash1 = {
7
7
  'key1' => 'value1',
@@ -17,7 +17,7 @@ describe "Hash" do
17
17
  'inner_key2' =>'inner_value_to_override'
18
18
  }
19
19
  }
20
- hash1.deep_merge(hash2).should == {
20
+ hash1.inner_merge(hash2).should == {
21
21
  "key1"=>"value1",
22
22
  "key2"=>{
23
23
  "inner_key1"=>"inner_value1",
@@ -1,3 +1,5 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
1
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
4
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
5
  require 'rspec'
metadata CHANGED
@@ -1,36 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudster
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.19.6
5
- prerelease:
4
+ version: 2.19.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Emil Soman
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-14 00:00:00.000000000 Z
11
+ date: 2013-09-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: fog
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '='
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 1.10.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '='
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: 1.10.0
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: json
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,76 +34,53 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
45
40
  version: 1.7.7
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
41
  - !ruby/object:Gem::Dependency
63
42
  name: rdoc
64
43
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
44
  requirements:
67
- - - ! '>='
45
+ - - '>='
68
46
  - !ruby/object:Gem::Version
69
47
  version: '0'
70
48
  type: :development
71
49
  prerelease: false
72
50
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
51
  requirements:
75
- - - ! '>='
52
+ - - '>='
76
53
  - !ruby/object:Gem::Version
77
54
  version: '0'
78
55
  - !ruby/object:Gem::Dependency
79
56
  name: bundler
80
57
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
58
  requirements:
83
- - - ! '>='
59
+ - - '>='
84
60
  - !ruby/object:Gem::Version
85
61
  version: '0'
86
62
  type: :development
87
63
  prerelease: false
88
64
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
65
  requirements:
91
- - - ! '>='
66
+ - - '>='
92
67
  - !ruby/object:Gem::Version
93
68
  version: '0'
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: jeweler
96
71
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
72
  requirements:
99
73
  - - ~>
100
74
  - !ruby/object:Gem::Version
101
- version: 1.8.4
75
+ version: 1.8.7
102
76
  type: :development
103
77
  prerelease: false
104
78
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
79
  requirements:
107
80
  - - ~>
108
81
  - !ruby/object:Gem::Version
109
- version: 1.8.4
110
- description: ! "Cloudster is a Ruby gem that was born to cut the learning curve involved
82
+ version: 1.8.7
83
+ description: "Cloudster is a Ruby gem that was born to cut the learning curve involved
111
84
  \n in writing your own CloudFormation templates. If you don't know what a CloudFormation
112
85
  template is, \n but know about the AWS Cloud offerings, you can still use cloudster
113
86
  to provision your stack. \n Still in infancy , cloudster can create a very basic
@@ -127,17 +100,18 @@ files:
127
100
  - LICENSE.txt
128
101
  - README.md
129
102
  - Rakefile
103
+ - TODO.md
130
104
  - VERSION
131
105
  - cloudster.gemspec
132
106
  - lib/cloudster.rb
133
107
  - lib/cloudster/chef_client.rb
134
108
  - lib/cloudster/cloud.rb
135
109
  - lib/cloudster/cloud_front.rb
136
- - lib/cloudster/deep_merge.rb
137
110
  - lib/cloudster/ec2.rb
138
111
  - lib/cloudster/elastic_ip.rb
139
112
  - lib/cloudster/elasticache.rb
140
113
  - lib/cloudster/elb.rb
114
+ - lib/cloudster/inner_merge.rb
141
115
  - lib/cloudster/options_manager.rb
142
116
  - lib/cloudster/output.rb
143
117
  - lib/cloudster/rds.rb
@@ -145,11 +119,11 @@ files:
145
119
  - spec/chef_client_spec.rb
146
120
  - spec/cloud_front_spec.rb
147
121
  - spec/cloud_spec.rb
148
- - spec/deep_merge_spec.rb
149
122
  - spec/ec2_spec.rb
150
123
  - spec/elastic_ip_spec.rb
151
124
  - spec/elasticache_spec.rb
152
125
  - spec/elb_spec.rb
126
+ - spec/inner_merge_spec.rb
153
127
  - spec/output_spec.rb
154
128
  - spec/rds_spec.rb
155
129
  - spec/s3_spec.rb
@@ -157,29 +131,25 @@ files:
157
131
  homepage: http://github.com/emilsoman/cloudster
158
132
  licenses:
159
133
  - MIT
134
+ metadata: {}
160
135
  post_install_message:
161
136
  rdoc_options: []
162
137
  require_paths:
163
138
  - lib
164
139
  required_ruby_version: !ruby/object:Gem::Requirement
165
- none: false
166
140
  requirements:
167
- - - ! '>='
141
+ - - '>='
168
142
  - !ruby/object:Gem::Version
169
143
  version: '0'
170
- segments:
171
- - 0
172
- hash: -177422495
173
144
  required_rubygems_version: !ruby/object:Gem::Requirement
174
- none: false
175
145
  requirements:
176
- - - ! '>='
146
+ - - '>='
177
147
  - !ruby/object:Gem::Version
178
148
  version: '0'
179
149
  requirements: []
180
150
  rubyforge_project:
181
- rubygems_version: 1.8.24
151
+ rubygems_version: 2.0.3
182
152
  signing_key:
183
- specification_version: 3
153
+ specification_version: 4
184
154
  summary: Cloudster gem - a Ruby interface for provisioning your Amazon Cloud.
185
155
  test_files: []
@@ -1,10 +0,0 @@
1
- # Stolen shamelessly from Rails : http://apidock.com/rails/Hash/deep_merge!
2
- class Hash
3
- def deep_merge(other_hash)
4
- other_hash.each_pair do |k,v|
5
- tv = self[k]
6
- self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_merge(v) : v
7
- end
8
- self
9
- end
10
- end