Merge branch 'lxc_devel' of ssh://git.planet-lab.org/git/nodemanager into lxc_devel
authorMarco Yuen <marcoy@cs.princeton.edu>
Mon, 7 May 2012 14:27:46 +0000 (10:27 -0400)
committerMarco Yuen <marcoy@cs.princeton.edu>
Mon, 7 May 2012 14:27:46 +0000 (10:27 -0400)
Conflicts:
config_template.xml

NodeManager.spec
config_template.xml [deleted file]
sliver_libvirt.py
sliver_lxc.py

index cb02cc1..fd038c6 100644 (file)
@@ -1,8 +1,8 @@
 %define slicefamily %{pldistro}-%{distroname}-%{_arch}
 
 %define name NodeManager
-%define version 2.0
-%define taglevel 34
+%define version 2.1
+%define taglevel 1
 
 %define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
 %global python_sitearch %( python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" )
@@ -33,8 +33,9 @@ Requires: python >= 2.4
 Requires: python-pycurl
 # Signed tickets
 Requires: gnupg
-# vuseradd, vuserdel
-#Requires: vserver-%{slicefamily}
+# vserver-sliceimage or lxc-sliceimage to be added explicitly in nodeimage.pkgs
+# we do need the slice images in any case
+Requires: sliceimage-%{slicefamily}
 # our interface to the vserver patch
 #Requires: util-vserver >= 0.30.208-17
 # vserver.py
@@ -137,6 +138,10 @@ rm -rf $RPM_BUILD_ROOT
 %{python_sitearch}/bwlimit.py*
 
 %changelog
+* Fri Apr 13 2012 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - nodemanager-2.1-1
+- first working draft for dealing with libvirt/lxc on f16 nodes
+- not expected to work with mainline nodes (use 2.0 for that for now)
+
 * Fri Jan 13 2012 Marco Yuen <marcoy@cs.princeton.edu> - nodemanager-2.0-34
 - Install bwlimit.py to the python site directory.
 
@@ -397,5 +402,3 @@ rm -rf $RPM_BUILD_ROOT
 
 * Mon Nov 13 2006 Mark Huang <mlhuang@paris.CS.Princeton.EDU> - 
 - Initial build.
-
-%define module_current_branch 1.8
diff --git a/config_template.xml b/config_template.xml
deleted file mode 100644 (file)
index 00e9651..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<domain type='lxc'>
-  <name>$name</name>
-  <memory>524288</memory>
-  <os>
-    <type>exe</type>
-    <init>/sbin/init</init>
-  </os>
-  <features>
-    <acpi />
-  </features>
-  <vcpu>1</vcpu>
-  <clock offset='utc'/>
-  <on_poweroff>destroy</on_poweroff>
-  <on_reboot>restart</on_reboot>
-  <on_crash>destroy</on_crash>
-  <devices>
-    <emulator>/usr/libexec/libvirt_lxc</emulator>
-    <filesystem type='mount'>
-      <source dir='/vservers/$name/'/>
-      <target dir='/'/>
-    </filesystem>
-    <interface type='network'>
-      <source network='default'/>
-      <target dev='veth%xid'/>
-    </interface>
-    <console type='pty' />
-  </devices>
-</domain>
index 1f308bf..209cb71 100644 (file)
@@ -61,8 +61,8 @@ class Sliver_Libvirt(accounts.Account):
         try:
             self.dom = self.conn.lookupByName(self.name)
         except:
-            logger.verbose('sliver_libvirt: Domain %s does not exist ' \
-                           'UNEXPECTED: %s'%(self.name, sys.exc_info()[1]))
+            logger.log('sliver_libvirt: Domain %s does not exist ' \
+                       'UNEXPECTED: %s'%(self.name, sys.exc_info()[1]))
 
     def start(self, delay=0):
         ''' Just start the sliver '''
index 6e78ede..1b038d5 100644 (file)
@@ -5,7 +5,7 @@
 import accounts
 import logger
 import subprocess
-import os
+import os, os.path
 import libvirt
 import sys
 from string import Template
@@ -44,6 +44,7 @@ class Sliver_LXC(lv.Sliver_Libvirt):
         # check the template exists -- there's probably a better way..
         if not os.path.isdir(refImgDir):
             logger.log('sliver_lxc: %s: ERROR Could not create sliver - reference image %s not found' % (name,vref))
+            logger.log('sliver_lxc: %s: ERROR ctd expected reference image in %s'%(name,refImgDir))
             return
 
         # Snapshot the reference image fs (assume the reference image is in its own
@@ -89,12 +90,27 @@ class Sliver_LXC(lv.Sliver_Libvirt):
         xid = bwlimit.get_xid(name)
 
         # Template for libvirt sliver configuration
+#        template_filename = Sliver_LXC.REF_IMG_BASE_DIR + '/lxc_template.xml'
+        # for compat with lxc-reference package, hopefully temporary
+        template_filename_lxcreference = os.path.join(Sliver_LXC.REF_IMG_BASE_DIR,'config_template.xml')
+        template_filename_sliceimage = os.path.join(Sliver_LXC.REF_IMG_BASE_DIR,'lxc_template.xml')
+        if os.path.isfile (template_filename_lxcreference):
+            logger.log("WARNING: using compat template %s"%template_filename_lxcreference)
+            template_filename=template_filename_lxcreference
+        elif os.path.isfile (template_filename_sliceimage):
+            logger.log("WARNING: using compat template %s"%template_filename_sliceimage)
+            template_filename=template_filename_sliceimage
+        else:
+            logger.log("Cannot find XML template")
+            logger.log("neither %s"%template_filename_lxcreference)
+            logger.log("nor     %s"%template_filename_sliceimage)
+            return
         try:
-            with open(Sliver_LXC.REF_IMG_BASE_DIR + '/config_template.xml') as f:
+            with open(template_filename) as f:
                 template = Template(f.read())
                 xml  = template.substitute(name=name, xid=xid)
         except IOError:
-            logger.log('Cannot find XML template file')
+            logger.log('Failed to parse or use XML template file %s'%template_filename)
             return
 
         # Lookup for the sliver before actually