X-Git-Url: http://git.onelab.eu/?p=nodemanager.git;a=blobdiff_plain;f=sliver_lxc.py;h=e54c453f86f3dc30d4d174903ccefc99eece8e35;hp=320c546fbbb4c37c2402f8dc266ce8c40ec8e263;hb=HEAD;hpb=1eccb35fa24dc6b7a8aa6a8922be2e776b8cc33e diff --git a/sliver_lxc.py b/sliver_lxc.py index 320c546..e54c453 100644 --- a/sliver_lxc.py +++ b/sliver_lxc.py @@ -80,8 +80,8 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): .format(self.name) command = plain.split() logger.log_call(command, timeout=3) - - + + @staticmethod def create(name, rec=None): ''' @@ -92,7 +92,7 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): vref = rec['vref'] if vref is None: - vref = "lxc-f18-x86_64" + vref = "lxc-f24-x86_64" logger.log("sliver_libvirt: {}: WARNING - no vref attached, using hard-wired default {}" .format(name, vref)) @@ -127,7 +127,9 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): logger.log('sliver_lxc: {}: ERROR Expected reference image in {}'.format(name, refImgDir)) return -# this hopefully should be fixed now +# during some time this fragment had been commented out +# but we're seeing cases where this code might actually be useful, so.. +# this hopefully should be fixed now # # in fedora20 we have some difficulty in properly cleaning up /vservers/ # # also note that running e.g. btrfs subvolume create /vservers/.lvref/image /vservers/foo # # behaves differently, whether /vservers/foo exists or not: @@ -135,21 +137,22 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): # # but if it does exist, then it creates /vservers/foo/image !! # # so we need to check the expected container rootfs does not exist yet # # this hopefully could be removed in a future release -# if os.path.exists (containerDir): -# logger.log("sliver_lxc: {}: WARNING cleaning up pre-existing {}".format(name, containerDir)) -# command = ['btrfs', 'subvolume', 'delete', containerDir] -# logger.log_call(command, BTRFS_TIMEOUT) -# # re-check -# if os.path.exists (containerDir): -# logger.log('sliver_lxc: {}: ERROR Could not create sliver - could not clean up empty {}' -# .format(name, containerDir)) -# return + if os.path.exists (containerDir): + logger.log("sliver_lxc: {}: WARNING cleaning up pre-existing {}".format(name, containerDir)) + command = ['btrfs', 'subvolume', 'delete', containerDir] + logger.log_call(command, BTRFS_TIMEOUT) + # re-check + if os.path.exists (containerDir): + logger.log('sliver_lxc: {}: ERROR Could not create sliver - could not clean up empty {}' + .format(name, containerDir)) + return # Snapshot the reference image fs # this assumes the reference image is in its own subvolume command = ['btrfs', 'subvolume', 'snapshot', refImgDir, containerDir] if not logger.log_call(command, timeout=BTRFS_TIMEOUT): - logger.log('sliver_lxc: ERROR Could not create BTRFS snapshot at', containerDir) + logger.log('sliver_lxc: ERROR Could not create BTRFS snapshot at {}' + .format(containerDir)) return command = ['chmod', '755', containerDir] logger.log_call(command) @@ -180,7 +183,7 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): 'ssh-keygen -t rsa -N "" -f /home/{}/.ssh/id_rsa'.format(name)] logger.log_call(command) - command = ['chown', '-R', '{}.slices'.format(name), '/home/{}/.ssh'.format(name)] + command = ['chown', '-R', '{}:slices'.format(name), '/home/{}/.ssh'.format(name)] logger.log_call(command) command = ['mkdir', '{}/root/.ssh'.format(containerDir)]