cucumber-chef 2.1.0.rc.1 → 2.1.0.rc.2

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.
@@ -101,94 +101,160 @@ module Cucumber
101
101
  ################################################################################
102
102
 
103
103
  def external_ip
104
- %x( wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' ).chomp
104
+ %x(wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//').chomp.strip
105
+ end
106
+
107
+ ################################################################################
108
+ # Path Helpers
109
+ ################################################################################
110
+
111
+ def chef_repo
112
+ (Cucumber::Chef.locate_parent(".chef") rescue nil)
113
+ end
114
+
115
+ def in_chef_repo?
116
+ ((chef_repo && File.exists?(chef_repo) && File.directory?(chef_repo)) ? true : false)
105
117
  end
106
118
 
107
119
  ################################################################################
108
120
 
109
- def root
121
+ def root_dir
110
122
  File.expand_path(File.join(File.dirname(__FILE__), "..", "..", ".."), File.dirname(__FILE__))
111
123
  end
112
124
 
113
125
  ################################################################################
114
126
 
115
- def log_file
116
- config_path = File.join(Cucumber::Chef.locate_parent(".chef"), ".cucumber-chef")
117
- FileUtils.mkdir_p(config_path)
118
- File.join(config_path, "cucumber-chef.log")
127
+ def home_dir
128
+ home_dir = File.join(Cucumber::Chef.locate_parent(".chef"), ".cucumber-chef")
129
+ FileUtils.mkdir_p(File.dirname(home_dir))
130
+ home_dir
119
131
  end
120
132
 
121
133
  ################################################################################
122
134
 
123
- def knife_rb
124
- config_path = File.join(Cucumber::Chef.locate_parent(".chef"), ".cucumber-chef")
125
- FileUtils.mkdir_p(config_path)
126
- File.join(config_path, "knife.rb")
135
+ def log_file
136
+ log_file = File.join(Cucumber::Chef.home_dir, "cucumber-chef.log")
137
+ FileUtils.mkdir_p(File.dirname(log_file))
138
+ log_file
127
139
  end
128
140
 
129
141
  ################################################################################
130
142
 
131
143
  def config_rb
132
- config_path = File.join(Cucumber::Chef.locate_parent(".chef"), ".cucumber-chef")
133
- FileUtils.mkdir_p(config_path)
134
- File.join(config_path, "config.rb")
144
+ config_rb = File.join(Cucumber::Chef.home_dir, "config.rb")
145
+ FileUtils.mkdir_p(File.dirname(config_rb))
146
+ config_rb
147
+ end
148
+
149
+ ################################################################################
150
+
151
+ def knife_rb
152
+ knife_rb = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config[:provider].to_s, "knife.rb")
153
+ FileUtils.mkdir_p(File.dirname(knife_rb))
154
+ knife_rb
135
155
  end
136
156
 
137
157
  ################################################################################
138
158
 
139
159
  def servers_bin
140
- config_path = File.join(Cucumber::Chef.locate_parent(".chef"), ".cucumber-chef")
141
- FileUtils.mkdir_p(config_path)
142
- File.join(config_path, "servers.bin")
160
+ servers_bin = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config[:provider].to_s, "servers.bin")
161
+ FileUtils.mkdir_p(File.dirname(servers_bin))
162
+ servers_bin
143
163
  end
144
164
 
165
+ ################################################################################
166
+ # Bootstraping SSH Helpers
145
167
  ################################################################################
146
168
 
147
- def chef_repo
148
- (Cucumber::Chef.locate_parent(".chef") rescue nil)
169
+ def bootstrap_user
170
+ Cucumber::Chef::Config[Cucumber::Chef::Config[:provider]][:lab_user]
149
171
  end
150
172
 
173
+ def bootstrap_identity
174
+ bootstrap_identity = Cucumber::Chef::Config[Cucumber::Chef::Config[:provider]][:identity_file]
175
+ File.exists?(bootstrap_identity) && File.chmod(0400, bootstrap_identity)
176
+ bootstrap_identity
177
+ end
178
+
179
+ ################################################################################
180
+ # Test Lab SSH Helpers
151
181
  ################################################################################
152
182
 
