_init_disk_info_sem = globalsem
def __init__(self, rec):
- logger.verbose ('initing Sliver_VS with name=%s'%rec['name'])
+ name=rec['name']
+ logger.verbose ('%s: initing Sliver_VS'%name)
try:
- vserver.VServer.__init__(self, rec['name'],logfile='/var/log/nm')
+ logger.log("%s: first chance..."%name)
+ vserver.VServer.__init__(self, name,logfile='/var/log/nm')
except Exception, err:
if not isinstance(err, vserver.NoSuchVServer):
# Probably a bad vserver or vserver configuration file
- logger.log_exc(self.name)
- logger.log('%s: recreating bad vserver' % rec['name'])
- self.destroy(rec['name'])
- self.create(rec['name'], rec['vref'])
- vserver.VServer.__init__(self, rec['name'],logfile='/var/log/nm')
+ logger.log_exc("sliver_vs.__init__ (1) %s",name=name)
+ logger.log('%s: recreating bad vserver' % name)
+ self.destroy(name)
+ self.create(name, rec['vref'])
+ logger.log("%s: second chance..."%name)
+ vserver.VServer.__init__(self, name,logfile='/var/log/nm')
self.keys = ''
self.rspec = {}
def create(name, vref = None):
logger.verbose('Sliver_VS:create - name=%s'%name)
if vref is None:
- logger.log("creating %s : no vref attached, this is unexpected"%name)
- vref='default'
- # used to look in /etc/planetlab/family, now relies on the 'family' extra attribute in GetSlivers()
+ logger.log("%s: ERROR - no vref attached, this is unexpected"%name)
+ return
+ # used to look in /etc/planetlab/family,
+ # now relies on the 'GetSliceFamily' extra attribute in GetSlivers()
# which for legacy is still exposed here as the 'vref' key
# check the template exists -- there's probably a better way..
if not os.path.isdir ("/vservers/.vref/%s"%vref):
- # find a resonable default
- if os.path.isfile ("/etc/planetlab/slicefamily"):
- default=file("/etc/planetlab/slicefamily").read().strip()
- else:
- default='default'
- logger.log("creating %s : /etc/planetlab/slicefamily not found, this is unexpected"%name)
- logger.log("creating %s - vref %s not found, using default %s"%(name,vref,default))
- vref=default
+ logger.log ("%s: ERROR Could not create sliver - vreference image %s not found"%(name,vref))
+ return
# guess arch
try:
(x,y,arch)=vref.split('-')
+ # mh, this of course applies when 'vref' is e.g. 'netflow'
+ # and that's not quite right
except:
arch='i386'
os.close(fd)
try:
self.chroot_call(install_initscript)
- except: logger.log_exc(self.name)
+ except: logger.log_exc("sliver_vs.start",name=self.name)
tools.close_nonstandard_fds()
vserver.VServer.start(self)
os._exit(0)
else:
os.waitpid(child_pid, 0)
self.initscriptchanged = False
- else: logger.log('%s: not starting, is not enabled' % self.name)
+ else: logger.log('not starting, is not enabled', name=self.name)
def stop(self):
logger.log('%s: stopping' % self.name)
self.disk_usage_initialized = True
vserver.VServer.set_disklimit(self, max(disk_max, self.disk_blocks))
except:
- logger.log('%s: failed to set max disk usage' % self.name)
- logger.log_exc(self.name)
+ logger.log_exc('failed to set max disk usage',name=self.name)
# get/set the min/soft/hard values for all of the vserver
# related RLIMITS. Note that vserver currently only
self.set_ipaddresses_config(self.rspec['ip_addresses'])
if self.is_running():
- logger.log("%s: Setting name to %s" % (self.name, self.slice_id),2)
+ logger.log("%s: Setting name to %s" % (self.name, self.slice_id))
self.setname(self.slice_id)
- ### Sapan's change needs more work - /etc/vservers not available here, we're in the chroot
- #logger.log("%s: Storing slice id of %s for PlanetFlow" % (self.name, self.slice_id),2)
+ ### Sapan's change needs more work
+ # raise IOException, file does not get created
+ # might be that /etc/vservers is not available here, are we in the chroot ?
+ #logger.log("%s: Storing slice id of %s for PlanetFlow" % (self.name, self.slice_id))
#file('/etc/vservers/%s/slice_id' % self.name, 'w').write(self.slice_id)
if self.enabled == False: