opennebula 6.2.0.1 → 6.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cloud/CloudClient.rb +1 -1
- data/lib/datacenter.rb +33 -3
- data/lib/datastore.rb +11 -4
- data/lib/opennebula/ldap_auth.rb +3 -1
- data/lib/opennebula/marketplaceapp_ext.rb +1 -1
- data/lib/opennebula/user.rb +2 -2
- data/lib/opennebula/virtual_machine_ext.rb +31 -2
- data/lib/opennebula/virtual_machine_pool.rb +4 -0
- data/lib/opennebula.rb +1 -1
- data/lib/vcenter_importer.rb +16 -6
- data/lib/virtual_machine.rb +8 -4
- data/lib/vm_template.rb +140 -56
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 630fc82258e06265dd9308385f987452c2c9e97774f9c844567eb0512c699996
|
4
|
+
data.tar.gz: 4b19ee5faf356fc61ba4e8883dc7bb37137d54d34c251c6f0cbbfab5a8b0b27b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea3eba7d99bfc70cb7b94a2c8c2548b130d50ec3cf73d3344e0ed12a05b2e83780eec32e4790cfeef00bde6a38164468a0cfe91bb62cd1325c20aac7f9cca235
|
7
|
+
data.tar.gz: eeb5c702a03ef47f5ad8e37f95b94259e49019a78d5b58f8ce560d3b2afd50cb8828a7512afe14b1f3e25e262ab3b3974f9174e3109a20a98d89140a90fbca96
|
data/lib/cloud/CloudClient.rb
CHANGED
data/lib/datacenter.rb
CHANGED
@@ -131,7 +131,10 @@ module VCenterDriver
|
|
131
131
|
|
132
132
|
# Setting host import name and
|
133
133
|
# replace spaces and weird characters
|
134
|
-
cluster_name =
|
134
|
+
cluster_name = ccr['name'].to_s.tr(' ', '_')
|
135
|
+
cluster_name = VCenterDriver::VcImporter.sanitize(
|
136
|
+
cluster_name
|
137
|
+
)
|
135
138
|
cluster_name =
|
136
139
|
VCenterDriver::VIHelper
|
137
140
|
.one_name(
|
@@ -159,11 +162,28 @@ module VCenterDriver
|
|
159
162
|
host_objects
|
160
163
|
end
|
161
164
|
|
162
|
-
|
165
|
+
# rubocop:disable Style/GlobalVars
|
166
|
+
def get_unimported_datastores(dpool, vcenter_instance_name, hpool, args)
|
163
167
|
import_id = 0
|
164
168
|
ds_objects = {}
|
165
169
|
vcenter_uuid = vcenter_instance_uuid
|
166
170
|
|
171
|
+
# Selected host in OpenNebula
|
172
|
+
if $conf.nil?
|
173
|
+
one_client = OpenNebula::Client.new
|
174
|
+
else
|
175
|
+
one_client = OpenNebula::Client.new(
|
176
|
+
nil,
|
177
|
+
$conf[:one_xmlrpc]
|
178
|
+
)
|
179
|
+
end
|
180
|
+
one_host = OpenNebula::Host.new_with_id(args[:host], one_client)
|
181
|
+
|
182
|
+
rc = one_host.info
|
183
|
+
raise rc.message if OpenNebula.is_error? rc
|
184
|
+
|
185
|
+
cluster_id = one_host['CLUSTER_ID'].to_i
|
186
|
+
|
167
187
|
# Get datacenters
|
168
188
|
fetch! if @items.empty?
|
169
189
|
|
@@ -185,7 +205,10 @@ module VCenterDriver
|
|
185
205
|
'summary.freeSpace'
|
186
206
|
)
|
187
207
|
|
188
|
-
ds_name
|
208
|
+
ds_name = VCenterDriver::VcImporter.sanitize(
|
209
|
+
name.to_s
|
210
|
+
)
|
211
|
+
|
189
212
|
ds_total_mb = ((capacity.to_i / 1024) / 1024)
|
190
213
|
ds_free_mb = ((free_space.to_i / 1024) / 1024)
|
191
214
|
ds_ref = ds['_ref']
|
@@ -363,8 +386,15 @@ module VCenterDriver
|
|
363
386
|
end
|
364
387
|
end
|
365
388
|
|
389
|
+
ds_objects.keys.each do |key|
|
390
|
+
unless ds_objects[key][:cluster].include? cluster_id
|
391
|
+
ds_objects.delete key
|
392
|
+
end
|
393
|
+
end
|
394
|
+
|
366
395
|
{ vcenter_instance_name => ds_objects }
|
367
396
|
end
|
397
|
+
# rubocop:enable Style/GlobalVars
|
368
398
|
|
369
399
|
def get_unimported_templates(vi_client, tpool)
|
370
400
|
template_objects = {}
|
data/lib/datastore.rb
CHANGED
@@ -881,7 +881,7 @@ module VCenterDriver
|
|
881
881
|
@one_class = OpenNebula::Datastore
|
882
882
|
end
|
883
883
|
|
884
|
-
def get_list(
|
884
|
+
def get_list(args = {})
|
885
885
|
dc_folder = VCenterDriver::DatacenterFolder.new(@vi_client)
|
886
886
|
|
887
887
|
# one pool creation
|
@@ -908,7 +908,8 @@ module VCenterDriver
|
|
908
908
|
.get_unimported_datastores(
|
909
909
|
dpool,
|
910
910
|
@vi_client.vc_name,
|
911
|
-
hpool
|
911
|
+
hpool,
|
912
|
+
args
|
912
913
|
)
|
913
914
|
@list = rs
|
914
915
|
end
|
@@ -948,7 +949,11 @@ module VCenterDriver
|
|
948
949
|
clusters = opts['selected_clusters'].each.map(&:to_i)
|
949
950
|
end
|
950
951
|
|
951
|
-
|
952
|
+
name = VCenterDriver::VcImporter.sanitize(
|
953
|
+
selected[:simple_name]
|
954
|
+
)
|
955
|
+
|
956
|
+
res = { :id => [], :name => name }
|
952
957
|
@info[:rollback] = []
|
953
958
|
pair.each do |ds|
|
954
959
|
create(ds[:one]) do |one_object, id|
|
@@ -1011,7 +1016,9 @@ module VCenterDriver
|
|
1011
1016
|
message = 'Error creating the OpenNebula resource'
|
1012
1017
|
info = selected[:one]
|
1013
1018
|
dsid = selected[:dsid].to_i
|
1014
|
-
name =
|
1019
|
+
name = VCenterDriver::VcImporter.sanitize(
|
1020
|
+
selected[:name]
|
1021
|
+
)
|
1015
1022
|
|
1016
1023
|
rc = resource.allocate(info, dsid, false)
|
1017
1024
|
VCenterDriver::VIHelper.check_error(rc, message)
|
data/lib/opennebula/ldap_auth.rb
CHANGED
@@ -15,7 +15,9 @@
|
|
15
15
|
# ---------------------------------------------------------------------------- #
|
16
16
|
|
17
17
|
require 'rubygems'
|
18
|
-
require 'opennebula'
|
18
|
+
require 'opennebula/xml_utils'
|
19
|
+
require 'opennebula/client'
|
20
|
+
require 'opennebula/group_pool'
|
19
21
|
require 'net/ldap'
|
20
22
|
require 'yaml'
|
21
23
|
|
@@ -461,7 +461,7 @@ module OpenNebula::MarketPlaceAppExt
|
|
461
461
|
def export_recursive(xpath, options)
|
462
462
|
# Get marketplace apps pool to find roles apps
|
463
463
|
pool = OpenNebula::MarketPlaceAppPool.new(@client)
|
464
|
-
rc = pool.
|
464
|
+
rc = pool.info_all
|
465
465
|
|
466
466
|
return rc if OpenNebula.is_error?(rc)
|
467
467
|
|
data/lib/opennebula/user.rb
CHANGED
@@ -89,8 +89,8 @@ module OpenNebula
|
|
89
89
|
#######################################################################
|
90
90
|
|
91
91
|
# Retrieves the information of the given User.
|
92
|
-
def info()
|
93
|
-
super(USER_METHODS[:info], 'USER')
|
92
|
+
def info(decrypt = false)
|
93
|
+
super(USER_METHODS[:info], 'USER', decrypt)
|
94
94
|
end
|
95
95
|
|
96
96
|
alias_method :info!, :info
|
@@ -94,6 +94,35 @@ module OpenNebula::VirtualMachineExt
|
|
94
94
|
raise rc.message if OpenNebula.is_error?(rc)
|
95
95
|
end
|
96
96
|
|
97
|
+
# --------------------------------------------------------------
|
98
|
+
# Ask if source VM is linked clone
|
99
|
+
# --------------------------------------------------------------
|
100
|
+
use_linked_clones = self['USER_TEMPLATE/VCENTER_LINKED_CLONES']
|
101
|
+
|
102
|
+
if use_linked_clones && use_linked_clones.downcase == 'yes'
|
103
|
+
# Delay the require until it is strictly needed
|
104
|
+
# This way we can avoid the vcenter driver dependency
|
105
|
+
# in no vCenter deployments
|
106
|
+
require 'vcenter_driver'
|
107
|
+
|
108
|
+
deploy_id = self['DEPLOY_ID']
|
109
|
+
vm_id = self['ID']
|
110
|
+
host_id = self['HISTORY_RECORDS/HISTORY[last()]/HID']
|
111
|
+
vi_client = VCenterDriver::VIClient.new_from_host(host_id)
|
112
|
+
|
113
|
+
vm = VCenterDriver::VirtualMachine.new(
|
114
|
+
vi_client,
|
115
|
+
deploy_id,
|
116
|
+
vm_id
|
117
|
+
)
|
118
|
+
|
119
|
+
error, vm_template_ref = vm.save_as_linked_clones(name)
|
120
|
+
|
121
|
+
raise error unless error.nil?
|
122
|
+
|
123
|
+
return vm_template_ref
|
124
|
+
end
|
125
|
+
|
97
126
|
# --------------------------------------------------------------
|
98
127
|
# Clone the source template
|
99
128
|
# --------------------------------------------------------------
|
@@ -271,7 +300,7 @@ module OpenNebula::VirtualMachineExt
|
|
271
300
|
|
272
301
|
raise rc.message if OpenNebula.is_error?(rc)
|
273
302
|
|
274
|
-
binfo.merge!(backup_info) do |
|
303
|
+
binfo.merge!(backup_info) do |_key, old_val, new_val|
|
275
304
|
new_val.nil? ? old_val : new_val
|
276
305
|
end
|
277
306
|
|
@@ -472,7 +501,7 @@ module OpenNebula::VirtualMachineExt
|
|
472
501
|
end
|
473
502
|
|
474
503
|
binfo[:apps].each do |id|
|
475
|
-
logger.info "Deleting
|
504
|
+
logger.info "Deleting appliance #{id}" if logger
|
476
505
|
|
477
506
|
papp = OpenNebula::MarketPlaceApp.new_with_id(id, @client)
|
478
507
|
|
@@ -450,6 +450,10 @@ module OpenNebula
|
|
450
450
|
private
|
451
451
|
|
452
452
|
def build_accounting(filter_flag, options, &block)
|
453
|
+
|
454
|
+
options[:start_time] = -1 if options[:start_time].nil?
|
455
|
+
options[:end_time] = -1 if options[:end_time].nil?
|
456
|
+
|
453
457
|
xml_str = @client.call(VM_POOL_METHODS[:accounting],
|
454
458
|
filter_flag,
|
455
459
|
options[:start_time],
|
data/lib/opennebula.rb
CHANGED
data/lib/vcenter_importer.rb
CHANGED
@@ -202,7 +202,7 @@ module VCenterDriver
|
|
202
202
|
# index associated to his own resource opt
|
203
203
|
#
|
204
204
|
# Example:
|
205
|
-
# {"vm-343" => {
|
205
|
+
# {"vm-343" => {:linked_clone: '0', :copy: '0'...}
|
206
206
|
#
|
207
207
|
# @ return [Hash] the list of unimported resources
|
208
208
|
#
|
@@ -263,7 +263,10 @@ module VCenterDriver
|
|
263
263
|
|
264
264
|
cluster_list = {}
|
265
265
|
cpool.each do |c|
|
266
|
-
|
266
|
+
name = VCenterDriver::VcImporter.sanitize(
|
267
|
+
c['NAME']
|
268
|
+
)
|
269
|
+
cluster_list[c['ID']] = name if c['ID'].to_i != 0
|
267
270
|
end
|
268
271
|
|
269
272
|
# Get OpenNebula's host pool
|
@@ -312,10 +315,13 @@ module VCenterDriver
|
|
312
315
|
|
313
316
|
cluster_list_str = "\n"
|
314
317
|
cluster_list.each do |key, value|
|
318
|
+
name = VCenterDriver::VcImporter.sanitize(
|
319
|
+
value
|
320
|
+
)
|
315
321
|
cluster_list_str << " - \e[94mID: " \
|
316
322
|
<< key \
|
317
323
|
<< "\e[39m - NAME: " \
|
318
|
-
<<
|
324
|
+
<< name << "\n"
|
319
325
|
end
|
320
326
|
|
321
327
|
STDOUT.print "\n #{cluster_list_str}"
|
@@ -330,15 +336,19 @@ module VCenterDriver
|
|
330
336
|
end
|
331
337
|
end
|
332
338
|
|
339
|
+
cluster_name = VCenterDriver::VcImporter.sanitize(
|
340
|
+
cluster[:cluster_name]
|
341
|
+
)
|
342
|
+
|
333
343
|
# Check if the OpenNebula Cluster exists, and reuse it
|
334
344
|
one_cluster_id ||= cluster_list
|
335
|
-
.key(
|
345
|
+
.key(cluster_name)
|
336
346
|
|
337
347
|
if !one_cluster_id
|
338
348
|
one_cluster = VCenterDriver::VIHelper
|
339
349
|
.new_one_item(OpenNebula::Cluster)
|
340
350
|
rc = one_cluster
|
341
|
-
.allocate(
|
351
|
+
.allocate(cluster_name.to_s)
|
342
352
|
if ::OpenNebula.is_error?(rc)
|
343
353
|
# rubocop:disable Layout/LineLength
|
344
354
|
STDOUT.puts " Error creating OpenNebula cluster: #{rc.message}\n"
|
@@ -355,7 +365,7 @@ module VCenterDriver
|
|
355
365
|
rpool,
|
356
366
|
one_cluster_id)
|
357
367
|
# rubocop:disable Layout/LineLength
|
358
|
-
STDOUT.puts "\n OpenNebula host \e[92m#{
|
368
|
+
STDOUT.puts "\n OpenNebula host \e[92m#{cluster_name}\e[39m with"\
|
359
369
|
" ID \e[94m#{one_host.id}\e[39m successfully created."
|
360
370
|
STDOUT.puts
|
361
371
|
# rubocop:enable Layout/LineLength
|
data/lib/virtual_machine.rb
CHANGED
@@ -579,8 +579,6 @@ end
|
|
579
579
|
end
|
580
580
|
end
|
581
581
|
|
582
|
-
dc = cluster.datacenter
|
583
|
-
|
584
582
|
vcenter_vm_folder = drv_action['USER_TEMPLATE/VCENTER_VM_FOLDER']
|
585
583
|
|
586
584
|
if !vcenter_vm_folder.nil? && !vcenter_vm_folder.empty?
|
@@ -1983,7 +1981,7 @@ end
|
|
1983
1981
|
end
|
1984
1982
|
|
1985
1983
|
card_spec = {
|
1986
|
-
:key =>
|
1984
|
+
:key => 0,
|
1987
1985
|
:deviceInfo => {
|
1988
1986
|
:label => 'net' + card_num.to_s,
|
1989
1987
|
:summary => pg_name
|
@@ -1993,6 +1991,9 @@ end
|
|
1993
1991
|
:macAddress => mac,
|
1994
1992
|
:unitNumber => unumber
|
1995
1993
|
}
|
1994
|
+
if @vi_client.vim.serviceContent.about.apiVersion.to_f >= 7.0
|
1995
|
+
card_spec[:key] = Time.now.utc.strftime('%m%d%M%S%L').to_i
|
1996
|
+
end
|
1996
1997
|
|
1997
1998
|
if (limit || rsrv) && (limit > 0)
|
1998
1999
|
ra_spec = {}
|
@@ -2129,7 +2130,7 @@ end
|
|
2129
2130
|
end
|
2130
2131
|
|
2131
2132
|
card_spec = {
|
2132
|
-
:key =>
|
2133
|
+
:key => 0,
|
2133
2134
|
:deviceInfo => {
|
2134
2135
|
:label => 'net' + card_num.to_s,
|
2135
2136
|
:summary => pg_name
|
@@ -2137,6 +2138,9 @@ end
|
|
2137
2138
|
:backing => backing,
|
2138
2139
|
:addressType => 'generated'
|
2139
2140
|
}
|
2141
|
+
if @vi_client.vim.serviceContent.about.apiVersion.to_f >= 7.0
|
2142
|
+
card_spec[:key] = Time.now.utc.strftime('%m%d%M%S%L').to_i
|
2143
|
+
end
|
2140
2144
|
|
2141
2145
|
if (limit || rsrv) && (limit > 0)
|
2142
2146
|
ra_spec = {}
|
data/lib/vm_template.rb
CHANGED
@@ -96,6 +96,90 @@ module VCenterDriver
|
|
96
96
|
@vi_client.vim.serviceContent.about.instanceUuid rescue nil
|
97
97
|
end
|
98
98
|
|
99
|
+
def save_as_linked_clones(name)
|
100
|
+
error = nil
|
101
|
+
|
102
|
+
disks = @item.config.hardware.device.grep(
|
103
|
+
RbVmomi::VIM::VirtualMachine
|
104
|
+
)
|
105
|
+
disks.select {|x| x.backing.parent.nil? }.each do |disk|
|
106
|
+
spec = {
|
107
|
+
:deviceChange => [
|
108
|
+
{
|
109
|
+
:operation => :remove,
|
110
|
+
:device => disk
|
111
|
+
},
|
112
|
+
{
|
113
|
+
:operation => :add,
|
114
|
+
:fileOperation => :create,
|
115
|
+
:device => disk.dup.tap do |x|
|
116
|
+
x.backing = x.backing.dup
|
117
|
+
x.backing.fileName =
|
118
|
+
"[#{disk.backing.datastore.name}]"
|
119
|
+
x.backing.parent = disk.backing
|
120
|
+
end
|
121
|
+
}
|
122
|
+
]
|
123
|
+
}
|
124
|
+
@item.ReconfigVM_Task(
|
125
|
+
:spec => spec
|
126
|
+
).wait_for_completion
|
127
|
+
end
|
128
|
+
|
129
|
+
relocateSpec = RbVmomi::VIM.VirtualMachineRelocateSpec(
|
130
|
+
:diskMoveType => :moveChildMostDiskBacking
|
131
|
+
)
|
132
|
+
|
133
|
+
spec = RbVmomi::VIM.VirtualMachineCloneSpec(
|
134
|
+
:location => relocateSpec,
|
135
|
+
:powerOn => false,
|
136
|
+
:template => true
|
137
|
+
)
|
138
|
+
|
139
|
+
new_template = @item.CloneVM_Task(
|
140
|
+
:folder => @item.parent,
|
141
|
+
:name => name,
|
142
|
+
:spec => spec
|
143
|
+
).wait_for_completion
|
144
|
+
|
145
|
+
new_vm_template_ref = new_template._ref
|
146
|
+
|
147
|
+
one_client = OpenNebula::Client.new
|
148
|
+
importer = VCenterDriver::VmImporter.new(
|
149
|
+
one_client,
|
150
|
+
@vi_client
|
151
|
+
)
|
152
|
+
|
153
|
+
importer.retrieve_resources({})
|
154
|
+
importer.get_indexes(new_vm_template_ref)
|
155
|
+
|
156
|
+
importer.process_import(
|
157
|
+
new_vm_template_ref,
|
158
|
+
{
|
159
|
+
new_vm_template_ref.to_s => {
|
160
|
+
:type => 'default',
|
161
|
+
:linked_clone => '1',
|
162
|
+
:copy => '0',
|
163
|
+
:name => '',
|
164
|
+
:folder => ''
|
165
|
+
}
|
166
|
+
}
|
167
|
+
)
|
168
|
+
|
169
|
+
begin
|
170
|
+
importer.output[:success][0][:id][0]
|
171
|
+
rescue StandardError => e
|
172
|
+
error = 'Creating linked clone VM Template' \
|
173
|
+
" failed due to \"#{e.message}\".\n"
|
174
|
+
|
175
|
+
if VCenterDriver::CONFIG[:debug_information]
|
176
|
+
error += " #{e.backtrace}\n"
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
[error, new_vm_template_ref]
|
181
|
+
end
|
182
|
+
|
99
183
|
def create_template_copy(template_name)
|
100
184
|
error = nil
|
101
185
|
template_ref = nil
|
@@ -1835,12 +1919,10 @@ module VCenterDriver
|
|
1835
1919
|
# the template if something go wrong
|
1836
1920
|
if copy
|
1837
1921
|
error, template_copy_ref =
|
1838
|
-
selected[:template]
|
1839
|
-
|
1840
|
-
opts[:name]
|
1841
|
-
)
|
1922
|
+
selected[:template].save_as_linked_clones(opts[:name])
|
1923
|
+
|
1842
1924
|
unless template_copy_ref
|
1843
|
-
raise 'There is a problem creating
|
1925
|
+
raise 'There is a problem creating ' \
|
1844
1926
|
"your copy: #{error}"
|
1845
1927
|
end
|
1846
1928
|
|
@@ -1893,68 +1975,70 @@ module VCenterDriver
|
|
1893
1975
|
working_template[:one] <<
|
1894
1976
|
"VCENTER_TEMPLATE_NAME=\"#{selected[:name]}\"\n"
|
1895
1977
|
|
1896
|
-
|
1897
|
-
|
1978
|
+
unless copy
|
1979
|
+
create(working_template[:one]) do |one_object, id|
|
1980
|
+
res[:id] << id
|
1898
1981
|
|
1899
|
-
|
1900
|
-
|
1901
|
-
|
1902
|
-
|
1903
|
-
|
1904
|
-
|
1905
|
-
|
1906
|
-
|
1907
|
-
|
1982
|
+
type = { :object => 'template', :id => id }
|
1983
|
+
error, template_disks, allocated_images =
|
1984
|
+
template
|
1985
|
+
.import_vcenter_disks(
|
1986
|
+
vc_uuid,
|
1987
|
+
dpool,
|
1988
|
+
ipool,
|
1989
|
+
type
|
1990
|
+
)
|
1908
1991
|
|
1909
|
-
|
1910
|
-
|
1911
|
-
|
1912
|
-
|
1992
|
+
if allocated_images
|
1993
|
+
# rollback stack
|
1994
|
+
allocated_images.reverse.each do |i|
|
1995
|
+
@rollback.unshift(Raction.new(i, :delete))
|
1996
|
+
end
|
1913
1997
|
end
|
1914
|
-
|
1915
|
-
raise error unless error.empty?
|
1998
|
+
raise error unless error.empty?
|
1916
1999
|
|
1917
|
-
|
2000
|
+
working_template[:one] << template_disks
|
1918
2001
|
|
1919
|
-
|
1920
|
-
|
1921
|
-
|
1922
|
-
|
1923
|
-
|
2002
|
+
if template_copy_ref
|
2003
|
+
template_moref = template_copy_ref
|
2004
|
+
else
|
2005
|
+
template_moref = selected[:vcenter_ref]
|
2006
|
+
end
|
1924
2007
|
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
|
2008
|
+
opts_nics = {
|
2009
|
+
:vi_client => @vi_client,
|
2010
|
+
:vc_uuid => vc_uuid,
|
2011
|
+
:npool => npool,
|
2012
|
+
:hpool => hpool,
|
2013
|
+
:vcenter => vcenter,
|
2014
|
+
:template_moref => template_moref,
|
2015
|
+
:vm_object => nil
|
2016
|
+
}
|
1934
2017
|
|
1935
|
-
|
1936
|
-
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
2018
|
+
error, template_nics, _ar_ids, allocated_nets =
|
2019
|
+
template
|
2020
|
+
.import_vcenter_nics(
|
2021
|
+
opts_nics,
|
2022
|
+
id,
|
2023
|
+
dc
|
2024
|
+
)
|
1942
2025
|
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
2026
|
+
if allocated_nets
|
2027
|
+
# rollback stack
|
2028
|
+
allocated_nets.reverse.each do |n|
|
2029
|
+
@rollback.unshift(Raction.new(n, :delete))
|
2030
|
+
end
|
1947
2031
|
end
|
1948
|
-
|
1949
|
-
raise error unless error.empty?
|
2032
|
+
raise error unless error.empty?
|
1950
2033
|
|
1951
|
-
|
1952
|
-
|
1953
|
-
|
1954
|
-
|
1955
|
-
|
2034
|
+
working_template[:one] << template_nics
|
2035
|
+
working_template[:one] << rp_opts(
|
2036
|
+
opts[:type],
|
2037
|
+
opts[:resourcepool]
|
2038
|
+
)
|
1956
2039
|
|
1957
|
-
|
2040
|
+
one_object.update(working_template[:one])
|
2041
|
+
end
|
1958
2042
|
end
|
1959
2043
|
|
1960
2044
|
res
|
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: 6.2.
|
4
|
+
version: 6.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenNebula
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|