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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODEzMTU2YzNkOWY1NWYxOTI3MzY5MTljMjg2YmYyY2M3NzJmZTI5ZA==
4
+ OTgyMTBmNTdkOWE4MzM2MjIyMmE4NzE4ZmNhODgzMzAyN2Q1ZWIwNw==
5
5
  data.tar.gz: !binary |-
6
- NzljYzMzMjU0OTJlZGNhNjUzYjI4NWE1NTNkMzgzZjE0OGM1NmU4NQ==
6
+ NWJiNGNmOGJhMmQ3YWM0OWZiMmFjN2Q1ODZiMDlmNjU0ZWZiM2Q5NQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmQzODc1ZGZlMjY3NmRiYWUyOGNiZWUzOGQ1OTY3YTNiMWNjMDBjYTc4NzFk
10
- N2JiNWYxZGQ3NzQ0ZDkxNGFmYzZhZDkyMjgyODRiNDNkZjg5YTIxZDBmYjE4
11
- Y2IyNTg3Y2M4ZjhjZDZlM2Y4ZTRmNGEyN2Q3Njk4MjY1YmRhMjY=
9
+ M2ZiZDFkMTRkNGJhMDg3NWM0ZGYwZmYzYjU5ODc3YTNiM2VjZTdmMTZiMjJj
10
+ ODU0OGE3YjRiYTZhNmM2YmE1NDlhY2U3NzYxZmIxZmUwZTY3MDUwZjIzMmYz
11
+ YWQ0MDdiZjI5NDQzMjExNTQ4OGJiNTllZTA3NDAzYWI4MDE2YWI=
12
12
  data.tar.gz: !binary |-
13
- NmM1ZTA2NzMzNmYwMzQ1MDVhMmNhZTRmMmIzNDJhZjZiNzBmMzU1NzE5OTc1
14
- MmQzMTQxMGU1MzdiMzZiMThmMjNhZDlkNTkzNjA0NTNkMGU2MTZkNzZiZmM1
15
- NjAxM2JiMTY0ZGNjOWM1ZjA5Y2MyYTVkZTgyOGU2Njk4NDk4OWM=
13
+ NmExNTZjYjQ2YjZmNzBlOGM3MzUxYjEzZGU5MzA0ZjRmN2Y3NDgyYjZlMmRj
14
+ ODUwNTUyZTdiOGQzYjg4NDk3Y2ZjNDE4Mjg5MzAwNDQ2NmQyZjM0MTM2YTAz
15
+ ZTg4NmI5NTg0Yjg0ZmQyNDQyZmQ5MTgzMDg1NjQ4OTVhYTFlYTM=
@@ -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[:memory] ||= 1024
66
- configuration[:cpus] ||= 1
67
- configuration[:network] ||= :hostnet
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}".bold)
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
- log.print("Waiting for shutdown of VBox #{vmname}. Please wait ...|".bold)
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("\b" + %w{| / - \\}[(n+1) % 4].bold)
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("\bdone".bold)
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
- log.print("Determining IP address for VBox #{vmname}. Please wait ...|".bold)
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("\b" + %w{| / - \\}[(n+1) % 4].bold)
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("\bdone".bold)
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}".bold)
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}".bold)
205
+ log("Removed node #{tgt}", :bold)
203
206
  else
204
- log("No existing node #{vmname} found!".yellow)
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
@@ -5,6 +5,6 @@
5
5
 
6
6
  module Inprovise; module VBox
7
7
 
8
- VERSION = '0.2.3'
8
+ VERSION = '0.2.4'
9
9
 
10
10
  end; 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 'requires a configuration' do
30
- assert_raises ArgumentError do
31
- script = Inprovise::DSL.module_eval do
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.3
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-08 00:00:00.000000000 Z
11
+ date: 2016-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inprovise