get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 104672,
    "url": "http://patchwork.dpdk.org/api/patches/104672/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dts/patch/1637761668-4060-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": "<1637761668-4060-1-git-send-email-juraj.linkes@pantheon.tech>",
    "list_archive_url": "https://inbox.dpdk.org/dts/1637761668-4060-1-git-send-email-juraj.linkes@pantheon.tech",
    "date": "2021-11-24T13:47:48",
    "name": "[v1] framework/virt_*: fix pylama errors",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "241a470a464666fde3987320392e833e1485a62b",
    "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/1637761668-4060-1-git-send-email-juraj.linkes@pantheon.tech/mbox/",
    "series": [
        {
            "id": 20753,
            "url": "http://patchwork.dpdk.org/api/series/20753/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=20753",
            "date": "2021-11-24T13:47:48",
            "name": "[v1] framework/virt_*: fix pylama errors",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/20753/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/104672/comments/",
    "check": "fail",
    "checks": "http://patchwork.dpdk.org/api/patches/104672/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 04DC0A0C52;\n\tWed, 24 Nov 2021 14:47:52 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D379F411FE;\n\tWed, 24 Nov 2021 14:47:52 +0100 (CET)",
            "from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20])\n by mails.dpdk.org (Postfix) with ESMTP id 959C1411E6\n for <dts@dpdk.org>; Wed, 24 Nov 2021 14:47:51 +0100 (CET)",
            "from localhost (localhost [127.0.0.1])\n by lb.pantheon.sk (Postfix) with ESMTP id 077FD10DDB9;\n Wed, 24 Nov 2021 14:47:50 +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 iNyAVqa15OH9; Wed, 24 Nov 2021 14:47:49 +0100 (CET)",
            "from service-node1.lab.pantheon.local (unknown [46.229.239.141])\n by lb.pantheon.sk (Postfix) with ESMTP id 5ADC910DDB0;\n Wed, 24 Nov 2021 14:47:49 +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/virt_*: fix pylama errors",
        "Date": "Wed, 24 Nov 2021 14:47:48 +0100",
        "Message-Id": "<1637761668-4060-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/virt_base.py:271: [E] E1101 Instance of 'VirtBase' has no 'add_vm_login' member [pylint]\nframework/virt_base.py:274: [E] E1101 Instance of 'VirtBase' has no '_attach_vm' member [pylint]\nframework/virt_base.py:319: [E] E1101 Instance of 'VirtBase' has no '_quick_start_vm' member [pylint]\nframework/virt_base.py:413: [E] E1111 Assigning result of a function call, where the function has no return [pylint]\nframework/virt_base.py:416: [E] E1101 Instance of 'VirtBase' has no 'get_vm_login' member [pylint]\nframework/virt_base.py:88: [E] E1111 Assigning result of a function call, where the function has no return [pylint]\nframework/virt_dut.py:73: [E] E1003 Bad first argument 'Dut' given to super() [pylint]\nframework/virt_resource.py:242: [E] E1101 Instance of 'VirtResource' has no '__port_isused' member [pylint]\nframework/virt_resource.py:246: [E] E0602 Undefined variable 'core' [pylint]\nframework/virt_resource.py:247: [E] E0602 Undefined variable 'core' [pylint]\nframework/virt_scene.py:350: [E] E1101 Instance of 'VirtScene' has no 'tester' member [pylint]\nframework/virt_scene.py:393: [E] E1101 Instance of 'VirtScene' has no 'vm_dut' member [pylint]\nframework/virt_scene.py:397: [E] E1101 Instance of 'VirtScene' has no 'tester' member [pylint]\nframework/virt_scene.py:458: [E] E1123 Unexpected keyword argument 'auto_portmap' in method call [pylint]\nframework/virt_scene.py:510: [E] E0102 class already defined line 38 [pylint]\nframework/virt_scene.py:517: [E] E1101 Instance of 'QEMUKvm' has no 'params' member [pylint]\n\nSigned-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>\n---\nLijuan, please add additional people to review if needed.\n---\n framework/dut.py           | 11 +++++++----\n framework/project_dpdk.py  |  5 +++--\n framework/virt_base.py     | 28 ++++++++++++++++++++++++++--\n framework/virt_dut.py      |  2 +-\n framework/virt_resource.py |  7 +++++--\n framework/virt_scene.py    | 13 +++++++------\n 6 files changed, 49 insertions(+), 17 deletions(-)",
    "diff": "diff --git a/framework/dut.py b/framework/dut.py\nindex dc3fc874..f4355f40 100644\n--- a/framework/dut.py\n+++ b/framework/dut.py\n@@ -62,10 +62,13 @@ class Dut(Crb):\n     CORE_LIST_CACHE_KEY = 'dut_core_list'\n     PCI_DEV_CACHE_KEY = 'dut_pci_dev_info'\n \n-    def __init__(self, crb, serializer, dut_id):\n-        self.NAME = 'dut' + LOG_NAME_SEP + '%s' % crb['My IP']\n-        super(Dut, self).__init__(crb, serializer, self.NAME, alt_session=True, dut_id=dut_id)\n-\n+    def __init__(self, crb, serializer,\n+                 name=None, alt_session=True, dut_id=0):\n+        if not name:\n+            name = 'dut' + LOG_NAME_SEP + '%s' % crb['My IP']\n+            self.NAME = name\n+        super(Dut, self).__init__(crb, serializer, name,\n+                                  alt_session=alt_session, dut_id=dut_id)\n         self.host_init_flag = False\n         self.number_of_cores = 0\n         self.tester = None\ndiff --git a/framework/project_dpdk.py b/framework/project_dpdk.py\nindex 9927bcc1..75613a1d 100644\n--- a/framework/project_dpdk.py\n+++ b/framework/project_dpdk.py\n@@ -60,8 +60,9 @@ class DPDKdut(Dut):\n     build, memory and kernel module.\n     \"\"\"\n \n-    def __init__(self, crb, serializer, dut_id):\n-        super(DPDKdut, self).__init__(crb, serializer, dut_id)\n+    def __init__(self, crb, serializer, name=None, alt_session=True, dut_id=0):\n+        super(DPDKdut, self).__init__(crb, serializer, name, alt_session,\n+                                      dut_id)\n         self.testpmd = None\n \n     def set_target(self, target, bind_dev=True):\ndiff --git a/framework/virt_base.py b/framework/virt_base.py\nindex 148a4d18..ef117062 100644\n--- a/framework/virt_base.py\n+++ b/framework/virt_base.py\n@@ -104,7 +104,7 @@ class VirtBase(object):\n         \"\"\"\n         Get the virtual type, such as KVM, XEN or LIBVIRT.\n         \"\"\"\n-        NotImplemented\n+        raise NotImplementedError\n \n     def has_virtual_ability(self):\n         \"\"\"\n@@ -118,6 +118,30 @@ class VirtBase(object):\n         \"\"\"\n         NotImplemented\n \n+    def get_vm_login(self):\n+        \"\"\"\n+        Get VM credentials.\n+        \"\"\"\n+        raise NotImplementedError\n+\n+    def add_vm_login(self):\n+        \"\"\"\n+        Add VM credentials.\n+        \"\"\"\n+        raise NotImplementedError\n+\n+    def _attach_vm(self):\n+        \"\"\"\n+        Attach VM.\n+        \"\"\"\n+        raise NotImplementedError\n+\n+    def _quick_start_vm(self):\n+        \"\"\"\n+        Quick start VM.\n+        \"\"\"\n+        raise NotImplementedError\n+\n     def load_global_config(self):\n         \"\"\"\n         Load global configure in the path DTS_ROOT_PATH/conf.\n@@ -230,7 +254,7 @@ class VirtBase(object):\n         \"\"\"\n         Get the VM IP.\n         \"\"\"\n-        NotImplemented\n+        raise NotImplementedError\n \n     def get_pci_mappings(self):\n         \"\"\"\ndiff --git a/framework/virt_dut.py b/framework/virt_dut.py\nindex bde65667..de892879 100644\n--- a/framework/virt_dut.py\n+++ b/framework/virt_dut.py\n@@ -70,7 +70,7 @@ class VirtDut(DPDKdut):\n         self.vm_ip = crb['IP']\n         self.NAME = 'virtdut' + LOG_NAME_SEP + '%s' % self.vm_ip\n         # do not create addition alt_session\n-        super(Dut, self).__init__(crb, serializer, self.NAME, alt_session=False, dut_id=self.dut_id)\n+        super(VirtDut, self).__init__(crb, serializer, self.NAME, alt_session=False, dut_id=self.dut_id)\n         # load port config from suite cfg\n         self.suite = suite\n \ndiff --git a/framework/virt_resource.py b/framework/virt_resource.py\nindex 8a19f1b2..3163372d 100644\n--- a/framework/virt_resource.py\n+++ b/framework/virt_resource.py\n@@ -70,6 +70,9 @@ class VirtResource(object):\n         # save allocated cores and related vm\n         self.allocated_info = {}\n \n+    def __port_isused(self, pci):\n+        return pci in self.used_ports\n+\n     def __port_used(self, pci):\n         index = self.ports.index(pci)\n         self.used_ports[index] = pci\n@@ -243,8 +246,8 @@ class VirtResource(object):\n                     print(\"Port %s has been used!!!\" % pci)\n                 else:\n                     if self.__port_on_socket(pci, socket) is True:\n-                        self.__port_used(core)\n-                        ports.append(core)\n+                        self.__port_used(pci)\n+                        ports.append(pci)\n \n         if vm not in self.allocated_info:\n             self.allocated_info[vm] = {}\ndiff --git a/framework/virt_scene.py b/framework/virt_scene.py\nindex cc36a09b..d82012b1 100644\n--- a/framework/virt_scene.py\n+++ b/framework/virt_scene.py\n@@ -347,7 +347,7 @@ class VirtScene(object):\n             elif cmd['type'] == 'host':\n                 crb = self.host_dut\n             elif cmd['type'] == 'tester':\n-                crb = self.tester\n+                crb = self.tester_dut\n             else:\n                 crb = self.host_dut\n \n@@ -390,11 +390,11 @@ class VirtScene(object):\n     def run_post_cmds(self):\n         for cmd in self.post_cmds:\n             if cmd['type'] == 'vm':\n-                crb = self.vm_dut\n+                crb = None\n             elif cmd['type'] == 'host':\n                 crb = self.host_dut\n             elif cmd['type'] == 'tester':\n-                crb = self.tester\n+                crb = self.tester_dut\n             else:\n                 crb = self.host_dut\n \n@@ -456,7 +456,6 @@ class VirtScene(object):\n                 topo = self.get_cputopo(scene_params)\n                 try:\n                     vm_dut = vm.start(load_config=False, set_target=False,\n-                                      auto_portmap=self.auto_portmap,\n                                       cpu_topo=topo)\n                     if vm_dut is None:\n                         raise Exception(\"Set up VM ENV failed!\")\n@@ -507,16 +506,18 @@ class VirtScene(object):\n \n if __name__ == \"__main__\":\n \n-    class QEMUKvm():\n+    class QEMUKvmTmp():\n \n         def __init__(self, dut, vm_name, suite_name):\n             print(vm_name)\n             print(suite_name)\n \n         def start(self):\n-            print(self.params)\n+            print(self.__dict__)\n             return True\n \n+    QEMUKvm = QEMUKvmTmp\n+\n     class simple_dev(object):\n \n         def __init__(self, pci):\n",
    "prefixes": [
        "v1"
    ]
}