Skip to content

Commit

Permalink
F #1684: LXD drivers update (#2685)
Browse files Browse the repository at this point in the history
  • Loading branch information
dann1 authored and Ruben S. Montero committed Dec 5, 2018
1 parent 0e8f8b3 commit 9ae54c6
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 18 deletions.
10 changes: 9 additions & 1 deletion SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -221,6 +221,7 @@ else:
# libxml2
main_env.ParseConfig('xml2-config --libs --cflags')

svncterm_path = 'src/vmm_mad/remotes/lib/lxd/svncterm_server/SConstruct'

# SCONS scripts to build
build_scripts=[
Expand Down Expand Up @@ -269,9 +270,16 @@ build_scripts=[
'src/im_mad/collectd/SConstruct',
'src/client/SConstruct',
'src/docker_machine/SConstruct',
'src/vmm_mad/remotes/lib/lxd/svncterm_server/SConstruct'
svncterm_path
]

# disable svncterm
svncterm = ARGUMENTS.get('svncterm', 'yes')
if svncterm == 'no':
build_scripts.remove(svncterm_path)
else:
pass

for script in build_scripts:
env = main_env.Clone()
SConscript(script, exports='env')
7 changes: 7 additions & 0 deletions src/vmm_mad/remotes/lib/lxd/catfstab
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

# Sanitize cat arguments to run safely under sudo
# Access container fstab for OpenNebula containers. Example:
# /var/lib/lxd/storage-pools/default/containers/one-34/rootfs/etc/fstab

echo $1 | grep -q '/[^[:space:]]\+/one-[0-9]\+/rootfs/etc/fstab$' && [ -f $1 ] && cat $1
2 changes: 0 additions & 2 deletions src/vmm_mad/remotes/lib/lxd/container.rb
Original file line number Diff line number Diff line change
Expand Up @@ -392,8 +392,6 @@ def new_disk_mapper(disk)

ds = "#{ds_path}/#{ds_id}/#{vm_id}/disk.#{disk_id}"

Command.execute("#{Mapper::COMMANDS[:chmod_nfs]} #{ds}", false)

_rc, out, _err = Command.execute("#{Mapper::COMMANDS[:file]} #{ds}", false)

case out
Expand Down
30 changes: 16 additions & 14 deletions src/vmm_mad/remotes/lib/lxd/mapper/mapper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class Mapper
:mount => 'sudo mount',
:umount => 'sudo umount',
:kpartx => 'sudo kpartx',
:nbd => 'sudo qemu-nbd',
:nbd => 'sudo -u root -g oneadmin qemu-nbd',
:su_mkdir => 'sudo mkdir -p',
:mkdir => 'mkdir -p',
:cat => 'sudo cat',
Expand All @@ -66,7 +66,6 @@ class Mapper
:e2fsck => 'sudo e2fsck',
:resize2fs => 'sudo resize2fs',
:xfs_growfs => 'sudo xfs_growfs',
:chmod_nfs => 'chmod o+w',
:rbd => 'sudo rbd --id'
}

Expand Down Expand Up @@ -182,18 +181,19 @@ def map(one_vm, disk, directory)
def unmap(one_vm, disk, directory)
OpenNebula.log_info "Unmapping disk at #{directory}"

sys_parts = lsblk('')

return false if !sys_parts
sys_parts = lsblk('')

return false unless sys_parts

partitions = []
device = ''
real_path = directory

ds = one_vm.lxdrc[:datastore_location] + "/#{one_vm.sysds_id}"
real_ds = File.readlink(ds) if File.symlink?(ds)

real_path = directory
real_path = real_ds + directory.split(ds)[-1] if directory.include?(ds)
if File.symlink?(ds)
real_ds = File.readlink(ds)
real_path = real_ds + directory.split(ds)[-1] if directory.include?(ds)
end

sys_parts.each { |d|
if d['mountpoint'] == real_path
Expand All @@ -213,13 +213,15 @@ def unmap(one_vm, disk, directory)
break if !partitions.empty?
}

partitions.delete_if { |p| !p['mountpoint'] }
partitions.delete_if { |p| !p['mountpoint'] }

partitions.sort! { |a,b|
b['mountpoint'].length <=> a['mountpoint'].length
}

umount(partitions)

partitions.sort! { |a,b|
b['mountpoint'].length <=> a['mountpoint'].length
}

umount(partitions)

do_unmap(device, one_vm, disk, real_path)

Expand Down
3 changes: 3 additions & 0 deletions src/vmm_mad/remotes/lib/lxd/mapper/qcow2.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ def do_map(one_vm, disk, directory)
dsrc = disk_source(one_vm, disk)
cmd = "#{COMMANDS[:nbd]} -c #{device} #{dsrc}"

ds = one_vm.lxdrc[:datastore_location] + "/#{one_vm.sysds_id}"
File.chmod(0664, dsrc) if File.symlink?(ds)

rc, _out, err = Command.execute(cmd, true)

if rc != 0
Expand Down
2 changes: 1 addition & 1 deletion src/vmm_mad/remotes/lib/lxd/opennebula-lxd
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@
#

Cmnd_Alias ONE_MAPPER = /bin/lsblk, /sbin/losetup, /bin/mount, /bin/umount, /sbin/kpartx, /usr/bin/qemu-nbd, /bin/mkdir, /usr/bin/catfstab, /sbin/e2fsck, /sbin/resize2fs, /usr/sbin/xfs_growfs, /usr/bin/rbd
oneadmin ALL=(ALL) NOPASSWD: ONE_MAPPER
oneadmin ALL=(ALL:ALL) NOPASSWD: ONE_MAPPER

0 comments on commit 9ae54c6

Please sign in to comment.