From patchwork Tue Sep 10 06:46:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mansi Sharma X-Patchwork-Id: 1982969 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=zu5T1brW; 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=eAPywI46; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.133; helo=smtp2.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (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 4X2vPP63Kyz1y1l for ; Tue, 10 Sep 2024 16:46:33 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 3AADD4097C; Tue, 10 Sep 2024 06:46:32 +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 IL8swmf78LXv; Tue, 10 Sep 2024 06:46:30 +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 smtp2.osuosl.org 20F43402C6 Authentication-Results: smtp2.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=zu5T1brW; 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=eAPywI46 Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp2.osuosl.org (Postfix) with ESMTPS id 20F43402C6; Tue, 10 Sep 2024 06:46:30 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 04449C0012; Tue, 10 Sep 2024 06:46:30 +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 B5DB2C0011 for ; Tue, 10 Sep 2024 06:46:28 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id A4F8E607F7 for ; Tue, 10 Sep 2024 06:46:28 +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 1r_FL-heJoFj for ; Tue, 10 Sep 2024 06:46:27 +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 smtp3.osuosl.org 9D4426071B 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 9D4426071B Authentication-Results: smtp3.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=zu5T1brW; dkim=pass (2048-bit key, unprotected) header.d=nutanix.com header.i=@nutanix.com header.a=rsa-sha256 header.s=selector1 header.b=eAPywI46 Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) by smtp3.osuosl.org (Postfix) with ESMTPS id 9D4426071B for ; Tue, 10 Sep 2024 06:46:27 +0000 (UTC) Received: from pps.filterd (m0127837.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 489Khwj8014487; Mon, 9 Sep 2024 23:46:26 -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=V+7YqKSuD74AA rNfxvi9IY58xoeRgrPorkThCci6mYA=; b=zu5T1brWukvsdaSYu0oPawqtYRfYh T2D9wwje22ya0rGtnoMaGC/vh6EDIWgo9jPrT1gkNJgWT0HMVyf+ufuizcFOfSdM 1Tp/onRYMxCXt7UIN8fmzse5rrvnCcCMHPvCcyqoW1Fg7SNbEYpv83f5UfAhzdkC Cr+C786K60JpuryU8rP3QeV4+zXge4R2eeUTX6nzMbXnTFP42dcqQlAdiXCr1FnF FrGNf8mPz6dhWntTcWzJHRAxNMRzu88KCsogsVQHqQ/a/f3qDY3aDEuVJR5sWc2c fwr3p7/KQzbyvF/eQVMNtMgkAECTb8fFrCeetKV41HfLYzRjvLUS1MQPQ== Received: from cy4pr05cu001.outbound.protection.outlook.com (mail-westcentralusazlp17010007.outbound.protection.outlook.com [40.93.6.7]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 41gjr7negq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 09 Sep 2024 23:46:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dsQT3I+JgZ42TNQcoj7lfUAvk6qeh+AhPBNIaclGxKt6D6oOtH8LWApqKNucSNjxhd4f8rLT3mMJVMt84SDjUduvyFubPgPxhhF1W7IO/XM2q/DPTuNFy9FKw+fyPhJgWV2eEb8+QuJ0hm3hIwhl/dCA8r5v5G0ojOttz8aD1oea3Iat/NUj4RxHFKaW7F6Z/XI85iAK/ZoQwegsqbnBqxsBWc7+d42/VsIIHxvYxxveGCqe48IEYZCPRTy03AxI+SBAxmby5iKZmLQOy6/H5rSMbS8aDCDcLMpFlTcApAqH50b1tr/wdk5JkmN3UbzjyUiyIOWTJe4wgQsEuT+COw== 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=V+7YqKSuD74AArNfxvi9IY58xoeRgrPorkThCci6mYA=; b=mlLDQOcIt5BDsdZDO487aUxgHqpODBQP37Z3LhsFlYtX+UGnqNYe5xSW6zgSNU94jrXGd5fCg667eh62eYVFkROPT3wjnxowg6asrNrHv3lQHq545wCleB3sWSMD3gBmT3L9Bc/yIovNFjIroJkp9hDXTKqNPynfoko/YYR7fgxAcU+xg6a36gKmi1vOpLwyapF0RrCCvRTj8S6hXQv2lBhl3q597uv/n3JCBPEofuO3UFLZGzCHsIRtGWcnjmqKurzFu7oLta2Y+t8kpi44dr9c54U3D1DRKo9bdmUodV1xL0NbgBYYCHwPnySiQGTgJ9qxAfJBwiDUmZyKFAm4PA== 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=V+7YqKSuD74AArNfxvi9IY58xoeRgrPorkThCci6mYA=; b=eAPywI46qhJlRRJzR/EkeM41JLKsE/YFNQ2bJs16ipX0PxgxNC7XSf7k7CEbEYlKVnADyHDk94xd6HyYYgwl8qnSYbhj4x1qbaO7WR4hufbvJQkr9ObE6GaXeUecqj8ksAejh4exEL0uwRi8FN1iUFpthAF634LiIbZyZVALH50ivDt/CMmpeW/3V7OMffSMzryguF9m4eSAkuwm15wvCgBHI3S8RYDarHlzov43k8DhziBL/kxbBP/aNS0QWPFr34MjlDJh9EjqLQGuD4PgKvyj65FUmmZpTMD8B0ecD1f4W/hDnU2WuEOhsGqlDzzkB0VEeqjBdS5haPpeSkT0fg== Received: from IA1PR02MB8924.namprd02.prod.outlook.com (2603:10b6:208:3ac::18) by LV3PR02MB10210.namprd02.prod.outlook.com (2603:10b6:408:21a::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.21; Tue, 10 Sep 2024 06:46:22 +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.7939.017; Tue, 10 Sep 2024 06:46:22 +0000 From: Mansi Sharma To: dev@openvswitch.org, numans@ovn.org, amusil@redhat.com Date: Tue, 10 Sep 2024 06:46:12 +0000 Message-Id: <20240910064612.159939-1-mansi.sharma@nutanix.com> X-Mailer: git-send-email 2.22.3 X-ClientProxiedBy: SJ0PR05CA0089.namprd05.prod.outlook.com (2603:10b6:a03:332::34) To IA1PR02MB8924.namprd02.prod.outlook.com (2603:10b6:208:3ac::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: IA1PR02MB8924:EE_|LV3PR02MB10210:EE_ X-MS-Office365-Filtering-Correlation-Id: 082d912f-1199-4438-cf1e-08dcd1644887 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: e6cZI2HeOJ0xBqWGla8HX5EAdySlOiQcqEAKTl5r4AtV1QXVz5c3hbbonIdyRvoF+xqAtf6/hayKr3fvMghHGLzzbVsqmvGlq3DJdbwAuFkh0iuw8hIvFbGLgoWT4Cf15nZbWHxxjorkeKBB5+7wbJyhwzloSsuJ1UJDr1C7wSQvuy36oSFBZGWuPaj9kL3rEgaUXqBGd0H9TfaU8w60k3M1e3ov8T+dCBcww5JLDd6pgOCoDwsD/tv7fLYYmZxjp+aYFQ8EEcLSmMNJmdRZ4Muva6qgUYm92xY9MpOvb5mh0sVgPAugyDRY3Af4PWZ56wtjiDr1kL8QOvzH85cLNC3RVHT8jcI63tDCVWCQwZ+xj/UEY5lSWyAbvWby8svcw3bQENU+DQxkKitp+uSRdqWkjpUvBSCwtdeMcA85Ddl6hLuNJJpoNiGrDadK5eifEeZWTJHF9w2U+/XAYvotaoM/upAcwiPBHedo6vEPKNjpO1DrbBzDhPRTocJeYYunCk4/nChDz6GGgM4QfjtVFMGiFZNSBMZNrjijndDtot1/SF/uqUOHCcvDYasLRKtMNCJzoPhSOHEYLLxK5OwWXYVi7B0aAoyBdn+lXUb0POnuM2Yrd8/YqJxIYD+wl6nGqTpzcE+4bk5sM3eGwxQ1NIm8XPIHwHbRaxVQaS4BVn/yBVOcKa1ESh/ktdS3yZHx3M51ZM1CcC8tVLopHIizQXuWPsudpsjH74lBGxMoamuFfLgvZXmBFqbqUBqdrU7AlFueFIlM2FcusW+yTZMaHoUfxtSMs3zvmeYAPc/i0oa7EzNPJYLH9YOLyl2soc3JUU25IT0v+pqoqWKv1LUsbOxy886MAEOiHfr7AN1MSyf50AqqrfiYKtDcUnYhOrpEc6zpoNV7wmcGhTMACznN7NCfOQYluCgVm6a/mhQLz2QzQRDI/kvfo3+2RvAZHhhH2/CX8LkPqd1dLpumfDdjuWIvWfdooBstyHQATylMejhN+uGtGPF2Ky4wbeDXT2xJ+hAs/nz5MIov1su/n8DvlL5xIeqIp5lVyEuASnQdYjocxf275HS1y5ptNBJ1tMmIWz3McMUwtAw668sSgXzK/rDvnj5/FKs9KI5nhuiulSlsx0bYrUy9U8b36ayyvPt9vRfFKL5QzTM+qjvGwS1fFywKVJVhMlEpWgDS8S0R3xJmHzsXjuKBjSPBFkjZf1gXjwP6oZWQ46SbegYdQWHUwQpGy75Q+OZ4ZIdhbSBAjSQ5J7+5HrI9xnmhWcsI1SHlqgmD9rdVuTzhDzY5VcwSFj3vx1xkXjfetbGgRP5+czt2zikMWIfo/hNEbHrnl0zA9x1zGU2D5h4Pom6YnyW2lZ6qt8rxrpAQlROhlybl8NKFIO3EaJKX+ALPVCke1rGERPP8rV6yd1VlR6Qq1nwmVA== 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)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: W3323zM0kq0KTFdfJF5Nlw0Nbl8hhb9YBoiTm/d06o8hUHhNbmaCUBZKUnn0LvrBNcq/y6yzwWy/RJFbN7RyfHnzMoGzc2LDf2A75fDWpzxl7pgt0DmEYfOiV7o38Ok4XlEZyove2YFq6HypQGC/UU91a9v1ceiqafQoL3bhTUVlhJDKWQwKRHupAnInL2E72gdPta2llPN+cfAmjSsrY5Sfycps7XbjfoAkihYt85QyKxiZ/toU9lxwTS30Tu9QrgdgN6X2oCgQUuV0s+bcLHbE2vVANkC3rd402zJ2GguVkirohvKlj2MWVZZp1IK54+ua/nP0SB9GEqHEhlGUnXl16Km2owTRF4udf9H/i2eV29M5uI6W1UrEw4rXrLJu0DtFRNSw6CR/Ck9dGPvSx5tQNGt+uULqPK2G8zv7PXoE6QcERM0IZUK3ygp3Ng4w97hDVevNz11knboDzIWzSGqWCjdqGwVXJtASv3EqF7ICx2X2UAhvDVuqy/1h4N5SM+uJ4Xskx/Q/ZD2Ezwq4AnAFukzSgwsk1IpA1Gspy4c2VAXrcOlCuWB+z7ORgl12N36B7Lcvu85quidWzgZ7ykDKMdKWPO+7PUWA5GUeQYWAOKYvvRnWTeGYqElGiuHgnB8aoh0fNq1r9QXVgwXXqCOdS17lcLWiU3FmcP3mSVXNg49tsCK+wuVEDCrNIgeSatLo/AuMcKBLo5wUG9y0Cb4PanQlidlrEI5PFrZj3qjX39qV51jWgv+1oxi2utfQ0pBdKLdL/Iz/OBa4/xS8gXRGMkBLmf3yLsbnr4oPMYWiJPaSrpabAaImLyje1FtiH1rgPC8NUU5eV5EPqPMFVfbM4nhSYXEhEP+ARhNzPVddzlxt/6gaKpmed6mV1K2XojMJTmLqPh7iE1C/GA6FVYxaE1TFjQM9WhVlq7rLUqMpvWbRXRWE61H8f1xTa7p3UgBmtHaCgKdv5EA0BIf26TP/hqPl46a0Ec9VikTz+vnmyTFdg7FR2375q0ua5lMyKYI/ix9vkOoJwC050hNqHoN61I/ixP3cC/wrTPCZdTcT/+e7G7iK4VNNRZyzInABIsfUI6yyEy77mtBQsgQBqaRepctNnrvQyO4wPx4EHKQS9nn5ye7FYRX7/orGvJKq7heEtl2B5S5/Z8M/AX18C3Bu2sqiW29hfLskdzkOqOaIQwVA+p66NeYOOYedzRPuvgYIErA6J1Om1JGXnhL8umMTiVEWsukQDrk2GUq+zarmVCNuZWTOjCBRYrsd3EyN11Loei6W3zshI5rOPD4Ty6mePpPb4aHQVls3d9FrgBMfyssLLGlKacVJo+ylLCL/Q0iejtpgRJdDXBlnlEmdC2i86fpOodXXSEfA2yID9tsj7V19mGPKrul8wjItrG8DjwoXKYgXEOm77BBtKZGYW5PwQG+3AMAc2r5bGjmBBPyoBdKfokMg2MOjhLahEgdU8Y97Cb8wOpNrAJToyo7Cd0ahucVL9eoViI6YyExMOCoMzXLvlMhQ0vJ/QJp1/15ssDs7J19xDuBKfMy0lVJJZrDD7Qf++trKwpv0+FrpVTqj8dtdXrzQEENj3/ZQa5UJ93WrupUtKtLlCxdzZELy1w== X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 082d912f-1199-4438-cf1e-08dcd1644887 X-MS-Exchange-CrossTenant-AuthSource: IA1PR02MB8924.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2024 06:46:22.4502 (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: 6STmYBmxaozQtixfiXM7qJlQsJbl+awIBwP7u2q3Axla6un1cHh7Fi4Izow80Z94AHy2n8PvsGRtTnoUQk4ukUlkYUzHkqSKFLsSk9LNRgg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR02MB10210 X-Authority-Analysis: v=2.4 cv=J9z47xnS c=1 sm=1 tr=0 ts=66dfeb42 cx=c_pps a=6nUVeFXZkCqfDP2MWDHPNQ==: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-ORIG-GUID: yxNI1EbLz3rac_I1v0uUzJRr3EycV4QI X-Proofpoint-GUID: yxNI1EbLz3rac_I1v0uUzJRr3EycV4QI 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-09_12,2024-09-09_02,2024-09-02_01 X-Proofpoint-Spam-Reason: safe Subject: [ovs-dev] [PATCH ovn v4] 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 --- v3-->v4 1. fix typos 2. fix indentation 3. cleanup tests --- controller/ct-zone.c | 25 +++++++++ controller/ovn-controller.8.xml | 15 ++++- tests/ovn-controller.at | 98 ++++++++++++++++++++++++++++++--- 3 files changed, 129 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..0b939af40 100644 --- a/tests/ovn-controller.at +++ b/tests/ovn-controller.at @@ -2533,8 +2533,26 @@ check_ovsdb_zone() { test $ct_zone -eq $db_zone } +check_duplicates() { + list=$1 + declare -i i + declare -i j + i=0 + for zone1 in $list; do + j=0 + for zone2 in $list; do + if (( i != j )); then + check test "$zone1" -ne "$zone2" + fi + j+=1 + done + i+=1 + done +} + 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 +2578,19 @@ 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]) + +zone_list="$port1_zone $port2_zone $req_port3_zone $req_port4_zone $snat_zone" +check_duplicates "$zone_list" # Now purposely request an SNAT zone for lr0 that conflicts with a zone # currently assigned to a logical port @@ -2585,15 +2605,77 @@ 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="$port1_zone $port2_zone $req_port3_zone $req_port4_zone $snat_zone" +check_duplicates "$zone_list" + +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.