Modified: trunk/Tools/BuildSlaveSupport/ews-app/ews/urls.py (258414 => 258415)
--- trunk/Tools/BuildSlaveSupport/ews-app/ews/urls.py 2020-03-13 18:36:10 UTC (rev 258414)
+++ trunk/Tools/BuildSlaveSupport/ews-app/ews/urls.py 2020-03-13 18:52:01 UTC (rev 258415)
@@ -24,6 +24,7 @@
from ews.views.index import Index
from ews.views.results import Results
+from ews.views.status import Status
from ews.views.statusbubble import StatusBubble
from ews.views.retrypatch import RetryPatch
from ews.views.submittoews import SubmitToEWS
@@ -36,6 +37,8 @@
url(r'^results/$', Results.as_view(), name='results'),
# ex: /retry/
url(r'^retry/$', RetryPatch.as_view(), name='retrypatch'),
+ # ex: /status/5
+ url(r'^status/(?P<patch_id>[0-9]+)/$', Status.as_view(), name='status'),
# ex: /status-bubble/5
url(r'^status-bubble/(?P<patch_id>[0-9]+)/$', StatusBubble.as_view(), name='statusbubble'),
# ex: /submit-to-ews/
Added: trunk/Tools/BuildSlaveSupport/ews-app/ews/views/status.py (0 => 258415)
--- trunk/Tools/BuildSlaveSupport/ews-app/ews/views/status.py (rev 0)
+++ trunk/Tools/BuildSlaveSupport/ews-app/ews/views/status.py 2020-03-13 18:52:01 UTC (rev 258415)
@@ -0,0 +1,68 @@
+# Copyright (C) 2020 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from __future__ import unicode_literals
+
+from django.http import JsonResponse
+from django.views import View
+from ews.common.buildbot import Buildbot
+from ews.models.patch import Patch
+from ews.views.statusbubble import StatusBubble
+import ews.config as config
+
+
+class Status(View):
+ def _build_status(self, patch, queue):
+ build, _ = StatusBubble().get_latest_build_for_queue(patch, queue)
+ if not build:
+ return {}
+
+ return {
+ 'name': queue,
+ 'state': build.result,
+ 'url': 'https://{}/#/builders/{}/builds/{}'.format(config.BUILDBOT_SERVER_HOST, build.builder_id, build.number),
+ 'timestamp': build.complete_at,
+ }
+
+ def _build_statuses_for_patch(self, patch):
+ if not patch:
+ return []
+
+ statuses = []
+ if patch.sent_to_buildbot:
+ for queue in StatusBubble.ALL_QUEUES:
+ status = self._build_status(patch, queue)
+ if status:
+ statuses.append(status)
+
+ if patch.sent_to_commit_queue:
+ cq_status = self._build_status(patch, 'commit')
+ if cq_status:
+ statuses.insert(0, cq_status)
+
+ return statuses
+
+ def get(self, request, patch_id):
+ patch_id = int(patch_id)
+ patch = Patch.get_patch(patch_id)
+ response_data = self._build_statuses_for_patch(patch)
+ return JsonResponse(response_data, safe=False)
Modified: trunk/Tools/ChangeLog (258414 => 258415)
--- trunk/Tools/ChangeLog 2020-03-13 18:36:10 UTC (rev 258414)
+++ trunk/Tools/ChangeLog 2020-03-13 18:52:01 UTC (rev 258415)
@@ -1,3 +1,13 @@
+2020-03-13 Aakash Jain <aakash_j...@apple.com>
+
+ Add API endpoint in EWS django app to provide patch status in json format
+ https://bugs.webkit.org/show_bug.cgi?id=208940
+
+ Reviewed by Jonathan Bedard.
+
+ * BuildSlaveSupport/ews-app/ews/urls.py: Added url for new api endpoint.
+ * BuildSlaveSupport/ews-app/ews/views/status.py: Added.
+
2020-03-13 Kate Cheney <katherine_che...@apple.com>
WebKit2UseRemoteLayerTreeDrawingArea should be reset to NO between layout tests