153
- def in_chef_repo?
154
- ((chef_repo && File.exists?(chef_repo) && File.directory?(chef_repo)) ? true : false)
183
+ def lab_user
184
+ Cucumber::Chef::Config[Cucumber::Chef::Config[:provider]][:lab_user]
185
+ end
186
+
187
+ def lab_user_home_dir
188
+ user = Cucumber::Chef::Config[Cucumber::Chef::Config[:provider]][:lab_user]
189
+ ((user == "root") ? "/root" : "/home/#{user}")
190
+ end
191
+
192
+ def lab_identity
193
+ lab_identity = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config[:provider].to_s, "id_rsa-#{lab_user}")
194
+ File.exists?(lab_identity) && File.chmod(0400, lab_identity)
195
+ lab_identity
196
+ end
197
+
198
+ ################################################################################
199
+ # Container SSH Helpers
200
+ ################################################################################
201
+
202
+ def lxc_user
203
+ Cucumber::Chef::Config[Cucumber::Chef::Config[:provider]][:lxc_user]
155
204
  end
156
205
 
206
+ def lxc_user_home_dir
207
+ user = Cucumber::Chef::Config[Cucumber::Chef::Config[:provider]][:lxc_user]
208
+ ((user == "root") ? "/root" : "/home/#{user}")
209
+ end
210
+
211
+ def lxc_identity
212
+ lxc_identity = File.join(Cucumber::Chef.home_dir, Cucumber::Chef::Config[:provider].to_s, "id_rsa-#{lab_user}")
213
+ File.exists?(lxc_identity) && File.chmod(0400, lxc_identity)
214
+ lxc_identity
215
+ end
216
+
217
+ ################################################################################
218
+
157
219
  def tag(name=nil)
158
220
  [ name, "v#{Cucumber::Chef::VERSION}" ].compact.join(" ")
159
221
  end
160
222
 
223
+ ################################################################################
224
+ # BOOT
161
225
  ################################################################################
162
226
 
163
- def load_config(name=nil)
227
+ def boot(name=nil)
164
228
  if !in_chef_repo?
165
229
  message = "It does not look like you are inside a chef-repo! Please relocate to one and execute your command again!"
166
230
  logger.fatal { message }
167
231
  raise message
168
232
  end
169
233
  name and logger.info { "loading #{name}" }
170
- logger.info { "load_config(#{Cucumber::Chef.config_rb})" }
234
+ logger.info { "boot(#{Cucumber::Chef.config_rb})" }
171
235
  Cucumber::Chef::Config.load
172
- load_knife
236
+ load_chef_config
173
237
  end
174
238
 
239
+ ################################################################################
240
+ # Load Chef::Config
175
241
  ################################################################################
176
242
 
177
- def load_knife
243
+ def load_chef_config
178
244
  test_lab = (Cucumber::Chef::TestLab.new rescue nil)
179
- if (test_lab && (test_lab.labs_running.count > 0))
245
+ if (test_lab && ((test_lab.labs_running.count rescue 0) > 0))
180
246
  if File.exists?(Cucumber::Chef.knife_rb)
181
- logger.info { "load_knife(#{Cucumber::Chef.knife_rb})" }
247
+ logger.info { "load_chef_config(#{Cucumber::Chef.knife_rb})" }
182
248
  ::Chef::Config.from_file(Cucumber::Chef.knife_rb)
183
249
 
184
- chef_server_url = "http://#{test_lab.labs_running.first.public_ip_address}:4000"
250
+ chef_server_url = "http://#{test_lab.ip}:4000"
185
251
  logger.info { "chef_server_url(#{chef_server_url})" }
186
252
  ::Chef::Config[:chef_server_url] = chef_server_url
187
253
  else
188
254
  logger.warn { "We found the test lab; but the knife config '#{Cucumber::Chef.knife_rb}' was missing!" }
189
255
  end
190
256
  else
191
- logger.info { "load_knife(#{Cucumber::Chef.knife_rb})" }
257
+ logger.info { "load_chef_config(#{Cucumber::Chef.knife_rb})" }
192
258
  ::Chef::Config.from_file(Cucumber::Chef.knife_rb)
193
259
  end
194
260
  end
@@ -201,21 +267,23 @@ module Cucumber
201
267
  Cucumber::Chef.is_rc? and ($logger.level = ZTK::Logger::DEBUG)
202
268
 
