added in a 'setup' boolean argument to indicate that set_resources is being called...
[util-vserver-pl.git] / python / bwlimit.py
index 1be3bd4..18fdaac 100644 (file)
@@ -191,6 +191,24 @@ def get_tc_rate(s):
     else:
         return -1
 
+def format_bytes(bytes, si = True):
+    """
+    Formats bytes into a string
+    """
+    if si:
+        kilo = 1000.
+    else:
+        # Officially, a kibibyte
+        kilo = 1024.
+
+    if bytes >= (kilo * kilo * kilo):
+        return "%.1f GB" % (bytes / (kilo * kilo * kilo))
+    elif bytes >= 1000000:
+        return "%.1f MB" % (bytes / (kilo * kilo))
+    elif bytes >= 1000:
+        return "%.1f KB" % (bytes / kilo)
+    else:
+        return "%.0f bytes" % bytes
 
 def format_tc_rate(rate):
     """
@@ -546,15 +564,9 @@ def on(xid, dev = dev, share = None, minrate = None, maxrate = None, minexemptra
 
 
 def set(xid, share = None, minrate = None, maxrate = None, minexemptrate = None, maxexemptrate = None):
-    # Get defaults from current state if available
-    # get(xid,dev) = ( xid, share, minrate, maxrate, minexemptrate, maxexemptrate, bytes, i2bytes )
-    current = get(xid, dev)
-    if current == None: current = () # must be a new slice if returned nothing.
-    new = ( share, minrate, maxrate, minexemptrate, maxexemptrate )
-    if current[1:6] != new:
-        on(xid = xid, share = share,
-            minrate = minrate, maxrate = maxrate,
-            minexemptrate = minexemptrate, maxexemptrate = maxexemptrate)
+    on(xid = xid, share = share,
+       minrate = minrate, maxrate = maxrate,
+       minexemptrate = minexemptrate, maxexemptrate = maxexemptrate)
 
 
 # Remove class associated with specified slice xid. If further packets
@@ -686,11 +698,11 @@ def main():
                            minexemptrate, maxexemptrate,
                            bytes, exemptbytes)
                 else:
-                    print "%s %d %s %s %s %s %d %d" % \
+                    print "%s %d %s %s %s %s %s %s" % \
                           (slice, share,
                            format_tc_rate(minrate), format_tc_rate(maxrate),
                            format_tc_rate(minexemptrate), format_tc_rate(maxexemptrate),
-                           bytes, exemptbytes)
+                           format_bytes(bytes), format_bytes(exemptbytes))
 
         elif len(argv) >= 2:
             # slice, ...