diff --git a/docs/architecture.rst b/docs/architecture.rst index 3a9e08fbc..362a17920 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -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. diff --git a/docs/frontends/webapi.rst b/docs/frontends/webapi.rst index 47ab75429..b67ee3345 100644 --- a/docs/frontends/webapi.rst +++ b/docs/frontends/webapi.rst @@ -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 diff --git a/src/allmydata/provisioning.py b/misc/operations_helpers/provisioning/provisioning.py similarity index 100% rename from src/allmydata/provisioning.py rename to misc/operations_helpers/provisioning/provisioning.py diff --git a/src/allmydata/web/provisioning.xhtml b/misc/operations_helpers/provisioning/provisioning.xhtml similarity index 100% rename from src/allmydata/web/provisioning.xhtml rename to misc/operations_helpers/provisioning/provisioning.xhtml diff --git a/src/allmydata/reliability.py b/misc/operations_helpers/provisioning/reliability.py similarity index 100% rename from src/allmydata/reliability.py rename to misc/operations_helpers/provisioning/reliability.py diff --git a/src/allmydata/web/reliability.xhtml b/misc/operations_helpers/provisioning/reliability.xhtml similarity index 100% rename from src/allmydata/web/reliability.xhtml rename to misc/operations_helpers/provisioning/reliability.xhtml diff --git a/src/allmydata/test/test_provisioning.py b/misc/operations_helpers/provisioning/test_provisioning.py similarity index 100% rename from src/allmydata/test/test_provisioning.py rename to misc/operations_helpers/provisioning/test_provisioning.py diff --git a/src/allmydata/web/reliability.py b/misc/operations_helpers/provisioning/web_reliability.py similarity index 100% rename from src/allmydata/web/reliability.py rename to misc/operations_helpers/provisioning/web_reliability.py diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py index d918bc154..edafd2425 100644 --- a/src/allmydata/test/test_web.py +++ b/src/allmydata/test/test_web.py @@ -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+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() diff --git a/src/allmydata/web/root.py b/src/allmydata/web/root.py index 615f98d1d..47793201d 100644 --- a/src/allmydata/web/root.py +++ b/src/allmydata/web/root.py @@ -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('''\ - - - AllMyData - Tahoe - - - -

"Reliability" page not available

-

Please install the python "NumPy" module to enable this page.

- - -''') - 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 diff --git a/src/allmydata/web/welcome.xhtml b/src/allmydata/web/welcome.xhtml index b5a191e4b..6bf1debab 100644 --- a/src/allmydata/web/welcome.xhtml +++ b/src/allmydata/web/welcome.xhtml @@ -91,9 +91,6 @@
Please visit the Tahoe-LAFS home page for code updates and bug reporting.
-
The provisioning tool and reliability calculator may also be useful.
-