reguire gnupg1 on f>=31; sense the system to use gpg1 when installed
[nodemanager.git] / coresched_lxc.py
index a6aef79..c6b7f4d 100644 (file)
@@ -6,6 +6,7 @@ import logger
 import os
 import os.path
 import cgroups
+from functools import reduce
 
 glo_coresched_simulate = False
 joinpath = os.path.join
@@ -168,7 +169,7 @@ class CoreSched:
 
         # allocate the cores to the slivers that have them reserved
         # TODO: Need to sort this from biggest cpu_cores to smallest
-        for name, rec in slivers.iteritems():
+        for name, rec in slivers.items():
             rspec = rec["_rspec"]
             cores = rspec.get(self.slice_attr_name, 0)
             (cores, bestEffort) = self.decodeCoreSpec(cores)
@@ -185,7 +186,7 @@ class CoreSched:
                     lastCpu = cpu
 
                     logger.log("CoreSched: allocating unit " + str(cpu) + " to slice " + name)
-                    reservations[name] = reservations.get(name,[]) + [cpu]
+                    reservations[name] = reservations.get(name, []) + [cpu]
 
                     # now find a memory node to go with the cpu
                     if memSchedule:
@@ -193,7 +194,7 @@ class CoreSched:
                         if mem != None:
                             mems.remove(mem)
                             logger.log("CoreSched: allocating memory node " + str(mem) + " to slice " + name)
-                            mem_reservations[name] = mem_reservations.get(name,[]) + [mem]
+                            mem_reservations[name] = mem_reservations.get(name, []) + [mem]
                         else:
                             logger.log("CoreSched: failed to find memory node for cpu" + str(cpu))
 
@@ -208,7 +209,7 @@ class CoreSched:
 
         # now check and see if any of our slices had the besteffort flag
         # set
-        for name, rec in slivers.iteritems():
+        for name, rec in slivers.items():
             rspec = rec["_rspec"]
             cores = rspec.get(self.slice_attr_name, 0)
             (cores, bestEffort) = self.decodeCoreSpec(cores)
@@ -226,9 +227,9 @@ class CoreSched:
             # note that if a reservation is [], then we don't need to add
             # bestEffort cores to it, since it is bestEffort by default.
 
-            if reservations.get(name,[]) != []:
+            if reservations.get(name, []) != []:
                 reservations[name] = reservations[name] + reservations["_default"]
-                mem_reservations[name] = mem_reservations.get(name,[]) + mem_reservations["_default"]
+                mem_reservations[name] = mem_reservations.get(name, []) + mem_reservations["_default"]
                 logger.log("CoreSched: adding besteffort units to " + name + ". new units = " + str(reservations[name]))
 
         self.reserveUnits(self.cgroup_var_name, reservations)
@@ -238,14 +239,18 @@ class CoreSched:
         self.freezeUnits("freezer.state", freezeList)
 
     def freezeUnits (self, var_name, freezeList):
-        for (slicename, freeze) in freezeList.items():
+        for (slicename, freeze) in list(freezeList.items()):
             try:
-                logger.verbose("CoreSched: setting freezer for " + slicename + " to " + freeze)
                 cgroup_path = cgroups.get_cgroup_path(slicename, 'freezer')
+                logger.verbose("CoreSched: setting freezer for {} to {} - path={} var={}"
+                               .format(slicename,freeze, cgroup_path, var_name))
                 cgroup = os.path.join(cgroup_path, var_name)
+                if not cgroup:
+                    logger.log("Warning: Could not spot 'freezer' cgroup file for slice {} - ignored".format(slicename))
+                    break
 
                 if glo_coresched_simulate:
-                        print "F", cgroup
+                        print("F", cgroup)
                 else:
                     with open(cgroup, "w") as f:
                         f.write(freeze)
@@ -279,7 +284,7 @@ class CoreSched:
                 cpus = default
 
             if glo_coresched_simulate:
-                print "R", cgroup + "/" + var_name, self.listToRange(cpus)
+                print("R", cgroup + "/" + var_name, self.listToRange(cpus))
             else:
                 cgroups.write(cgroup, var_name, self.listToRange(cpus))
 
@@ -392,17 +397,17 @@ if __name__=="__main__":
 
     x = CoreSched()
 
-    print "cgroups:", ",".join(x.get_cgroups())
+    print("cgroups:", ",".join(x.get_cgroups()))
 
-    print "cpus:", x.listToRange(x.get_cpus())
-    print "sibling map:"
+    print("cpus:", x.listToRange(x.get_cpus()))
+    print("sibling map:")
     for item in x.get_cpus():
-        print " ", item, ",".join([str(y) for y in x.cpu_siblings.get(item,[])])
+        print(" ", item, ",".join([str(y) for y in x.cpu_siblings.get(item, [])]))
 
-    print "mems:", x.listToRange(x.get_mems())
-    print "cpu to memory map:"
+    print("mems:", x.listToRange(x.get_mems()))
+    print("cpu to memory map:")
     for item in x.get_mems():
-        print " ", item, ",".join([str(y) for y in x.mems_map.get(item,[])])
+        print(" ", item, ",".join([str(y) for y in x.mems_map.get(item, [])]))
 
     rspec_sl_test1 = {"cpu_cores": "1"}
     rec_sl_test1 = {"_rspec": rspec_sl_test1}