inprovise-vbox 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/inprovise/vbox/vbox.rb +23 -16
- data/lib/inprovise/vbox/version.rb +1 -1
- data/test/vbox_test.rb +8 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTgyMTBmNTdkOWE4MzM2MjIyMmE4NzE4ZmNhODgzMzAyN2Q1ZWIwNw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NWJiNGNmOGJhMmQ3YWM0OWZiMmFjN2Q1ODZiMDlmNjU0ZWZiM2Q5NQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2ZiZDFkMTRkNGJhMDg3NWM0ZGYwZmYzYjU5ODc3YTNiM2VjZTdmMTZiMjJj
|
10
|
+
ODU0OGE3YjRiYTZhNmM2YmE1NDlhY2U3NzYxZmIxZmUwZTY3MDUwZjIzMmYz
|
11
|
+
YWQ0MDdiZjI5NDQzMjExNTQ4OGJiNTllZTA3NDAzYWI4MDE2YWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmExNTZjYjQ2YjZmNzBlOGM3MzUxYjEzZGU5MzA0ZjRmN2Y3NDgyYjZlMmRj
|
14
|
+
ODUwNTUyZTdiOGQzYjg4NDk3Y2ZjNDE4Mjg5MzAwNDQ2NmQyZjM0MTM2YTAz
|
15
|
+
ZTg4NmI5NTg0Yjg0ZmQyNDQyZmQ5MTgzMDg1NjQ4OTVhYTFlYTM=
|
data/lib/inprovise/vbox/vbox.rb
CHANGED
@@ -59,14 +59,14 @@ module Inprovise::VBox
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def setup
|
62
|
-
# verify mandatory configuration
|
63
|
-
raise ArgumentError, "Missing required configuration for vbox script #{name}" unless Hash === configuration || OpenStruct === configuration
|
64
62
|
# take care of defaults
|
65
|
-
configuration
|
66
|
-
configuration[:
|
67
|
-
configuration[:
|
63
|
+
@configuration ||= {}
|
64
|
+
@configuration[:arch] ||= 'x86_64'
|
65
|
+
@configuration[:memory] ||= 1024
|
66
|
+
@configuration[:cpus] ||= 1
|
67
|
+
@configuration[:network] ||= :hostnet
|
68
68
|
# generate name if none set
|
69
|
-
configuration[:name] ||= "#{name}_#{self.hash}_#{Time.now.to_f}"
|
69
|
+
@configuration[:name] ||= "#{name}_#{self.hash}_#{Time.now.to_f}"
|
70
70
|
|
71
71
|
vbs = self
|
72
72
|
# define the scripts that do the actual work as dependencies
|
@@ -97,8 +97,9 @@ module Inprovise::VBox
|
|
97
97
|
# 1. verify config
|
98
98
|
raise ArgumentError, "Cannot access VBox image #{vmimg}" unless remote(vmimg).file?
|
99
99
|
# 2. execute virt-install
|
100
|
-
log("Installing VBox #{vmname}"
|
100
|
+
log("Installing VBox #{vmname}", :bold)
|
101
101
|
cmdline = 'virt-install --connect qemu:///system --hvm --virt-type kvm --import --wait 0 '
|
102
|
+
cmdline << "--arch #{vbs.vbox_arch(self)} "
|
102
103
|
cmdline << '--autostart ' if vbs.vbox_autostart(self)
|
103
104
|
cmdline << "--name #{vmname} --memory #{vbs.vbox_memory(self)} --vcpus #{vbs.vbox_cpus(self)} "
|
104
105
|
cmdline << "--os-variant #{vbs.vbox_os(self)} " if vbs.vbox_os(self)
|
@@ -126,17 +127,18 @@ module Inprovise::VBox
|
|
126
127
|
vmname = vbs.vbox_name(self)
|
127
128
|
if trigger 'vbox:vbox-verify', vmname, true
|
128
129
|
trigger 'vbox:vbox-shutdown', vmname
|
129
|
-
|
130
|
+
msg = "Waiting for shutdown of VBox #{vmname}. Please wait ..."
|
131
|
+
log.print("#{msg}|\r", :bold)
|
130
132
|
30.times do |n|
|
131
133
|
sleep(1)
|
132
|
-
log.print("
|
134
|
+
log.print("#{msg}#{%w{| / - \\}[(n+1) % 4]}\r", :bold)
|
133
135
|
break unless trigger 'vbox:vbox-verify', vmname, true
|
134
136
|
end
|
135
137
|
if trigger('vbox:vbox-verify', vmname, true)
|
136
138
|
trigger('vbox:vbox-kill', vmname)
|
137
139
|
sleep(1)
|
138
140
|
end
|
139
|
-
log.println("
|
141
|
+
log.println("#{msg}done", :bold)
|
140
142
|
end
|
141
143
|
trigger('vbox:vbox-delete', vmname) unless trigger('vbox:vbox-verify', vmname, true)
|
142
144
|
end
|
@@ -160,17 +162,18 @@ module Inprovise::VBox
|
|
160
162
|
vmname = vbs.vbox_name(self)
|
161
163
|
unless vbs.vbox_no_node(self)
|
162
164
|
# get MAC and IP for VM
|
163
|
-
|
165
|
+
msg = "Determining IP address for VBox #{vmname}. Please wait ..."
|
166
|
+
log.print("#{msg}|\r", :bold)
|
164
167
|
mac = addr = nil
|
165
168
|
150.times do |n|
|
166
169
|
sleep(2)
|
167
|
-
log.print("
|
170
|
+
log.print("#{msg}#{%w{| / - \\}[(n+1) % 4]}\r", :bold)
|
168
171
|
mac, addr = trigger 'vbox:vbox-ifaddr', vmname
|
169
172
|
if addr
|
170
173
|
break
|
171
174
|
end
|
172
175
|
end
|
173
|
-
log.println("
|
176
|
+
log.println("#{msg}done", :bold)
|
174
177
|
raise RuntimeError, "Failed to determin IP address for VBox #{vmname}" unless addr
|
175
178
|
log("VBox #{vmname} : mac=#{mac}, addr=#{addr}") if Inprovise.verbosity > 0
|
176
179
|
vbox_opts = vbs.vbox_config_hash(self)
|
@@ -187,7 +190,7 @@ module Inprovise::VBox
|
|
187
190
|
Inprovise::Sniffer.run_sniffers_for(node) rescue Inprovise::Sniffer.run_sniffers_for(node)
|
188
191
|
Inprovise::Infrastructure.save
|
189
192
|
end
|
190
|
-
log("Added new node #{node}"
|
193
|
+
log("Added new node #{node}", :bold)
|
191
194
|
end
|
192
195
|
end
|
193
196
|
|
@@ -199,9 +202,9 @@ module Inprovise::VBox
|
|
199
202
|
if tgt && Inprovise::Infrastructure::Node === tgt
|
200
203
|
Inprovise::Infrastructure.deregister(vmname)
|
201
204
|
Inprovise::Infrastructure.save
|
202
|
-
log("Removed node #{tgt}"
|
205
|
+
log("Removed node #{tgt}", :bold)
|
203
206
|
else
|
204
|
-
log("No existing node #{vmname} found!"
|
207
|
+
log("No existing node #{vmname} found!", :yellow)
|
205
208
|
end
|
206
209
|
end
|
207
210
|
end
|
@@ -235,6 +238,10 @@ module Inprovise::VBox
|
|
235
238
|
value_for context, context.config[name.to_sym][:image]
|
236
239
|
end
|
237
240
|
|
241
|
+
def vbox_arch(context)
|
242
|
+
value_for context, context.config[name.to_sym][:arch]
|
243
|
+
end
|
244
|
+
|
238
245
|
def vbox_memory(context)
|
239
246
|
value_for context, context.config[name.to_sym][:memory]
|
240
247
|
end
|
data/test/vbox_test.rb
CHANGED
@@ -26,13 +26,16 @@ describe Inprovise::VBox do
|
|
26
26
|
script.name.must_equal 'myVbox'
|
27
27
|
end
|
28
28
|
|
29
|
-
it '
|
30
|
-
|
31
|
-
|
32
|
-
vbox 'myVbox' do
|
33
|
-
end
|
29
|
+
it 'defines default configuration' do
|
30
|
+
script = Inprovise::DSL.module_eval do
|
31
|
+
vbox 'myVbox' do
|
34
32
|
end
|
35
33
|
end
|
34
|
+
script.configuration.must_be_kind_of Hash
|
35
|
+
script.configuration[:arch].must_equal 'x86_64'
|
36
|
+
script.configuration[:memory].must_equal 1024
|
37
|
+
script.configuration[:cpus].must_equal 1
|
38
|
+
script.configuration[:network].must_equal :hostnet
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inprovise-vbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Corino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inprovise
|