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.
@@ -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 format_error_message(message)
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)
@@ -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
- require 'rubygems'
44
- Gem.use_paths(real_gems_path)
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 error_message("The parameter '#{label}'\
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
 
@@ -496,9 +496,9 @@ module VCenterDriver
496
496
  end
497
497
 
498
498
  #
499
- # Create and allocate a Opennebula Object.
499
+ # Create and allocate a OpenNebula Object.
500
500
  #
501
- # @param info [String] Info passed to opennebula Core.
501
+ # @param info [String] Info passed to OpenNebula Core.
502
502
  #
503
503
  # @return [&block] the allocated object through a block.
504
504
  #
@@ -33,14 +33,27 @@ module VCenterDriver
33
33
  end
34
34
  end
35
35
 
36
- if File.directory?(GEMS_LOCATION)
37
- real_gems_path = File.realpath(GEMS_LOCATION)
38
- if !defined?(Gem) || Gem.path != [real_gems_path]
39
- $LOAD_PATH.reject! {|l| l =~ /vendor_ruby/ }
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
- 'OpenNebula cannot manage this VM.'
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 Opennebula template
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] unless CONFIG[:memory_dumps].nil?
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
- imported by OpenNebula' \
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.0.1
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-04-28 00:00:00.000000000 Z
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