mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-23 14:52:26 +00:00
remove 'provisioning'/'reliability' from WUI, add to misc/operations_helpers
Also remove docs related to reliability/provisioning pages
This commit is contained in:
parent
e0f409c681
commit
11f9394704
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
||||
|
@ -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>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user