reguire gnupg1 on f>=31; sense the system to use gpg1 when installed
[nodemanager.git] / cgroups.py
index b1635c0..0611d1d 100644 (file)
@@ -3,52 +3,13 @@
 #
 # Xavi Leon <xleon@ac.upc.edu>
 
-import os
+import os, os.path
 import pyinotify
 import logger
+from functools import reduce
 
 # Base dir for libvirt
 BASE_DIR = '/sys/fs/cgroup'
-SUB_SYSTEMS = ['blkio', 'freezer', 'devices', 'memory', 'cpu,cpuacct', 'cpuset']
-VIRT_TECHS = ['lxc']
-
-# Global cgroup mapping. 
-CGROUPS = dict()
-
-class CgroupWatch(pyinotify.ProcessEvent):
-
-    def process_IN_CREATE(self, event):
-       path = os.path.join(event.path, event.name)
-       CGROUPS[event.name] = path
-       logger.verbose("Cgroup Notify: Created cgroup %s on %s" % \
-                       (event.name, event.path))
-        
-    def process_IN_DELETE(self, event):
-        try:
-           del CGROUPS[event.name]
-        except:
-            logger.verbose("Cgroup Notify: Cgroup %s does not exist, continuing..."%event.name)
-       logger.verbose("Cgroup Notify: Deleted cgroup %s on %s" % \
-                       (event.name, event.path))
-
-
-#logger.verbose("Cgroups: Recognizing already existing cgroups...")
-#for virt in VIRT_TECHS:
-#    filenames = os.listdir(os.path.join(BASE_DIR, virt))
-#    for filename in filenames:
-#        path = os.path.join(BASE_DIR, virt, filename)
-#        if os.path.isdir(path):
-#            CGROUPS[filename] = path
-
-#logger.verbose("Cgroups: Initializing watchers...")
-#wm = pyinotify.WatchManager()
-#notifier = pyinotify.ThreadedNotifier(wm, CgroupWatch())
-#for virt in VIRT_TECHS:
-#    wdd = wm.add_watch(os.path.join(BASE_DIR, virt),
-#               pyinotify.IN_DELETE | pyinotify.IN_CREATE,
-#               rec=False)
-#notifier.daemon = True
-#notifier.start()
 
 def get_cgroup_paths(subsystem="cpuset"):
     subsystem_bases = [ 
@@ -82,7 +43,7 @@ def get_cgroup_path(name, subsystem="cpuset"):
     if result is None:
         name = name + ".libvirt-lxc"
         result = reduce(lambda a, b: b if name in os.path.basename(b) else a,
-                      get_cgroup_paths(subsystem), None)
+                        get_cgroup_paths(subsystem), None)
 
     return result
 
@@ -91,19 +52,21 @@ def get_base_path():
 
 def get_cgroups():
     """ Returns the list of cgroups active at this moment on the node """
-    return map(os.path.basename, get_cgroup_paths())
+    return list(map(os.path.basename, get_cgroup_paths()))
 
 def write(name, key, value, subsystem="cpuset"):
     """ Writes a value to the file key with the cgroup with name """
     base_path = get_cgroup_path(name, subsystem)
     with open(os.path.join(base_path, key), 'w') as f:
-        print >>f, value
+        print(value, file=f)
+    logger.verbose("cgroups.write: overwrote {}".format(base_path))
 
 def append(name, key, value, subsystem="cpuset"):
     """ Appends a value to the file key with the cgroup with name """
     base_path = get_cgroup_path(name, subsystem)
     with open(os.path.join(base_path, key), 'a') as f:
-        print >>f, value
+        print(value, file=f)
+    logger.verbose("cgroups.append: appended {}".format(base_path))
 
 if __name__ == '__main__':
 
@@ -113,7 +76,7 @@ if __name__ == '__main__':
     subsystems = 'blkio cpu cpu,cpuacct cpuacct cpuset devices freezer memory net_cls perf_event systemd'.split()
 
     for subsystem in subsystems:
-        print 'get_cgroup_path({}, {}) =  {}'.\
-            format(name, subsystem, get_cgroup_path(name, subsystem))
+        print('get_cgroup_path({}, {}) =  {}'.\
+            format(name, subsystem, get_cgroup_path(name, subsystem)))
 
 #        print 'get_cgroup_paths = {}'.format(get_cgroup_paths(subsystem))