%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)" )
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
%{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.
* Mon Nov 13 2006 Mark Huang <mlhuang@paris.CS.Princeton.EDU> -
- Initial build.
-
-%define module_current_branch 1.8
+++ /dev/null
-<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>
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 '''
import accounts
import logger
import subprocess
-import os
+import os, os.path
import libvirt
import sys
from string import Template
# 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
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