storage code removed from web app file
diff --git a/report.py b/report.py
index b707b52..434c844 100644
--- a/report.py
+++ b/report.py
@@ -3,7 +3,7 @@
 import sys
 
 from chart import charts
-import storage_api
+
 
 
 OPERATIONS = (('async', ('randwrite asynchronous', 'randread asynchronous',
@@ -128,20 +128,19 @@
     open('results.html', 'w').write(html)
 
 
-def report(url, email=None, password=None):
-    storage = storage_api.create_storage(url, email, password)
-    results = storage.recent_builds()
-    bars = build_vertical_bar(results)
-    lines = build_lines_chart(results)
+# def report(url, email=None, password=None):
+#     results = storage.recent_builds()
+#     bars = build_vertical_bar(results)
+#     lines = build_lines_chart(results)
+#
+#     render_html(bars + lines)
 
-    render_html(bars + lines)
-
-
-def main(argv):
-    opts = parse_args(argv)
-    report(opts.url)
-    return 0
-
-
-if __name__ == '__main__':
-    exit(main(sys.argv[1:]))
+#
+# def main(argv):
+#     opts = parse_args(argv)
+#     report(opts.url)
+#     return 0
+#
+#
+# if __name__ == '__main__':
+#     exit(main(sys.argv[1:]))
diff --git a/storage_api.py b/storage_api.py
index 6f1b714..c772e28 100644
--- a/storage_api.py
+++ b/storage_api.py
@@ -1,6 +1,9 @@
 from urlparse import urlparse
 
 import json
+import math
+from config import TEST_PATH
+from flask import url_for
 import os
 
 
@@ -18,82 +21,94 @@
             self.md5 + " " + str(self.results)
 
 
-def create_storage(url, email=None, password=None):
-    u = urlparse(url)
-    if u.scheme == 'file':
-        storage = DiskStorage(u.path)
+def prepare_build_data(build):
+    for item in build.items():
+        if type(item[1]) is list:
+            m = mean(item[1])
+            s = stdev(item[1])
+            build[item[0]] = [m, s]
 
-    return storage
+            
+def mean(l):
+    n = len(l)
+
+    return sum(l) / n
 
 
-class Storage(object):
-
-    def store(self, data):
-        pass
-
-    def retrieve(self, id):
-        pass
+def stdev(l):
+    m = mean(l)
+    return math.sqrt(sum(map(lambda x: (x - m) ** 2, l)))
 
 
-class DiskStorage(Storage):
-    def __init__(self, file_name):
-        self.file_name = file_name
+def load_test(test_name):
+    test_name += '.json'
 
-        if not os.path.exists(file_name):
-            with open(file_name, "w+") as f:
-                f.write(json.dumps([]))
+    with open(TEST_PATH + "/" + test_name, 'rt') as f:
+        raw = f.read()
 
-    def store(self, data):
-        with open(self.file_name, "rt") as f:
-            raw_data = f.read()
-            document = json.loads(raw_data)
-            document.append(data)
+        if raw != "":
+            test = json.loads(raw)
+        else:
+            test = []
+    import time
+    creation_time = os.path.getmtime(TEST_PATH + "/" + test_name)
 
-        with open(self.file_name, "w+") as f:
-            f.write(json.dumps(document))
+    for t in test:
+        t['date'] = time.ctime(creation_time)
 
-    def retrieve(self, id):
-        with open(self.file_name, "rt") as f:
-            raw_data = f.read()
-            document = json.loads(raw_data)
-
-            for row in document:
-                if row["build_id"] == id:
-                    m = Measurement()
-                    m.build = row.pop("build_id")
-                    m.build_type = row.pop("type")
-                    m.md5 = row.pop("iso_md5")
-                    m.results = {k.split(" "): row[k] for k in row.keys()}
-
-                    return m
-        return None
-
-    def recent_builds(self):
-        with open(self.file_name, "rt") as f:
-            raw_data = f.read()
-            document = json.loads(raw_data)
-            d = {}
-            result = {}
-            build_types = {"GA", "master"}
-
-            for i in range(len(document) - 1, -1, - 1):
-                if document[i]["type"] in build_types:
-                    if document[i]["type"] not in d:
-                        d[document[i]["type"]] = document[i]
-                elif "other" not in d:
-                    d["other"] = document[i]
-
-            for k in d.keys():
-                m = Measurement()
-                m.build = d[k].pop("build_id")
-                m.build_type = d[k].pop("type")
-                m.md5 = d[k].pop("iso_md5")
-                m.results = {k: v for k, v in d[k].items()}
-                result[m.build_type] = m
-
-        return result
+    return test
 
 
-#if __name__ == "__main__":
-#    storage = create_storage("file:///home/gstepanov/rally-results-processor/sample.json", "", "")
-#    print storage.recent_builds()
+def collect_tests():
+    result = []
+
+    for file in os.listdir(TEST_PATH):
+        if file.endswith(".json"):
+            result.append(file.split('.')[0])
+
+    return result
+
+
+def collect_builds():
+    builds = []
+    build_set = set()
+    tests = collect_tests()
+
+    for t in tests:
+        test = load_test(t)
+
+        for build in test:
+            if build["type"] not in build_set:
+                build_set.add(build["type"])
+                builds.append(build)
+
+    for build in builds:
+        prepare_build_data(build)
+
+    return builds
+
+
+def builds_list():
+    data = []
+
+    for build in collect_builds():
+        d = {}
+        d["type"] = build['type']
+        d["url"] = url_for("render_test", test_name=build['name'])
+        d["date"] = build['date']
+        d["name"] = build['name']
+        data.append(d)
+
+    return data
+
+
+def create_measurement(build):
+    m = Measurement()
+    m.build = build.pop("build_id")
+    m.build_type = build.pop("type")
+    m.md5 = build.pop("iso_md5")
+    m.date = build.pop("date")
+    m.date = build.pop("name")
+    m.results = {k: v for k, v in build.items()}
+
+    return m
diff --git a/web_app/__init__.py b/web_app/__init__.py
index ad2fe42..01c3dba 100644
--- a/web_app/__init__.py
+++ b/web_app/__init__.py
@@ -3,7 +3,7 @@
 from flask_bootstrap import Bootstrap
 from config import TEST_PATH
 from report import build_vertical_bar, build_lines_chart
-from storage_api import Measurement
+from storage_api import builds_list, collect_builds, create_measurement
 from logging import getLogger, INFO
 
 import json
@@ -22,99 +22,6 @@
 app.jinja_env.globals['get_resource_as_string'] = get_resource_as_string
 
 
-def load_test(test_name):
-    test_name += '.json'
-
-    with open(TEST_PATH + "/" + test_name, 'rt') as f:
-        raw = f.read()
-
-        if raw != "":
-            test = json.loads(raw)
-        else:
-            test = []
-    import time
-    creation_time = os.path.getmtime(TEST_PATH + "/" + test_name)
-
-    for t in test:
-        t['date'] = time.ctime(creation_time)
-
-    return test
-
-
-def collect_tests():
-    result = []
-
-    for file in os.listdir(TEST_PATH):
-        if file.endswith(".json"):
-            result.append(file.split('.')[0])
-
-    return result
-
-
-def mean(l):
-    n = len(l)
-
-    return sum(l) / n
-
-
-def stdev(l):
-    m = mean(l)
-    return math.sqrt(sum(map(lambda x: (x - m) ** 2, l)))
-
-
-def prepare_build_data(build):
-    for item in build.items():
-        if type(item[1]) is list:
-            m = mean(item[1])
-            s = stdev(item[1])
-            build[item[0]] = [m, s]
-
-
-def collect_builds():
-    builds = []
-    build_set = set()
-    tests = collect_tests()
-
-    for t in tests:
-        test = load_test(t)
-
-        for build in test:
-            if build["type"] not in build_set:
-                build_set.add(build["type"])
-                builds.append(build)
-
-    for build in builds:
-        prepare_build_data(build)
-
-    return builds
-
-
-def builds_list():
-    data = []
-
-    for build in collect_builds():
-        d = {}
-        d["type"] = build['type']
-        d["url"] = url_for("render_test", test_name=build['name'])
-        d["date"] = build['date']
-        d["name"] = build['name']
-        data.append(d)
-
-    return data
-
-
-def create_measurement(build):
-    m = Measurement()
-    m.build = build.pop("build_id")
-    m.build_type = build.pop("type")
-    m.md5 = build.pop("iso_md5")
-    m.date = build.pop("date")
-    m.date = build.pop("name")
-    m.results = {k: v for k, v in build.items()}
-
-    return m
-
-
 def total_lab_info(data):
     d = {}
     d['nodes_count'] = len(data['nodes'])