remove 'provisioning'/'reliability' from WUI, add to misc/operations_helpers

Also remove docs related to reliability/provisioning pages
This commit is contained in:
Brian Warner 2012-02-15 18:18:53 +00:00
parent e0f409c681
commit 11f9394704
11 changed files with 2 additions and 127 deletions

View File

@ -553,9 +553,3 @@ will be able to reduce the expansion factor down to a bare minimum while
still retaining high reliability, but large unstable grids (where nodes are
coming and going very quickly) may require more repair/verification bandwidth
than actual upload/download traffic.
Tahoe-LAFS nodes that run a webserver have a page dedicated to provisioning
decisions: this tool may help you evaluate different expansion factors and
view the disk consumption of each. It is also acquiring some sections with
availability/reliability numbers, as well as preliminary cost analysis data.
This tool will continue to evolve as our analysis improves.

View File

@ -1805,17 +1805,6 @@ This is the "Welcome Page", and contains a few distinct sections::
implementation hashes synchronously, so clients will probably never see
progress-hash!=1.0).
``GET /provisioning/``
This page provides a basic tool to predict the likely storage and bandwidth
requirements of a large Tahoe grid. It provides forms to input things like
total number of users, number of files per user, average file size, number
of servers, expansion ratio, hard drive failure rate, etc. It then provides
numbers like how many disks per server will be needed, how many read
operations per second should be expected, and the likely MTBF for files in
the grid. This information is very preliminary, and the model upon which it
is based still needs a lot of work.
``GET /helper_status/``
If the node is running a helper (i.e. if [helper]enabled is set to True in

View File

@ -512,90 +512,6 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, testutil.ReallyEqualMixi
d.addCallback(_check)
return d
def test_provisioning(self):
d = self.GET("/provisioning/")
def _check(res):
self.failUnlessIn('Provisioning Tool', res)
self.failUnlessIn(FAVICON_MARKUP, res)
fields = {'filled': True,
"num_users": int(50e3),
"files_per_user": 1000,
"space_per_user": int(1e9),
"sharing_ratio": 1.0,
"encoding_parameters": "3-of-10-5",
"num_servers": 30,
"ownership_mode": "A",
"download_rate": 100,
"upload_rate": 10,
"delete_rate": 10,
"lease_timer": 7,
}
return self.POST("/provisioning/", **fields)
d.addCallback(_check)
def _check2(res):
self.failUnlessIn('Provisioning Tool', res)
self.failUnlessIn(FAVICON_MARKUP, res)
self.failUnlessIn("Share space consumed: 167.01TB", res)
fields = {'filled': True,
"num_users": int(50e6),
"files_per_user": 1000,
"space_per_user": int(5e9),
"sharing_ratio": 1.0,
"encoding_parameters": "25-of-100-50",
"num_servers": 30000,
"ownership_mode": "E",
"drive_failure_model": "U",
"drive_size": 1000,
"download_rate": 1000,
"upload_rate": 100,
"delete_rate": 100,
"lease_timer": 7,
}
return self.POST("/provisioning/", **fields)
d.addCallback(_check2)
def _check3(res):
self.failUnlessIn("Share space consumed: huge!", res)
fields = {'filled': True}
return self.POST("/provisioning/", **fields)
d.addCallback(_check3)
def _check4(res):
self.failUnlessIn("Share space consumed:", res)
d.addCallback(_check4)
return d
def test_reliability_tool(self):
try:
from allmydata import reliability
_hush_pyflakes = reliability
del _hush_pyflakes
except:
raise unittest.SkipTest("reliability tool requires NumPy")
d = self.GET("/reliability/")
def _check(res):
self.failUnlessIn('Reliability Tool', res)
fields = {'drive_lifetime': "8Y",
"k": "3",
"R": "7",
"N": "10",
"delta": "100000",
"check_period": "1M",
"report_period": "3M",
"report_span": "5Y",
}
return self.POST("/reliability/", **fields)
d.addCallback(_check)
def _check2(res):
self.failUnlessIn('Reliability Tool', res)
r = r'Probability of loss \(no maintenance\):\s+<span>0.033591'
self.failUnless(re.search(r, res), res)
d.addCallback(_check2)
return d
def test_status(self):
h = self.s.get_history()
dl_num = h.list_all_download_statuses()[0].get_counter()

View File

@ -2,18 +2,17 @@ import time, os
from twisted.internet import address
from twisted.web import http
from nevow import rend, url, loaders, tags as T
from nevow import rend, url, tags as T
from nevow.inevow import IRequest
from nevow.static import File as nevow_File # TODO: merge with static.File?
from nevow.util import resource_filename
import allmydata # to display import path
from allmydata import get_package_versions_string
from allmydata import provisioning
from allmydata.util import idlib, log
from allmydata.interfaces import IFileNode
from allmydata.web import filenode, directory, unlinked, status, operations
from allmydata.web import reliability, storage
from allmydata.web import storage
from allmydata.web.common import abbreviate_size, getxmlfile, WebError, \
get_arg, RenderMixin, get_format, get_mutable_type
@ -126,20 +125,6 @@ class IncidentReporter(RenderMixin, rend.Page):
req.setHeader("content-type", "text/plain")
return "Thank you for your report!"
class NoReliability(rend.Page):
docFactory = loaders.xmlstr('''\
<html xmlns:n="http://nevow.com/ns/nevow/0.1">
<head>
<title>AllMyData - Tahoe</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h2>"Reliability" page not available</h2>
<p>Please install the python "NumPy" module to enable this page.</p>
</body>
</html>
''')
SPACE = u"\u00A0"*2
class Root(rend.Page):
@ -175,12 +160,6 @@ class Root(rend.Page):
# needs to created on each request
return status.HelperStatus(self.client.helper)
child_provisioning = provisioning.ProvisioningTool()
if reliability.is_available():
child_reliability = reliability.ReliabilityTool()
else:
child_reliability = NoReliability()
child_report_incident = IncidentReporter()
#child_server # let's reserve this for storage-server-over-HTTP

View File

@ -91,9 +91,6 @@
<div>Please visit the <a target="_blank" href="http://tahoe-lafs.org">Tahoe-LAFS home page</a> for
code updates and bug reporting.</div>
<div>The <a href="provisioning">provisioning tool</a> and <a
href="reliability">reliability calculator</a> may also be useful.</div>
<div n:render="incident_button" />
</div>