From nobody Mon Sep 16 19:08:48 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) 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 1719867166313618.8926597457922; Mon, 1 Jul 2024 13:52:46 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 097BA1498; Mon, 1 Jul 2024 16:52:45 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id E1A4D1460; Mon, 1 Jul 2024 16:52:21 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 3D97E1442; Mon, 1 Jul 2024 16:52:18 -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 3ACCE12A0 for ; Mon, 1 Jul 2024 16:52:17 -0400 (EDT) Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 461HfPor005676 for ; Mon, 1 Jul 2024 13:30:14 -0700 Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2049.outbound.protection.outlook.com [104.47.51.49]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 402ft64bc4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 01 Jul 2024 13:30:14 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by IA1PR02MB9063.namprd02.prod.outlook.com (2603:10b6:208:419::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.32; Mon, 1 Jul 2024 20:30:02 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%4]) with mapi id 15.20.7719.028; Mon, 1 Jul 2024 20:30:02 +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.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-Greylist: delayed 1322 seconds by postgrey-1.37 at lists.libvirt.org; Mon, 01 Jul 2024 16:52:17 EDT 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=eqySBA58PvdyL 5QK0uU2MrDSfI45QDvmIWQoODxnn3s=; b=hffOD6u/0l05QSPrmOkGAtMczTArs jvbG0BAhI8jEvJJO+te3CPSyfff1zoIm9hkcTe78LyrqjKFDVeeQDImrj/xP7Zm2 TELHRLq+h9iO229c/6GIQySr3Y2DcG6Nz2gDepaxHeDiSHOVLkI2f4Oq6TG/sL2U cTHCHdkIS9FoluFT1fbqKILzHe4XYJkZaj8PRAe9i6wpqSA5mfDKMFP/rGTnBoCo yqqWVpyy7E5sMeNzLuUC3GAiGfOFEHeXO9SWnqsrCR4FfFIoi/wk4DkC2DmBEzty q60+xsVq3pcFY5x2ADlWxacfvKFS1TSYqCwvFMeAkaPbZwNzfADhQIWmQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k2XRyGI237d/2huqFnQQrpRMsr00LyUZOVfM8Pa9efFUQqMuiTAzZFmFDQ/AnrlV44DDuNT33tO0+gqHGgDjb2QQI5E8FjnfGOx5eg3L1gG7LzWtaCdjCZ3cVtJZEO6bltabNNYvZF/TaK+cOKjwVclLVn5L4w75jD5deJ+fcU2kTc7rPVgKkJbObe1KCAGNKdvd8qvfWaWNQFpbacXZEe3zRvBb4nX4Cyn55QR2/nY9K35h6WHXLqjNTpIqtTScdZP6ek6wUuYSxznV0bLcurv8bN6RLoK+zjRpsJ/zNAA9bTzmyeGmr9C9y93I56ZM5E7EH4m4JoCGSgi7ghYNqw== 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=eqySBA58PvdyL5QK0uU2MrDSfI45QDvmIWQoODxnn3s=; b=H2vjZhuOd1NqScaKoB5N3d9DeXN/e/lrzKc61j1ln4orF22zOWJHizMsKARDymvX/SDpu1GMhQqaeF1l1EW6ova2HSkwnhOUmpElNDDRTQ+aRmwps7RyyTWfvjZQWcC2ICc0G2xya9ZXjMojczAtM0MjSrsCj+3UiRXGsTObYKp2N2Nev3HpAuBF66nH15BvYqZTVzsRsIbAPzWk0QZnYclYNrAFZtqW7nvweZNgSznediOZVO6ZwVZFt8nNcX7LEm9WLbNQbQlG8AMLlOthMspXyjZEbrtNpfbAmn0eV0szW8bgyrTqkll8WBEB0tTwarMWid5Oe9BVVxcXcYAjwg== 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=eqySBA58PvdyL5QK0uU2MrDSfI45QDvmIWQoODxnn3s=; b=ZXSeVF0sCvpI/EZsnyDfMbf7XQArS7xUCnn0rvc9g/KO9CuzX1ak1urqoVXTExofDC1EmeuyZe9687O/Ede7rlktuegBYN4qzrCwLty5Gs/umahyhBDxl9uCXRz/jOaPbcU3vnGEQR6JUmku5HRsR1giE+fpggxIpA2jdWjVEEBH30yRxS/ltnFXFSVZzpGZNpmCGCRny5d1ok9aHxKicTGDxwCZldfpss5gJFlSXe94C05MWdcISt2BC5t64LMBO/VIDMijon+6ARZbjWS1H/BvtxSHlkxMOS9NHpPVBPZh9bxQQkl7G8ZglaISa3r4EnKUO5qS1sZ5UdBQPHlxNQ== From: John Levon To: devel@lists.libvirt.org Subject: [PATCH] test_driver: add testUpdateDeviceFlags implementation Date: Mon, 1 Jul 2024 21:29:55 +0100 Message-Id: <20240701202955.210726-1-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 X-ClientProxiedBy: AS4PR10CA0007.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:5dc::9) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|IA1PR02MB9063:EE_ X-MS-Office365-Filtering-Correlation-Id: ae497c7c-8d1f-4abd-3643-08dc9a0c958f x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?WqGaiI5tlw6/T0IwXo3RV8/FAnnjJnoeqoJZgI2KLp62I90iuUckmjix+HYj?= =?us-ascii?Q?oyYOnJaPaZzgDKJwj5NIhDTie7gw82Da9eMLPHwJoZkNExTRMVM5+E4a/cfV?= =?us-ascii?Q?HBO8W+TZtcEdavT4eZyKYyDEynQvzhOfhsVEh8A+wHngr7YZquptUWVGohkE?= =?us-ascii?Q?NRUGeMlsNZkraW0duVXUvSCs77yvI1+RQ/kJMij+9XUur9HA50zizV97nRBG?= =?us-ascii?Q?SIOuc04MeyNCrQ7qZJvvK2/AFPHKAu6qwosTX7dcwRa/mwMQrTTscbk9223K?= =?us-ascii?Q?q9liOk8ucyhqD18cprIOtPE6zAvEwiPW1Ne0UZYGs9ytTFNbmGDQGUapQH3G?= =?us-ascii?Q?Vw4T/1efjajC2KyW8fSqNQZ48HBa29cVrvA4qvu8ooMYcAFc7Na8GRdlXOUS?= =?us-ascii?Q?0MFaTzVyL782ZsN1cKhqODNgfak66u0ap0o9w+TtjgjhaxZRqg08yp38lLsW?= =?us-ascii?Q?zsA6DKBlfk7bsINqYkzpOf01etZyPF022ukqoc/m9ezD7wOKMEp8EeMVDjMo?= =?us-ascii?Q?nZkcTTU4G3fCCGkKb9dnml3iAFvhArtLzfkXFc2f46ZGJB99u01CuFcHLjr7?= =?us-ascii?Q?rh8VUpTJXZxnjcCN8Dr776kMCy3x32Y4cbUF6tvwCHjbxav550V9tcrMrIQ4?= =?us-ascii?Q?pg+tWiqBAdXGa15bP1ah5Q8kcP114789SHsw39faGVP2HzxdH3WlqFhT7NM2?= =?us-ascii?Q?Wri8graU3fRB0Bof29Tvq2FKChTkDr7DJw/W+ycDJK1L7lKwTvLfGVgOYKZi?= =?us-ascii?Q?Mw/uNlBd6Hk7UaHeklG9oVqNZche4l2D+PBNCvFCU7ejY+OaPWGKrb+NUfMA?= =?us-ascii?Q?C6hBq567obO2SvfKZTfd6hXf4MvYKr7dEP5cWylehYgdUNnVmTo2iLhu8nju?= =?us-ascii?Q?tgJnl3sCJfJE4KAYqArGmFWhq0QieThHAlpOm5ORTYVy+567YWC0AR7v2XBQ?= =?us-ascii?Q?ijZo7t7XQIhzHFHdWgXGeJL+4lFLTc5uBj5AAbwsQ1A2F/zQH7mMRhrbHGxy?= =?us-ascii?Q?qttkeRkK7lws3u2INh/UTXsH4arBxrhvYZFFhmID6WgSP+9nysMBTeQ4+aTi?= =?us-ascii?Q?SMtuPOViuvHB3uF84s/8O6Z0UuHa+gcESaaaugf7hpAKtTSyheqSbP1CBq4y?= =?us-ascii?Q?fNfQ+RaNGxTBB/rsfym7pOGuKEtmYilUGcApiKpDAJHXf0vljD+Ny9lmptJU?= =?us-ascii?Q?/+m9+JQleNxvGM03SPitTqxPOdfuy1X9xBZlzvGHK9TSOUCQBT9jl3DXELxy?= =?us-ascii?Q?s+umstx3xBN4by9tmjJZNX3KiKUPs+27ShgCe1bvThRFyWNrGFT39e0g+CbF?= =?us-ascii?Q?mWaiD7tHZWPYhRqJvQgoQ0mN5N9wIh75dityCIsGiEk/jw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR02MB6760.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5Q1wgC/vQi8n72Em8onI2B2hd3BKAte0kuWVFEfsmJq4lRX93D1nZFXN4V+Q?= =?us-ascii?Q?ax84APhINOqiJdOAMrwR8vew2ArnSUlpLJgHXzk9xWu70j9Y5AM1RAWsfV0D?= =?us-ascii?Q?YFb/0wgnLzBKLz3b2ihQ13VodBDvkKieBxiTarfwGqofuswJo7gOcH3GDCCv?= =?us-ascii?Q?QVSHh65K+CgPCYHS5M5TPWtL4eKWfCGM8AAV6Nzz4qlI/7dkKjuGpOx3cs34?= =?us-ascii?Q?nbIBoeDkTuWaGupsosGKB3RfWnNZ2TjUyeXTE9FYE36tP7xUmEWOXTBeSsRt?= =?us-ascii?Q?XHH6vaWhRjAhPGg5bawRybr3ZdD+2uxc/no6A27yMHqM6qITfr1GaEubi+sT?= =?us-ascii?Q?NhgC/4niRsmjYgF0SrsAfssHw6R2O3CpMCvq2C0vwAonpF/R77xNBO2Nblkl?= =?us-ascii?Q?O1tRwsZNdNwK231EBxQObgQHGm/ZOrQPAwNTyW77T72RGsn9sId9dBNjTK+x?= =?us-ascii?Q?BhBLxl1TA7cwd0WXIhaK/vX37Lk9EG8q75/mEZmOQ8mMrUvDw1+CbnMHdJoe?= =?us-ascii?Q?Qy0iXTRuyRAr/r/zc9Badpn7rdKgushhRHjm3sPNTo/g01FNdRnCwACGr0Jo?= =?us-ascii?Q?q704GG3M6v8++MwsirnPiy6rCenNLfEUmqk1S6DcRfTwR1NSga9Tj9DyIRxh?= =?us-ascii?Q?0wEYGFz0aCmgUDf7HFcY0aRFjrcV1C6bp7769+rT40qrIl1qrmUPKwj6OiWZ?= =?us-ascii?Q?KNVPgVPbiq3i6f8mnD1GWOI/CDP6GYgpaWa3BSMZAiSDAJLDotPqmuDL4Qcd?= =?us-ascii?Q?gNYpk/X0UILb5jmdYgEulM3KYC/gyRLAr6lV/KUa57hyDmdQj4ro8aCDw1zV?= =?us-ascii?Q?7rQhZZ31kcKC3BpqK9DuK8JYcffE2SvjehN1xK6PxmXsSKBdcuDLo98Z28q+?= =?us-ascii?Q?/FPFubTexIEtdOomV+rJe04AHMdkgNF+kscrJBnOGYuoby/NG5P2EPJdETR/?= =?us-ascii?Q?MYwyG0/rdhq++9gfTQHXQfUysVDfnQiJCJu6Vudc8qNjwYuj3APFdFDiCbPR?= =?us-ascii?Q?F5+auR6wF3UcIYcvSfOu3pJDcOzlBqgX1a8ZMO4MYKxfm1jQRJQzvF3D7syT?= =?us-ascii?Q?nQx6TP4tKinC2AYCfMNtHU8q2al9BU3afZ9lauDPygTIC/yfptb7vWA7DIzu?= =?us-ascii?Q?2Qu3tTV1B8Mhe9bx2qSGVxHAb9zJu46KCEd6mh9JDUO2InocXmNf+z/NGtYg?= =?us-ascii?Q?WXNcTaDHypphykgy5dSxg4qj19AoCLtZiH7Pt5pN1ZUhjsk6CtuulDF22zPT?= =?us-ascii?Q?xFJOeSaiaJnSrVAkBACGU3zus9swZ1BQX/jv1i2I2X/9o71QHKnkKfHASmDF?= =?us-ascii?Q?1Oq1yxWMTkIakvcSpEVNzO2CPm5gVAugXtSyIdrHq4BhUuvURKDRQl+MPuOI?= =?us-ascii?Q?JnqNEZUVBzPpyoAzYbUAaafyFkVnCthipYXDU5DV/gAUG+9GtAsIctcVAb71?= =?us-ascii?Q?PZoNyz8ej7dS9zBAauP2ZVmPTWrakgtXVTLJLhlAgKAASv3nwY+aEKxYKgDe?= =?us-ascii?Q?+7DGCAHj8Ryo3AeGMmWYm+IpdEWpwt7rJScBbB9yVHaog91o1GhR0CeQifB4?= =?us-ascii?Q?ddsz/Tnj5Knymqbw/Xlz2bunQ5JcJl23pok7XYtX?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae497c7c-8d1f-4abd-3643-08dc9a0c958f X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2024 20:30:02.1241 (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: ieQGyAwv8FNzBVr444Fo7pZXei+g/bwiIeRrIqCeMEXmnSkSLsxpRHUytwR6qBVG+xnle36lIJd8qnQ/OAuRog== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR02MB9063 X-Proofpoint-GUID: 27lRdDHbFxNoec3koB9Uo-484PVId7D0 X-Proofpoint-ORIG-GUID: 27lRdDHbFxNoec3koB9Uo-484PVId7D0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-07-01_20,2024-07-01_01,2024-05-17_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: MDS3JRIYSBM5BA4OX7EWTKRF5SWLBP7G X-Message-ID-Hash: MDS3JRIYSBM5BA4OX7EWTKRF5SWLBP7G X-MailFrom: john.levon@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: John Levon 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-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1719867167820100001 Content-Type: text/plain; charset="utf-8" Add basic coverage of device update; for now, only support disk updates until other types are needed or tested. Signed-off-by: John Levon Reviewed-by: Michal Privoznik --- src/test/test_driver.c | 127 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 40fb8a467d..213fbdbccb 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -41,6 +41,7 @@ #include "domain_conf.h" #include "domain_driver.h" #include "domain_event.h" +#include "domain_postparse.h" #include "domain_validate.h" #include "network_event.h" #include "snapshot_conf.h" @@ -10237,6 +10238,131 @@ testDomainAttachDevice(virDomainPtr domain, const= char *xml) } =20 =20 +static int +testDomainUpdateDeviceConfig(virDomainDef *vmdef, + virDomainDeviceDef *dev, + unsigned int parse_flags, + virDomainXMLOption *xmlopt) +{ + virDomainDiskDef *newDisk; + virDomainDeviceDef oldDev =3D { .type =3D dev->type }; + int pos; + + switch (dev->type) { + case VIR_DOMAIN_DEVICE_DISK: + newDisk =3D dev->data.disk; + if ((pos =3D virDomainDiskIndexByName(vmdef, newDisk->dst, false))= < 0) { + virReportError(VIR_ERR_INVALID_ARG, + _("target %1$s doesn't exist."), newDisk->dst); + return -1; + } + + oldDev.data.disk =3D vmdef->disks[pos]; + if (virDomainDefCompatibleDevice(vmdef, dev, &oldDev, + VIR_DOMAIN_DEVICE_ACTION_UPDATE, + false) < 0) + return -1; + + virDomainDiskDefFree(vmdef->disks[pos]); + vmdef->disks[pos] =3D newDisk; + dev->data.disk =3D NULL; + break; + + // TODO: support these here once tested. + case VIR_DOMAIN_DEVICE_GRAPHICS: + case VIR_DOMAIN_DEVICE_NET: + case VIR_DOMAIN_DEVICE_MEMORY: + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, + _("persistent update of device '%1$s' is not suppor= ted by test driver"), + virDomainDeviceTypeToString(dev->type)); + return -1; + + case VIR_DOMAIN_DEVICE_FS: + case VIR_DOMAIN_DEVICE_INPUT: + case VIR_DOMAIN_DEVICE_SOUND: + case VIR_DOMAIN_DEVICE_VIDEO: + case VIR_DOMAIN_DEVICE_WATCHDOG: + case VIR_DOMAIN_DEVICE_HUB: + case VIR_DOMAIN_DEVICE_SMARTCARD: + case VIR_DOMAIN_DEVICE_MEMBALLOON: + case VIR_DOMAIN_DEVICE_NVRAM: + case VIR_DOMAIN_DEVICE_RNG: + case VIR_DOMAIN_DEVICE_SHMEM: + case VIR_DOMAIN_DEVICE_LEASE: + case VIR_DOMAIN_DEVICE_HOSTDEV: + case VIR_DOMAIN_DEVICE_CONTROLLER: + case VIR_DOMAIN_DEVICE_REDIRDEV: + case VIR_DOMAIN_DEVICE_CHR: + case VIR_DOMAIN_DEVICE_NONE: + case VIR_DOMAIN_DEVICE_TPM: + case VIR_DOMAIN_DEVICE_PANIC: + case VIR_DOMAIN_DEVICE_IOMMU: + case VIR_DOMAIN_DEVICE_VSOCK: + case VIR_DOMAIN_DEVICE_AUDIO: + case VIR_DOMAIN_DEVICE_CRYPTO: + case VIR_DOMAIN_DEVICE_LAST: + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, + _("persistent update of device '%1$s' is not suppor= ted"), + virDomainDeviceTypeToString(dev->type)); + return -1; + } + + if (virDomainDefPostParse(vmdef, parse_flags, xmlopt, NULL) < 0) + return -1; + + return 0; +} + + +static int +testDomainUpdateDeviceFlags(virDomainPtr dom, + const char *xml, + unsigned int flags) +{ + testDriver *driver =3D dom->conn->privateData; + virDomainObj *vm =3D NULL; + g_autoptr(virDomainDef) vmdef =3D NULL; + g_autoptr(virDomainDeviceDef) dev =3D NULL; + int ret =3D -1; + unsigned int parse_flags =3D 0; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG | + VIR_DOMAIN_DEVICE_MODIFY_FORCE, -1); + + if (!(vm =3D testDomObjFromDomain(dom))) + goto cleanup; + + if (virDomainObjBeginJob(vm, VIR_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjUpdateModificationImpact(vm, &flags) < 0) + goto endjob; + + if ((flags & VIR_DOMAIN_AFFECT_CONFIG) && + !(flags & VIR_DOMAIN_AFFECT_LIVE)) + parse_flags |=3D VIR_DOMAIN_DEF_PARSE_INACTIVE; + + if (!(dev =3D virDomainDeviceDefParse(xml, vm->def, driver->xmlopt, + NULL, parse_flags))) + goto endjob; + + /* virDomainDefCompatibleDevice call is delayed until we know the + * device we're going to update. */ + if ((ret =3D testDomainUpdateDeviceConfig(vm->def, dev, + parse_flags, + driver->xmlopt)) < 0) + goto endjob; + + endjob: + virDomainObjEndJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + + /* search for a hostdev matching dev and detach it */ static int testDomainDetachPrepHostdev(virDomainObj *vm, @@ -10456,6 +10582,7 @@ static virHypervisorDriver testHypervisorDriver =3D= { .domainAttachDevice =3D testDomainAttachDevice, /* 10.0.0 */ .domainAttachDeviceFlags =3D testDomainAttachDeviceFlags, /* 10.0.0 */ .domainDetachDeviceAlias =3D testDomainDetachDeviceAlias, /* 10.0.0 */ + .domainUpdateDeviceFlags =3D testDomainUpdateDeviceFlags, /* 10.6.0 */ .domainCreateXML =3D testDomainCreateXML, /* 0.1.4 */ .domainCreateXMLWithFiles =3D testDomainCreateXMLWithFiles, /* 5.7.0 */ .domainLookupByID =3D testDomainLookupByID, /* 0.1.1 */ --=20 2.34.1