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 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