cloudster 2.19.6 → 2.19.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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