Show a cover letter.

GET /api/covers/119478/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 119478,
    "url": "http://patches.dpdk.org/api/covers/119478/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20221104110523.511367-1-juraj.linkes@pantheon.tech/",
    "project": {
        "id": 1,
        "url": "http://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": "<20221104110523.511367-1-juraj.linkes@pantheon.tech>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221104110523.511367-1-juraj.linkes@pantheon.tech",
    "date": "2022-11-04T11:05:14",
    "name": "[v8,0/9] dts: ssh connection to a node",
    "submitter": {
        "id": 1626,
        "url": "http://patches.dpdk.org/api/people/1626/?format=api",
        "name": "Juraj Linkeš",
        "email": "juraj.linkes@pantheon.tech"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20221104110523.511367-1-juraj.linkes@pantheon.tech/mbox/",
    "series": [
        {
            "id": 25575,
            "url": "http://patches.dpdk.org/api/series/25575/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=25575",
            "date": "2022-11-04T11:05:14",
            "name": "dts: ssh connection to a node",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/25575/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/119478/comments/",
    "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 9EFDCA00C5;\n\tFri,  4 Nov 2022 12:05:32 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 84EB442D10;\n\tFri,  4 Nov 2022 12:05:32 +0100 (CET)",
            "from lb.pantheon.sk (lb.pantheon.sk [46.229.239.20])\n by mails.dpdk.org (Postfix) with ESMTP id 9665042D0E\n for <dev@dpdk.org>; Fri,  4 Nov 2022 12:05:31 +0100 (CET)",
            "from localhost (localhost [127.0.0.1])\n by lb.pantheon.sk (Postfix) with ESMTP id D0B181BA5B4;\n Fri,  4 Nov 2022 12:05:29 +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 LMHqchizwRnk; Fri,  4 Nov 2022 12:05:26 +0100 (CET)",
            "from entguard.lab.pantheon.local (unknown [46.229.239.141])\n by lb.pantheon.sk (Postfix) with ESMTP id D4ECB1B68D8;\n Fri,  4 Nov 2022 12:05:25 +0100 (CET)"
        ],
        "X-Virus-Scanned": "amavisd-new at siecit.sk",
        "From": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "To": "thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, ohilyard@iol.unh.edu,\n lijuan.tu@intel.com, kda@semihalf.com, bruce.richardson@intel.com",
        "Cc": "dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "Subject": "[PATCH v8 0/9] dts: ssh connection to a node",
        "Date": "Fri,  4 Nov 2022 11:05:14 +0000",
        "Message-Id": "<20221104110523.511367-1-juraj.linkes@pantheon.tech>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20221103151934.450887-1-juraj.linkes@pantheon.tech>",
        "References": "<20221103151934.450887-1-juraj.linkes@pantheon.tech>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "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": "All the necessary code needed to connect to a node in a topology with\na bit more, such as basic logging and some extra useful methods.\n\nTo run the code, modify the config file, conf.yaml and execute ./main.py\nfrom the root dts folder. Here's an example config:\nexecutions:\n  - system_under_test: \"SUT 1\"\nnodes:\n  - name: \"SUT 1\"\n    hostname: 127.0.0.1\n    user: root\n\nThe framework will use the user's SSH key to authenticate. User password\ncan be specified, in which case it will be used, but it's strongly\ndiscouraged.\n\nThere are configuration files with documentation that help with setting up\nthe execution/development environment.\n\nThe code only connects to a node. You'll see logs emitted to console\nsaying where DTS connected.\n\nThere's only a bit of documentation, as there's not much to document.\nWe'll add some real docs when there's enough functionality to document,\nwhen the HelloWorld testcases is in (point 4 in our roadmap below). What\nwill be documented later is runtime dependencies and how to set up the DTS\ncontrol node environment.\n\nThis is our current roadmap:\n1. Review this patchset and do the rest of the items in parallel, if\npossible.\n2. We have extracted the code needed to run the most basic testcase,\nHelloWorld, which runs the DPDK Hello World application. We'll split\nthis along logical/functional boundaries and send after 1 is done.\n3. Once we have 2 applied, we're planning on adding a basic functional\ntestcase - pf_smoke. This send a bit of traffic, so the big addition is\nthe software traffic generator, Scapy. There's some work already done on\nTraffic generators we'll be sending as a dependence on this patch\nseries.\n4. After 3, we'll add a basic performance testcase which doesn't use\nScapy, but Trex or Ixia instead.\n5. This is far in the future, but at this point we should have all of\nthe core functionality in place. What then remains is adding the rest of\nthe testcases.\n\nWe're already working on items 2-4 and we may send more patches even\nbefore this patch series is accepted if that's beneficial. The new\npatches would then depend on this patch.\n\nThis patch, as well as all others in the pipeline, are the result of\nextensive DTS workgroup review which happens internally. If you'd like\nus to make it more public we'd have no problem with that.\n\nv3:\nAdded project config files and developer tools.\nRemoved locks for parallel nodes, which are not needed now and will be\nimplemented much later (in a different patch).\n\nv4:\nMinor fixes - added missing Exception and utils function.\n\nv5:\nReordered commits because the dependencies between commits changed.\nAdded more developer tools.\nAdded definitions of DTS testbed elements.\nReworked SSH implementation - split it so that the split between an\nabstraction and the actual implementation is clearer.\nModified the directory structure to better organize the current and the\nfuture code.\n\nv6:\nMinor code/grammar/style changes and a minor bugfix suggested by\nStanislaw.\n\nv7:\nRemoved non-DTS Python specific configuration as well as Docker\nconfiguration to review outside of this series.\nPorted documentation to .rst and integrated it with DPDK docs.\nMerged the three dev scripts into one.\nFixed ssh timeout and output issues.\n\nv8:\nReplaced toml lexer in docs with cfg.\n\nJuraj Linkeš (8):\n  dts: add project tools config\n  dts: add developer tools\n  dts: add basic logging facility\n  dts: add remote session abstraction\n  dts: add ssh session module\n  dts: add node base class\n  dts: add dts workflow module\n  dts: add dts executable script\n\nOwen Hilyard (1):\n  dts: add config parser module\n\n .gitignore                                    |   3 +\n MAINTAINERS                                   |   5 +\n devtools/dts-check-format.sh                  |  87 +++++\n doc/guides/tools/dts.rst                      | 123 +++++++\n doc/guides/tools/index.rst                    |   1 +\n dts/conf.yaml                                 |   6 +\n dts/framework/__init__.py                     |   3 +\n dts/framework/config/__init__.py              |  99 +++++\n dts/framework/config/conf_yaml_schema.json    |  65 ++++\n dts/framework/dts.py                          |  67 ++++\n dts/framework/exception.py                    |  56 +++\n dts/framework/logger.py                       | 113 ++++++\n dts/framework/remote_session/__init__.py      |  14 +\n .../remote_session/remote_session.py          |  95 +++++\n dts/framework/remote_session/ssh_session.py   | 184 ++++++++++\n dts/framework/settings.py                     | 119 +++++++\n dts/framework/testbed_model/__init__.py       |   7 +\n dts/framework/testbed_model/node.py           |  62 ++++\n dts/framework/utils.py                        |  30 ++\n dts/main.py                                   |  23 ++\n dts/poetry.lock                               | 337 ++++++++++++++++++\n dts/pyproject.toml                            |  46 +++\n 22 files changed, 1545 insertions(+)\n create mode 100755 devtools/dts-check-format.sh\n create mode 100644 doc/guides/tools/dts.rst\n create mode 100644 dts/conf.yaml\n create mode 100644 dts/framework/__init__.py\n create mode 100644 dts/framework/config/__init__.py\n create mode 100644 dts/framework/config/conf_yaml_schema.json\n create mode 100644 dts/framework/dts.py\n create mode 100644 dts/framework/exception.py\n create mode 100644 dts/framework/logger.py\n create mode 100644 dts/framework/remote_session/__init__.py\n create mode 100644 dts/framework/remote_session/remote_session.py\n create mode 100644 dts/framework/remote_session/ssh_session.py\n create mode 100644 dts/framework/settings.py\n create mode 100644 dts/framework/testbed_model/__init__.py\n create mode 100644 dts/framework/testbed_model/node.py\n create mode 100644 dts/framework/utils.py\n create mode 100755 dts/main.py\n create mode 100644 dts/poetry.lock\n create mode 100644 dts/pyproject.toml"
}