get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 140001,
    "url": "https://patches.dpdk.org/api/patches/140001/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20240509112057.1167947-4-luca.vizzarro@arm.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20240509112057.1167947-4-luca.vizzarro@arm.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240509112057.1167947-4-luca.vizzarro@arm.com",
    "date": "2024-05-09T11:20:52",
    "name": "[v2,3/8] dts: refactor EalParams",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "f9aaa8b5a56a65e1b03fb5a0428cb97926055a5a",
    "submitter": {
        "id": 3197,
        "url": "https://patches.dpdk.org/api/people/3197/?format=api",
        "name": "Luca Vizzarro",
        "email": "luca.vizzarro@arm.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20240509112057.1167947-4-luca.vizzarro@arm.com/mbox/",
    "series": [
        {
            "id": 31897,
            "url": "https://patches.dpdk.org/api/series/31897/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=31897",
            "date": "2024-05-09T11:20:49",
            "name": "dts: add testpmd params",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/31897/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/140001/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/140001/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-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 A199043F7C;\n\tThu,  9 May 2024 13:21:33 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 5F8364068E;\n\tThu,  9 May 2024 13:21:16 +0200 (CEST)",
            "from foss.arm.com (foss.arm.com [217.140.110.172])\n by mails.dpdk.org (Postfix) with ESMTP id 9E74C402EE\n for <dev@dpdk.org>; Thu,  9 May 2024 13:21:12 +0200 (CEST)",
            "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9E88212FC;\n Thu,  9 May 2024 04:21:37 -0700 (PDT)",
            "from localhost.localdomain (unknown [10.1.194.74])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 780823F6A8;\n Thu,  9 May 2024 04:21:11 -0700 (PDT)"
        ],
        "From": "Luca Vizzarro <luca.vizzarro@arm.com>",
        "To": "dev@dpdk.org",
        "Cc": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>,\n Jeremy Spewock <jspewock@iol.unh.edu>, Luca Vizzarro <luca.vizzarro@arm.com>,\n Paul Szczepanek <paul.szczepanek@arm.com>",
        "Subject": "[PATCH v2 3/8] dts: refactor EalParams",
        "Date": "Thu,  9 May 2024 12:20:52 +0100",
        "Message-Id": "<20240509112057.1167947-4-luca.vizzarro@arm.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20240509112057.1167947-1-luca.vizzarro@arm.com>",
        "References": "<20240326190422.577028-1-luca.vizzarro@arm.com>\n <20240509112057.1167947-1-luca.vizzarro@arm.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Move EalParams to its own module to avoid circular dependencies.\n\nSigned-off-by: Luca Vizzarro <luca.vizzarro@arm.com>\nReviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>\n---\n dts/framework/params/eal.py                   | 50 +++++++++++++++++++\n dts/framework/remote_session/testpmd_shell.py |  2 +-\n dts/framework/testbed_model/sut_node.py       | 42 +---------------\n 3 files changed, 53 insertions(+), 41 deletions(-)\n create mode 100644 dts/framework/params/eal.py",
    "diff": "diff --git a/dts/framework/params/eal.py b/dts/framework/params/eal.py\nnew file mode 100644\nindex 0000000000..bbdbc8f334\n--- /dev/null\n+++ b/dts/framework/params/eal.py\n@@ -0,0 +1,50 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2024 Arm Limited\n+\n+\"\"\"Module representing the DPDK EAL-related parameters.\"\"\"\n+\n+from dataclasses import dataclass, field\n+from typing import Literal\n+\n+from framework.params import Params, Switch\n+from framework.testbed_model.cpu import LogicalCoreList\n+from framework.testbed_model.port import Port\n+from framework.testbed_model.virtual_device import VirtualDevice\n+\n+\n+def _port_to_pci(port: Port) -> str:\n+    return port.pci\n+\n+\n+@dataclass(kw_only=True)\n+class EalParams(Params):\n+    \"\"\"The environment abstraction layer parameters.\n+\n+    Attributes:\n+        lcore_list: The list of logical cores to use.\n+        memory_channels: The number of memory channels to use.\n+        prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix=\"vf\"``.\n+        no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``.\n+        vdevs: Virtual devices, e.g.::\n+            vdevs=[\n+                VirtualDevice('net_ring0'),\n+                VirtualDevice('net_ring1')\n+            ]\n+        ports: The list of ports to allow.\n+        other_eal_param: user defined DPDK EAL parameters, e.g.:\n+                ``other_eal_param='--single-file-segments'``\n+    \"\"\"\n+\n+    lcore_list: LogicalCoreList = field(metadata=Params.short(\"l\"))\n+    memory_channels: int = field(metadata=Params.short(\"n\"))\n+    prefix: str = field(metadata=Params.long(\"file-prefix\"))\n+    no_pci: Switch = None\n+    vdevs: list[VirtualDevice] | None = field(\n+        default=None, metadata=Params.multiple() | Params.long(\"vdev\")\n+    )\n+    ports: list[Port] | None = field(\n+        default=None,\n+        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short(\"a\"),\n+    )\n+    other_eal_param: Params | None = None\n+    _separator: Literal[True] = field(default=True, init=False, metadata=Params.short(\"-\"))\ndiff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py\nindex 7eced27096..841d456a2f 100644\n--- a/dts/framework/remote_session/testpmd_shell.py\n+++ b/dts/framework/remote_session/testpmd_shell.py\n@@ -21,8 +21,8 @@\n from typing import Callable, ClassVar\n \n from framework.exception import InteractiveCommandExecutionError\n+from framework.params.eal import EalParams\n from framework.settings import SETTINGS\n-from framework.testbed_model.sut_node import EalParams\n from framework.utils import StrEnum\n \n from .interactive_shell import InteractiveShell\ndiff --git a/dts/framework/testbed_model/sut_node.py b/dts/framework/testbed_model/sut_node.py\nindex c886590979..e1163106a3 100644\n--- a/dts/framework/testbed_model/sut_node.py\n+++ b/dts/framework/testbed_model/sut_node.py\n@@ -15,9 +15,8 @@\n import os\n import tarfile\n import time\n-from dataclasses import dataclass, field\n from pathlib import PurePath\n-from typing import Literal, Type\n+from typing import Type\n \n from framework.config import (\n     BuildTargetConfiguration,\n@@ -26,6 +25,7 @@\n     SutNodeConfiguration,\n )\n from framework.params import Params, Switch\n+from framework.params.eal import EalParams\n from framework.remote_session import CommandResult\n from framework.settings import SETTINGS\n from framework.utils import MesonArgs\n@@ -37,44 +37,6 @@\n from .virtual_device import VirtualDevice\n \n \n-def _port_to_pci(port: Port) -> str:\n-    return port.pci\n-\n-\n-@dataclass(kw_only=True)\n-class EalParams(Params):\n-    \"\"\"The environment abstraction layer parameters.\n-\n-    Attributes:\n-        lcore_list: The list of logical cores to use.\n-        memory_channels: The number of memory channels to use.\n-        prefix: Set the file prefix string with which to start DPDK, e.g.: ``prefix=\"vf\"``.\n-        no_pci: Switch to disable PCI bus, e.g.: ``no_pci=True``.\n-        vdevs: Virtual devices, e.g.::\n-            vdevs=[\n-                VirtualDevice('net_ring0'),\n-                VirtualDevice('net_ring1')\n-            ]\n-        ports: The list of ports to allow.\n-        other_eal_param: user defined DPDK EAL parameters, e.g.:\n-                ``other_eal_param='--single-file-segments'``\n-    \"\"\"\n-\n-    lcore_list: LogicalCoreList = field(metadata=Params.short(\"l\"))\n-    memory_channels: int = field(metadata=Params.short(\"n\"))\n-    prefix: str = field(metadata=Params.long(\"file-prefix\"))\n-    no_pci: Switch\n-    vdevs: list[VirtualDevice] | None = field(\n-        default=None, metadata=Params.multiple() | Params.long(\"vdev\")\n-    )\n-    ports: list[Port] | None = field(\n-        default=None,\n-        metadata=Params.convert_value(_port_to_pci) | Params.multiple() | Params.short(\"a\"),\n-    )\n-    other_eal_param: Params | None = None\n-    _separator: Literal[True] = field(default=True, init=False, metadata=Params.short(\"-\"))\n-\n-\n class SutNode(Node):\n     \"\"\"The system under test node.\n \n",
    "prefixes": [
        "v2",
        "3/8"
    ]
}