support for writing cgroups in subsystems other than cpuset
[nodemanager.git] / sliver_lxc.py
index f701964..432f426 100644 (file)
@@ -47,6 +47,9 @@ class Sliver_LXC(Sliver_Libvirt, Initscript):
             return
         # the generic /etc/init.d/vinit script is permanently refreshed, and enabled
         self.install_and_enable_vinit()
+        # expose .ssh for omf_friendly slivers
+        if 'omf_control' in self.rspec['tags']:
+            Account.mount_ssh_dir(self.name)
         Sliver_Libvirt.start (self, delay)
         # if a change has occured in the slice initscript, reflect this in /etc/init.d/vinit.slice
         self.refresh_slice_vinit()
@@ -69,6 +72,14 @@ class Sliver_LXC(Sliver_Libvirt, Initscript):
         # pldistro = lxc
         # fcdistro = squeeze
         # arch x86_64
+
+        arch = 'x86_64'
+        tags = rec['rspec']['tags']
+        if 'arch' in tags:
+            arch = tags['arch']
+            if arch == 'i386':
+                arch = 'i686'
+
         vref = rec['vref']
         if vref is None:
             logger.log('sliver_libvirt: %s: WARNING - no vref attached defaults to lxc-f14' % (name))
@@ -209,7 +220,7 @@ unset pathmunge
         try:
             with open(template_filename) as f:
                 template = Template(f.read())
-                xml  = template.substitute(name=name, interfaces=interfaces)
+                xml  = template.substitute(name=name, interfaces=interfaces, arch=arch)
         except IOError:
             logger.log('Failed to parse or use XML template file %s'%template_filename)
             return
@@ -225,6 +236,8 @@ unset pathmunge
 
     @staticmethod
     def destroy(name):
+        # umount .ssh directory - only if mounted
+        Account.umount_ssh_dir(name)
         logger.verbose ('sliver_lxc: %s destroy'%(name))
         conn = Sliver_Libvirt.getConnection(Sliver_LXC.TYPE)