From patchwork Tue Sep 17 06:21:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mansi Sharma X-Patchwork-Id: 1986300 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=0iRduz20; 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=KGc/RvVJ; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) (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 4X7BXB00YJz1y1t for ; Tue, 17 Sep 2024 16:22:16 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id AB6AA41E3D; Tue, 17 Sep 2024 06:22:09 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id xL4ivWs3BIwt; Tue, 17 Sep 2024 06:22:07 +0000 (UTC) X-Comment: SPF check N/A for local connections - client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver= DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 2726040207 Authentication-Results: smtp4.osuosl.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=0iRduz20; 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=KGc/RvVJ Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id 2726040207; Tue, 17 Sep 2024 06:22:06 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 88D9FC0012; Tue, 17 Sep 2024 06:22:06 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 23F16C0011 for ; Tue, 17 Sep 2024 06:22:05 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id E63CD4004A for ; Tue, 17 Sep 2024 06:22:04 +0000 (UTC) X-Virus-Scanned: amavis at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP id X72lMS3pC1Bo for ; Tue, 17 Sep 2024 06:22:03 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=148.163.151.68; helo=mx0a-002c1b01.pphosted.com; envelope-from=mansi.sharma@nutanix.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp2.osuosl.org 5906840288 Authentication-Results: smtp2.osuosl.org; dmarc=pass (p=quarantine dis=none) header.from=nutanix.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 5906840288 Authentication-Results: smtp2.osuosl.org; dkim=pass (2048-bit key, unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=proofpoint20171006 header.b=0iRduz20; dkim=pass (2048-bit key, unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=selector1 header.b=KGc/RvVJ Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) by smtp2.osuosl.org (Postfix) with ESMTPS id 5906840288 for ; Tue, 17 Sep 2024 06:22:02 +0000 (UTC) Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 48H1AxUv010538; Mon, 16 Sep 2024 23:22:02 -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=x6Twasg3xCnsU u3/UtbKUIasKjJamKxs5KmkBAPvniQ=; b=0iRduz203eoy0yYPAOcyqAQ10+rZZ iKtR/WpYeHMvVbWciWtvI4EBurcdeFgBpubRfi+/1Jf7Fdd61TH3CmbODBvhpa9g IbdqMy7j5uWzuvghjF+MMShtqP41H+bSpkBSA8cvJHnoWg7SH7e6xVDhUcWN8fzO lyLDx6+mCp37PdT+5JGikm4He3LVSiG5NMyLR9ghXzc7UZz04Fm3vKlNgWp30EEV OSCvtksIQVuXt/HoCCkftN7TPFa1nJym8i+dFxufgWqbzt6qMYNx8ctq08jP+qgM DOTKTJAjSRVvQ462S2odNOdOZ8kmZcv0+1FSPwNmTP9w5LSQDPTG0Tpvw== Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2041.outbound.protection.outlook.com [104.47.74.41]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 41na20n1mt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 16 Sep 2024 23:22:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yiLbMHpCGXNlZhbwHugpwD99zAtZhgAkXwdBPTzPjSiCdUqvQdgz1r17JnkjvthNq7ag+Y+hPfu9O02baow5kjg0/UtXOBapvpupOxYyw87ce8//upqyOfvBAEdzuDad7qbv4tfSLq2qx1imIg1oQ1EW2sdcOoPo4a93sNMLr9SYHv0kyLYjLO80a/obc86xPwRPoeD0V1YdSrbWe73r3BgDUgeRVbKWm1OWE+HoXD46SNMHNslP62rQTOTaU85Tv4WJsHR0c2hlrpw3bnQRXTk3Af1W9IJZs2/05Ua21zipQC3jmHngJ1WWDYtPem8wyH5CZ0lLlDxNrvoGt+X4rw== 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=x6Twasg3xCnsUu3/UtbKUIasKjJamKxs5KmkBAPvniQ=; b=Exi+dkAettw10bwv0JVk6hKJYpjDTD7Ngog/6VPtyz2uGphplhdbt+ybZaMdG8nEMW1K16yXYCLmlpxWDX/GEf6sebawvJ8Ke6+4zZ10rYi14KKeCJyBcg8NGyoAZVz4u7mBXN8qJHyJedDpcFSipiBCJVIhyjOlvZniDMM2s34aqIeiaV2LKcHT4Cf1gJWAjLRVdgW3CYOOIRUtBM+AwEr6w6LnB9ZTxjHTFygyJM2yNNySE0VUQOOzlNNHknj+8Qlh91DvcstvYnIhfUec3jo2NEsxhOSxdpWleAm4XYEHL4b1ngRasXz1ukzcOI6m5R3Al+afvXkDQxF4NzZthA== 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=x6Twasg3xCnsUu3/UtbKUIasKjJamKxs5KmkBAPvniQ=; b=KGc/RvVJ6mfyjN6QR6GlbYmZmSf02A8z6et7NWqmP5BRkSmAoGOLTty+iDdZLCelKjpzRHGkUbjE9e1Ku5Y0o4YxDZFFfRBHCyCKLor18iHpprMaidtK14rJdywlnG35WT16KdrXLuCJAIJN+++Y8b+TGwOFWVf8jYR9i9JgQfKHTC5sc4/Lg1WEnUxqX7SCtSyiGIjY02Mmnma2uzBymytj+YL5O+8Fo7om8Snqvkt94amb/EFfGDZabIxibR6qE55NYGWq4HYBtWWK5gCw4GYWz2Ij6fHp3eWfk+/79OOi+yF+g3p31BjZBz5WEXmqnBk20JVjPaCfb1GRjCuCvA== Received: from IA1PR02MB8924.namprd02.prod.outlook.com (2603:10b6:208:3ac::18) by SJ0PR02MB8500.namprd02.prod.outlook.com (2603:10b6:a03:3f1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.23; Tue, 17 Sep 2024 06:21:57 +0000 Received: from IA1PR02MB8924.namprd02.prod.outlook.com ([fe80::ebb6:325f:1d33:c1b8]) by IA1PR02MB8924.namprd02.prod.outlook.com ([fe80::ebb6:325f:1d33:c1b8%4]) with mapi id 15.20.7962.022; Tue, 17 Sep 2024 06:21:56 +0000 To: dev@openvswitch.org, numans@ovn.org, amusil@redhat.com Date: Tue, 17 Sep 2024 06:21:45 +0000 Message-Id: <20240917062145.74454-1-mansi.sharma@nutanix.com> X-Mailer: git-send-email 2.22.3 X-ClientProxiedBy: SJ0PR03CA0066.namprd03.prod.outlook.com (2603:10b6:a03:331::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_|SJ0PR02MB8500:EE_ X-MS-Office365-Filtering-Correlation-Id: 29428418-e100-4f63-d05b-08dcd6e107c6 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: hlyjEe9VOPVVXluTwD1vHpJmbe17MwYeDa9fj2O5g3L57pfEBWxRIgvxT3uemUMs7ueFpYc0Wk8jv5NFOpyE/OCe2UQCeuTA4Xch6sKTvyMAIaLWE7I/eUEcri5m5JOdRko/kaVhMJDsTdlnYX0emFkqSy2L24eL19CfWF6rJ0LpLdY5rEyALXN+cZLDCrnFGboBnhsDK3ckzR3sKw0zI+Ik03r0ssRiikmQmSGxnfGjBhguKcNDgbmtFWnMx4Ib+k8fHvYo0SvSlc1D3F/MNvNkqefsasU0myrrFPdyJ05enNw7ovb7o0czrH/JJBhJl7DqKLibzzjnxiybGbWsG3eGPwCn4Se4Nxd9IilUvTHR6O1DNATYCDkBZMzruzEdQ8C+gmecGorw/D3ipZnhc0TZHMxgCJv45p+7u3wHEhX8S3TCuDY+FsF6teew/stdFN7caQFPq64NESz0w12x8pdUFkMG+vbVsYmKjxpDwAhu3hIufD83AC8D9utfpM+SwWUWFx4+voAXVG5ahAwd3HbetLtsrf7/3As2+pYu3FK+thYwY7ji+pyc4hIZ+GE4EFaldCUfekJKgdNGqTGn1U4j+9vy7QhjP+pLoWrdNVhgQcfKwiuaUsNg0v4q79qi+a1op96h4Ofl5E0agFLjR4mSoBhquSi0VAb3i2Z39jtJHfyTp2atRsqwPDjiBDZq4lOMEn0tjouWWTgG4Vtnk2SZlUN+ma8uOQ32L9hNJyyODN8j4zLkrMbl9y3WK1aOOYMKayBtdinKe0oSeKMcPDaJ1g/4iid2PleWk/NdXEVvsAek3iCmS1GkC2swJIH8Fe0KfPGNnlaoXX8GLlyJ37PWGLRl0wAq+OHHQ36nKd2at8zt2iI1Y6nrAdf2fT56TPQnl32osJnYIcwihk1Qs5JUjrQdwom0PfvavOu2HhSaftZF7gS9jFChkTEIdIYUQrvYicN9Z1yhySHZVRCmn4xpDwZEAMN9mCYGDsYvpOXTp1B9cxdlVUVAV6dHDng/fmUxaF6g24rvG26IP0z76K0BlBpfYV3nU0EkYjvtdo32keiknQ227hrWfAe78V4RiohgmYUwd/nlU10xXie5iZ1qTqN1TQ8nMTMAVFAWiWG2t5j3oNbSEWKJ5UNhr//Fw7IHPzVUDGES2KxadQVzgHKrKglW5QopzLuLuMpqtLP+TMyDWrNuJ3gIIDc+NY0DfpRnCaDj6j053i2lQCPJxP6pApouTyvSzBY3slgV81nFP0O1m0CCAc4jP8bGPLRvXZCbVxGbQLhT/xqQZfYle+I2tIlWbCiEmUMPyQoA9HJER2CTRgsVxlCxpbpgjfXm4FNm6Xd540XCVtzlfmVXZoNUgWwRiY6mv+bZsk008I27Vf7/XBA3KMuRvcTkh1okxIVo1Hpbgc4mWLlfHi3x+Q== 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)(366016)(52116014)(376014)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2HPGUebKos/qs6gjtVMEUUWE7Mg0AzRcir3IEA+jEMtcKQgthQHOYuQCMTGE7bXSfFBjbMkMH9bWqp2YW4mSw9BO7JDxv/tXeWUEyo3mXmcePapSPhN7Ww/RDhbXSceMBKoZFfVpMszbHx+zuT3sls2CPcHMlwpm1lwsbN/D1Dj9lwpJmSDyRcu0y1UZDu5idFjyfGdPFL28ciyv9G86BEbxTNXgRlt3LsbZ0macZuXXh7TG9OuotbQ5vYDWgna3jk08OlVEx6mFGv2s9WODIdSb2Qt/geqNabFvjFtCpaPb2FtT3Y2MA/hGI6rHj1hgD1MqYghe5KVheqXQ/9oCG8mwjP6kXHCCv8mXp4LFPfGBBktA1ZApFbUFS0oPeI3rMc6+CyKcwzSP63bLqN0bPW/fpkhGUV6hrRlTs6G3JOgQq3IIIAF+yS1pJ/+DzkTXajHnfj0qyZZf12jZjOBKCdjkdUKlGU7bWGbAvgQ9rEhTCkn89nv8UPCOpyzlCwTsHfqSWz5RYlvBUJsISuH7GrbuFZq7dD5sB70a01w7tWw3MZHkc+1nN9FVImlPWkMas6F62b2+ZgaakvlyMd30VTcZb9hfJ2HZWBNVhSNmXxd7QN7WG4dr3Il97A6kHJI06b7XnOjZHBTa0Bzzn+iHamJ82kcX44GbOftDXPY1EnzWIM/+xjGQmHFCFy75befYvW4ghSZbRpeJLJJ6GEKZFWCES22PcBEe1Ez+66QHxDg9u4Yy19w2GqTvZhgIuBGuJRhMyIT1PDh1rgsURKXNmoV1KlFBmkIYBxIOxlto9tcRHywtNQ9daOvU46gjDFbsYcImWB/k9kllhgRWf9Unj5KP0hK/8THHwedt46YCraO7eH60q6ZuKyldddFHleIW4V6nBkoK7StuJ6VVfZmiMkq1uHIhN7XwreLq9LvdXAE26CkzuKxcZ1MrnXRIDuZ9HdHWq39AoeQL1KqQiOusX0t3WPNZ5Dar/ONQT0GOnDJdauZ/NH3QZKpbFoMJgaqEv2cd8QUx85PlSf3lz1JawkPDjqlzJ3VRf9Dv1XjeeAEacVXPtY2hlwFTLnBATkGGBwSHT9Oj1ovXCA2PPiWzaglCB8du43R0qjhTPpH2BKTEBkmbwQTDy4oL49pYK586qj2ahn29vKqGBwKiSA7TUOIzP+bh1f74fzeM1ntpJEFXj0orrHyxK44o0eDd2aJOtfhMq562cXC742k2QkzO75NiJ2oIggcMEsu1Bjvzk9F/aj2rF/VJxTOC2dsBQS8lsxG/mtcyrFmdqf8J+K/wxS/BchCFxYrJxK/qLAgi3ubJaJokD+nbFpcieUqjsKLbNhAVcPshHQ4cDivB3pV0c9juvGibwCIHJLhuciH08KYanm616O+qztP1p3gpOjSG8QjPLJFrgvoij4iNjvkgtppTMED0hXIwp5N+VyA65LzDapF29qMBXe3BubbkFsI1+WkJUFV9H3E5u8/wYzbyuUbu9U+uJhOlz6I5I5MwwaLrGbG2wkuXle1WQmK5oU/VaEsVjzfIY3jOhElThldEC6bxmh5iY5vEsrrodSu5K9HpCdKoiEgU0Uw+nOhvZqD0YqrY0Hc4fDt94Xro4CudiQ== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29428418-e100-4f63-d05b-08dcd6e107c6 X-MS-Exchange-CrossTenant-AuthSource: IA1PR02MB8924.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2024 06:21:56.7477 (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: OblEJJlcqlqN98YHewv5p8E/zkNULZqxp/VOBcxbvMPqJBMAnO8G9aOaCnGeTlNyj0Gk9DR7mEbphvutoCbyz+QWaRePe8o36bdCmHuG+Rc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR02MB8500 X-Authority-Analysis: v=2.4 cv=B5Lr0/tM c=1 sm=1 tr=0 ts=66e92009 cx=c_pps a=+bMTgItWFAhHnRFiF+AwZg==:117 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=EaEq8P2WXUwA:10 a=0034W8JfsZAA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=iaSqmYhzZMJRQdiaQIMA:9 a=14NRyaPF5x3gF6G45PvQ:22 X-Proofpoint-GUID: Ckf3wYX5wAbDIRnXdKkVeed3As3u6Imx X-Proofpoint-ORIG-GUID: Ckf3wYX5wAbDIRnXdKkVeed3As3u6Imx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-17_01,2024-09-16_01,2024-09-02_01 X-Proofpoint-Spam-Reason: safe Subject: [ovs-dev] [PATCH ovn v6] 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: , X-Patchwork-Original-From: Mansi Sharma via dev From: Mansi Sharma Reply-To: Mansi Sharma 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 Acked-by: Ales Musil --- v5-->v6 Updated tests to check duplicates more frequntly with input as ct_zones. --- controller/ct-zone.c | 25 ++++++++++ controller/ovn-controller.8.xml | 15 +++++- tests/ovn-controller.at | 86 ++++++++++++++++++++++++++++++--- 3 files changed, 117 insertions(+), 9 deletions(-) diff --git a/controller/ct-zone.c b/controller/ct-zone.c index 77eb16ac9..bd1b0623b 100644 --- a/controller/ct-zone.c +++ b/controller/ct-zone.c @@ -183,6 +183,31 @@ ct_zones_update(const struct sset *local_lports, sset_add(&all_users, local_lport); } + /* Add local_lport 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_ids, "reserve_ct_zones"); + + if (reserve_ct_zone_request_list) { + char *dup_reserve = xstrdup(reserve_ct_zone_request_list); + char *reserve_port; + char *save_ptr = NULL; + + for (reserve_port = strtok_r(dup_reserve, ",", &save_ptr); + reserve_port != NULL; + reserve_port = strtok_r(NULL, ",", &save_ptr)) { + sset_add(&all_users, reserve_port); + } + + free(dup_reserve); + } + } + /* 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..4377ac6f2 100644 --- a/tests/ovn-controller.at +++ b/tests/ovn-controller.at @@ -2533,8 +2533,14 @@ check_ovsdb_zone() { test $ct_zone -eq $db_zone } +check_duplicates() { + output=$1 + AT_CHECK([printf "$output" | tr ' ' '\n' | sort | uniq -d | grep .], [1]) +} + 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 +2566,18 @@ 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" - 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]) + +check_duplicates "$ct_zones" # Now purposely request an SNAT zone for lr0 that conflicts with a zone # currently assigned to a logical port @@ -2585,15 +2592,78 @@ 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" + +check_duplicates "$ct_zones" + +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" +check_duplicates "$ct_zones" + +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" +check_duplicates "$ct_zones" 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.