inprovise-vbox 0.2.2 → 0.2.3
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 +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
|