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

Sign up to get free protection for your applications and to get access to all the features.
@@ -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