inprovise-vbox 0.2.2 → 0.2.3
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 +39 -23
- data/lib/inprovise/vbox/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODEzMTU2YzNkOWY1NWYxOTI3MzY5MTljMjg2YmYyY2M3NzJmZTI5ZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzljYzMzMjU0OTJlZGNhNjUzYjI4NWE1NTNkMzgzZjE0OGM1NmU4NQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NmQzODc1ZGZlMjY3NmRiYWUyOGNiZWUzOGQ1OTY3YTNiMWNjMDBjYTc4NzFk
|
10
|
+
N2JiNWYxZGQ3NzQ0ZDkxNGFmYzZhZDkyMjgyODRiNDNkZjg5YTIxZDBmYjE4
|
11
|
+
Y2IyNTg3Y2M4ZjhjZDZlM2Y4ZTRmNGEyN2Q3Njk4MjY1YmRhMjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmM1ZTA2NzMzNmYwMzQ1MDVhMmNhZTRmMmIzNDJhZjZiNzBmMzU1NzE5OTc1
|
14
|
+
MmQzMTQxMGU1MzdiMzZiMThmMjNhZDlkNTkzNjA0NTNkMGU2MTZkNzZiZmM1
|
15
|
+
NjAxM2JiMTY0ZGNjOWM1ZjA5Y2MyYTVkZTgyOGU2Njk4NDk4OWM=
|
data/lib/inprovise/vbox/vbox.rb
CHANGED
@@ -17,9 +17,10 @@ module Inprovise::VBox
|
|
17
17
|
action('vbox-start') do |vboxname|
|
18
18
|
sudo("virsh start #{vboxname}")
|
19
19
|
end
|
20
|
-
action('vbox-verify') do |vboxname, autostart=false|
|
20
|
+
action('vbox-verify') do |vboxname, running=false, autostart=false|
|
21
21
|
vbox_info = sudo("virsh dominfo #{vboxname}").gsub("\n", ' ')
|
22
|
-
vbox_info =~ /name:\s+#{vboxname}
|
22
|
+
vbox_info =~ /name:\s+#{vboxname}/i &&
|
23
|
+
(!running || vbox_info =~ /state:\s+running/i) &&
|
23
24
|
(!autostart || vbox_info =~ /autostart:\s+enable/i)
|
24
25
|
end
|
25
26
|
action('vbox-delete') do |vboxname|
|
@@ -75,14 +76,18 @@ module Inprovise::VBox
|
|
75
76
|
# verify VM
|
76
77
|
validate do
|
77
78
|
vmname = vbs.vbox_name(self)
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
79
|
+
if trigger 'vbox:vbox-verify', vmname
|
80
|
+
true # vm with this name already running
|
81
|
+
else
|
82
|
+
# look for existing target with VM name on :apply unless node creation is suppressed
|
83
|
+
if command == :apply && !vbs.vbox_no_node(self)
|
84
|
+
if tgt = Inprovise::Infrastructure.find(vmname)
|
85
|
+
type = Inprovise::Infrastructure::Group === tgt ? 'group' : 'node'
|
86
|
+
raise ArgumentError, "VBox #{vmname} clashes with existing #{type}"
|
87
|
+
end
|
83
88
|
end
|
89
|
+
false
|
84
90
|
end
|
85
|
-
trigger 'vbox:vbox-verify', vmname, (command == :apply && vbs.vbox_autostart(self))
|
86
91
|
end
|
87
92
|
|
88
93
|
# apply : installation
|
@@ -112,32 +117,44 @@ module Inprovise::VBox
|
|
112
117
|
sudo(cmdline)
|
113
118
|
10.times do
|
114
119
|
sleep(1)
|
115
|
-
break if trigger 'vbox:vbox-verify', vmname, vbs.vbox_autostart(self)
|
120
|
+
break if trigger 'vbox:vbox-verify', vmname, true, vbs.vbox_autostart(self)
|
116
121
|
end
|
117
122
|
end
|
118
123
|
|
119
124
|
# revert : uninstall
|
120
125
|
revert do
|
121
126
|
vmname = vbs.vbox_name(self)
|
122
|
-
trigger 'vbox:vbox-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
trigger('vbox:vbox-
|
131
|
-
|
127
|
+
if trigger 'vbox:vbox-verify', vmname, true
|
128
|
+
trigger 'vbox:vbox-shutdown', vmname
|
129
|
+
log.print("Waiting for shutdown of VBox #{vmname}. Please wait ...|".bold)
|
130
|
+
30.times do |n|
|
131
|
+
sleep(1)
|
132
|
+
log.print("\b" + %w{| / - \\}[(n+1) % 4].bold)
|
133
|
+
break unless trigger 'vbox:vbox-verify', vmname, true
|
134
|
+
end
|
135
|
+
if trigger('vbox:vbox-verify', vmname, true)
|
136
|
+
trigger('vbox:vbox-kill', vmname)
|
137
|
+
sleep(1)
|
138
|
+
end
|
139
|
+
log.println("\bdone".bold)
|
132
140
|
end
|
133
|
-
|
134
|
-
trigger('vbox:vbox-delete', vmname) unless trigger('vbox:vbox-verify', vmname)
|
141
|
+
trigger('vbox:vbox-delete', vmname) unless trigger('vbox:vbox-verify', vmname, true)
|
135
142
|
end
|
136
143
|
end
|
137
144
|
|
138
145
|
# 2. add an Inprovise node if the VM was installed successfully
|
139
146
|
@node_script = Inprovise::DSL.script "#{name}#vbox_node" do
|
140
147
|
|
148
|
+
validate do
|
149
|
+
vmname = vbs.vbox_name(self)
|
150
|
+
if tgt = Inprovise::Infrastructure.find(vmname)
|
151
|
+
raise ArgumentError, "VBox #{vmname} clashes with existing group" if Inprovise::Infrastructure::Group === tgt
|
152
|
+
true
|
153
|
+
else
|
154
|
+
false
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
141
158
|
# add a node object for the new VM unless suppressed
|
142
159
|
apply do
|
143
160
|
vmname = vbs.vbox_name(self)
|
@@ -160,11 +177,10 @@ module Inprovise::VBox
|
|
160
177
|
vbox_opts.delete(:no_node)
|
161
178
|
vbox_opts.delete(:no_sniff)
|
162
179
|
node_opts = vbox_opts.delete(:node) || {}
|
163
|
-
node_name = node_opts.delete(:name) || vmname
|
164
180
|
node_opts[:host] ||= addr
|
165
181
|
node_opts[:user] ||= vbs.vbox_user(self)
|
166
182
|
node_opts[:vbox] = vbox_opts
|
167
|
-
node = Inprovise::Infrastructure::Node.new(
|
183
|
+
node = Inprovise::Infrastructure::Node.new(vmname, node_opts)
|
168
184
|
Inprovise::Infrastructure.save
|
169
185
|
unless vbs.vbox_no_sniff(self)
|
170
186
|
# retry on (comm) failure
|