Title: [258415] trunk/Tools
Revision
258415
Author
aakash_j...@apple.com
Date
2020-03-13 11:52:01 -0700 (Fri, 13 Mar 2020)

Log Message

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.

Modified Paths

Added Paths

Diff

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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to