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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MTc2NzIyNTlkODRmYjBjNzJiYjYyOTA2MTczYWM1ZmMxYzM0YzI0Nw==
4
+ ODEzMTU2YzNkOWY1NWYxOTI3MzY5MTljMjg2YmYyY2M3NzJmZTI5ZA==
5
5
  data.tar.gz: !binary |-
6
- OTJmZmQ1YTY3ZWVhZDE5NDliNTVhYzlmNWZkNTIxMGFkMDA3ZTcwNQ==
6
+ NzljYzMzMjU0OTJlZGNhNjUzYjI4NWE1NTNkMzgzZjE0OGM1NmU4NQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YjFkMWM1ZmM3NDE4YTU4N2ExZWRiYjM5YjNjOTc4OWI2Yzc4NWJmNzgxYmE1
10
- NjFmYjdmZmJiMjc3ZjFmZjMwNjE0MWFmNDZlODZmMGVhNTI3YzZlZmEyZTJm
11
- OTM1ZjdlZDQ2NTA3NTQ2N2I0OTE0Y2Q3MGRiYzBmODc3ZDU3MWQ=
9
+ NmQzODc1ZGZlMjY3NmRiYWUyOGNiZWUzOGQ1OTY3YTNiMWNjMDBjYTc4NzFk
10
+ N2JiNWYxZGQ3NzQ0ZDkxNGFmYzZhZDkyMjgyODRiNDNkZjg5YTIxZDBmYjE4
11
+ Y2IyNTg3Y2M4ZjhjZDZlM2Y4ZTRmNGEyN2Q3Njk4MjY1YmRhMjY=
12
12
  data.tar.gz: !binary |-
13
- ZDcyN2VkMmI2N2I1NzI5ZjhhNzM2OWNmYzBhZWFhZWMxOGQzMTVhYTVlMGRk
14
- ZWZmMzE3MTI3NDk1ZTI1Njc5ZDFkY2JjNjBmMGQ0ZmE1MmIwNjVlNDdkNGFm
15
- NGNjM2EyYzI4ZGVkYmQ1NzA1NDA4Njc3YzM5MGE4MTlmZTUwZjY=
13
+ NmM1ZTA2NzMzNmYwMzQ1MDVhMmNhZTRmMmIzNDJhZjZiNzBmMzU1NzE5OTc1
14
+ MmQzMTQxMGU1MzdiMzZiMThmMjNhZDlkNTkzNjA0NTNkMGU2MTZkNzZiZmM1
15
+ NjAxM2JiMTY0ZGNjOWM1ZjA5Y2MyYTVkZTgyOGU2Njk4NDk4OWM=
@@ -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}\s.*state:\s+running/i &&
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
- # look for existing target with VM name on :apply unless node creation is suppressed
79
- if command == :apply && !vbs.vbox_no_node(self)
80
- if tgt = Inprovise::Infrastructure.find(vmname)
81
- type = Inprovise::Infrastructure::Group === tgt ? 'group' : 'node'
82
- raise ArgumentError, "VBox #{vmname} clashes with existing #{type}"
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-shutdown', vmname
123
- log.print("Waiting for shutdown of VBox #{vmname}. Please wait ...|".bold)
124
- 30.times do |n|
125
- sleep(1)
126
- log.print("\b" + %w{| / - \\}[(n+1) % 4].bold)
127
- break unless trigger 'vbox:vbox-verify', vmname
128
- end
129
- if trigger('vbox:vbox-verify', vmname)
130
- trigger('vbox:vbox-kill', vmname)
131
- sleep(1)
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
- log.println("\bdone".bold)
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(node_name, node_opts)
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
@@ -5,6 +5,6 @@
5
5
 
6
6
  module Inprovise; module VBox
7
7
 
8
- VERSION = '0.2.2'
8
+ VERSION = '0.2.3'
9
9
 
10
10
  end; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inprovise-vbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Corino