start to use /etc/vservers/<guest>/sysctl/<id>/{setting,value} files as new kernels...
authorS.Çağlar Onur <caglar@cs.princeton.edu>
Thu, 20 Jan 2011 22:00:50 +0000 (17:00 -0500)
committerS.Çağlar Onur <caglar@cs.princeton.edu>
Thu, 20 Jan 2011 22:03:50 +0000 (17:03 -0500)
sliver_vs.py

index 9a329cc..919fe3f 100644 (file)
@@ -258,20 +258,29 @@ class Sliver_VS(accounts.Account, vserver.VServer):
         cpu_share = self.rspec['cpu_share']
 
         if setup:
+            count = 1
             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)
+                        # /etc/vservers/<guest>/sysctl/<id>/
+                        dirname = "/etc/vservers/%s/sysctl/%s" % (self.name, count)
+                        try:
+                            os.makedirs(dirname, 0755)
+                        except:
+                            pass
+                        setting = open("%s/setting" % dirname, "w")
+                        setting.write("%s\n" % key.lstrip("sysctl."))
+                        setting.close()
+                        value = open("%s/value" % dirname, "w")
+                        value.write("%s\n" % self.rspec[key])
+                        value.close()
+                        count += 1
+
+                        logger.log("sliver_vs: %s: writing %s=%s"%(self.name,key,self.rspec[key]))
                     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))
+                        logger.log("sliver_vs: %s: could not set %s=%s"%(self.name,key,self.rspec[key]))
+                        logger.log("sliver_vs: %s: error = %s"%(self.name,e))
 
 
         if self.rspec['enabled'] > 0: