Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit f81f4e98894b22808924e33920c5c85acde168dd
Author: Adam Samalik <asamalik(a)redhat.com>
Date: Tue Aug 4 12:08:55 2015 +0200
[frontend] API monitor
---------------------------------------------------------------
frontend/coprs_frontend/coprs/logic/api_logic.py | 49 ++++++++-----------
.../coprs/views/api_ns/api_general.py | 2 +-
.../tests/test_logic/test_builds_logic.py | 9 +--
3 files changed, 25 insertions(+), 35 deletions(-)
diff --git a/frontend/coprs_frontend/coprs/logic/api_logic.py
b/frontend/coprs_frontend/coprs/logic/api_logic.py
index 93c7568..359e859 100644
--- a/frontend/coprs_frontend/coprs/logic/api_logic.py
+++ b/frontend/coprs_frontend/coprs/logic/api_logic.py
@@ -31,7 +31,7 @@ class BuildWrapper(object):
class MonitorWrapper(object):
- def __init__(self, monitor_data):
+ def __init__(self, copr, monitor_data):
"""
:arg monitor_data: dict with fields:
"builds": list of models.Build,
@@ -39,43 +39,36 @@ class MonitorWrapper(object):
"packages": tuple (pkg_name, pkg_version, build_results),
"latest_build": models.Build,
"""
+ self.copr = copr
self.monitor_data = monitor_data
def to_dict(self):
out = {}
- chroots = self.monitor_data["chroots"]
- out["chroots"] = chroots
+ out["chroots"] = map(lambda x: x.name,
self.copr.active_chroots_sorted)
out["builds"] = [
BuildWrapper(build).to_dict()
- for build in self.monitor_data["builds"]
+ for build in self.copr.builds
]
- packages_fixed = []
- for (pkg_name, results_by_chroot) in self.monitor_data["packages"]:
+
+ packages = []
+
+ for pkg in self.monitor_data:
+ package = pkg["package"]
+ chroots = pkg["build_chroots"]
+
results = {}
- for chroot_name, (build_id, status, pkg_version, _) in zip(chroots,
results_by_chroot):
- if status is None or pkg_version is None:
- results[chroot_name] = None
+ for ch in self.copr.active_chroots:
+ if chroots[ch.name]:
+ results[ch.name] = {"build_id": chroots[ch.name].build.id,
+ "status": chroots[ch.name].state,
+ "pkg_version":
chroots[ch.name].build.pkg_version}
else:
- results[chroot_name] = dict(build_id=build_id,
- status=status,
- pkg_version=pkg_version)
+ results[ch.name] = None
- packages_fixed.append({
- "pkg_name": pkg_name,
- "pkg_version": None, # legacy
- "results": results
- })
+ packages.append({"pkg_name": package.name,
+ "pkg_version": None,
+ "results": results})
- out["packages"] = packages_fixed
- #
- # [
- # {
- # "pkg_name": pkg_name,
- # "pkg_version": None, # legacy
- # "results": dict(zip(chroots, results_by_chroot))
- # }
- # for (pkg_name, results_by_chroot)
- # in self.monitor_data["packages"]
- # ]
+ out["packages"] = packages
return out
diff --git a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
index 92cf986..d31dccd 100644
--- a/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
+++ b/frontend/coprs_frontend/coprs/views/api_ns/api_general.py
@@ -637,7 +637,7 @@ def monitor(username, coprname):
copr = CoprsLogic.get(username, coprname).first()
monitor_data = builds_logic.BuildsMonitorLogic.get_monitor_data(copr)
- output = MonitorWrapper(monitor_data).to_dict()
+ output = MonitorWrapper(copr, monitor_data).to_dict()
jsonout = flask.jsonify(output)
jsonout.status_code = 200
diff --git a/frontend/coprs_frontend/tests/test_logic/test_builds_logic.py
b/frontend/coprs_frontend/tests/test_logic/test_builds_logic.py
index 4c6dfbc..7c88ff9 100644
--- a/frontend/coprs_frontend/tests/test_logic/test_builds_logic.py
+++ b/frontend/coprs_frontend/tests/test_logic/test_builds_logic.py
@@ -63,14 +63,11 @@ class TestBuildsLogic(CoprsTestCase):
with pytest.raises(MalformedArgumentException):
BuildsLogic.add(**params)
- def test_monitor_logic(self, f_users, f_coprs, f_mock_chroots_many,
f_build_many_chroots, f_db):
+ def test_monitor_logic(self, f_users, f_coprs, f_builds, f_mock_chroots_many,
f_build_few_chroots, f_db):
copr = self.c1
md = BuildsMonitorLogic.get_monitor_data(copr)
- results = md["packages"][-1][-1]
- mchroots = md["chroots"]
-
- for chr, res in zip(mchroots, results):
- assert helpers.StatusEnum(self.status_by_chroot[chr]) == res[1]
+ assert len(md) == 1
+ assert len(md[0]["build_chroots"]) == 15
def test_build_queue_1(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db):
self.db.session.commit()