From patchwork Wed Aug 14 05:38:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mansi Sharma X-Patchwork-Id: 1972193 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=proofpoint20171006 header.b=ysB0YV8J; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=selector1 header.b=aujXFk6p; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WkHB000Hsz1yZl for ; Wed, 14 Aug 2024 15:39:02 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id EE8896086D; Wed, 14 Aug 2024 05:38:56 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id x7nhpPBI-rX4; Wed, 14 Aug 2024 05:38:55 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=140.211.9.56; helo=lists.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 910FF605E0 Authentication-Results: smtp3.osuosl.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=proofpoint20171006 header.b=ysB0YV8J; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=selector1 header.b=aujXFk6p Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 910FF605E0; Wed, 14 Aug 2024 05:38:55 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 52936C0A97; Wed, 14 Aug 2024 05:38:55 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5CECBC0A96 for ; Wed, 14 Aug 2024 05:38:53 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 454ED606A5 for ; Wed, 14 Aug 2024 05:38:53 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id yQAsaMEX0pgX for ; Wed, 14 Aug 2024 05:38:52 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=148.163.155.12; helo=mx0b-002c1b01.pphosted.com; envelope-from=mansi.sharma@nutanix.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp3.osuosl.org 04E28605E0 Authentication-Results: smtp3.osuosl.org; dmarc=pass (p=none dis=none) header.from=nutanix.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 04E28605E0 Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) by smtp3.osuosl.org (Postfix) with ESMTPS id 04E28605E0 for ; Wed, 14 Aug 2024 05:38:50 +0000 (UTC) Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 47DLuRk2004078; Tue, 13 Aug 2024 22:38:49 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=proofpoint20171006; bh=89ahCRyada8Ag yeBHgjy9To8qV0aAZBKpbdl9L0qCwU=; b=ysB0YV8JrQEjZXSjbr8Xwf5FdfuyH vIVXJ9NZrEncvtlTpSGey9jZyKD3euXSAcyWYPEAQWpUQzVUOk7uG+6t4+8PvG8o mzGprOJ+EP5vitg4evOY9/yDOtTtHzrTzuWjM7y5BWo+7XnD+XoSrIxuK/exd5es 8z6r+qhexIFZgZwz/zK4mow2R+BSS3sQNKJRSOEUNj7G5PhHuTHA6ZhKpY9qWgw6 Q0MPtPIdW+3hP1q2M2WmSG+Szkl59s6DYWNwi8pUDRTOE0NXOMrSyzcTMykLxWeX WFhd9iOvATNL1q0/l8nZYc0+s5EoJUAWaiTPIUi53xGn2pDn7lLI/7BPQ== Received: from bn8pr05cu002.outbound.protection.outlook.com (mail-eastus2azlp17011028.outbound.protection.outlook.com [40.93.12.28]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 40x6aeyste-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 13 Aug 2024 22:38:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=D8c0ULBaOIEzsnNQb/e625Ci7MLJorjQ8b4sL3lentA32kJ2Y9UqSwDEK16IvfVoX30EN3km3WaCKS4P5xYm8BEBhbYW5iHGUpcSKV7I9OgamNHJZIYRMvn790KcQOWRC2UAz68oIKkO9/PKPdZDrEabjxqQFdwPn/UoIR7Rbvj1EQmicjvC3pgxQjwmGu6cZ1sD8VBmBIA4xYCoFnaYbtD5pkcI+zHOHxvgFuR0FxtisOwLuBoqO1J51Ixuk8bZDm8Kp8Tx8vEnc1nZw29AEFZ8ddS4r8rf+UTzNaLxa1zDjk1dF++wfKfsPWWuaW7csTxdXUG1UbguZlR4oQ0c2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=89ahCRyada8AgyeBHgjy9To8qV0aAZBKpbdl9L0qCwU=; b=rAtYqNOHJBznDuQyMNcqISpMNnAOaa/13gcJrLEOmOZTNb+KdJPPzh0FziosFxjjT5hJXb5H2/A+5wqfnwgB5CLTJgkRetoR79Ojz4M2CWhaPlzDHD+zNJIJgKWcaJxLpv9/ypgDCSOK0cJwhK1wjIBx61mjT74ryKY2pD3hXphFoHQEWYsJpOC/h+CjyMAm7SR0G2kY/oPbM3qTnjqG4F8nSd5XlQYtGDBVLT+Uah2fDkayDnkLRv7NMa5pv6PzO3j7Meyhe+wI0R1bVWO5wyeDLwhCv/3jQYvHQQgLM5LsF/v8tE08MzhR8r+vbjPIMzh5oJme95w1t+MJhHTppQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=89ahCRyada8AgyeBHgjy9To8qV0aAZBKpbdl9L0qCwU=; b=aujXFk6pt3DSCCdjN5nmAFutqDLVLFbC7JY2HyaEU98Q+eh6JHNQcocQelcK0TGWCWjJ7GSggLQ7MAjxHBKRObevYGrDUgjCchO4+8ijDx5c21JmyKx6+tHdhqFAJeJ1wcyt7bU480oDgiXRdDInsE1qwJPvISWov6iV3CkcHX/4B+eNveloDClwxWt5abbhDItd85JP2B8JR82U0Lg2o6mYbS3AuYNFcObdvLY2STOUN7WNrmm20693m7AGoT8o0V5lehr0IH0fXekUnlYn+5hQWV52adifQrks0SnfJNbCj8JgKHv8zzaiD7c4cfyOUZXezxzhNgNSa6xDCBmYnw== Received: from IA1PR02MB8924.namprd02.prod.outlook.com (2603:10b6:208:3ac::18) by BL3PR02MB8082.namprd02.prod.outlook.com (2603:10b6:208:35b::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7849.23; Wed, 14 Aug 2024 05:38:31 +0000 Received: from IA1PR02MB8924.namprd02.prod.outlook.com ([fe80::ebb6:325f:1d33:c1b8]) by IA1PR02MB8924.namprd02.prod.outlook.com ([fe80::ebb6:325f:1d33:c1b8%3]) with mapi id 15.20.7875.016; Wed, 14 Aug 2024 05:38:30 +0000 From: Mansi Sharma To: dev@openvswitch.org, numans@ovn.org Date: Wed, 14 Aug 2024 05:38:03 +0000 Message-Id: <20240814053803.159214-1-mansi.sharma@nutanix.com> X-Mailer: git-send-email 2.22.3 X-ClientProxiedBy: BN9PR03CA0756.namprd03.prod.outlook.com (2603:10b6:408:13a::11) To IA1PR02MB8924.namprd02.prod.outlook.com (2603:10b6:208:3ac::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: IA1PR02MB8924:EE_|BL3PR02MB8082:EE_ X-MS-Office365-Filtering-Correlation-Id: 17a3184d-885f-4c75-4e9b-08dcbc235434 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: AUWarOWp/rjvJ597tHq5zg6qFxYlzSfQVvSGJ30L1pcu953sYRfdNjKoQwpw4b8IM9Ys4eX/ugPJU+U+DTMf1lX5y1VUjDIHILNCuWC06yGM1MdR3lae9byASzYxZQFNm3vT2BPJUBypkH/ti/FPKtOdq4sA6FeN4KRzyRNb8eOm+VpJpQtXKZ/ewVedWS9VzSYM23YXv7RDiSzReajCxuKJXmontD+PM7mPUVe1yB7RpXe/9Yr0rRtWiS6RHHcE51yCazYEdOlpgO5TsLO5EQXXzFWTegFs0XaV81hkLNZKx6L3Jd0/P4ebyc+tbC8y9cnE88qIsdM5pMvwV1flFv/8uDrdkjfrQAGl9n6w3/FmzX1kRbcdG6AmJGIDx3u61ZUc9wKBW16B7+K758P5n10jg9xD9tQ1si7tRt8q4XYIB3f3Z8r5IrSvJ2uAZM6aUrI+DP4goMYiY8oHLEkPzD8uv4cFTyZM4gubGsVT5fp0nAVs03+c3iwZ38EDI8eO7gZFFc0RDQMuxza+hsUzGalcu9AOqCa0zZFcJJ9MfZCEE037MS3q4Xp+1H5DuJVWghRRQoVPtyMG36RCCUvEaFU8hYUTgcBenKqylpuk0kHEDfmANxAxxjnsw9S2NIh3ky+/MzZiHV+oZYVq0u4/dUU7eYfJM/ZtDvAA1c9VR0cnj1R93SbzjPEwzAoF9KvMTEVT71pZGoIuROTiNPaqCN3shXli0HWsHmB6DNH35hw4BrkIVntdx1nOkpT7zGCyf/BPVtEQOAtCxQeQKW311ufYFUnCf34+jXbFi89y5tEPKzxEIP8l9ZR8wRsLs6KNiBdYr80T3mINK44ddijb+ZLuXqMyn0vs8uHeM7Xs+MypdFNKY5QN6T3d2bqh0tQKhUoKNN5aWWD85Oqpv8IDYrhYp/w6lBBXqeqoJOUJgE5iDabxYyjvgALtMy9vuUSJXj1WorMDF92mEAdONlhNcp9DVf38uisDbJmREgN4RK2YowGIq0M/sePsDNO48GEl94bIEfRdm/90cSYz/8BksTotVq5xiA3l/jGvZLhe323+AzNtq5L47EJ7cjQlRbHxHEufThDF1hHhh7KA2C719Mu+QjL1uSEiPohDDUnFtl7xMBdhamrnYHi8r9hdTTC0fIGUydBkTYvdLrbCLg08MyCx6+zmBUaZKQD5eo7qcQ1VQr5E9Hs21Kxy84lMF2h7AbaGjRMMkzTkJAsMPoBGAVyliTptJw2bzwngd9C9sWAdb9jBQ3ppEiLgsza82qzUaIeSTtEhEgX9UHiNtsBgpzf7fbIJvCXMLkUIPMUdMGM/u9kFuBkxgPnELVXnt+cIlCAL8Wnq67EbE4chs1Krax8tmZ0l/EUPKoZnM+a9ZiZOF6SrztpRzEtUkPEPgWhBaFl5FngC45gAIOgjxpXy2Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:IA1PR02MB8924.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(52116014)(376014)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w/yF9lRFMlyvdVsi50jra0kdZn0Kqn+gr3JNwQK/VOyCGmzlebPXt6OJYgwAr879wBofl26ZhgU9uDQiZAECA66o9Ax4V4gszIg2ohbaX/jFJi3CLdRzySYtTNWJLSZ8/wYXzbRnc28GgIqU+dg34EaGR9b3koUGTqOxvN33q3ehZKmzXCEYS7DLTqDnAwXKO2gqVaOwc5oete7X6WlhLzyGp3PXNkSfbr3yMDSzc/84J9dE3wpghMe8b99mkjaGiwrqvFuqppxk6epfm1gQnZ5N8cUF5rt2vU5SF4JmrE/EfGtm8Cf7f3KYfpRG1vq5Zt5YYPlJeW4xjRSGD0rDDHaTQw/VqLTXH8yq+YtBCeIT306jE3cjO4DVjzLQ38Coa3mJZKzt/3P/PjZKA9OeyagniwnPZ2ohBXVldJfl7m5PBEnDWNkRzeAzwRMzwAj34mnOnchLlD2dQr+FkygdsUy9fl0DotLmR5YvtGmnKi6T0cpO5j/G8/bT6Bc8h4fk6diNr9AwqtWyPqKyy1XGNZ1/Uh3qhEpZkZ1kJuF6lYWkZWtQnY/ul2Sl9GV5emaSCOkQQbyc3lVQZiAj/gx2R0XsjhcDyjYX9jR1RPnzY/189ZAIJ+zUZOTuMpf4B9AQ9Hn6i2UluwvsYmUSuXKWP7ihhQfnFPvHzDhM7iHyQc/tdbsWvtKLQf4LjhZgm5eDlfOsjX6vWGGGd4OyjPw697yHGFqX2BstbupvlppW3s3OYk9uxoGyiKDVknmeRdmb0CIK5cDUWltVPh3EbGeFEVY1hbnAdIKL2vIYmfBCxGg5ygoFBK58DbiA7X1eHET8KM9gxVuUTZLlvkingq25LwfD4Lbz2GjjZJnLAOc4Z96GcT4bGr7BKEnAH+HqIIF3l2CLZMuZf5DKc2yKdDvmxfbu2YPZ11uZ3R8h/IfSjrSikgamXpm5wOBcDKK4mQ2sAiWrDCoOrRdWFYvbPQjF+RpOMhuM4e4+rKqgFHNgHBsxM9BmNzQZP+lDhuYSY8DLZv/h1G19K7YgFm3loVBIrtuotOXRtmgs2+3X2LgLY/wnc91AAuMKB/64R//gFM/X/IOOySGaaFV+PjeozzlcNbjbkYBtmaYvQ4azx2a6iN3UGgEuZdgGN/Z3wJz/DE+D/KQHmtb2nLIzLY2iArz4/EpDCI1cGowYpl0OJqIT0LAW0CJYPnFqgF9XIb+S3s/w1ao6YH8Vvjjq13OyJ42bDE/Ehv/82cW3sJJw5r2/lR2b7OHbtHcyZNFF7B9hasFgG+GLVYJSuxNx73BMDaVF6oTIFthRYVzSZKQkYwnI33UAXSAAbCz7XuwaFFgwMznCCGG6Sa0ysfxmUTdNL9EMAvY79iZ/1eIfCjrC0qk0Dq7gJnU1tCW3IE23Y0rzgsz5gVGVQn52tstzzIbInF3z4JVNObeu9s+00uBTcYmU0qJB1R7TQkQxzdhS5Xo8clHnnKWlyGjGG9eTFizS9QXvf+XGZgFyCffGZx64CrDWK1gLIov+gaycbpBV4735klr+KsGgTeDwSfVVFLee94h/IsG1WE8Nr/SxJqx9Zt93MyjGt4O/qDv2PsKPsfn0KnzcPWVhBgOwdtnynifKTU1ucQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17a3184d-885f-4c75-4e9b-08dcbc235434 X-MS-Exchange-CrossTenant-AuthSource: IA1PR02MB8924.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Aug 2024 05:38:30.3721 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ka9ufTl73UnXicGFBUp0TZaYFl40fwGgLJl6UmpglnMTCLOGcm155E8yjD2BgCLONqp4x2oLG6I1Az9tT3gz6s65y6kodTESDWt5tp3eHM8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR02MB8082 X-Proofpoint-GUID: 8KCVVidNOMiqPC5eGfoUvn1Q5UczYxu6 X-Proofpoint-ORIG-GUID: 8KCVVidNOMiqPC5eGfoUvn1Q5UczYxu6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-08-14_04,2024-08-13_02,2024-05-17_01 X-Proofpoint-Spam-Reason: safe Subject: [ovs-dev] [PATCH ovn v2] ovn-controller: Reserve zones for upcoming ports. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" This change will be useful for migration cases, where it can be used to sync ct-entries before port is up on new chassis, resulting in reduced network package drops. It also fulfills the need of any other service which might need advance ct-zone reservation in future. Signed-off-by: Mansi Sharma --- V1-->V2 : 1. Rebased from main. 2. Updated ovn-controller.xml documentation. --- controller/ct-zone.c | 22 ++++++++ controller/ovn-controller.8.xml | 15 +++++- tests/ovn-controller.at | 92 ++++++++++++++++++++++++++++++--- 3 files changed, 121 insertions(+), 8 deletions(-) diff --git a/controller/ct-zone.c b/controller/ct-zone.c index 77eb16ac9..9bcb78c7e 100644 --- a/controller/ct-zone.c +++ b/controller/ct-zone.c @@ -183,6 +183,28 @@ ct_zones_update(const struct sset *local_lports, sset_add(&all_users, local_lport); } + /* Add local_loprt name which are supposed to come up on the + * chassis and might need ct-zone reservation in advance. + * The data is picked up from ovs_vswitch table. */ + const struct ovsrec_open_vswitch *cfg; + cfg = ovsrec_open_vswitch_table_first(ovs_table); + if (cfg) { + const char *reserve_ct_zone_request_list = smap_get( + &cfg->external_id, "reserve_ct_zones"); + if (reserve_ct_zone_request_list) { + char *duplicate_reserve_list = xstrdup( + reserve_ct_zone_request_list); + char *reserve_port; + char *save_ptr = NULL; + for (reserve_port = strtok_r(duplicate_reserve_list, ",", + &save_ptr); reserve_port != NULL; + reserve_port = strtok_r(NULL, ",", &save_ptr)) { + sset_add(&all_users, reserve_port); + } + free(duplicate_reserve_list); + } + } + /* Local patched datapath (gateway routers) need zones assigned. */ const struct local_datapath *ld; HMAP_FOR_EACH (ld, hmap_node, local_datapaths) { diff --git a/controller/ovn-controller.8.xml b/controller/ovn-controller.8.xml index faefa77b9..b070b724c 100644 --- a/controller/ovn-controller.8.xml +++ b/controller/ovn-controller.8.xml @@ -626,7 +626,20 @@ external_ids:ovn-installed-ts.

- + +
+ external-ids:reserve_ct_zones in the Bridge + table +
+ +
+

+ This key represents list of ports which are supposed to come up on + the chassis, and hence need advance reservation of ct-zones. + It is comma seprated list of port names. +

+
+

OVN Southbound Database Usage

diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at index 74bff9035..7910939aa 100644 --- a/tests/ovn-controller.at +++ b/tests/ovn-controller.at @@ -2535,6 +2535,7 @@ check_ovsdb_zone() { check ovs-vsctl add-port br-int ls0-hv1 -- set Interface ls0-hv1 external-ids:iface-id=ls0-hv1 check ovs-vsctl add-port br-int ls0-hv2 -- set Interface ls0-hv2 external-ids:iface-id=ls0-hv2 +check ovs-vsctl set Open_vSwitch . external_ids:reserve_ct_zones=ls0-req-hv3,ls0-req-hv4 check ovn-nbctl lr-add lr0 @@ -2560,17 +2561,25 @@ echo "$ct_zones" port1_zone=$(get_zone_num "$ct_zones" ls0-hv1) port2_zone=$(get_zone_num "$ct_zones" ls0-hv2) - +req_port3_zone=$(get_zone_num "$ct_zones" ls0-req-hv3) +req_port4_zone=$(get_zone_num "$ct_zones" ls0-req-hv4) snat_zone=$(get_zone_num "$ct_zones" lr0_snat) echo "snat_zone is $snat_zone" -check test "$port1_zone" -ne "$port2_zone" -check test "$port2_zone" -ne "$snat_zone" -check test "$port1_zone" -ne "$snat_zone" +zone_list=$(seq(port1_zone, port2_zone, req_port2_zone, req_port4_zone, snat_zone)) +for i in $zone_list; do + for j in $zone_list; do + if ["$i" != "$j"]; then + check tests "$i" -ne "$j" + fi + done +done OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv1 $port1_zone]) OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv2 $port2_zone]) OVS_WAIT_UNTIL([check_ovsdb_zone lr0_snat $snat_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-req-hv3 $req_port3_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-req-hv4 $req_port4_zone]) # Now purposely request an SNAT zone for lr0 that conflicts with a zone # currently assigned to a logical port @@ -2585,15 +2594,84 @@ echo "$ct_zones" port1_zone=$(get_zone_num "$ct_zones" ls0-hv1) port2_zone=$(get_zone_num "$ct_zones" ls0-hv2) snat_zone=$(get_zone_num "$ct_zones" lr0_snat) +req_port3_zone=$(get_zone_num "$ct_zones" ls0-req-hv3) +req_port4_zone=$(get_zone_num "$ct_zones" ls0-req-hv4) check test "$snat_zone" -eq "$snat_req_zone" -check test "$port1_zone" -ne "$port2_zone" -check test "$port2_zone" -ne "$snat_zone" -check test "$port1_zone" -ne "$snat_zone" + +zone_list=$(seq(port1_zone, port2_zone, req_port2_zone, req_port4_zone, snat_zone)) +for i in $zone_list; do + for j in $zone_list; do + if ["$i" != "$j"]; then + check tests "$i" -ne "$j" + fi + done +done + +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv1 $port1_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv2 $port2_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone lr0_snat $snat_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-req-hv3 $req_port3_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-req-hv4 $req_port4_zone]) + +# Add port named ls0-req-hv3 and check if same zone assigned +# previously get assigned to it this time as well. + +check ovn-nbctl lsp-add ls0 ls0-req-hv3 +check ovs-vsctl -- add-port br-int hv3-vif3 -- \ + set interface hv3-vif3 external-ids:iface-id=ls0-req-hv3 +ct_zones=$(ovn-appctl -t ovn-controller ct-zone-list) +echo "$ct_zones" + +check ovn-nbctl --wait=hv sync + +req_port3_zone_new=$(get_zone_num "$ct_zones" ls0-req-hv3) + +check test "$req_port3_zone -eq $req_port3_zone_new" + +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv1 $port1_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv2 $port2_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone lr0_snat $snat_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-req-hv3 $req_port3_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-req-hv4 $req_port4_zone]) + +# Checks for two cases after removing entry from ovs_vswitch table - +# 1. If port is already up, ct-zone should be reserved. +# 2. If port is not up yet, ct-zone should not be reserved. + +check ovs-vsctl remove Open_vSwitch . external_ids reserve_ct_zones + +ct_zones=$(ovn-appctl -t ovn-controller ct-zone-list) +echo "$ct_zones" + +req_port3_zone_after_delete=$(get_zone_num "$ct_zones" ls0-req-hv3) +req_port4_zone_after_delete=$(get_zone_num "$ct_zones" ls0-req-hv4) + +check test "$req_port3_zone_new" -eq "$req_port3_zone_after_delete" +check test "$req_port4_zone_after_delete" == "" + +# Checks for case when a ct-zone is reserved it comes up on that chassis, and +# gets deleted, but its persisted in ovs_vswitch table, it should persist the +# same zone throughout. + +check ovs-vsctl set Open_vSwitch . external_ids:reserve_ct_zones=ls0-req-hv5 +check ovn-nbctl lsp-add ls0 ls0-req-hv5 +check ovs-vsctl -- add-port br-int hv5-vif5 -- \ + set interface hv5-vif5 external-ids:iface-id=ls0-req-hv5 +ct_zones=$(ovn-appctl -t ovn-controller ct-zone-list) +echo "$ct_zones" +req_port5_zone=$(get_zone_num "$ct_zones" ls0-req-hv5) + +check ovs-vsctl remove interface hv5-vif5 external_ids iface-id +echo "$ct_zones" +req_port5_zone_new=$(get_zone_num "$ct_zones" ls0-req-hv5) + +check test "req_port5_zone" -eq "req_port5_zone_new" OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv1 $port1_zone]) OVS_WAIT_UNTIL([check_ovsdb_zone ls0-hv2 $port2_zone]) OVS_WAIT_UNTIL([check_ovsdb_zone lr0_snat $snat_zone]) +OVS_WAIT_UNTIL([check_ovsdb_zone ls0-req-hv3 $req_port3_zone]) # Now create a conflict in the OVSDB and restart ovn-controller.