testlab 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/tl +76 -0
- data/lib/testlab/container/actions.rb +4 -0
- data/lib/testlab/container/lifecycle.rb +0 -4
- data/lib/testlab/user/lifecycle.rb +5 -4
- data/lib/testlab/version.rb +1 -1
- metadata +3 -3
data/bin/tl
CHANGED
@@ -187,6 +187,44 @@ EOF
|
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
190
|
+
# NODE CREATE
|
191
|
+
##############
|
192
|
+
c.desc 'Create a node'
|
193
|
+
c.long_desc <<-EOF
|
194
|
+
Create a node. The node is created.
|
195
|
+
EOF
|
196
|
+
c.command :create do |create|
|
197
|
+
create.action do |global_options, options, args|
|
198
|
+
if options[:id].nil?
|
199
|
+
help_now!('id is required') if options[:id].nil?
|
200
|
+
else
|
201
|
+
node = @testlab.nodes.select{ |c| c.id.to_sym == options[:id].to_sym }.first
|
202
|
+
node.nil? and raise TestLab::TestLabError, "We could not find the node you screateplied!"
|
203
|
+
|
204
|
+
node.create
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
# NODE DESTROY
|
210
|
+
############
|
211
|
+
c.desc 'Destroy a node'
|
212
|
+
c.long_desc <<-EOF
|
213
|
+
Destroy a node. The node is stopped and destroyed.
|
214
|
+
EOF
|
215
|
+
c.command :destroy do |destroy|
|
216
|
+
destroy.action do |global_options, options, args|
|
217
|
+
if options[:id].nil?
|
218
|
+
help_now!('id is required') if options[:id].nil?
|
219
|
+
else
|
220
|
+
node = @testlab.nodes.select{ |c| c.id.to_sym == options[:id].to_sym }.first
|
221
|
+
node.nil? and raise TestLab::TestLabError, "We could not find the node you supplied!"
|
222
|
+
|
223
|
+
node.destroy
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
190
228
|
# NODE SETUP
|
191
229
|
#############
|
192
230
|
c.desc 'Setup a node'
|
@@ -533,6 +571,44 @@ EOF
|
|
533
571
|
end
|
534
572
|
end
|
535
573
|
|
574
|
+
# CONTAINER CREATE
|
575
|
+
###################
|
576
|
+
c.desc 'Create a container'
|
577
|
+
c.long_desc <<-EOF
|
578
|
+
Create a container. The container is created.
|
579
|
+
EOF
|
580
|
+
c.command :create do |create|
|
581
|
+
create.action do |global_options, options, args|
|
582
|
+
if options[:id].nil?
|
583
|
+
help_now!('id is required') if options[:id].nil?
|
584
|
+
else
|
585
|
+
container = @testlab.containers.select{ |c| c.id.to_sym == options[:id].to_sym }.first
|
586
|
+
container.nil? and raise TestLab::TestLabError, "We could not find the container you screateplied!"
|
587
|
+
|
588
|
+
container.create
|
589
|
+
end
|
590
|
+
end
|
591
|
+
end
|
592
|
+
|
593
|
+
# CONTAINER DESTROY
|
594
|
+
####################
|
595
|
+
c.desc 'Destroy a container'
|
596
|
+
c.long_desc <<-EOF
|
597
|
+
Destroy a container. The container is stopped and destroyed.
|
598
|
+
EOF
|
599
|
+
c.command :destroy do |destroy|
|
600
|
+
destroy.action do |global_options, options, args|
|
601
|
+
if options[:id].nil?
|
602
|
+
help_now!('id is required') if options[:id].nil?
|
603
|
+
else
|
604
|
+
container = @testlab.containers.select{ |c| c.id.to_sym == options[:id].to_sym }.first
|
605
|
+
container.nil? and raise TestLab::TestLabError, "We could not find the container you supplied!"
|
606
|
+
|
607
|
+
container.destroy
|
608
|
+
end
|
609
|
+
end
|
610
|
+
end
|
611
|
+
|
536
612
|
# CONTAINER SETUP
|
537
613
|
####################
|
538
614
|
c.desc 'Setup a container'
|
@@ -18,10 +18,6 @@ class TestLab
|
|
18
18
|
|
19
19
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Setup', :green)) do
|
20
20
|
|
21
|
-
self.users.each do |user|
|
22
|
-
user.setup
|
23
|
-
end
|
24
|
-
|
25
21
|
self.provisioners.each do |provisioner|
|
26
22
|
@ui.logger.info { ">>>>> SETUP CONTAINER PROVISIONER: #{provisioner} <<<<<" }
|
27
23
|
p = provisioner.new(self.config, @ui)
|
@@ -36,13 +36,14 @@ class TestLab
|
|
36
36
|
user_authkeys2 = File.join(user_home_dir, ".ssh", "authorized_keys2")
|
37
37
|
|
38
38
|
authkeys = {
|
39
|
-
|
40
|
-
|
39
|
+
user_authkeys => node_authkeys,
|
40
|
+
user_authkeys2 => node_authkeys
|
41
41
|
}
|
42
42
|
|
43
|
-
authkeys.each do |
|
43
|
+
authkeys.each do |destination, source|
|
44
|
+
@ui.logger.info { "SOURCE: #{source} >>> #{destination}" }
|
44
45
|
self.container.node.ssh.exec(%(sudo mkdir -pv #{File.dirname(destination)}))
|
45
|
-
self.container.node.ssh.exec(%(sudo
|
46
|
+
self.container.node.ssh.exec(%(sudo grep "$(cat #{source})" #{destination} || sudo cat #{source} | sudo tee -a #{destination}))
|
46
47
|
self.container.node.ssh.exec(%(sudo chmod -v 644 #{destination}))
|
47
48
|
end
|
48
49
|
|
data/lib/testlab/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -293,7 +293,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
293
293
|
version: '0'
|
294
294
|
segments:
|
295
295
|
- 0
|
296
|
-
hash: -
|
296
|
+
hash: -2213038808322166943
|
297
297
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
298
|
none: false
|
299
299
|
requirements:
|
@@ -302,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
302
302
|
version: '0'
|
303
303
|
segments:
|
304
304
|
- 0
|
305
|
-
hash: -
|
305
|
+
hash: -2213038808322166943
|
306
306
|
requirements: []
|
307
307
|
rubyforge_project:
|
308
308
|
rubygems_version: 1.8.25
|