opennebula 5.13.90.pre → 6.0.0
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 +4 -4
- data/lib/cloud/CloudClient.rb +1 -1
- data/lib/datacenter.rb +0 -2
- data/lib/network.rb +6 -15
- data/lib/opennebula.rb +1 -1
- data/lib/opennebula/marketplaceapp_ext.rb +77 -13
- data/lib/scripts_common.rb +3 -0
- data/lib/vi_helper.rb +2 -1
- data/lib/virtual_machine.rb +1 -1
- data/lib/vm_template.rb +7 -5
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6198250d78ce52345198a1d86230f430589cef5c
|
4
|
+
data.tar.gz: 3caf470ee5faab9e3c09576f79ad781db3653803
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4695c98d18bdd50b28c5f185e7bdb6e2bc1ef153562d5c690635af667a954edd78ab3073f014aa5c9059e755d9f1ab34859004bf88ffd6e99853a47acb5a0bc4
|
7
|
+
data.tar.gz: ada07168177c2121930a8f0707329f23a34cc91a28f2e3f45d0f24a926bd0682d188a7ba04b4b144c1d9ad1427ebe9b41cedf6a523e84e0eefc1f141966513fc
|
data/lib/cloud/CloudClient.rb
CHANGED
data/lib/datacenter.rb
CHANGED
@@ -576,7 +576,6 @@ module VCenterDriver
|
|
576
576
|
# Initialize opts hash used to inject data into one template
|
577
577
|
opts = {}
|
578
578
|
|
579
|
-
# if full_process
|
580
579
|
# Add network type to network hash
|
581
580
|
network_type = \
|
582
581
|
VCenterDriver::Network.get_network_type(
|
@@ -585,7 +584,6 @@ module VCenterDriver
|
|
585
584
|
)
|
586
585
|
network[vc_network_ref][:network_type] = network_type
|
587
586
|
network[vc_network_ref][:type] = network_type
|
588
|
-
# end
|
589
587
|
|
590
588
|
# Determine if the network must be excluded
|
591
589
|
network[vc_network_ref][:excluded] = exclude_network?(
|
data/lib/network.rb
CHANGED
@@ -486,7 +486,7 @@ module VCenterDriver
|
|
486
486
|
@defaults = { :size => '255', :type => 'ether' }
|
487
487
|
end
|
488
488
|
|
489
|
-
def process_import(indexes, opts = {}, &
|
489
|
+
def process_import(indexes, opts = {}, &_block)
|
490
490
|
indexes = indexes.gsub(/\s*\,\s*/, ',').strip.split(',')
|
491
491
|
|
492
492
|
dc_folder = VCenterDriver::DatacenterFolder.new(@vi_client)
|
@@ -526,30 +526,21 @@ module VCenterDriver
|
|
526
526
|
"#{hpool.message}"
|
527
527
|
end
|
528
528
|
|
529
|
-
opts = {}
|
530
|
-
|
531
529
|
params = {}
|
532
530
|
params[:vc_network] = vc_cluster_network
|
533
531
|
params[:vcenter_instance_name] = vcenter_instance_name
|
534
532
|
params[:vcenter_uuid] = vcenter_uuid
|
535
533
|
params[:_hpool] = hpool
|
536
534
|
params[:one_host] = one_host
|
537
|
-
params[:args] =
|
535
|
+
params[:args] = {}
|
538
536
|
|
539
537
|
selected = dc_folder.process_network(params)
|
540
538
|
|
541
539
|
selected = selected[index]
|
542
540
|
|
543
|
-
if block_given?
|
544
|
-
@info[index][:opts] = block.call(selected)
|
545
|
-
elsif opts[index]
|
546
|
-
@info[index][:opts] = opts[index]
|
547
|
-
else
|
548
|
-
@info[index][:opts] = defaults
|
549
|
-
end
|
550
|
-
|
551
541
|
# import the object
|
552
|
-
|
542
|
+
opts[index] ||= @defaults
|
543
|
+
@info[:success] << import(selected, opts[index])
|
553
544
|
rescue StandardError => e
|
554
545
|
@info[:error] << { index => e.message }
|
555
546
|
@info[index][:e] = e
|
@@ -645,8 +636,8 @@ module VCenterDriver
|
|
645
636
|
str
|
646
637
|
end
|
647
638
|
|
648
|
-
def import(selected)
|
649
|
-
opts = @info[selected[:ref]][:opts]
|
639
|
+
def import(selected, opts = nil)
|
640
|
+
opts = @info[selected[:ref]][:opts] if opts.nil?
|
650
641
|
|
651
642
|
net = VCenterDriver::Network
|
652
643
|
.new_from_ref(selected[:ref], @vi_client)
|
data/lib/opennebula.rb
CHANGED
@@ -155,6 +155,10 @@ module OpenNebula::MarketPlaceAppExt
|
|
155
155
|
is_vcenter = !OpenNebula.is_error?(rc) &&
|
156
156
|
(ds['TEMPLATE/DRIVER'] == 'vcenter')
|
157
157
|
|
158
|
+
if is_vcenter && options[:template].nil?
|
159
|
+
options = update_options_with_template(options)
|
160
|
+
end
|
161
|
+
|
158
162
|
#---------------------------------------------------------------
|
159
163
|
# Allocate the image in OpenNebula
|
160
164
|
#---------------------------------------------------------------
|
@@ -181,15 +185,17 @@ module OpenNebula::MarketPlaceAppExt
|
|
181
185
|
#---------------------------------------------------------------
|
182
186
|
# Created an associated VMTemplate if needed
|
183
187
|
#---------------------------------------------------------------
|
184
|
-
if self['TEMPLATE/VMTEMPLATE64'].nil? ||
|
188
|
+
if (self['TEMPLATE/VMTEMPLATE64'].nil? && !is_vcenter) ||
|
189
|
+
options[:notemplate] ||
|
190
|
+
options[:template] == -1
|
185
191
|
return rc_info
|
186
192
|
end
|
187
193
|
|
188
194
|
if !options[:template].nil?
|
189
195
|
template_id = options[:template]
|
190
196
|
|
191
|
-
if template_id
|
192
|
-
template_id
|
197
|
+
if template_id < 0
|
198
|
+
raise 'Invalid option, template_id must be a valid ID'
|
193
199
|
end
|
194
200
|
|
195
201
|
template = Template.new_with_id(template_id, @client)
|
@@ -280,6 +286,33 @@ module OpenNebula::MarketPlaceAppExt
|
|
280
286
|
rc
|
281
287
|
end
|
282
288
|
|
289
|
+
def update_options_with_template(options, _validate = false)
|
290
|
+
vcenterrc_path =
|
291
|
+
"#{VAR_LOCATION}/remotes/etc/vmm/vcenter/vcenterrc"
|
292
|
+
|
293
|
+
if File.file?(vcenterrc_path)
|
294
|
+
config_vcenter = YAML.load_file(vcenterrc_path)
|
295
|
+
|
296
|
+
if config_vcenter.key?(:default_template)
|
297
|
+
options[:template] =
|
298
|
+
config_vcenter[:default_template]
|
299
|
+
|
300
|
+
options
|
301
|
+
else
|
302
|
+
raise "Couldn't find default_template " \
|
303
|
+
'configuration in vcenterrc conf ' \
|
304
|
+
'file. Please use the --template ' \
|
305
|
+
'file to define a VM Template ID if ' \
|
306
|
+
'needed or add default_template to' \
|
307
|
+
' vcenterrc conf file'
|
308
|
+
end
|
309
|
+
else
|
310
|
+
raise "Couldn't find vcenterrc conf file. " \
|
311
|
+
' Please use the --template file to define' \
|
312
|
+
' a VM Template ID if needed.'
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
283
316
|
# Creates a VM template based on the APPTEMPLATE64 attribute
|
284
317
|
# @param [Hash] options
|
285
318
|
# :export_name [String] name of the vm template
|
@@ -288,19 +321,50 @@ module OpenNebula::MarketPlaceAppExt
|
|
288
321
|
#
|
289
322
|
# @return [Integer, OpenNebula::Error] template id or error
|
290
323
|
def create_vm_template(options, disks)
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
if self['TEMPLATE/APPTEMPLATE64'].nil?
|
295
|
-
return Error.new("Missing APPTEMPLATE64 for App #{id}")
|
296
|
-
end
|
324
|
+
dsid = options[:dsid]
|
325
|
+
ds = OpenNebula::Datastore.new_with_id(dsid, @client)
|
326
|
+
rc = ds.info
|
297
327
|
|
298
|
-
|
328
|
+
is_vcenter =
|
329
|
+
!OpenNebula.is_error?(rc) &&
|
330
|
+
(ds['TEMPLATE/DRIVER'] == 'vcenter')
|
331
|
+
|
332
|
+
if is_vcenter
|
333
|
+
if options[:template].nil?
|
334
|
+
options = update_options_with_template(options)
|
335
|
+
end
|
336
|
+
|
337
|
+
template_id = options[:template]
|
338
|
+
|
339
|
+
if template_id < 0
|
340
|
+
return
|
341
|
+
end
|
342
|
+
|
343
|
+
template = Template.new_with_id(template_id, @client)
|
344
|
+
|
345
|
+
vmtpl_id = template.clone(
|
346
|
+
options[:vmtemplate_name] || options[:name]
|
347
|
+
)
|
348
|
+
|
349
|
+
vmtpl = Template.new_with_id(vmtpl_id, @client)
|
350
|
+
rc = vmtpl.info
|
351
|
+
else
|
352
|
+
# ----------------------------------------------------------
|
353
|
+
# Allocate Template
|
354
|
+
# ----------------------------------------------------------
|
355
|
+
if self['TEMPLATE/APPTEMPLATE64'].nil?
|
356
|
+
return Error.new(
|
357
|
+
"Missing APPTEMPLATE64 for App #{id}"
|
358
|
+
)
|
359
|
+
end
|
360
|
+
|
361
|
+
tmpl = Base64.decode64(self['TEMPLATE/APPTEMPLATE64'])
|
299
362
|
|
300
|
-
|
363
|
+
tmpl << "\nNAME=\"#{options[:name]}\"\n"
|
301
364
|
|
302
|
-
|
303
|
-
|
365
|
+
vmtpl = Template.new(Template.build_xml, @client)
|
366
|
+
rc = vmtpl.allocate(tmpl)
|
367
|
+
end
|
304
368
|
|
305
369
|
return rc if OpenNebula.is_error?(rc)
|
306
370
|
|
data/lib/scripts_common.rb
CHANGED
@@ -14,6 +14,8 @@
|
|
14
14
|
# limitations under the License. #
|
15
15
|
#--------------------------------------------------------------------------- #
|
16
16
|
|
17
|
+
require 'shellwords'
|
18
|
+
|
17
19
|
module OpenNebula
|
18
20
|
|
19
21
|
# Generic log function
|
@@ -76,6 +78,7 @@ module OpenNebula
|
|
76
78
|
# If a second parameter is present it is used as the error message when
|
77
79
|
# the command fails
|
78
80
|
def self.exec_and_log(command, message=nil, allowed_return_code=0)
|
81
|
+
command = command.shellsplit.shelljoin # escape
|
79
82
|
output=`#{command} 2>&1 1>/dev/null`
|
80
83
|
code=$?.exitstatus
|
81
84
|
|
data/lib/vi_helper.rb
CHANGED
@@ -231,10 +231,11 @@ module VCenterDriver
|
|
231
231
|
@ref_hash[attribute][refkey]
|
232
232
|
end
|
233
233
|
|
234
|
+
require 'addressable'
|
234
235
|
def self.find_image_by(att, the_class, path, ds_id, pool = nil)
|
235
236
|
pool = one_pool(the_class, false) if pool.nil?
|
236
237
|
pool.find do |e|
|
237
|
-
e[att] == path &&
|
238
|
+
e[att] == Addressable::URI.escape(path) &&
|
238
239
|
e['DATASTORE_ID'] == ds_id
|
239
240
|
end
|
240
241
|
end
|
data/lib/virtual_machine.rb
CHANGED
@@ -3032,7 +3032,7 @@ module VCenterDriver
|
|
3032
3032
|
# Create a snapshot for the VM
|
3033
3033
|
def create_snapshot(snap_id, snap_name)
|
3034
3034
|
memory_dumps = true
|
3035
|
-
memory_dumps = CONFIG[:memory_dumps]
|
3035
|
+
memory_dumps = CONFIG[:memory_dumps] unless CONFIG[:memory_dumps].nil?
|
3036
3036
|
|
3037
3037
|
snapshot_hash = {
|
3038
3038
|
:name => snap_id,
|
data/lib/vm_template.rb
CHANGED
@@ -1659,10 +1659,12 @@ module VCenterDriver
|
|
1659
1659
|
folders = []
|
1660
1660
|
until item.instance_of? RbVmomi::VIM::Datacenter
|
1661
1661
|
item = item.parent
|
1662
|
-
first_condition =
|
1663
|
-
|
1662
|
+
first_condition =
|
1663
|
+
!(item.instance_of? RbVmomi::VIM::Datacenter)
|
1664
|
+
second_condition =
|
1665
|
+
item.name != 'vm'
|
1664
1666
|
|
1665
|
-
|
1667
|
+
if first_condition && second_condition
|
1666
1668
|
folders << item.name
|
1667
1669
|
end
|
1668
1670
|
if item.nil?
|
@@ -1693,8 +1695,8 @@ module VCenterDriver
|
|
1693
1695
|
one_tmp[:dc_name] = dc_name
|
1694
1696
|
one_tmp[:template_name] = template_name
|
1695
1697
|
one_tmp[:sunstone_template_name]=
|
1696
|
-
"#{template_name} [ Cluster: #{template_ccr_name} \
|
1697
|
-
- Template location: #{location} ]"
|
1698
|
+
"#{template_name} [ Cluster: #{template_ccr_name}" \
|
1699
|
+
" - Template location: #{location} ]"
|
1698
1700
|
one_tmp[:template_location] = location
|
1699
1701
|
one_tmp[:vcenter_ccr_ref] = template_ccr_ref
|
1700
1702
|
one_tmp[:vcenter_ref] = template_ref
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opennebula
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenNebula
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -255,9 +255,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
255
255
|
version: '0'
|
256
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
257
|
requirements:
|
258
|
-
- - '
|
258
|
+
- - '>='
|
259
259
|
- !ruby/object:Gem::Version
|
260
|
-
version:
|
260
|
+
version: '0'
|
261
261
|
requirements: []
|
262
262
|
rubyforge_project:
|
263
263
|
rubygems_version: 2.0.14.1
|