Show a cover letter.

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

{
    "id": 1551376,
    "url": "http://patchwork.ozlabs.org/api/covers/1551376/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/ovn/cover/20211105133019.1991280-1-frode.nordahl@canonical.com/",
    "project": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/projects/68/?format=api",
        "name": "Open Virtual Network development",
        "link_name": "ovn",
        "list_id": "ovs-dev.openvswitch.org",
        "list_email": "ovs-dev@openvswitch.org",
        "web_url": "http://openvswitch.org/",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20211105133019.1991280-1-frode.nordahl@canonical.com>",
    "list_archive_url": null,
    "date": "2021-11-05T13:30:15",
    "name": "[ovs-dev,v9,0/4] Introduce infrastructure for VIF plug providers.",
    "submitter": {
        "id": 77851,
        "url": "http://patchwork.ozlabs.org/api/people/77851/?format=api",
        "name": "Frode Nordahl",
        "email": "frode.nordahl@canonical.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/ovn/cover/20211105133019.1991280-1-frode.nordahl@canonical.com/mbox/",
    "series": [
        {
            "id": 270562,
            "url": "http://patchwork.ozlabs.org/api/series/270562/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/ovn/list/?series=270562",
            "date": "2021-11-05T13:30:19",
            "name": "Introduce infrastructure for VIF plug providers.",
            "version": 9,
            "mbox": "http://patchwork.ozlabs.org/series/270562/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/1551376/comments/",
    "headers": {
        "Return-Path": "<ovs-dev-bounces@openvswitch.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "dev@openvswitch.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "ovs-dev@lists.linuxfoundation.org"
        ],
        "Authentication-Results": [
            "bilbo.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=canonical.com header.i=@canonical.com\n header.a=rsa-sha256 header.s=20210705 header.b=lojxOw2W;\n\tdkim-atps=neutral",
            "ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=140.211.166.138; helo=smtp1.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN>)",
            "smtp4.osuosl.org (amavisd-new);\n dkim=pass (2048-bit key) header.d=canonical.com"
        ],
        "Received": [
            "from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby bilbo.ozlabs.org (Postfix) with ESMTPS id 4Hm1bq3VKcz9sfG\n\tfor <incoming@patchwork.ozlabs.org>; Sat,  6 Nov 2021 00:30:47 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 23CB88271D;\n\tFri,  5 Nov 2021 13:30:45 +0000 (UTC)",
            "from smtp1.osuosl.org ([127.0.0.1])\n\tby localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id Sls5Gx8wsaZz; Fri,  5 Nov 2021 13:30:41 +0000 (UTC)",
            "from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56])\n\tby smtp1.osuosl.org (Postfix) with ESMTPS id 590A982675;\n\tFri,  5 Nov 2021 13:30:40 +0000 (UTC)",
            "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 6E06AC0037;\n\tFri,  5 Nov 2021 13:30:38 +0000 (UTC)",
            "from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 0830EC0045\n for <dev@openvswitch.org>; Fri,  5 Nov 2021 13:30:37 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id DCE2940761\n for <dev@openvswitch.org>; Fri,  5 Nov 2021 13:30:36 +0000 (UTC)",
            "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id JR8AREuYKwXI for <dev@openvswitch.org>;\n Fri,  5 Nov 2021 13:30:33 +0000 (UTC)",
            "from smtp-relay-canonical-0.canonical.com\n (smtp-relay-canonical-0.canonical.com [185.125.188.120])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 01A9F40752\n for <dev@openvswitch.org>; Fri,  5 Nov 2021 13:30:32 +0000 (UTC)",
            "from frode-threadripper.. (1.general.frode.uk.vpn [10.172.193.250])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-relay-canonical-0.canonical.com (Postfix) with ESMTPSA id 97C4E3F1B3;\n Fri,  5 Nov 2021 13:30:27 +0000 (UTC)"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.8.0",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com;\n s=20210705; t=1636119027;\n bh=FdSRa7R1HwIhWvlCRA1O7v9hdiNVlPVRTK85m+1HJTE=;\n h=From:To:Cc:Subject:Date:Message-Id:MIME-Version;\n b=lojxOw2WGpmWSya25R+sTUqsoXjUWJojrXVK+3ecDy8zD0bfNeQdn72t5u/1MwsxA\n 7M7l0RUEgwev3uBqSunmQzTC2wbVgHOf9ctB63dhMei5Mw94ixOXUBgYOrQkLCdxat\n CObL/ZyEEX1xtP+8XVlS3Ln359LDdYlJxzUMSs1nlzLvDVik7w+sjNzWDDC8p52gK4\n rnJpfHIPj9xn7h7lsSA20VMyGAU79XbBA7DpQUjDQLdCtIVhKzoZ4drvgTrJcbcKBE\n scB2CV6eTzt4BN2ZmclT8BLzblzlj9ii14GCnoi5Zt14a+1LnJRajDSzss53lbFpRs\n aQBD+LfPoiObQ==",
        "From": "Frode Nordahl <frode.nordahl@canonical.com>",
        "To": "dev@openvswitch.org",
        "Date": "Fri,  5 Nov 2021 14:30:15 +0100",
        "Message-Id": "<20211105133019.1991280-1-frode.nordahl@canonical.com>",
        "X-Mailer": "git-send-email 2.32.0",
        "MIME-Version": "1.0",
        "Subject": "[ovs-dev] [PATCH ovn v9 0/4] Introduce infrastructure for VIF plug\n\tproviders.",
        "X-BeenThere": "ovs-dev@openvswitch.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "<ovs-dev.openvswitch.org>",
        "List-Unsubscribe": "<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=unsubscribe>",
        "List-Archive": "<http://mail.openvswitch.org/pipermail/ovs-dev/>",
        "List-Post": "<mailto:ovs-dev@openvswitch.org>",
        "List-Help": "<mailto:ovs-dev-request@openvswitch.org?subject=help>",
        "List-Subscribe": "<https://mail.openvswitch.org/mailman/listinfo/ovs-dev>,\n <mailto:ovs-dev-request@openvswitch.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "ovs-dev-bounces@openvswitch.org",
        "Sender": "\"dev\" <ovs-dev-bounces@openvswitch.org>"
    },
    "content": "Introduce infrastructure for VIF plug providers and add feature to\novn-controller to add and remove ports on the integration bridge as\ndirected by CMS through Logical_Switch_Port options.\n\nTraditionally it has been the CMSs responsibility to create Virtual\nInterfaces (VIFs) as part of instance (Container, Pod, Virtual\nMachine etc.) life cycle, and subsequently manage plug/unplug\noperations on the Open vSwitch integration bridge.\n\nWith the advent of NICs connected to multiple distinct CPUs we can\nhave a topology where the instance runs on one host and Open\nvSwitch and OVN runs on a different host, the smartnic control plane\nCPU.  The host facing interfaces will be visible to Open vSwitch\nand OVN as representor ports.\n\nThe actions necessary for plugging and unplugging the representor\nport in Open vSwitch running on the smartnic control plane CPU would\nbe the same for every CMS.\n\nHardware or platform specific details for initialization and lookup\nof representor ports is provided by an plugging provider hosted\ninside or outside the core OVN repository, and linked at OVN build\ntime.\n\nRFC1 -> RFC2:\n - Introduce the plug-provider interface, remove hardware/platform\n   dependent code.\n - Add ovsport module.\n - Integrate with binding module.\n - Split into multiple patches.\n\nRFC2 -> v1:\n - Extend build system, `--with-plug-provider`.\n - Check for required data in b_ctx_in and lbinding data structures.\n - Split consider_plug_lport into update and create processing\n   functions.\n - Consider unplug on release where relevant.\n - Add ovn-controller `--enable-dummy-plug` option for testing.\n - Consistent function naming and move ovsport module to controller/.\n - Rename plug-test.c -> plug-dummy.c.\n - Add functional- and unit- tests.\n\nv1 -> v2:\n - Move update to controller/binding.h from patch 6 -> patch 5.\n - Fix lint problems reported by 0-day Robot.\n\nv2 -> v3:\n - Fix build system extension for plug provider.\n - Implement DDlog version of northd change.\n - Rebase on tip.\n\nv3 -> v4:\n - sb:Port_Binding:plugged_by -> sb:Port_Binding:requested_chassis.\n - Move documentation of plugin specific options to plugin\n   implementation.\n - ovn-northd-ddlog: squash changes into same patch as C version, rework\n   the DDlog implementation. \n - controller: Use requested_chassis column instead of parsing options.\n - plug-provider: Remove the extra class instantiation layer and\n   refcounting.  Add documentation and various tweaks.\n - controller: Add engine node for plug provider so that a plugin run\n   function can run at an appropriate time and also allow feeding back\n   information about changes that can not be handled incrementally.\n - binding: Fix return values for plug functions so they adhere to the\n   incremental processing engine contract.\n - Add support for building in-tree plug providers.\n\nv4 -> v5:\n - binding: Make some data structures and functions public to allow\n   other modules to make use of its local binding tracking data\n   structures.\n - Add separate incremental processing engine nodes for the plug\n   provider.\n - Do change handling in the controller/plug module rather than piggy\n   backing on the binding module.\n - Deal with asynchronous notification to plug provider class and\n   subsequent freeing of data structures when the transaction commits.\n - Drop the representor plugin as in-tree plugin to address concerns about\n   it being Linux-only and having netlink/kernel dependencies.  Will\n   upstream to ovn-org/ovn-vif instead.\n\nv5 -> v6:\n - Fix 0-day Robot documentation lexer warning treated as error:\n    https://mail.openvswitch.org/pipermail/ovs-build/2021-September/017538.html\n\nv6 -> v7:\n - lport: Fall back to strcmp when requested-chassis option is set\n          but Port_Binding->requested_chassis is not filled yet.\n - physical: Make use of common lport_can_bind_on_this_chassis helper\n             instead of duplicating the inverse check in the code.\n - tests: Add test cases to cover currently uncovered requested-chassis\n          functionality.\n - plug: Make smaps struct members instead of pointers.\n - plug: Don't use is_deleted function when not iterating over tracked\n         records.  Avoid adding multiple delete or update iface requests\n         to the same transaction.\n - plug: For full recompute, don't process until northd has populated\n         Port_Binding->requested_chassis to avoid thrashing on startup.\n         Also fix order of processing.\n - plug: Handle failed transactions appropriately.\n - tests: Clean up and extend plug test case.\n\nv7 -> v8:\n - Patches 1 through 9 from v7 was merged.\n - Use Port_Binding:requested_chassis index when iterating over PBs.\n - Drop separate I-P engine nodes for the VIF plug providers at this\n   time, we can revisit the need for it in the event of VIF plug\n   providers gaining support for Scalable Functions and the increased\n   density that entails.\n - Rename module, objects and folders from 'plug-' to 'vif-plug-*' to\n   avoid using too generic names.\n - Don't call vif_plug_port_ctx_destroy on vif_plug_port_prepare\n   failure, make the convention that plug provider should clean up after\n   itself in that case.\n - Simplify the unplug/plug thrashing avoidance on startup with a rather\n   naive counter to ensure IDL has data prior to attempting any\n   processing.  Once we identify the root of the issue this can be removed.\n\nv8 -> v9:\n - Amend comment with inaccurate statements about behavior of tracked\n   data.\n - Increase the IDL prime counter and reset it whenever the OVNSB DB\n   reconnects.\n - Don't add indexes not used by I-P as inputs to the I-P engine.\n - Update NEWS statement.\n - Fix Documentation path reference in ovn-architecture.7.xml\n\nPrevious discussion:\n - RFC1: https://patchwork.ozlabs.org/project/ovn/patch/20210509140305.1910796-1-frode.nordahl@canonical.com/\n - RFC2: https://patchwork.ozlabs.org/project/ovn/cover/20210805145013.3033919-1-frode.nordahl@gmail.com/\n\nFrode Nordahl (4):\n  lib: Add infrastructure for VIF plug providers.\n  ovn-controller: Prepare VIF plug provider infrastructure.\n  controller: Consider plugging VIF on CMS request.\n  NEWS: Add note on infrastructure for VIF plug providers.\n\n Documentation/automake.mk                     |   2 +\n Documentation/topics/index.rst                |   1 +\n .../topics/vif-plug-providers/index.rst       |  32 +\n .../vif-plug-providers/vif-plug-providers.rst | 209 ++++++\n NEWS                                          |   6 +\n acinclude.m4                                  |  49 ++\n configure.ac                                  |   2 +\n controller/automake.mk                        |   4 +-\n controller/ovn-controller.c                   |  81 ++-\n controller/test-vif-plug.c                    |  72 ++\n controller/vif-plug.c                         | 634 ++++++++++++++++++\n controller/vif-plug.h                         |  80 +++\n lib/automake.mk                               |  10 +-\n lib/vif-plug-provider.c                       | 204 ++++++\n lib/vif-plug-provider.h                       | 163 +++++\n lib/vif-plug-providers/dummy/vif-plug-dummy.c | 120 ++++\n ovn-architecture.7.xml                        |  35 +-\n ovn-nb.xml                                    |  21 +\n tests/automake.mk                             |  13 +-\n tests/ovn-macros.at                           |   2 +-\n tests/ovn-vif-plug.at                         |   8 +\n tests/ovn.at                                  | 121 ++++\n 22 files changed, 1851 insertions(+), 18 deletions(-)\n create mode 100644 Documentation/topics/vif-plug-providers/index.rst\n create mode 100644 Documentation/topics/vif-plug-providers/vif-plug-providers.rst\n create mode 100644 controller/test-vif-plug.c\n create mode 100644 controller/vif-plug.c\n create mode 100644 controller/vif-plug.h\n create mode 100644 lib/vif-plug-provider.c\n create mode 100644 lib/vif-plug-provider.h\n create mode 100644 lib/vif-plug-providers/dummy/vif-plug-dummy.c\n create mode 100644 tests/ovn-vif-plug.at"
}