import traceback
import os, os.path
import time
+from threading import BoundedSemaphore
import vserver
import accounts
import logger
import tools
-from threading import BoundedSemaphore
-
-globalsem = BoundedSemaphore()
# special constant that tells vserver to keep its existing settings
KEEP_LIMIT = vserver.VC_LIM_KEEP
SHELL = '/bin/vsh'
TYPE = 'sliver.VServer'
- _init_disk_info_sem = globalsem
+ _init_disk_info_sem = BoundedSemaphore()
def __init__(self, rec):
name=rec['name']
logger.verbose ('sliver_vs: %s init'%name)
try:
logger.log("sliver_vs: %s: first chance..."%name)
- vserver.VServer.__init__(self, name,logfile='/var/log/nm')
+ vserver.VServer.__init__(self, name,logfile='/var/log/nodemanager')
except Exception, err:
if not isinstance(err, vserver.NoSuchVServer):
# Probably a bad vserver or vserver configuration file
self.destroy(name)
self.create(name, rec['vref'])
logger.log("sliver_vs: %s: second chance..."%name)
- vserver.VServer.__init__(self, name,logfile='/var/log/nm')
+ vserver.VServer.__init__(self, name,logfile='/var/log/nodemanager')
self.keys = ''
self.rspec = {}
file('/vservers/%s/etc/slicefamily' % name, 'w').write(vref)
# set personality: only if needed (if arch's differ)
if tools.root_context_arch() != arch:
- file('/etc/vservers/%s/personality' % name, 'w').write(personality(arch))
+ file('/etc/vservers/%s/personality' % name, 'w').write(personality(arch)+"\n")
logger.log('sliver_vs: %s: set personality to %s'%(name,personality(arch)))
@staticmethod
else:
os.waitpid(child_pid, 0)
self.initscriptchanged = False
- else: logger.log('sliver_vs: not starting, is not enabled', name=self.name)
+ else: logger.log('sliver_vs: not starting %s, is not enabled'%self.name)
def stop(self):
logger.log('sliver_vs: %s: stopping' % self.name)
(self.name, self.rspec['ip_addresses']))
self.set_ipaddresses_config(self.rspec['ip_addresses'])
- if self.is_running():
- logger.log("sliver_vs: %s: Setting name to %s" % (self.name, self.slice_id))
- #self.setname(self.slice_id)
- logger.log("sliver_vs: %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)
+ #logger.log("sliver_vs: %s: Setting name to %s" % (self.name, self.slice_id))
+ #self.setname(self.slice_id)
+ #logger.log("sliver_vs: %s: Storing slice id of %s for PlanetFlow" % (self.name, self.slice_id))
+ try:
+ vserver_config_path = '/etc/vservers/%s'%self.name
+ if not os.path.exists (vserver_config_path):
+ os.makedirs (vserver_config_path)
+ file('%s/slice_id'%vserver_config_path, 'w').write("%d\n"%self.slice_id)
+ logger.log("sliver_vs: Recorded slice id %d for slice %s"%(self.slice_id,self.name))
+ except IOError,e:
+ logger.log("sliver_vs: Could not record slice_id for slice %s. Error: %s"%(self.name,str(e)))
+ except Exception,e:
+ logger.log_exc("sliver_vs: Error recording slice id: %s"%str(e),name=self.name)
+
if self.enabled == False:
self.enabled = True