From bdaaf11c25197dd7200af58a1fe2939c84c6c7f5 Mon Sep 17 00:00:00 2001 From: Daniel Clavijo Coca Date: Thu, 20 Dec 2018 02:28:38 -0600 Subject: [PATCH] F #1684: Changes to make LXD driver compatible with ruby 1.9 --- src/vmm_mad/remotes/lib/lxd/container.rb | 10 ++-------- src/vmm_mad/remotes/lib/lxd/mapper/mapper.rb | 19 +++++++------------ src/vmm_mad/remotes/lib/lxd/opennebula_vm.rb | 6 ++++-- src/vmm_mad/remotes/lxd/attach_disk | 2 +- src/vmm_mad/remotes/lxd/poll | 2 +- src/vmm_mad/remotes/lxd/reconfigure | 2 +- 6 files changed, 16 insertions(+), 25 deletions(-) diff --git a/src/vmm_mad/remotes/lib/lxd/container.rb b/src/vmm_mad/remotes/lib/lxd/container.rb index 8bac0a7219..77deee7842 100644 --- a/src/vmm_mad/remotes/lib/lxd/container.rb +++ b/src/vmm_mad/remotes/lib/lxd/container.rb @@ -276,7 +276,7 @@ class Container end # Attach disk to container (ATTACH = YES) in VM description - def attach_disk(source) + def attach_disk disk_element = hotplug_disk raise 'Missing hotplug info' unless disk_element @@ -284,13 +284,7 @@ class Container status = setup_disk(disk_element, 'map') return unless status - source2 = source.dup - if source - mapper_location = source2.index('/disk.') - source2.insert(mapper_location, '/mapper') - end - - disk_hash = @one.disk(disk_element, source2, nil) + disk_hash = @one.disk(disk_element, nil, nil) @lxc['devices'].update(disk_hash) diff --git a/src/vmm_mad/remotes/lib/lxd/mapper/mapper.rb b/src/vmm_mad/remotes/lib/lxd/mapper/mapper.rb index 2303d2cf28..21d31f5320 100644 --- a/src/vmm_mad/remotes/lib/lxd/mapper/mapper.rb +++ b/src/vmm_mad/remotes/lib/lxd/mapper/mapper.rb @@ -191,12 +191,7 @@ class Mapper device = '' real_path = directory - - ds = one_vm.sysds_path - if File.symlink?(ds) - real_ds = File.readlink(ds) - real_path = real_ds + real_path.split(ds)[-1] if real_path.include?(ds) - end + real_path = File.realpath(directory) if File.symlink?(one_vm.sysds_path) sys_parts.each {|d| if d['mountpoint'] == real_path @@ -344,7 +339,7 @@ class Mapper return false end - if out.match?(path) + if out.include?(path) OpenNebula.log_error("mount_dev: Mount detected in #{path}") return false end @@ -397,14 +392,14 @@ class Mapper if rc != 0 || o.empty? OpenNebula.log_error("lsblk: #{e}") - return nil + return end partitions = nil begin partitions = JSON.parse(o)['blockdevices'] - + if !device.empty? partitions = partitions[0] @@ -414,13 +409,13 @@ class Mapper partitions = [partitions] end - partitions.delete_if { |p| - p['fstype'].casecmp?('swap') if p['fstype'] + partitions.delete_if {|p| + p['fstype'].casecmp('swap').zero? if p['fstype'] } end rescue OpenNebula.log_error("lsblk: error parsing lsblk -OJ #{device}") - return nil + return end # Fix for lsblk paths for version < 2.33 diff --git a/src/vmm_mad/remotes/lib/lxd/opennebula_vm.rb b/src/vmm_mad/remotes/lib/lxd/opennebula_vm.rb index 403e58368c..abada26f68 100644 --- a/src/vmm_mad/remotes/lib/lxd/opennebula_vm.rb +++ b/src/vmm_mad/remotes/lib/lxd/opennebula_vm.rb @@ -218,7 +218,9 @@ class OpenNebulaVM end def disk_mountpoint(disk_id) - "#{@sysds_path}/#{@vm_id}/mapper/disk.#{disk_id}" + datastore = @sysds_path + datastore = File.readlink(@sysds_path) if File.symlink?(@sysds_path) + "#{datastore}/#{@vm_id}/mapper/disk.#{disk_id}" end # @return [String] the canonical disk path for the given disk @@ -353,7 +355,7 @@ class OpenNebulaVM # Creates or closes a connection to a container rfb port depending on signal def vnc_command(signal) data = @xml.element('//TEMPLATE/GRAPHICS') - return unless data && data['PORT'] && data['TYPE'] && data['TYPE'].casecmp?('vnc') + return unless data && data['PORT'] && data['TYPE'] && data['TYPE'].casecmp('vnc').zero? pass = data['PASSWD'] pass = '-' unless pass && !pass.empty? diff --git a/src/vmm_mad/remotes/lxd/attach_disk b/src/vmm_mad/remotes/lxd/attach_disk index 8801fdd3e8..7b59e68048 100755 --- a/src/vmm_mad/remotes/lxd/attach_disk +++ b/src/vmm_mad/remotes/lxd/attach_disk @@ -37,4 +37,4 @@ xml = STDIN.read client = LXDClient.new container = Container.get(vm_name, xml, client) -raise 'failed to attach disk' unless container.attach_disk(image_path) +raise 'failed to attach disk' unless container.attach_disk diff --git a/src/vmm_mad/remotes/lxd/poll b/src/vmm_mad/remotes/lxd/poll index 0309bd6458..0aa09a57ab 100755 --- a/src/vmm_mad/remotes/lxd/poll +++ b/src/vmm_mad/remotes/lxd/poll @@ -84,7 +84,7 @@ module LXD values[:memory] = get_memory(name) values[:netrx], values[:nettx] = get_net_statistics(vmd['network']) - running_containers.append(name) + running_containers.push(name) vms_info[name][:memory] = values[:memory] end diff --git a/src/vmm_mad/remotes/lxd/reconfigure b/src/vmm_mad/remotes/lxd/reconfigure index 7929d2516e..6c3cc9a738 100755 --- a/src/vmm_mad/remotes/lxd/reconfigure +++ b/src/vmm_mad/remotes/lxd/reconfigure @@ -41,5 +41,5 @@ if iso_path != '' raise 'Failed to attach context' unless container.attach_context rc, _out, err = container.exec('one-contextd local') - raise err unless rc.zero? + OpenNebula.log_error "Failed to run contextualization\n#{err}" unless rc.zero? end