opennebula 6.0.0.1 → 6.0.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 +4 -4
- data/lib/CommandManager.rb +13 -16
- data/lib/DriverExecHelper.rb +12 -22
- data/lib/cloud/CloudClient.rb +1 -1
- data/lib/datacenter.rb +71 -35
- data/lib/distributed_firewall.rb +17 -4
- data/lib/file_helper.rb +4 -0
- data/lib/host.rb +4 -4
- data/lib/models/service.rb +46 -4
- data/lib/network.rb +7 -1
- data/lib/nsx_client.rb +17 -4
- data/lib/nsx_constants.rb +18 -5
- data/lib/nsx_driver.rb +15 -2
- data/lib/nsx_rule.rb +17 -4
- data/lib/nsxt_client.rb +17 -4
- data/lib/nsxv_client.rb +17 -4
- data/lib/opennebula.rb +1 -1
- data/lib/opennebula/flow/service_template.rb +12 -2
- data/lib/opennebula/marketplace.rb +30 -2
- data/lib/opennebula/virtual_machine_ext.rb +35 -17
- data/lib/opennebula/wait_ext.rb +92 -78
- data/lib/scripts_common.rb +1 -10
- data/lib/vcenter_driver.rb +14 -12
- data/lib/vcenter_importer.rb +2 -2
- data/lib/virtual_machine.rb +50 -10
- data/lib/vm_monitor.rb +0 -2
- data/lib/vm_template.rb +6 -3
- data/lib/vmm_importer.rb +8 -0
- metadata +5 -5
data/lib/scripts_common.rb
CHANGED
@@ -45,16 +45,7 @@ module OpenNebula
|
|
45
45
|
|
46
46
|
# This function is used to pass error message to the mad
|
47
47
|
def self.error_message(message)
|
48
|
-
STDERR.puts
|
49
|
-
end
|
50
|
-
|
51
|
-
#This function formats an error message for OpenNebula
|
52
|
-
def self.format_error_message(message)
|
53
|
-
error_str = "ERROR MESSAGE --8<------\n"
|
54
|
-
error_str << message
|
55
|
-
error_str << "\nERROR MESSAGE ------>8--"
|
56
|
-
|
57
|
-
return error_str
|
48
|
+
STDERR.puts message
|
58
49
|
end
|
59
50
|
|
60
51
|
def self.is_disk?(arg)
|
data/lib/vcenter_driver.rb
CHANGED
@@ -36,14 +36,25 @@ end
|
|
36
36
|
|
37
37
|
ENV['LANG'] = 'C'
|
38
38
|
|
39
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
39
40
|
if File.directory?(GEMS_LOCATION)
|
40
41
|
real_gems_path = File.realpath(GEMS_LOCATION)
|
41
42
|
if !defined?(Gem) || Gem.path != [real_gems_path]
|
42
43
|
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
43
|
-
|
44
|
-
|
44
|
+
|
45
|
+
# Suppress warnings from Rubygems
|
46
|
+
# https://github.com/OpenNebula/one/issues/5379
|
47
|
+
begin
|
48
|
+
verb = $VERBOSE
|
49
|
+
$VERBOSE = nil
|
50
|
+
require 'rubygems'
|
51
|
+
Gem.use_paths(real_gems_path)
|
52
|
+
ensure
|
53
|
+
$VERBOSE = verb
|
54
|
+
end
|
45
55
|
end
|
46
56
|
end
|
57
|
+
# %%RUBYGEMS_SETUP_END%%
|
47
58
|
|
48
59
|
$LOAD_PATH << LIB_LOCATION + '/ruby/vendors/rbvmomi/lib'
|
49
60
|
$LOAD_PATH << LIB_LOCATION + '/ruby'
|
@@ -122,19 +133,10 @@ end
|
|
122
133
|
# Helper functions #
|
123
134
|
# ---------------------------------------------------------------------------- #
|
124
135
|
|
125
|
-
def error_message(message)
|
126
|
-
error_str = "ERROR MESSAGE --8<------\n"
|
127
|
-
error_str << message
|
128
|
-
error_str << "\nERROR MESSAGE ------>8--"
|
129
|
-
|
130
|
-
error_str
|
131
|
-
end
|
132
|
-
|
133
136
|
def check_valid(parameter, label)
|
134
137
|
return unless parameter.nil? || parameter.empty?
|
135
138
|
|
136
|
-
STDERR.puts
|
137
|
-
is required for this action.")
|
139
|
+
STDERR.puts "The parameter '#{label}' is required for this action."
|
138
140
|
exit(-1)
|
139
141
|
end
|
140
142
|
|
data/lib/vcenter_importer.rb
CHANGED
@@ -496,9 +496,9 @@ module VCenterDriver
|
|
496
496
|
end
|
497
497
|
|
498
498
|
#
|
499
|
-
# Create and allocate a
|
499
|
+
# Create and allocate a OpenNebula Object.
|
500
500
|
#
|
501
|
-
# @param info [String] Info passed to
|
501
|
+
# @param info [String] Info passed to OpenNebula Core.
|
502
502
|
#
|
503
503
|
# @return [&block] the allocated object through a block.
|
504
504
|
#
|
data/lib/virtual_machine.rb
CHANGED
@@ -33,14 +33,27 @@ module VCenterDriver
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
# rubocop: disable all
|
37
|
+
# %%RUBYGEMS_SETUP_BEGIN%%
|
38
|
+
if File.directory?(GEMS_LOCATION)
|
39
|
+
real_gems_path = File.realpath(GEMS_LOCATION)
|
40
|
+
if !defined?(Gem) || Gem.path != [real_gems_path]
|
41
|
+
$LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
|
42
|
+
|
43
|
+
# Suppress warnings from Rubygems
|
44
|
+
# https://github.com/OpenNebula/one/issues/5379
|
45
|
+
begin
|
46
|
+
verb = $VERBOSE
|
47
|
+
$VERBOSE = nil
|
40
48
|
require 'rubygems'
|
41
49
|
Gem.use_paths(real_gems_path)
|
50
|
+
ensure
|
51
|
+
$VERBOSE = verb
|
42
52
|
end
|
43
53
|
end
|
54
|
+
end
|
55
|
+
# %%RUBYGEMS_SETUP_END%%
|
56
|
+
# rubocop: enable all
|
44
57
|
|
45
58
|
$LOAD_PATH << RUBY_LIB_LOCATION
|
46
59
|
|
@@ -1041,7 +1054,8 @@ module VCenterDriver
|
|
1041
1054
|
else
|
1042
1055
|
if snapshots?
|
1043
1056
|
error = 'Disk metadata not present and snapshots exist. ' \
|
1044
|
-
'
|
1057
|
+
'Please remove imported VM with "onevm recover ' \
|
1058
|
+
'--delete-db".'
|
1045
1059
|
raise error
|
1046
1060
|
end
|
1047
1061
|
|
@@ -2401,6 +2415,15 @@ module VCenterDriver
|
|
2401
2415
|
|
2402
2416
|
# Attach DISK to VM (hotplug)
|
2403
2417
|
def attach_disk(disk)
|
2418
|
+
# Adding a new disk in newer vSphere versions
|
2419
|
+
# automatically cleans all system snapshots
|
2420
|
+
# https://github.com/OpenNebula/one/issues/5409
|
2421
|
+
if snapshots? || one_snapshots?
|
2422
|
+
error_msg = 'Existing system snapshots, cannot change disks. '
|
2423
|
+
error_msg << 'Please remove all snapshots and try again.'
|
2424
|
+
raise error_message
|
2425
|
+
end
|
2426
|
+
|
2404
2427
|
spec_hash = {}
|
2405
2428
|
device_change = []
|
2406
2429
|
|
@@ -2582,6 +2605,13 @@ module VCenterDriver
|
|
2582
2605
|
def detach_disk(disk)
|
2583
2606
|
return unless disk.exists?
|
2584
2607
|
|
2608
|
+
if snapshots? || one_snapshots?
|
2609
|
+
error_message = 'Existing system snapshots, cannot change '
|
2610
|
+
error_message << 'disks . Please remove all snapshots and '
|
2611
|
+
error_message << 'try again.'
|
2612
|
+
raise error_message
|
2613
|
+
end
|
2614
|
+
|
2585
2615
|
spec_hash = {}
|
2586
2616
|
spec_hash[:extraConfig] = [disk.config(:delete)]
|
2587
2617
|
spec_hash[:deviceChange] = [{
|
@@ -2611,15 +2641,15 @@ module VCenterDriver
|
|
2611
2641
|
# - The disk is managed by OpenNebula
|
2612
2642
|
detachable= !(one_vm['LCM_STATE'].to_i == 11 && !disk.managed?)
|
2613
2643
|
detachable &&= disk.exists?
|
2614
|
-
|
2644
|
+
|
2615
2645
|
return unless detachable
|
2616
2646
|
|
2617
2647
|
detach_disk(disk)
|
2618
2648
|
|
2619
2649
|
# Check if we want to keep the non persistent disk
|
2620
2650
|
keep_non_persistent_disks =
|
2621
|
-
VCenterDriver::CONFIG[:keep_non_persistent_disks]
|
2622
|
-
|
2651
|
+
VCenterDriver::CONFIG[:keep_non_persistent_disks]
|
2652
|
+
|
2623
2653
|
return if keep_non_persistent_disks == true
|
2624
2654
|
|
2625
2655
|
disk.destroy
|
@@ -2816,7 +2846,7 @@ module VCenterDriver
|
|
2816
2846
|
# Convert VM to template in vCenter
|
2817
2847
|
mark_as_template
|
2818
2848
|
|
2819
|
-
# Edit the
|
2849
|
+
# Edit the OpenNebula template
|
2820
2850
|
one_client = OpenNebula::Client.new
|
2821
2851
|
template_id = one_item['TEMPLATE/TEMPLATE_ID']
|
2822
2852
|
new_template = OpenNebula::Template.new_with_id(template_id,
|
@@ -2867,6 +2897,15 @@ module VCenterDriver
|
|
2867
2897
|
self['rootSnapshot'] && !self['rootSnapshot'].empty?
|
2868
2898
|
end
|
2869
2899
|
|
2900
|
+
def one_snapshots?
|
2901
|
+
begin
|
2902
|
+
!one_item['TEMPLATE/SNAPSHOT'].nil?
|
2903
|
+
rescue StandardError
|
2904
|
+
# one_item may not be retrieved if deploy_id hasn't been set
|
2905
|
+
false
|
2906
|
+
end
|
2907
|
+
end
|
2908
|
+
|
2870
2909
|
def instantiated_as_persistent?
|
2871
2910
|
begin
|
2872
2911
|
!one_item['TEMPLATE/CLONING_TEMPLATE_ID'].nil?
|
@@ -3032,7 +3071,8 @@ module VCenterDriver
|
|
3032
3071
|
# Create a snapshot for the VM
|
3033
3072
|
def create_snapshot(snap_id, snap_name)
|
3034
3073
|
memory_dumps = true
|
3035
|
-
memory_dumps = CONFIG[:memory_dumps]
|
3074
|
+
memory_dumps = CONFIG[:memory_dumps] \
|
3075
|
+
unless CONFIG[:memory_dumps].nil?
|
3036
3076
|
|
3037
3077
|
snapshot_hash = {
|
3038
3078
|
:name => snap_id,
|
data/lib/vm_monitor.rb
CHANGED
@@ -175,8 +175,6 @@ module VirtualMachineMonitor
|
|
175
175
|
@monitor[:diskwrbytes] = previous_diskwrbytes +
|
176
176
|
(write_kbpersec * 1024 * refresh_rate).to_i
|
177
177
|
end
|
178
|
-
# rubocop:enable Naming/VariableName
|
179
|
-
# rubocop:enable Style/FormatStringToken
|
180
178
|
|
181
179
|
# Generates a OpenNebula IM Driver valid string with the monitor info
|
182
180
|
def info
|
data/lib/vm_template.rb
CHANGED
@@ -550,6 +550,10 @@ module VCenterDriver
|
|
550
550
|
net.ipConfig.ipAddress.each do |ip_config|
|
551
551
|
ip = IPAddr.new(ip_config.ipAddress)
|
552
552
|
|
553
|
+
if ip.ipv6? && get_ipv6_prefix(ip.to_s, 10) == 'fe80'
|
554
|
+
next
|
555
|
+
end
|
556
|
+
|
553
557
|
if force
|
554
558
|
ipv4 = ip.to_s if ip.ipv4?
|
555
559
|
ipv6 = ip.to_s if ip.ipv6?
|
@@ -1573,9 +1577,8 @@ module VCenterDriver
|
|
1573
1577
|
str << "]\n"
|
1574
1578
|
|
1575
1579
|
if annotation.nil? || annotation.empty?
|
1576
|
-
str << 'DESCRIPTION = "vCenter Template \
|
1577
|
-
|
1578
|
-
" from Cluster #{ccr_name}\"\n"
|
1580
|
+
str << 'DESCRIPTION = "vCenter Template imported by OpenNebula'\
|
1581
|
+
" from Cluster #{ccr_name}\"\n"
|
1579
1582
|
else
|
1580
1583
|
notes = annotation.gsub('\\', '\\\\').gsub('"', '\\"')
|
1581
1584
|
str << "DESCRIPTION = \"#{notes}\"\n"
|
data/lib/vmm_importer.rb
CHANGED
@@ -54,6 +54,14 @@ module VCenterDriver
|
|
54
54
|
|
55
55
|
vc_vm = VCenterDriver::VirtualMachine.new_without_id(@vi_client,
|
56
56
|
vm_ref)
|
57
|
+
|
58
|
+
# Importing Wild VMs with snapshots is not supported
|
59
|
+
# https://github.com/OpenNebula/one/issues/1268
|
60
|
+
if vc_vm.snapshots? && vc_vm.disk_keys.empty?
|
61
|
+
raise 'Disk metadata not present and snapshots exist, '\
|
62
|
+
'cannot import this VM'
|
63
|
+
end
|
64
|
+
|
57
65
|
vname = vc_vm['name']
|
58
66
|
|
59
67
|
type = { :object => 'VM', :id => vname }
|
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.0.
|
4
|
+
version: 6.0.3
|
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-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -126,7 +126,6 @@ files:
|
|
126
126
|
- lib/vcenter_importer.rb
|
127
127
|
- lib/vi_client.rb
|
128
128
|
- lib/vi_helper.rb
|
129
|
-
- lib/virtual_machine.rb
|
130
129
|
- lib/vm_device.rb
|
131
130
|
- lib/vm_disk.rb
|
132
131
|
- lib/vm_nic.rb
|
@@ -135,6 +134,7 @@ files:
|
|
135
134
|
- lib/vm_folder.rb
|
136
135
|
- lib/vm_template.rb
|
137
136
|
- lib/vmm_importer.rb
|
137
|
+
- lib/virtual_machine.rb
|
138
138
|
- lib/nsx_driver.rb
|
139
139
|
- lib/distributed_firewall.rb
|
140
140
|
- lib/logical_port.rb
|
@@ -164,8 +164,8 @@ files:
|
|
164
164
|
- lib/DriverExecHelper.rb
|
165
165
|
- lib/scripts_common.rb
|
166
166
|
- lib/models.rb
|
167
|
-
- lib/models/role.rb
|
168
167
|
- lib/models/service.rb
|
168
|
+
- lib/models/role.rb
|
169
169
|
- lib/opennebula/acl.rb
|
170
170
|
- lib/opennebula/acl_pool.rb
|
171
171
|
- lib/opennebula/client.rb
|
@@ -208,7 +208,6 @@ files:
|
|
208
208
|
- lib/opennebula/utils.rb
|
209
209
|
- lib/opennebula/vdc.rb
|
210
210
|
- lib/opennebula/vdc_pool.rb
|
211
|
-
- lib/opennebula/virtual_machine.rb
|
212
211
|
- lib/opennebula/virtual_machine_ext.rb
|
213
212
|
- lib/opennebula/virtual_machine_pool.rb
|
214
213
|
- lib/opennebula/virtual_network.rb
|
@@ -224,6 +223,7 @@ files:
|
|
224
223
|
- lib/opennebula/xml_pool.rb
|
225
224
|
- lib/opennebula/xml_utils.rb
|
226
225
|
- lib/opennebula/zone_pool.rb
|
226
|
+
- lib/opennebula/virtual_machine.rb
|
227
227
|
- lib/opennebula/zone.rb
|
228
228
|
- lib/opennebula/flow/grammar.rb
|
229
229
|
- lib/opennebula/flow/service_pool.rb
|