203
269
  headers = {
204
- "program" => $0.to_s,
205
- "version" => Cucumber::Chef::VERSION,
206
- "uname" => %x(uname -a).chomp.strip,
207
- "chef_repo" => chef_repo,
208
- "chef_version" => ::Chef::VERSION,
209
- "log_file" => log_file,
210
- "knife_rb" => knife_rb,
211
- "config_rb" => config_rb,
212
- "servers_bin" => servers_bin,
213
- "ruby_version" => RUBY_VERSION,
214
- "ruby_patchlevel" => RUBY_PATCHLEVEL,
215
- "ruby_platform" => RUBY_PLATFORM
270
+ "program" => $0.to_s.inspect,
271
+ "cucumber_chef_version" => Cucumber::Chef::VERSION.inspect,
272
+ "uname" => %x(uname -a).chomp.strip.inspect,
273
+ "chef_repo" => chef_repo.inspect,
274
+ "chef_version" => ::Chef::VERSION.inspect,
275
+ "vagrant_version" => ::Vagrant::VERSION.inspect,
276
+ "fog_version" => ::Fog::VERSION.inspect,
277
+ "log_file" => log_file.inspect,
278
+ # "config_rb" => config_rb,
279
+ # "knife_rb" => knife_rb,
280
+ "servers_bin" => servers_bin.inspect,
281
+ "ruby_version" => RUBY_VERSION.inspect,
282
+ "ruby_patchlevel" => RUBY_PATCHLEVEL.inspect,
283
+ "ruby_platform" => RUBY_PLATFORM.inspect
216
284
  }
217
285
  if RUBY_VERSION >= "1.9"
218
- headers.merge!("ruby_engine" => RUBY_ENGINE)
286
+ headers.merge!("ruby_engine" => RUBY_ENGINE.inspect)
219
287
  end
220
288
  max_key_length = headers.keys.collect{ |key| key.to_s.length }.max
221
289
 
@@ -24,7 +24,7 @@ module Cucumber
24
24
 
25
25
  ################################################################################
26
26
 
27
- VERSION = "2.1.0.rc.1" unless const_defined?(:VERSION)
27
+ VERSION = "2.1.0.rc.2" unless const_defined?(:VERSION)
28
28
 
29
29
  ################################################################################
30
30
 
data/lib/cucumber/chef.rb CHANGED
@@ -28,7 +28,10 @@ require 'stringio'
28
28
 
29
29
  require 'chef'
30
30
  require 'chef/cookbook_uploader'
31
+
31
32
  require 'fog'
33
+ require 'vagrant'
34
+
32
35
  require 'json'
33
36
  require 'mixlib/config'
34
37
  require 'ubuntu_ami'
@@ -45,7 +48,9 @@ module Cucumber
45
48
 
46
49
  autoload :Bootstrap, 'cucumber/chef/bootstrap'
47
50
  autoload :Config, 'cucumber/chef/config'
51
+ autoload :Provider, 'cucumber/chef/provider'
48
52
  autoload :Provisioner, 'cucumber/chef/provisioner'
53
+ autoload :Server, 'cucumber/chef/server'
49
54
  autoload :TestLab, 'cucumber/chef/test_lab'
50
55
 
51
56
  require 'cucumber/chef/utility'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.rc.1
4
+ version: 2.1.0.rc.2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-01-21 00:00:00.000000000 Z
13
+ date: 2013-01-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: chef
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - ! '>='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.10.10
22
+ version: 0.10.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,15 +27,15 @@ dependencies:
27
27
  requirements:
28
28
  - - ! '>='
29
29
  - !ruby/object:Gem::Version
30
- version: 0.10.10
30
+ version: 0.10.0
31
31
  - !ruby/object:Gem::Dependency
32
- name: cucumber
32
+ name: fog
33
33
  requirement: !ruby/object:Gem::Requirement
34
34
  none: false
35
35
  requirements:
36
36
  - - ! '>='
37
37
  - !ruby/object:Gem::Version
38
- version: 1.2.0
38
+ version: 1.3.1
39
39
  type: :runtime
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,15 +43,15 @@ dependencies:
43
43
  requirements:
44
44
  - - ! '>='
45
45
  - !ruby/object:Gem::Version
46
- version: 1.2.0
46
+ version: 1.3.1
47
47
  - !ruby/object:Gem::Dependency
