Cgroup common interface. Used by coresched.py and sliver_libvirt.py.
[nodemanager.git] / sliver_libvirt.py
index 990695e..52c8bde 100644 (file)
@@ -11,6 +11,7 @@ import libvirt
 import sys
 import shutil
 import bwlimit
+import cgroups
 
 from string import Template
 
@@ -24,9 +25,6 @@ STATES = {
     libvirt.VIR_DOMAIN_CRASHED: 'crashed',
 }
 
-REF_IMG_BASE_DIR = '/vservers/.lvref'
-CON_BASE_DIR     = '/vservers'
-
 connections = dict()
 
 # Helper methods
@@ -117,9 +115,9 @@ class Sliver_Libvirt(accounts.Account):
     def configure(self, rec):
 
         #sliver.[LXC/QEMU] tolower case
-        sliver_type = rec['type'].split('.')[1].lower() 
+        #sliver_type = rec['type'].split('.')[1].lower() 
 
-        BASE_DIR = '/cgroup/libvirt/%s/%s/'%(sliver_type, self.name)
+        #BASE_DIR = '/cgroup/libvirt/%s/%s/'%(sliver_type, self.name)
 
         # Disk allocation
         # No way through cgroups... figure out how to do that with user/dir quotas.
@@ -142,20 +140,17 @@ class Sliver_Libvirt(accounts.Account):
         # Memory allocation
         if rec.has_key('memlock_hard'):
             mem = rec['memlock_hard'] * 1024 # hard limit in bytes
-            with open(os.path.join(BASE_DIR, 'memory.limit_in_bytes'), 'w') as f:
-                print >>f, mem
+            cgroups.write(self.name, 'memory.limit_in_bytes', mem)
         if rec.has_key('memlock_soft'):
             mem = rec['memlock_soft'] * 1024 # soft limit in bytes
-            with open(os.path.join(BASE_DIR, 'memory.soft_limit_in_bytes'), 'w') as f:
-                print >>f, mem
+            cgroups.write(self.name, 'memory.soft_limit_in_bytes', mem)
 
         # CPU allocation
         # Only cpu_shares until figure out how to provide limits and guarantees
         # (RT_SCHED?)
         if rec.has_key('cpu_share'): 
             cpu_share = rec['cpu_share']
-            with open(os.path.join(BASE_DIR, 'cpu.shares'), 'w') as f:
-                print >>f, cpu_share
+            cgroups.write(self.name, 'cpu.shares', cpu_share)
 
         # Call the upper configure method (ssh keys...)
         accounts.Account.configure(self, rec)