testlab 1.4.3 → 1.4.4
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.
- data/lib/testlab/container/actions.rb +9 -14
- data/lib/testlab/container/status.rb +5 -1
- data/lib/testlab/network/actions.rb +9 -9
- data/lib/testlab/node/actions.rb +4 -4
- data/lib/testlab/providers/vagrant.rb +5 -2
- data/lib/testlab/provisioners/templates/resolv/provision.erb +2 -3
- data/lib/testlab/version.rb +1 -1
- metadata +31 -5
- checksums.yaml +0 -15
@@ -12,11 +12,8 @@ class TestLab
|
|
12
12
|
def create
|
13
13
|
@ui.logger.debug { "Container Create: #{self.id}" }
|
14
14
|
|
15
|
-
(self.node.state
|
16
|
-
(self.
|
17
|
-
|
18
|
-
# If we are in ephemeral mode do not attempt to create the container.
|
19
|
-
self.lxc_clone.exists? and return false
|
15
|
+
(self.node.state == :running) or return false
|
16
|
+
(self.state == :not_created) or return false
|
20
17
|
|
21
18
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Create', :green)) do
|
22
19
|
configure
|
@@ -37,14 +34,12 @@ class TestLab
|
|
37
34
|
def destroy
|
38
35
|
@ui.logger.debug { "Container Destroy: #{self.id}" }
|
39
36
|
|
40
|
-
(self.node.state
|
41
|
-
(self.
|
42
|
-
|
43
|
-
# If we are in ephemeral mode do not attempt to destroy the container.
|
44
|
-
self.lxc_clone.exists? and return false
|
37
|
+
(self.node.state == :running) or return false
|
38
|
+
(self.state != :not_created) or return false
|
45
39
|
|
46
40
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Destroy', :red)) do
|
47
41
|
self.lxc.destroy(%(-f))
|
42
|
+
self.lxc_clone.destroy(%(-f))
|
48
43
|
|
49
44
|
do_provisioner_callbacks(self, :destroy, @ui)
|
50
45
|
end
|
@@ -60,8 +55,8 @@ class TestLab
|
|
60
55
|
def up
|
61
56
|
@ui.logger.debug { "Container Up: #{self.id}" }
|
62
57
|
|
63
|
-
(self.node.state
|
64
|
-
(self.
|
58
|
+
(self.node.state == :running) or return false
|
59
|
+
(self.state != :running) or return false
|
65
60
|
|
66
61
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Up', :green)) do
|
67
62
|
configure
|
@@ -106,8 +101,8 @@ class TestLab
|
|
106
101
|
def down
|
107
102
|
@ui.logger.debug { "Container Down: #{self.id}" }
|
108
103
|
|
109
|
-
(self.node.state
|
110
|
-
(self.
|
104
|
+
(self.node.state == :running) or return false
|
105
|
+
(self.state == :running) or return false
|
111
106
|
|
112
107
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Down', :red)) do
|
113
108
|
|
@@ -7,8 +7,8 @@ class TestLab
|
|
7
7
|
def create
|
8
8
|
@ui.logger.debug { "Network Create: #{self.id} " }
|
9
9
|
|
10
|
-
(self.node.state
|
11
|
-
(self.state
|
10
|
+
(self.node.state == :running) or return false
|
11
|
+
(self.state == :not_created) or return false
|
12
12
|
|
13
13
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Create', :green)) do
|
14
14
|
self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
|
@@ -16,7 +16,7 @@ set -x
|
|
16
16
|
grep '#{def_tag}' /etc/network/interfaces && exit 0
|
17
17
|
cat <<EOI | tee -a /etc/network/interfaces
|
18
18
|
#{def_tag}
|
19
|
-
auto
|
19
|
+
auto #{self.bridge}
|
20
20
|
iface #{self.bridge} inet static
|
21
21
|
bridge_ports none
|
22
22
|
bridge_stp off
|
@@ -41,8 +41,8 @@ brctl setfd #{self.bridge} 0
|
|
41
41
|
def destroy
|
42
42
|
@ui.logger.debug { "Network Destroy: #{self.id} " }
|
43
43
|
|
44
|
-
(self.node.state
|
45
|
-
(self.state
|
44
|
+
(self.node.state == :running) or return false
|
45
|
+
(self.state != :not_created) or return false
|
46
46
|
|
47
47
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Destroy', :red)) do
|
48
48
|
self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
|
@@ -61,8 +61,8 @@ brctl delbr #{self.bridge}
|
|
61
61
|
def up
|
62
62
|
@ui.logger.debug { "Network Up: #{self.id} " }
|
63
63
|
|
64
|
-
(self.node.state
|
65
|
-
# (self.state
|
64
|
+
(self.node.state == :running) or return false
|
65
|
+
# (self.state != :running) or return false
|
66
66
|
|
67
67
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Up', :green)) do
|
68
68
|
self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
|
@@ -80,8 +80,8 @@ ifconfig #{self.bridge} #{self.ip} netmask #{self.netmask} broadcast #{self.broa
|
|
80
80
|
def down
|
81
81
|
@ui.logger.debug { "Network Down: #{self.id} " }
|
82
82
|
|
83
|
-
(self.node.state
|
84
|
-
# (self.state
|
83
|
+
(self.node.state == :running) or return false
|
84
|
+
# (self.state == :running) or return false
|
85
85
|
|
86
86
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Down', :red)) do
|
87
87
|
self.node.bootstrap(<<-EOF, :ignore_exit_status => true)
|
data/lib/testlab/node/actions.rb
CHANGED
@@ -7,7 +7,7 @@ class TestLab
|
|
7
7
|
def create
|
8
8
|
@ui.logger.debug { "Node Create: #{self.id} " }
|
9
9
|
|
10
|
-
(self.state
|
10
|
+
(self.state == :not_created) or return false
|
11
11
|
|
12
12
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Create', :green)) do
|
13
13
|
@provider.create
|
@@ -22,7 +22,7 @@ class TestLab
|
|
22
22
|
def destroy
|
23
23
|
@ui.logger.debug { "Node Destroy: #{self.id} " }
|
24
24
|
|
25
|
-
(self.state
|
25
|
+
(self.state != :not_created) or return false
|
26
26
|
|
27
27
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Destroy', :red)) do
|
28
28
|
@provider.destroy
|
@@ -37,7 +37,7 @@ class TestLab
|
|
37
37
|
def up
|
38
38
|
@ui.logger.debug { "Node Up: #{self.id} " }
|
39
39
|
|
40
|
-
(self.state
|
40
|
+
(self.state != :running) or return false
|
41
41
|
|
42
42
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Up', :green)) do
|
43
43
|
@provider.up
|
@@ -52,7 +52,7 @@ class TestLab
|
|
52
52
|
def down
|
53
53
|
@ui.logger.debug { "Node Down: #{self.id} " }
|
54
54
|
|
55
|
-
(self.state
|
55
|
+
(self.state == :running) or return false
|
56
56
|
|
57
57
|
please_wait(:ui => @ui, :message => format_object_action(self, 'Down', :red)) do
|
58
58
|
@provider.down
|
@@ -63,16 +63,19 @@ class TestLab
|
|
63
63
|
# Online Vagrant-controlled VM
|
64
64
|
def up
|
65
65
|
self.vagrant_cli("up", self.instance_id)
|
66
|
+
|
66
67
|
ZTK::TCPSocketCheck.new(:host => self.ip, :port => self.port, :wait => 120, :ui => @ui).wait
|
67
68
|
|
68
69
|
true
|
69
70
|
end
|
70
71
|
|
71
72
|
# Halt Vagrant-controlled VM
|
72
|
-
def down
|
73
|
+
def down(*args)
|
73
74
|
!self.exists? and raise VagrantError, MSG_NO_LAB
|
74
75
|
|
75
|
-
|
76
|
+
arguments = (%W(halt #{self.instance_id}) + args).flatten.compact
|
77
|
+
|
78
|
+
self.vagrant_cli(*arguments)
|
76
79
|
|
77
80
|
true
|
78
81
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
set -x
|
2
|
+
set -e
|
2
3
|
|
3
4
|
dpkg --status bind9 &> /dev/null || <%= (@resolv[:object] == :container).inspect %>
|
4
5
|
|
5
|
-
|
6
|
-
cat << EOF | tee /etc/resolv.conf
|
6
|
+
cat <<EOF | tee /etc/resolv.conf
|
7
7
|
<%= ZTK::Template.do_not_edit_notice(:message => "TestLab Resolv Provisioner") %>
|
8
8
|
<% if !@resolv[:domain].nil? -%>
|
9
9
|
domain <%= @resolv[:domain] %>
|
@@ -17,4 +17,3 @@ nameserver <%= server %>
|
|
17
17
|
<% end -%>
|
18
18
|
<% end -%>
|
19
19
|
EOF
|
20
|
-
fi
|
data/lib/testlab/version.rb
CHANGED
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.4
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Zachary Patten
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-12 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: gli
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
19
|
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
@@ -20,6 +22,7 @@ dependencies:
|
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
27
|
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
@@ -27,6 +30,7 @@ dependencies:
|
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: lxc
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
35
|
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
@@ -34,6 +38,7 @@ dependencies:
|
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
43
|
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
@@ -41,6 +46,7 @@ dependencies:
|
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: ztk
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
51
|
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
@@ -48,6 +54,7 @@ dependencies:
|
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
@@ -55,6 +62,7 @@ dependencies:
|
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: activesupport
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ! '>='
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,6 +70,7 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
@@ -69,6 +78,7 @@ dependencies:
|
|
69
78
|
- !ruby/object:Gem::Dependency
|
70
79
|
name: bundler
|
71
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
72
82
|
requirements:
|
73
83
|
- - ! '>='
|
74
84
|
- !ruby/object:Gem::Version
|
@@ -76,6 +86,7 @@ dependencies:
|
|
76
86
|
type: :development
|
77
87
|
prerelease: false
|
78
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
79
90
|
requirements:
|
80
91
|
- - ! '>='
|
81
92
|
- !ruby/object:Gem::Version
|
@@ -83,6 +94,7 @@ dependencies:
|
|
83
94
|
- !ruby/object:Gem::Dependency
|
84
95
|
name: pry
|
85
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
86
98
|
requirements:
|
87
99
|
- - ! '>='
|
88
100
|
- !ruby/object:Gem::Version
|
@@ -90,6 +102,7 @@ dependencies:
|
|
90
102
|
type: :development
|
91
103
|
prerelease: false
|
92
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
93
106
|
requirements:
|
94
107
|
- - ! '>='
|
95
108
|
- !ruby/object:Gem::Version
|
@@ -97,6 +110,7 @@ dependencies:
|
|
97
110
|
- !ruby/object:Gem::Dependency
|
98
111
|
name: rake
|
99
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
100
114
|
requirements:
|
101
115
|
- - ! '>='
|
102
116
|
- !ruby/object:Gem::Version
|
@@ -104,6 +118,7 @@ dependencies:
|
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
107
122
|
requirements:
|
108
123
|
- - ! '>='
|
109
124
|
- !ruby/object:Gem::Version
|
@@ -111,6 +126,7 @@ dependencies:
|
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
127
|
name: redcarpet
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
114
130
|
requirements:
|
115
131
|
- - ! '>='
|
116
132
|
- !ruby/object:Gem::Version
|
@@ -118,6 +134,7 @@ dependencies:
|
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
121
138
|
requirements:
|
122
139
|
- - ! '>='
|
123
140
|
- !ruby/object:Gem::Version
|
@@ -125,6 +142,7 @@ dependencies:
|
|
125
142
|
- !ruby/object:Gem::Dependency
|
126
143
|
name: aruba
|
127
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
128
146
|
requirements:
|
129
147
|
- - ! '>='
|
130
148
|
- !ruby/object:Gem::Version
|
@@ -132,6 +150,7 @@ dependencies:
|
|
132
150
|
type: :development
|
133
151
|
prerelease: false
|
134
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
135
154
|
requirements:
|
136
155
|
- - ! '>='
|
137
156
|
- !ruby/object:Gem::Version
|
@@ -139,6 +158,7 @@ dependencies:
|
|
139
158
|
- !ruby/object:Gem::Dependency
|
140
159
|
name: rspec
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
142
162
|
requirements:
|
143
163
|
- - ! '>='
|
144
164
|
- !ruby/object:Gem::Version
|
@@ -146,6 +166,7 @@ dependencies:
|
|
146
166
|
type: :development
|
147
167
|
prerelease: false
|
148
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
149
170
|
requirements:
|
150
171
|
- - ! '>='
|
151
172
|
- !ruby/object:Gem::Version
|
@@ -153,6 +174,7 @@ dependencies:
|
|
153
174
|
- !ruby/object:Gem::Dependency
|
154
175
|
name: yard
|
155
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
156
178
|
requirements:
|
157
179
|
- - ! '>='
|
158
180
|
- !ruby/object:Gem::Version
|
@@ -160,6 +182,7 @@ dependencies:
|
|
160
182
|
type: :development
|
161
183
|
prerelease: false
|
162
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
163
186
|
requirements:
|
164
187
|
- - ! '>='
|
165
188
|
- !ruby/object:Gem::Version
|
@@ -167,6 +190,7 @@ dependencies:
|
|
167
190
|
- !ruby/object:Gem::Dependency
|
168
191
|
name: coveralls
|
169
192
|
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
170
194
|
requirements:
|
171
195
|
- - ! '>='
|
172
196
|
- !ruby/object:Gem::Version
|
@@ -174,6 +198,7 @@ dependencies:
|
|
174
198
|
type: :development
|
175
199
|
prerelease: false
|
176
200
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
177
202
|
requirements:
|
178
203
|
- - ! '>='
|
179
204
|
- !ruby/object:Gem::Version
|
@@ -303,26 +328,27 @@ files:
|
|
303
328
|
homepage: http://hackers.lookout.com/testlab/
|
304
329
|
licenses:
|
305
330
|
- Apache 2.0
|
306
|
-
metadata: {}
|
307
331
|
post_install_message:
|
308
332
|
rdoc_options: []
|
309
333
|
require_paths:
|
310
334
|
- lib
|
311
335
|
required_ruby_version: !ruby/object:Gem::Requirement
|
336
|
+
none: false
|
312
337
|
requirements:
|
313
338
|
- - ! '>='
|
314
339
|
- !ruby/object:Gem::Version
|
315
340
|
version: '0'
|
316
341
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
342
|
+
none: false
|
317
343
|
requirements:
|
318
344
|
- - ! '>='
|
319
345
|
- !ruby/object:Gem::Version
|
320
346
|
version: '0'
|
321
347
|
requirements: []
|
322
348
|
rubyforge_project:
|
323
|
-
rubygems_version:
|
349
|
+
rubygems_version: 1.8.25
|
324
350
|
signing_key:
|
325
|
-
specification_version:
|
351
|
+
specification_version: 3
|
326
352
|
summary: A toolkit for building virtual computer labs
|
327
353
|
test_files:
|
328
354
|
- features/step_definitions/container_steps.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
NzQyNWVlODk4ZmQwZGRlYzM1YTRiM2VhOGE0MTllZTZiOWVmODUyMg==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YzhhMTgyMGRmYzIxODRkYzgyYzRkM2E3NjRjYmQ4YzRlMGE3NzFmYQ==
|
7
|
-
!binary "U0hBNTEy":
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MWY3NmU2NGQ1OTUzYzM3NTQxODk1MmMyYWIzNDRhYzQyNzE0MGJjNDA4MWZj
|
10
|
-
NGJiZTdhNDgxOWFjMTFmZDVlNzAyYTg3N2RkNjM4YTMxZmIyMDlmMDQ3Nzk2
|
11
|
-
MDNkN2ZlZGFkMjE0ZDhkNzM2ZjhjNjdmYzUxNGM0OTAzOTljYWY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Y2MyMTY5ZjQ5NzE4OTQ3ODJlYzEwNjExYzBiZGU4YjM1OWJkZWE1MTc5MmFi
|
14
|
-
ODM2YTdjY2I2Mjc0ZGI5ODdjZDA0YThjNzZhNjBlYjgzNjE0ZTU4YTM3OTIz
|
15
|
-
MmY5MmJiZGMzNTU3MWE5NTgzMGNhZTgwNDQyNTU0YzgyMTU5NDA=
|