get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/808640/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 808640,
    "url": "http://patchwork.ozlabs.org/api/patches/808640/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170901112829.2571-3-apahim@redhat.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170901112829.2571-3-apahim@redhat.com>",
    "list_archive_url": null,
    "date": "2017-09-01T11:28:18",
    "name": "[v8,02/13] qemu.py: avoid writing to stdout/stderr",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "fc0d748c48766a7f83d0760ebb7ca32727c8d2d7",
    "submitter": {
        "id": 71999,
        "url": "http://patchwork.ozlabs.org/api/people/71999/?format=api",
        "name": "Amador Pahim",
        "email": "apahim@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170901112829.2571-3-apahim@redhat.com/mbox/",
    "series": [
        {
            "id": 1006,
            "url": "http://patchwork.ozlabs.org/api/series/1006/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=1006",
            "date": "2017-09-01T11:28:16",
            "name": "scripts/qemu.py fixes and cleanups",
            "version": 8,
            "mbox": "http://patchwork.ozlabs.org/series/1006/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/808640/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/808640/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
            "ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com",
            "ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=apahim@redhat.com"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xkHCL5HSDz9sRV\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  1 Sep 2017 21:32:14 +1000 (AEST)",
            "from localhost ([::1]:36363 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dnkBI-0000xh-PO\n\tfor incoming@patchwork.ozlabs.org; Fri, 01 Sep 2017 07:32:12 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:59562)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <apahim@redhat.com>) id 1dnkAb-0000wG-TY\n\tfor qemu-devel@nongnu.org; Fri, 01 Sep 2017 07:31:31 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <apahim@redhat.com>) id 1dnkAa-0006ib-S7\n\tfor qemu-devel@nongnu.org; Fri, 01 Sep 2017 07:31:29 -0400",
            "from mx1.redhat.com ([209.132.183.28]:57278)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <apahim@redhat.com>) id 1dnkAa-0006hj-J1\n\tfor qemu-devel@nongnu.org; Fri, 01 Sep 2017 07:31:28 -0400",
            "from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 9EE9581E05;\n\tFri,  1 Sep 2017 11:31:27 +0000 (UTC)",
            "from t460p.pahim.org.com (ovpn-204-134.brq.redhat.com\n\t[10.40.204.134])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id A8E2F77DC1;\n\tFri,  1 Sep 2017 11:31:24 +0000 (UTC)"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com 9EE9581E05",
        "From": "Amador Pahim <apahim@redhat.com>",
        "To": "qemu-devel@nongnu.org",
        "Date": "Fri,  1 Sep 2017 13:28:18 +0200",
        "Message-Id": "<20170901112829.2571-3-apahim@redhat.com>",
        "In-Reply-To": "<20170901112829.2571-1-apahim@redhat.com>",
        "References": "<20170901112829.2571-1-apahim@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.12",
        "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.25]);\n\tFri, 01 Sep 2017 11:31:27 +0000 (UTC)",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]",
        "X-Received-From": "209.132.183.28",
        "Subject": "[Qemu-devel] [PATCH v8 02/13] qemu.py: avoid writing to\n\tstdout/stderr",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "kwolf@redhat.com, ldoktor@redhat.com, famz@redhat.com,\n\tehabkost@redhat.com, \n\tstefanha@gmail.com, Amador Pahim <apahim@redhat.com>,\n\tarmbru@redhat.com, mreitz@redhat.com, crosa@redhat.com",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "This module should not write directly to stdout/stderr. Instead, it\nshould either raise exceptions or just log the messages and let the\ncallers handle them and decide what to do. For example, scripts could\nchoose to send the log messages stderr or/and write them to a file if\nverbose or debugging mode is enabled.\n\nThis patch replaces the writes to stderr by an exception in the\nsend_fd_scm() when _socket_scm_helper is not set or not present. In the\nsame method, the subprocess Popen will now redirect the stdout/stderr to\nlogging.debug instead of writing to system stderr. As consequence, since\nthe Popen.communicate() is now used (in order to get the stdout), the\nfurther call to wait() became redundant and was replaced by\nPopen.returncode.\n\nThe shutdown() message on negative exit code will now be logged\nto logging.warn instead of written to system stderr.\n\nSigned-off-by: Amador Pahim <apahim@redhat.com>\n---\n scripts/qemu.py | 30 ++++++++++++++++++++++--------\n 1 file changed, 22 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/scripts/qemu.py b/scripts/qemu.py\nindex 0ae5d39414..aca6fa4d82 100644\n--- a/scripts/qemu.py\n+++ b/scripts/qemu.py\n@@ -13,6 +13,7 @@\n #\n \n import errno\n+import logging\n import string\n import os\n import sys\n@@ -20,6 +21,15 @@ import subprocess\n import qmp.qmp\n \n \n+LOG = logging.getLogger(__name__)\n+\n+\n+class QEMUMachineError(Exception):\n+    \"\"\"\n+    Exception called when an error in QEMUMachine happens.\n+    \"\"\"\n+\n+\n class QEMUMachine(object):\n     '''A QEMU VM'''\n \n@@ -62,18 +72,21 @@ class QEMUMachine(object):\n         # In iotest.py, the qmp should always use unix socket.\n         assert self._qmp.is_scm_available()\n         if self._socket_scm_helper is None:\n-            print >>sys.stderr, \"No path to socket_scm_helper set\"\n-            return -1\n+            raise QEMUMachineError(\"No path to socket_scm_helper set\")\n         if os.path.exists(self._socket_scm_helper) == False:\n-            print >>sys.stderr, \"%s does not exist\" % self._socket_scm_helper\n-            return -1\n+            raise QEMUMachineError(\"%s does not exist\" %\n+                                   self._socket_scm_helper)\n         fd_param = [\"%s\" % self._socket_scm_helper,\n                     \"%d\" % self._qmp.get_sock_fd(),\n                     \"%s\" % fd_file_path]\n         devnull = open('/dev/null', 'rb')\n-        p = subprocess.Popen(fd_param, stdin=devnull, stdout=sys.stdout,\n-                             stderr=sys.stderr)\n-        return p.wait()\n+        p = subprocess.Popen(fd_param, stdin=devnull, stdout=subprocess.PIPE,\n+                             stderr=subprocess.STDOUT)\n+        output = p.communicate()[0]\n+        if output:\n+            LOG.debug(output)\n+\n+        return p.returncode\n \n     @staticmethod\n     def _remove_if_exists(path):\n@@ -154,7 +167,8 @@ class QEMUMachine(object):\n \n             exitcode = self._popen.wait()\n             if exitcode < 0:\n-                sys.stderr.write('qemu received signal %i: %s\\n' % (-exitcode, ' '.join(self._args)))\n+                LOG.warn('qemu received signal %i: %s', -exitcode,\n+                          ' '.join(self._args))\n             self._load_io_log()\n             self._post_shutdown()\n \n",
    "prefixes": [
        "v8",
        "02/13"
    ]
}