]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
webish: show storage sizelimit, abbreviate current usage
authorBrian Warner <warner@allmydata.com>
Fri, 7 Mar 2008 04:16:38 +0000 (21:16 -0700)
committerBrian Warner <warner@allmydata.com>
Fri, 7 Mar 2008 04:16:38 +0000 (21:16 -0700)
src/allmydata/web/common.py
src/allmydata/web/status.py
src/allmydata/webish.py

index 8f97dde50a16b42b31c86a9ec94c6747dfa44295..000fda3558845c045da93da5edd274d54c2008c9 100644 (file)
@@ -31,3 +31,40 @@ def get_arg(req, argname, default=None, multiple=False):
     if results:
         return results[0]
     return default
+
+def abbreviate_time(data):
+    # 1.23s, 790ms, 132us
+    if data is None:
+        return ""
+    s = float(data)
+    if s >= 1.0:
+        return "%.2fs" % s
+    if s >= 0.01:
+        return "%dms" % (1000*s)
+    if s >= 0.001:
+        return "%.1fms" % (1000*s)
+    return "%dus" % (1000000*s)
+
+def abbreviate_rate(data):
+    # 21.8kBps, 554.4kBps 4.37MBps
+    if data is None:
+        return ""
+    r = float(data)
+    if r > 1000000:
+        return "%1.2fMBps" % (r/1000000)
+    if r > 1000:
+        return "%.1fkBps" % (r/1000)
+    return "%dBps" % r
+
+def abbreviate_size(data):
+    # 21.8kB, 554.4kB 4.37MB
+    if data is None:
+        return ""
+    r = float(data)
+    if r > 1000000000:
+        return "%1.2fGB" % (r/1000000000)
+    if r > 1000000:
+        return "%1.2fMB" % (r/1000000)
+    if r > 1000:
+        return "%.1fkB" % (r/1000)
+    return "%dB" % r
index 884fc3d2ade05316d17d442cd09f24de4f570bba..339c1537756353acb50a8642ef8359209c656856 100644 (file)
@@ -3,7 +3,8 @@ import time
 from twisted.internet import defer
 from nevow import rend, tags as T
 from allmydata.util import base32, idlib
-from allmydata.web.common import IClient, getxmlfile
+from allmydata.web.common import IClient, getxmlfile, abbreviate_time, \
+     abbreviate_rate
 from allmydata.interfaces import IUploadStatus, IDownloadStatus, \
      IPublishStatus, IRetrieveStatus
 
@@ -19,28 +20,10 @@ def plural(sequence_or_length):
 class RateAndTimeMixin:
 
     def render_time(self, ctx, data):
-        # 1.23s, 790ms, 132us
-        if data is None:
-            return ""
-        s = float(data)
-        if s >= 1.0:
-            return "%.2fs" % s
-        if s >= 0.01:
-            return "%dms" % (1000*s)
-        if s >= 0.001:
-            return "%.1fms" % (1000*s)
-        return "%dus" % (1000000*s)
+        return abbreviate_time(data)
 
     def render_rate(self, ctx, data):
-        # 21.8kBps, 554.4kBps 4.37MBps
-        if data is None:
-            return ""
-        r = float(data)
-        if r > 1000000:
-            return "%1.2fMBps" % (r/1000000)
-        if r > 1000:
-            return "%.1fkBps" % (r/1000)
-        return "%dBps" % r
+        return abbreviate_rate(data)
 
 class UploadResultsRendererMixin(RateAndTimeMixin):
     # this requires a method named 'upload_results'
index e8a9a6f0da5adc5da413083e0e46a79464e432be..f591cf6535761d6361c087cb072d8f23690ee044 100644 (file)
@@ -23,7 +23,8 @@ from foolscap.eventual import fireEventually
 from nevow.util import resource_filename
 
 from allmydata.web import status, unlinked
-from allmydata.web.common import IClient, getxmlfile, get_arg, boolean_of_arg
+from allmydata.web.common import IClient, getxmlfile, get_arg, \
+     boolean_of_arg, abbreviate_size
 
 class ILocalAccess(Interface):
     def local_access_is_allowed():
@@ -1403,8 +1404,11 @@ class Root(rend.Page):
             ss = client.getServiceNamed("storage")
         except KeyError:
             return "Not running"
-        allocated = ss.allocated_size()
-        return "about %d bytes allocated" % allocated
+        allocated = "about %s allocated" % abbreviate_size(ss.allocated_size())
+        sizelimit = "no size limit"
+        if ss.sizelimit is not None:
+            sizelimit = "size limit is %s" % abbreviate_size(ss.sizelimit)
+        return "%s, %s" % (allocated, sizelimit)
 
     def data_introducer_furl(self, ctx, data):
         return IClient(ctx).introducer_furl