if os.path.isdir ("/vservers/.vref/%s"% vref): refname = vref
if not os.path.isdir ("/vservers/.vref/%s"% refname):
- logger.verbose("%s (%s) : vref %s not found, using default %s"%(
+ logger.log("%s (%s) : vref %s not found, using default %s"%(
name,vref,refname,default))
refname=default
# reset so arch is right
except IOError:
# have not found slicefamily
- logger.verbose("%s (%s): legacy node - using fallback vrefname 'default'"%(name,vref))
+ logger.log("%s (%s): legacy node - using fallback vrefname 'default'"%(name,vref))
# for legacy nodes
refname="default"
arch="i386"
self.initscript = new_initscript
self.initscriptchanged = True
- accounts.Account.configure(self, rec) # install ssh keys
+ # install ssh keys
+ accounts.Account.configure(self, rec)
def start(self, delay=0):
if self.rspec['enabled'] > 0:
logger.log('%s: starting in %d seconds' % (self.name, delay))
time.sleep(delay)
+ # VServer.start calls fork() internally,
+ # so just close the nonstandard fds and fork once to avoid creating zombies
child_pid = os.fork()
if child_pid == 0:
if self.initscriptchanged:
os.close(fd)
try:
self.chroot_call(install_initscript)
- self.initscriptchanged = False
except: logger.log_exc(self.name)
- # VServer.start calls fork() internally,
- # so just close the nonstandard fds and fork once to avoid creating zombies
tools.close_nonstandard_fds()
vserver.VServer.start(self)
os._exit(0)
- else: os.waitpid(child_pid, 0)
+ else:
+ os.waitpid(child_pid, 0)
+ self.initscriptchanged = False
else: logger.log('%s: not starting, is not enabled' % self.name)
def stop(self):
logger.log('%s: stopping' % self.name)
vserver.VServer.stop(self)
- def set_resources(self):
+ def is_running(self):
+ return vserver.VServer.is_running(self)
+
+ def set_resources(self,setup=False):
disk_max = self.rspec['disk_max']
logger.log('%s: setting max disk usage to %d KiB' % (self.name, disk_max))
try: # if the sliver is over quota, .set_disk_limit will throw an exception
cpu_pct = self.rspec['cpu_pct']
cpu_share = self.rspec['cpu_share']
+ if setup:
+ for key in self.rspec.keys():
+ if key.find('sysctl.') == 0:
+ sysctl=key.split('.')
+ try:
+ path="/proc/sys/%s" % ("/".join(sysctl[1:]))
+ logger.log("%s: opening %s"%(self.name,path))
+ flags = os.O_WRONLY
+ fd = os.open(path, flags)
+ logger.log("%s: writing %s=%s"%(self.name,key,self.rspec[key]))
+ os.write(fd,self.rspec[key])
+ os.close(fd)
+ except IOError, e:
+ logger.log("%s: could not set %s=%s"%(self.name,key,self.rspec[key]))
+ logger.log("%s: error = %s"%(self.name,e))
+
+
if self.rspec['enabled'] > 0:
if cpu_pct > 0:
logger.log('%s: setting cpu reservation to %d%%' % (self.name, cpu_pct))