get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 104923,
    "url": "http://patchwork.dpdk.org/api/patches/104923/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dts/patch/1638792863-1811-1-git-send-email-juraj.linkes@pantheon.tech/",
    "project": {
        "id": 3,
        "url": "http://patchwork.dpdk.org/api/projects/3/?format=api",
        "name": "DTS",
        "link_name": "dts",
        "list_id": "dts.dpdk.org",
        "list_email": "dts@dpdk.org",
        "web_url": "",
        "scm_url": "git://dpdk.org/tools/dts",
        "webscm_url": "http://git.dpdk.org/tools/dts/",
        "list_archive_url": "https://inbox.dpdk.org/dts",
        "list_archive_url_format": "https://inbox.dpdk.org/dts/{}",
        "commit_url_format": ""
    },
    "msgid": "<1638792863-1811-1-git-send-email-juraj.linkes@pantheon.tech>",
    "list_archive_url": "https://inbox.dpdk.org/dts/1638792863-1811-1-git-send-email-juraj.linkes@pantheon.tech",
    "date": "2021-12-06T12:14:23",
    "name": "[v1] framework/crb: fix pylama errors",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "c290a376f983d84ebb8c273a876e2c9e6ea78001",
    "submitter": {
        "id": 1626,
        "url": "http://patchwork.dpdk.org/api/people/1626/?format=api",
        "name": "Juraj Linkeš",
        "email": "juraj.linkes@pantheon.tech"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dts/patch/1638792863-1811-1-git-send-email-juraj.linkes@pantheon.tech/mbox/",
    "series": [
        {
            "id": 20870,
            "url": "http://patchwork.dpdk.org/api/series/20870/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=20870",
            "date": "2021-12-06T12:14:23",
            "name": "[v1] framework/crb: fix pylama errors",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/20870/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/104923/comments/",
    "check": "fail",
    "checks": "http://patchwork.dpdk.org/api/patches/104923/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dts-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 5B267A034F;\n\tMon,  6 Dec 2021 13:14:27 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 51EC24013F;\n\tMon,  6 Dec 2021 13:14:27 +0100 (CET)",
            "from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20])\n by mails.dpdk.org (Postfix) with ESMTP id 9165440040\n for <dts@dpdk.org>; Mon,  6 Dec 2021 13:14:25 +0100 (CET)",
            "from localhost (localhost [127.0.0.1])\n by lb.pantheon.sk (Postfix) with ESMTP id EC977134296;\n Mon,  6 Dec 2021 13:14:24 +0100 (CET)",
            "from lb.pantheon.sk ([127.0.0.1])\n by localhost (lb.pantheon.sk [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id w_UJVEZyDorv; Mon,  6 Dec 2021 13:14:23 +0100 (CET)",
            "from service-node1.lab.pantheon.local (unknown [46.229.239.141])\n by lb.pantheon.sk (Postfix) with ESMTP id 6D16A130F7E;\n Mon,  6 Dec 2021 13:14:23 +0100 (CET)"
        ],
        "X-Virus-Scanned": "amavisd-new at siecit.sk",
        "From": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "To": "lijuan.tu@intel.com,\n\tohilyard@iol.unh.edu",
        "Cc": "dts@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "Subject": "[PATCH v1] framework/crb: fix pylama errors",
        "Date": "Mon,  6 Dec 2021 13:14:23 +0100",
        "Message-Id": "<1638792863-1811-1-git-send-email-juraj.linkes@pantheon.tech>",
        "X-Mailer": "git-send-email 2.7.4",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "test suite reviews and discussions <dts.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dts/>",
        "List-Post": "<mailto:dts@dpdk.org>",
        "List-Help": "<mailto:dts-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dts-bounces@dpdk.org"
    },
    "content": "Pylama found the following errors:\nframework/crb.py:68: [E] E1101 Instance of 'Crb' has no 'get_ip_address' member [pylint]\nframework/crb.py:69: [E] E1101 Instance of 'Crb' has no 'get_username' member [pylint]\nframework/crb.py:70: [E] E1101 Instance of 'Crb' has no 'get_password' member [pylint]\nframework/crb.py:74: [E] E1101 Instance of 'Crb' has no 'get_ip_address' member [pylint]\nframework/crb.py:76: [E] E1101 Instance of 'Crb' has no 'get_username' member [pylint]\nframework/crb.py:77: [E] E1101 Instance of 'Crb' has no 'get_password' member [pylint]\nframework/crb.py:109: [E] E1101 Instance of 'Crb' has no 'get_ip_address' member [pylint]\nframework/crb.py:111: [E] E1101 Instance of 'Crb' has no 'get_username' member [pylint]\nframework/crb.py:112: [E] E1101 Instance of 'Crb' has no 'get_password' member [pylint]\nframework/crb.py:140: [E] E1101 Instance of 'Crb' has no 'loggger' member; maybe 'logger'? [pylint]\nframework/crb.py:144: [E] E1101 Instance of 'Crb' has no 'get_ip_address' member [pylint]\nframework/crb.py:146: [E] E1101 Instance of 'Crb' has no 'get_username' member [pylint]\nframework/crb.py:147: [E] E1101 Instance of 'Crb' has no 'get_password' member [pylint]\nframework/crb.py:150: [E] E1101 Instance of 'Crb' has no 'get_ip_address' member [pylint]\nframework/crb.py:151: [E] E1101 Instance of 'Crb' has no 'get_username' member [pylint]\nframework/crb.py:151: [E] E1101 Instance of 'Crb' has no 'get_password' member [pylint]\nframework/crb.py:254: [E] E1136 Value 'self.ports_info' is unsubscriptable [pylint]\nframework/crb.py:270: [E] E1101 Instance of 'Crb' has no 'PCI_DEV_CACHE_KEY' member [pylint]\nframework/crb.py:274: [E] E1101 Instance of 'Crb' has no 'PCI_DEV_CACHE_KEY' member [pylint]\nframework/crb.py:391: [E] E1120 No value for argument 'string' in function call [pylint]\nframework/crb.py:478: [E] E1101 Instance of 'Crb' has no 'get_password' member [pylint]\nframework/crb.py:560: [E] E0203 Access to member 'prefix_list' before its definition line 564 [pylint]\nframework/crb.py:562: [E] E0203 Access to member 'prefix_list' before its definition line 564 [pylint]\nframework/crb.py:606: [E] E1101 Instance of 'Crb' has no 'NUMBER_CORES_CACHE_KEY' member [pylint]\nframework/crb.py:607: [E] E1101 Instance of 'Crb' has no 'CORE_LIST_CACHE_KEY' member [pylint]\nframework/crb.py:611: [E] E1101 Instance of 'Crb' has no 'NUMBER_CORES_CACHE_KEY' member [pylint]\nframework/crb.py:612: [E] E1101 Instance of 'Crb' has no 'CORE_LIST_CACHE_KEY' member [pylint]\nframework/crb.py:880: [E] E1133 Non-iterable value self.ports_info is used in an iterating context [pylint]\nframework/crb.py:888: [E] E1136 Value 'self.ports_info' is unsubscriptable [pylint]\n\nSigned-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>\n---\nLijuan, please add additional people to review if needed.\n---\n framework/crb.py      | 29 ++++++++++++++++++++++++++---\n framework/dut.py      | 20 --------------------\n framework/tester.py   | 18 ------------------\n framework/virt_dut.py |  2 --\n 4 files changed, 26 insertions(+), 43 deletions(-)",
    "diff": "diff --git a/framework/crb.py b/framework/crb.py\nindex c9909add..e4a297dd 100755\n--- a/framework/crb.py\n+++ b/framework/crb.py\n@@ -51,18 +51,23 @@ class Crb(object):\n     CPU/PCI/NIC on the board and setup running environment for DPDK.\n     \"\"\"\n \n+    PCI_DEV_CACHE_KEY = None\n+    NUMBER_CORES_CACHE_KEY = None\n+    CORE_LIST_CACHE_KEY = None\n+\n     def __init__(self, crb, serializer, name, alt_session=True, dut_id=0):\n         self.dut_id = dut_id\n         self.crb = crb\n         self.read_cache = False\n         self.skip_setup = False\n         self.serializer = serializer\n-        self.ports_info = None\n+        self.ports_info = []\n         self.sessions = []\n         self.stage = 'pre-init'\n         self.name = name\n         self.trex_prefix = None\n         self.default_hugepages_cleared = False\n+        self.prefix_list = []\n \n         self.logger = getLogger(name)\n         self.session = SSHConnection(self.get_ip_address(), name,\n@@ -80,6 +85,24 @@ class Crb(object):\n         else:\n             self.alt_session = None\n \n+    def get_ip_address(self):\n+        \"\"\"\n+        Get CRB's ip address.\n+        \"\"\"\n+        return self.crb['IP']\n+\n+    def get_password(self):\n+        \"\"\"\n+        Get CRB's login password.\n+        \"\"\"\n+        return self.crb['pass']\n+\n+    def get_username(self):\n+        \"\"\"\n+        Get CRB's login username.\n+        \"\"\"\n+        return self.crb['user']\n+\n     def send_expect(self, cmds, expected, timeout=TIMEOUT,\n                     alt_session=False, verify=False, trim_whitespace=True):\n         \"\"\"\n@@ -137,7 +160,7 @@ class Crb(object):\n             else:\n                 self.session.close(force=True)\n         except Exception as e:\n-            self.loggger.error(\"Session close failed for [%s]\" % e)\n+            self.logger.error(\"Session close failed for [%s]\" % e)\n \n         if alt_session:\n             session = SSHConnection(\n@@ -388,7 +411,7 @@ class Crb(object):\n                                (domain_id, bus_id, devfun_id), \"# \", alt_session=True)\n         rexp = r\"PCI_ID=(.+)\"\n         pattern = re.compile(rexp)\n-        match = re.search(out)\n+        match = re.search(pattern, out)\n         if not match:\n             return None\n         return match.group(1)\ndiff --git a/framework/dut.py b/framework/dut.py\nindex dc3fc874..25d3c64b 100644\n--- a/framework/dut.py\n+++ b/framework/dut.py\n@@ -71,14 +71,12 @@ class Dut(Crb):\n         self.tester = None\n         self.cores = []\n         self.architecture = None\n-        self.ports_info = []\n         self.conf = PortConf()\n         self.ports_map = []\n         self.virt_pool = None\n         # hypervisor pid list, used for cleanup\n         self.virt_pids = []\n         self.prefix_subfix = str(os.getpid()) + '_' + time.strftime(\"%Y%m%d%H%M%S\", time.localtime())\n-        self.prefix_list = []\n         self.hugepage_path = None\n         self.apps_name_conf = {}\n         self.apps_name = {}\n@@ -350,24 +348,6 @@ class Dut(Crb):\n         \"\"\"\n         self.send_expect('mount -t procfs proc /proc', '# ')\n \n-    def get_ip_address(self):\n-        \"\"\"\n-        Get DUT's ip address.\n-        \"\"\"\n-        return self.crb['IP']\n-\n-    def get_password(self):\n-        \"\"\"\n-        Get DUT's login password.\n-        \"\"\"\n-        return self.crb['pass']\n-\n-    def get_username(self):\n-        \"\"\"\n-        Get DUT's login username.\n-        \"\"\"\n-        return self.crb['user']\n-\n     def dut_prerequisites(self):\n         \"\"\"\n         Prerequest function should be called before execute any test case.\ndiff --git a/framework/tester.py b/framework/tester.py\nindex 9dba4e4d..fa8a5f69 100644\n--- a/framework/tester.py\n+++ b/framework/tester.py\n@@ -151,24 +151,6 @@ class Tester(Crb):\n         \"\"\"\n         self.re_run_time = int(re_run_time)\n \n-    def get_ip_address(self):\n-        \"\"\"\n-        Get ip address of tester CRB.\n-        \"\"\"\n-        return self.crb['tester IP']\n- \n-    def get_username(self):\n-        \"\"\"\n-        Get login username of tester CRB.\n-        \"\"\"\n-        return USERNAME\n-\n-    def get_password(self):\n-        \"\"\"\n-        Get tester login password of tester CRB.\n-        \"\"\"\n-        return self.crb['tester pass']\n-\n     @property\n     def is_pktgen(self):\n         \"\"\"\ndiff --git a/framework/virt_dut.py b/framework/virt_dut.py\nindex bde65667..ca8c8c6b 100644\n--- a/framework/virt_dut.py\n+++ b/framework/virt_dut.py\n@@ -78,11 +78,9 @@ class VirtDut(DPDKdut):\n         self.tester = None\n         self.cores = []\n         self.architecture = None\n-        self.ports_info = None\n         self.ports_map = []\n         self.virttype = virttype\n         self.prefix_subfix = str(os.getpid()) + '_' + time.strftime(\"%Y%m%d%H%M%S\", time.localtime())\n-        self.prefix_list = []\n         self.apps_name_conf = {}\n         self.apps_name = {}\n \n",
    "prefixes": [
        "v1"
    ]
}