48
- name: fog
48
+ name: vagrant
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3.1
54
+ version: 1.0.5
55
55
  type: :runtime
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,15 +59,15 @@ dependencies:
59
59
  requirements:
60
60
  - - ! '>='
61
61
  - !ruby/object:Gem::Version
62
- version: 1.3.1
62
+ version: 1.0.5
63
63
  - !ruby/object:Gem::Dependency
64
- name: mixlib-config
64
+ name: cucumber
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
68
68
  - - ! '>='
69
69
  - !ruby/object:Gem::Version
70
- version: 1.1.2
70
+ version: 1.2.0
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -75,7 +75,23 @@ dependencies:
75
75
  requirements:
76
76
  - - ! '>='
77
77
  - !ruby/object:Gem::Version
78
- version: 1.1.2
78
+ version: 1.2.0
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: 2.10.0
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 2.10.0
79
95
  - !ruby/object:Gem::Dependency
80
96
  name: thor
81
97
  requirement: !ruby/object:Gem::Requirement
@@ -93,13 +109,13 @@ dependencies:
93
109
  - !ruby/object:Gem::Version
94
110
  version: 0.15.2
95
111
  - !ruby/object:Gem::Dependency
96
- name: rake
112
+ name: mixlib-config
97
113
  requirement: !ruby/object:Gem::Requirement
98
114
  none: false
99
115
  requirements:
100
116
  - - ! '>='
101
117
  - !ruby/object:Gem::Version
102
- version: 0.9.2
118
+ version: 1.1.2
103
119
  type: :runtime
104
120
  prerelease: false
105
121
  version_requirements: !ruby/object:Gem::Requirement
@@ -107,15 +123,15 @@ dependencies:
107
123
  requirements:
108
124
  - - ! '>='
109
125
  - !ruby/object:Gem::Version
110
- version: 0.9.2
126
+ version: 1.1.2
111
127
  - !ruby/object:Gem::Dependency
112
- name: ubuntu_ami
128
+ name: rake
113
129
  requirement: !ruby/object:Gem::Requirement
114
130
  none: false
115
131
  requirements:
116
132
  - - ! '>='
117
133
  - !ruby/object:Gem::Version
118
- version: 0.4.0
134
+ version: 0.9.2
119
135
  type: :runtime
120
136
  prerelease: false
121
137
  version_requirements: !ruby/object:Gem::Requirement
@@ -123,15 +139,15 @@ dependencies:
123
139
  requirements:
124
140
  - - ! '>='
125
141
  - !ruby/object:Gem::Version
126
- version: 0.4.0
142
+ version: 0.9.2
127
143
  - !ruby/object:Gem::Dependency
128
- name: rspec
144
+ name: ubuntu_ami
129
145
  requirement: !ruby/object:Gem::Requirement
130
146
  none: false
131
147
  requirements:
132
148
  - - ! '>='
133
149
  - !ruby/object:Gem::Version
134
- version: 2.10.0
150
+ version: 0.4.0
135
151
  type: :runtime
136
152
  prerelease: false
137
153
  version_requirements: !ruby/object:Gem::Requirement
@@ -139,7 +155,7 @@ dependencies:
139
155
  requirements:
140
156
  - - ! '>='
141
157
  - !ruby/object:Gem::Version
142
- version: 2.10.0
158
+ version: 0.4.0
143
159
  - !ruby/object:Gem::Dependency
144
160
  name: ztk
145
161
  requirement: !ruby/object:Gem::Requirement
@@ -292,7 +308,11 @@ files:
292
308
  - lib/cucumber/chef/helpers/server.rb
293
309
  - lib/cucumber/chef/helpers/test_lab.rb
294
310
  - lib/cucumber/chef/helpers/utility.rb
311
+ - lib/cucumber/chef/provider.rb
312
+ - lib/cucumber/chef/providers/aws.rb
313
+ - lib/cucumber/chef/providers/vagrant.rb
295
314
  - lib/cucumber/chef/provisioner.rb
315
+ - lib/cucumber/chef/server.rb
296
316
  - lib/cucumber/chef/steps.rb
297
317
  - lib/cucumber/chef/steps/chef_steps.rb
298
318
  - lib/cucumber/chef/steps/minitest_steps.rb