From nobody Mon May 13 11:32:31 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1698421572914611.1564601022934; Fri, 27 Oct 2023 08:46:12 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2DB6B16DA; Fri, 27 Oct 2023 11:46:11 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id A727116D4; Fri, 27 Oct 2023 11:44:56 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id A32CA16D1; Fri, 27 Oct 2023 11:44:22 -0400 (EDT) Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5294D453 for ; Fri, 27 Oct 2023 11:44:20 -0400 (EDT) Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 39R9XDK3019893 for ; Fri, 27 Oct 2023 08:44:19 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2168.outbound.protection.outlook.com [104.47.56.168]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 3tywqrtcrb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 27 Oct 2023 08:44:19 -0700 (PDT) Received: from DM8PR02MB8005.namprd02.prod.outlook.com (2603:10b6:8:16::16) by CY5PR02MB8917.namprd02.prod.outlook.com (2603:10b6:930:3b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.26; Fri, 27 Oct 2023 15:44:17 +0000 Received: from DM8PR02MB8005.namprd02.prod.outlook.com ([fe80::78ae:6068:aacd:c855]) by DM8PR02MB8005.namprd02.prod.outlook.com ([fe80::78ae:6068:aacd:c855%4]) with mapi id 15.20.6933.019; Fri, 27 Oct 2023 15:44:17 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-Greylist: delayed 1137 seconds by postgrey-1.37 at lists.libvirt.org; Fri, 27 Oct 2023 11:44:20 EDT ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UdRQq0n5Lxx9ryj1YKqUogaeMKKiio4MghCvH7CWUQZ8c0i3Gwe1mWZZgQEkteB7aJKGTp1UzUwFNHtdn9feN2N6fCZ0M7luwVyUPfShhuWG74yiCIYLUvTnNN+M/nv5ZgIo0yi2scL26Lr2JQ1Erk6x2QSvdFpcl+0zH6VWCqISeLaF4YTaNIDdyRT69OeVT+FfUJccd1G832knAuKDAHnBbVeI5TjgSF3zaH1bMsMWdZ95HAb6aZl80BHrsjRVItVls7SmFG+G56ZRduZVXWNqzEyUBcys6elUJoWST+Iyl/UCvAAcMf1sP1FvqnrPndLRZZP4spw/3C9KJtgfyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=igZZx4iJT+cNLcN7ETnnZW8mDfL8Zb8KF8LGFIhoqVE=; b=kmOtv5qB+skDTh60IdQxeDqyKKtf6X7n9GlK9hfBn936Vr/tZLyVJc7OzP7yPl3f4KvZ3bUYonUXJOfzNvbpiTo9oWWTgHINYq62oHHrarJRd60wxjNZaJpKpr4cxupQm0az+nGUbIloHzCy7AJNCTw6WnznA+lKWQlwnsP5TiUx7olm+k3MB+AkztZ+kGKovfXSVn+i8kIa+IUPT1kNAoBhbxAGR7z2ufXKfCsJ7CbIW5hkWLM+12Ak7xCetYWZNAyMAF1uG5SFiDsyR8GsW2MdXXShJxnXlur9g/DnLonzmaXzxZj3aQlje4NAyuXJr2wgULA4THD3r0s1w05QPA== 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 From: Thanos Makatos To: devel@lists.libvirt.org Subject: [PATCH] support for hotplug/hotunplug in test hypervisor Date: Fri, 27 Oct 2023 15:44:13 +0000 Message-Id: <20231027154413.84413-1-thanos.makatos@nutanix.com> X-Mailer: git-send-email 2.27.0 X-ClientProxiedBy: BYAPR11CA0069.namprd11.prod.outlook.com (2603:10b6:a03:80::46) To DM8PR02MB8005.namprd02.prod.outlook.com (2603:10b6:8:16::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR02MB8005:EE_|CY5PR02MB8917:EE_ X-MS-Office365-Filtering-Correlation-Id: 739d2cba-c67e-4f1d-dc28-08dbd70393fc x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7vU4PSvsf8iSvqEXZKuhEblt43m4lrlYt5ZIpWbjdXsr1d2WfbXM00TfgWs0aHHgoXGJ4fx+vguN38GebhPNLojQaWHOyJbxMH1lXF3ZrJSEi+pndmSyBnKDHh+NktIhbORK5MdcOSiRjScI47qZZwYlSjhpV1Ai/6cWJyJClFtMSjPm5j9KNfrkZ1jPCebfJFGr9i8MT8u05TP7IqOgOiTmreM7y3mfIUsGgJB6Wih1gtngNbUjMaxzsf3Q3I9K/1pm/r6ohqS9kG1ylcIQFf1739B5YvLpKqdwU6eX6YduciPbkMuL37i3OpAp3Fpapcoawdz7/0IbzsUE+nLBxKoRn+ddm161/cmhQSJcHecJek8Y2u/ZIoeAGVaqao+nKv584ALxXNrLtaXu8ag22OybQ/1Qlrk7qfUcQ0j/PGCKe4t++vqRyTOlF4LlB5xlefo/pRJO6UnvSX0WXldFb3KjBWuWNSa5zsTaE83/NLVIaT6ICRfCzwbj5crqyrzdVa4t0hhz7yN56DQ+w8ayAbzmFueZqGhdN1WEsbClGmCtd8hJZ82XYT8CVTAFwsh6NDbD58qlcLVzjfpww5xeh5ulDvMOy75RGoMdXQ+Gf+yXNDqU0IShIL7JscHC3xYf X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR02MB8005.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(136003)(366004)(346002)(396003)(376002)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(66946007)(6916009)(41300700001)(66556008)(66476007)(6666004)(6512007)(6506007)(1076003)(26005)(36756003)(2616005)(316002)(83380400001)(52116002)(38100700002)(478600001)(6486002)(107886003)(86362001)(44832011)(5660300002)(38350700005)(2906002)(4326008)(8936002)(8676002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4+1LUdju39PLZvnL/rvrv0IA7t6io7UBYBHN3SscqI9b7oajVBljT9m6Rc4J?= =?us-ascii?Q?SKmApHncIaW8R+pZWQBM72iTKeA7aRzqGC7nGyYdQyWhTZkM1w1SuxBdCWyS?= =?us-ascii?Q?9D7M4ry/q0dNjySR6Gx1FM2lmMwPzRpxSFYMlfAW2msH+QjNstaiQQgMo4/z?= =?us-ascii?Q?3plINCJFsLfWwwUuc8Ke4VoHsSyFcE6pf6DyKgeEp4Nv8G+EhOGrwNfsLZ52?= =?us-ascii?Q?+MQTTK0e9cv7aT+Y9X9BhctKut8b5w4V+dNZ1ea3PDf8BAdWH5pt8eE9gOKz?= =?us-ascii?Q?eEMO6EaUt1ThBH9YjVQ5KTZ71jxeeEVlwpqp+oc9nFrbevxbfZQfEZX32hcH?= =?us-ascii?Q?pRc8xJHRsW/h8uAK3X3oFljm8YozhNhyK+xF5CoF2Rt+NKl1K4RcWZT9LPvy?= =?us-ascii?Q?k2n3RoDzjtlDgthoUWhyhDzVQ6n+gKuaogRxPytoYmte2+d8mybJpWE5LQLi?= =?us-ascii?Q?I/kBNETmhcU04ZQ2xQ1S76h0XrNAqEsgHunILqBDmReUiwOmVyqo/2eY5TS0?= =?us-ascii?Q?EovikzYNGx6BRq6H4CMqzM0c0R4EQLEq6kIBubI1K4S3QU9ZcNNnJZi0ZjXL?= =?us-ascii?Q?vyLohVEkPkLCf/9RJf8lXslQfvrCBw2Su/k7L3EYMjF2yN+sX4ZOh+tKlx2b?= =?us-ascii?Q?Xlvf/M2QviwysyPy70Qpjz80rnVPDIe9yyBk8fpnvRyU7pCgomELCgz07llb?= =?us-ascii?Q?Uf3yXjZ91uLSwJ13B4pg/80afjyDZMPPSr4eBnbYHqttxr995P1mQotO24CM?= =?us-ascii?Q?gMG915v70GwSjt/2GM4PIPEKglWCLAoC9UCdQZgh59BdkUVcI5QA94W5QCtx?= =?us-ascii?Q?14IBhF4+jR9LmI5qR+jXa1tZY0koVog1AJHdoAU/y9bUr/AdoI4e/SEhETmQ?= =?us-ascii?Q?c/vx3dtaNMK/Vb50I9tBy9onujMrmsVEWp66sFCAsafSk3L0vDGKyL8fL6f9?= =?us-ascii?Q?HM36cehpjsM1PqyuRW8UlrYfqGbkx7BaoW+UibVFtA+awaWh9msQKwNitfiG?= =?us-ascii?Q?vDvvlGsnPyMJqESanZTU5WLCUKJEazxgkOuoChzlLU3vhl44nZE9Te0wdf1D?= =?us-ascii?Q?anq/kpPIHGEq0r990ZSFvnmbRTmttlZ7eWPOBeFUs//beaRzldUwwRMBsNYH?= =?us-ascii?Q?9QHYtMJN7neCy99j+Ray2uQYpEDDxvgs3EbMvwcI+jfZW+L5OCHctwXCUlyU?= =?us-ascii?Q?FaEvulqSiQKylXFt2SD/gSjZnhPsISAVg8ulx+MoaotlKRwT2sAAR6V1ZkZL?= =?us-ascii?Q?LRyRD5ZIImf7wRLfFWidzgvOcxaSwYeUK8vBEPHs+kNrZDWrMBFilZFez2+H?= =?us-ascii?Q?N36jmYYP9MfKOcWKdMc1x2mVXLkFEcufxnBPFY8qVGWY8KNh3LjcQgCpu7c9?= =?us-ascii?Q?haVzirYOJKD1QkCrocvU98+R9Evj+Kl1rkN3EPj8CJp/GAazUN5FJGeUrSDK?= =?us-ascii?Q?qhqhrPjsxM2EC/cefpc2istJgiIljgo+Y1QDTvUCpbKcTcX90xS3f8Ear1/r?= =?us-ascii?Q?56IB7OPXI2lIrfgPqc9HanAGCE504/TvxZKYthBR43AoJpm7k9qBuLg4CHzs?= =?us-ascii?Q?0ZvuTVQThuV2hvzx2wSli+c4f04vmZ5Wxky2xFQAOKu59kYX0BzgTZHHUFUr?= =?us-ascii?Q?Lg=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 739d2cba-c67e-4f1d-dc28-08dbd70393fc X-MS-Exchange-CrossTenant-AuthSource: DM8PR02MB8005.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Oct 2023 15:44:17.3002 (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: YdLQry5arAckddrHC1HaSrRLacsnP0HZQ/gTafpT5zvtc7hPW62jZvPKoPLJMqSTGjKBOiJCpOecK2HqzMA1H1rCkonmeU5upN0ezMkWAow= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR02MB8917 X-Proofpoint-GUID: g8QwzucJkOQhPwq1vUHnBQS9qbhHt5X5 X-Proofpoint-ORIG-GUID: g8QwzucJkOQhPwq1vUHnBQS9qbhHt5X5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-27_14,2023-10-27_01,2023-05-22_02 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: JWTZSQXQZ3U4Q2GNIE6VWXV3VS3TNHNP X-Message-ID-Hash: JWTZSQXQZ3U4Q2GNIE6VWXV3VS3TNHNP X-MailFrom: thanos.makatos@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Thanos Makatos X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZM-MESSAGEID: 1698421574859100001 Content-Type: text/plain; charset="utf-8" Signed-off-by: Thanos Makatos --- src/test/test_driver.c | 61 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index e87d7cfd44..6eda0dcc01 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -26,8 +26,6 @@ #include #include #include - - #include "virerror.h" #include "datatypes.h" #include "test_driver.h" @@ -10035,6 +10033,62 @@ testConnectGetDomainCapabilities(virConnectPtr con= n G_GNUC_UNUSED, return virDomainCapsFormat(domCaps); } =20 +static int +testVirDomainAttachDeviceFlags(virDomainPtr domain, + const char *xml, + unsigned int flags G_GNUC_UNUSED) { + + int ret =3D -1; + virDomainObj *vm; + testDriver *driver; + virDomainDeviceDef *devConf; + + if (!(vm =3D testDomObjFromDomain(domain))) + return -1; + + driver =3D domain->conn->privateData; + + if (!(devConf =3D virDomainDeviceDefParse(xml, vm->def, driver->xmlopt, + NULL, 0))) + goto out; + + VIR_APPEND_ELEMENT(vm->def->hostdevs, vm->def->nhostdevs, + devConf->data.hostdev); + virDomainDeviceDefFree(devConf); + ret =3D 0; +out: + virDomainObjEndAPI(&vm); + return ret; +} + +static int +testVirDomainAttachDevice(virDomainPtr domain, const char *xml) +{ + return testVirDomainAttachDeviceFlags(domain, xml, 0); +} + +static int +testVirDomainDetachDeviceAlias(virDomainPtr domain, + const char *alias, + unsigned int flags __attribute__((unused))) +{ + virDomainObj *vm; + int i; + bool found =3D false; + + if (!(vm =3D testDomObjFromDomain(domain))) + return -1; + + for (i =3D 0; i < vm->def->nhostdevs && !found; i++) { + if (!strcmp(vm->def->hostdevs[i]->info->alias, alias)) { + virDomainHostdevDefFree(vm->def->hostdevs[i]); + VIR_DELETE_ELEMENT(vm->def->hostdevs, i, vm->def->nhostdevs); + found =3D true; + } + } + virDomainObjEndAPI(&vm); + return found ? 0 : -1; +} =20 /* * Test driver @@ -10058,6 +10112,9 @@ static virHypervisorDriver testHypervisorDriver =3D= { .connectListDomains =3D testConnectListDomains, /* 0.1.1 */ .connectNumOfDomains =3D testConnectNumOfDomains, /* 0.1.1 */ .connectListAllDomains =3D testConnectListAllDomains, /* 0.9.13 */ + .domainAttachDevice =3D testVirDomainAttachDevice, /* 9.9.0 */ + .domainAttachDeviceFlags =3D testVirDomainAttachDeviceFlags, /* 9.9.0 = */ + .domainDetachDeviceAlias =3D testVirDomainDetachDeviceAlias, /* 9.9.0 = */ .domainCreateXML =3D testDomainCreateXML, /* 0.1.4 */ .domainCreateXMLWithFiles =3D testDomainCreateXMLWithFiles, /* 5.7.0 */ .domainLookupByID =3D testDomainLookupByID, /* 0.1.1 */ --=20 2.27.0