inprovise-vbox 0.2.3 → 0.2.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.
- 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
|