From nobody Mon Sep 8 07:17:40 2025 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 1752828354282984.841609332253; Fri, 18 Jul 2025 01:45:54 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 5D5371584; Fri, 18 Jul 2025 04:45:53 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 433E515E3; Fri, 18 Jul 2025 04:45:12 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 08D3015AA; Fri, 18 Jul 2025 04:45:08 -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 58AC815B2 for ; Fri, 18 Jul 2025 04:44:58 -0400 (EDT) Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HJqFMq015889 for ; Fri, 18 Jul 2025 01:44:57 -0700 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10on2133.outbound.protection.outlook.com [40.107.92.133]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 47wm1sh0k5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 18 Jul 2025 01:44:57 -0700 (PDT) Received: from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) by DS0PR02MB9077.namprd02.prod.outlook.com (2603:10b6:8:135::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.36; Fri, 18 Jul 2025 08:44:55 +0000 Received: from PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88]) by PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88%5]) with mapi id 15.20.8922.037; Fri, 18 Jul 2025 08:44:55 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=edsVfM98aoKZWm5AvzRicBLpWfhfRvrjcryp9YMEj AM=; b=kjsJooqFYfl5S2/pSwRGgBAcK/qA+0zofFkzHe+oJiZd71tUZb3u2W91f /spGs5GKBEBqCSoWeETe/BK912XYEaLMh/cP8Xjch3sj5K9oq/I4c0ZbB8lPMeZ/ kn6staP0ZeOFsYiygStKVYLvmWjsFCZR8Kami4I6NNG7eA44INW8ELvharxy8b64 z79FOFRM3CsxQmEY8Fuft9MNG9Nv6udBNFpOPSB3wsQZtIuL+UqwMj7vNribB163 eGUJUNf9I7kS0Aj+uiDqLsUBUKBLHZr6RRMCBOx0kaLOqSKvEw4jJmZB7vV//zY1 8SiBxzZEhfCZzLDR++Kp6qv3S3LbQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=m60pNytvRpUgSd8lON7ZeIMWVFpi1/aacPtfUmm8lzh1fl/5qkSEAjbU1bAocJJHz7XVxlJ1IjdqU0HH4xJwCNdr4L/VNk6HP7sWowpBugUR34Z/g2ctvTlcJZLO0MtNoqTpSxgPFYaQMcBBQorQt3d2Z95TSQfhhyteRTD1jbxRT3nLua53ybwho9Z7qb7cW8Fk2lGdX6KvMwnF3ckK4mGQbuGRjdkeAVS+VGuu28zsPI6BVlWJnyQjBZNlYisqwIDhasDRWCQ2vv1GpRc49IZMM1Qm+CQUzfmC1aLiEQ7lDtRyvuIVt1PqDDyiUmsezXVzUWqleL+bwX+BdpVHsw== 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=edsVfM98aoKZWm5AvzRicBLpWfhfRvrjcryp9YMEjAM=; b=K5jnPJSpUq3dn05fif2YdCgqIp2RtQR7RdP4u5MNdmy4wL/YvnmDNl8CLIejYwUGqokCuoIQqY+9e5atnqH1mkmciU0AAc+kDgFn7tZdhTL+etIN22RCLClIz1iMVMeDsP/FdtysqyG1t/jKi1DfGYEoSjnetqbR6BO7eMWRnwntxPgio1jGwdkc/qr5sMjR9T/NcnzNIU+2JFAwoV8/8oUfmAqYYIfD5L++uKHKX7j3gsJeni0rIbfV71qzPYJJyN0yMSnKGy4Imm+JFDZOvkljroEutbh9fFW/EPiLPl+qpumRjlOIBlWV/RThVvOWoDuaFAP14bEIm8bhH5MN8A== 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=edsVfM98aoKZWm5AvzRicBLpWfhfRvrjcryp9YMEjAM=; b=hYL0ei0QcxlKJztsDPOKNSOevJbQKh6ZmXALevfG+QBm+Ok22tcGEEjrOdJ4vANHqxYRU7oBSlTZiyXaCNRBEoIyLLXo5JJyGt7AZ0fQ7SHlD3XFs+btchnKYBAm5a5P9kKueyECyiXtfJa7qLKH/cgaPekyyZNaUQlYB0F9+QLo2AqfKBrHE/ktM8FBFbsGALUbfwByKPAW8YyydsgFamMAijv+HlxLqoIpoWR5NAew0e7rIuJWiK19I1joU/wRkaKUreRTKdukKJUk5Ef3Y6WGo2AYZPvgScXfWQJZ9kZNaJQRja7a7ladKGslOC7G1wdkIprU/h0tE8mIK+fZXQ== From: Mark Cave-Ayland To: devel@lists.libvirt.org Subject: [PATCH v2 1/2] conf: introduce hardware UUID (hwuuid) element Date: Fri, 18 Jul 2025 09:44:38 +0100 Message-ID: <20250718084448.616898-2-mark.caveayland@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718084448.616898-1-mark.caveayland@nutanix.com> References: <20250718084448.616898-1-mark.caveayland@nutanix.com> X-ClientProxiedBy: LO2P265CA0081.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:8::21) To PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7159:EE_|DS0PR02MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: 6af81245-a3aa-4d77-b1ae-08ddc5d75e9c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?fN4AwaXTG/Hnz6q75KmbaulC2h2j5Arq9xoFimhDpezhCnyHdpfoDSN5oHgM?= =?us-ascii?Q?FBB7q7Xd+HyJNGjN0Il6kKPy9bO4Ut+t1dB6C8uxRhRYBEhjWhAbgUFBx7Gr?= =?us-ascii?Q?fDTSW56TVCnAThAc2fENLFsTgoJO06WBrhNYHnV1U4Pq9msL7+3kS+Fdm0G0?= =?us-ascii?Q?g70c4j1K1PmEDjKOQ8pnUupYgZueGnjWGO5IljYe+6DdAtLufDqLnBPWOGM8?= =?us-ascii?Q?VQ0wiHvDVdka5YewGBhzdFT2YZcf6p8G173fM3k2Aa+gwcuqGptLqQDM3uXW?= =?us-ascii?Q?4xjjeTm0vaE/BZCOCVpZxtQEO8yOwvYfVL0Gq/r5K7ZIsQCdFCo1049k6wZi?= =?us-ascii?Q?OET383ZSv6bGVRCQh4c/6cUuumx9fU8jF5N7Tb8Pb7bq6C7hy5c4Mz3nvUMm?= =?us-ascii?Q?CPHKGRvTcUGiiecllM/RdXc8djcJGws+fyXmkDdLnDJYR3hZ3ialfWpW8djA?= =?us-ascii?Q?kJDqcBlxZDvggSIsowQpPWtIMgUap1AJdXxEKH9KBtDBQVvYjlR9x2oRddty?= =?us-ascii?Q?HR0W4FWKrQtZJmS1agrkbX2vQ3IkA0D5McFgTDyyZzBqpZVI2a3LMjBR2kQC?= =?us-ascii?Q?nJeG0D+IiFNJBQuKerudA3G3RwzKb3asdOLpCvW+60CWDrMK/2Cj9H0941qC?= =?us-ascii?Q?FBlzf6N5N7LW0rS9ivJmdPyBs0DrqVvPmTSQ1LTO9AFF/STedJ0C2UBURNaM?= =?us-ascii?Q?Z4LWLTBC9Rwl+VgI+AhLocYs7ZL2r0nmb1k0D05H0EUVjGBkbEmVOQZsRXIg?= =?us-ascii?Q?QGn7XewwOm+KHr4ioctRWhUSnzSA02r5CjlYly1v2Jv6yoU+v8Ms7zSI7yp0?= =?us-ascii?Q?o9jA08M5X6iZPzGaEwdKbxYSRoRVZ3A89Cbz53HFLVglb2vmZgszti7Am3T6?= =?us-ascii?Q?rkCD1clcEGNtAHRi6hWgMuTSdEtUVzvNLD3yja1BhsN1rR+YkclFAKgyBAlX?= =?us-ascii?Q?ev4GQLSi+7nwrMgYZuhhhh3bcXN/wlrekRWyQ0Bii+tOREqndhdtirGaGtt3?= =?us-ascii?Q?KZ7/T7X43ZLkP9rEShzQYIFlgfxVBaaiQCSwN52j+LtEqYBqBcFK1/Xzu3wB?= =?us-ascii?Q?R6u0G5Kn8RzRW7iwaf4COeEkYo6egCnCp+NzXO2VWPtJINdE/ihaWExYk5O6?= =?us-ascii?Q?TsQmi9b6cEa0FGYtKYXquPdw/2egsyhCUQ/U2boGYVSeuS+XPqs1pCLxbTCM?= =?us-ascii?Q?UlFyaK+LzQlE8KiMmx6Khm4ZNv8sep0w3qft9wi3qh+TbCpTGeuYnUi6FmyH?= =?us-ascii?Q?iV8y8TuN/uwSj4UxgRXd9/YQq5GiYvVV+hawGumYmkCwWqIaJsnUQtKD6tqm?= =?us-ascii?Q?26M8KL/Ee/oWmeGWdRvbVZbAHmB+BMgOhqNU4SNGzkT1E4MOd8EWGD0DOM//?= =?us-ascii?Q?Gut1d+yH89RJ59OvgXxckgFsxjc4uTd+Bvs6dPiZcm5ulGs+0M7cwUESsX9P?= =?us-ascii?Q?978l/u8qilg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR02MB7159.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(10070799003)(1800799024)(366016);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?e/u2h7Hsz5TrnjM1RrPNnLlDhcsGAI+/GHdz2/uIz5M15UjvAF19zb7krmWv?= =?us-ascii?Q?eKFxRLbhesu+nQ52aB9bgJuSyCmXdTmN1dF1KLLnPDfBPer2Nt/YZI0jBgzR?= =?us-ascii?Q?REykF7h6UCzrxJe8OOkX2PeaX3irV/rfl4KqjJL1+TR2W7yBdRxZdoylH0xA?= =?us-ascii?Q?x1f9fjVN08P9U4rE+3gXkCjLGweAb63iwC6WrQkTgjmealFFj6mS+Xi23NbW?= =?us-ascii?Q?fZDi4YikHVUz7PBZJdR0DwK2LLC12Ie4LM1xFmz2IJdQ/Hinju6Wvt9BlxaW?= =?us-ascii?Q?FEtYkZAwxN8bvxjn5ktuNIATUNcFGRUhywezO3bY5MhM2DV0nZjgQ1jKzZHN?= =?us-ascii?Q?YrxwAjgt5+4NViqFw297E0ggHxLR/x4W020fO2QXcRnOuAdnRlNpg7nXJNnS?= =?us-ascii?Q?rLQo7Gd+EcXzqdJPekCEtTOs5Y2r7dbKfg53tCoTZ1zlv+icItGrR9Wvx9Pc?= =?us-ascii?Q?tgC1N3gezGGJHMXi/WST33CAe1JrTNST0DWwDsyJ1WqdE/WGoyh7ZJjEqy2j?= =?us-ascii?Q?i2I0jM7nt9BYkX/HiAXLsLNuzjenZMMOmgIZFVFOfpkBlW7v6toBGbuFRdww?= =?us-ascii?Q?dV528367MpaHOJZvr9yrSDpVgrwqH8X82SF5+54xnZUfXRKsQ13Go124+6XH?= =?us-ascii?Q?OSGs+Z6g5NipsCxkpcqDqcah85VQ8Ra+InG+FbGbs9n/QSrfnyMxb+4SDrhc?= =?us-ascii?Q?bmjjOJ9rfZl1Nb8Zy97o/LemrznmxDwCrkw1WUnSR0vP+CdV4MEQVum79Gn/?= =?us-ascii?Q?1NZlpCJqIQu1PwtEm1oyLvIK8lDNsu6MzKuGNWZPzV9ZA5aRqwTHoGdawNGL?= =?us-ascii?Q?eQLa9L8WWvamiQPGSonzFY3fq76bfXuMDSEAgyVeY+6m2IH1rRi6HKPRVQsG?= =?us-ascii?Q?GFuHo40D3Q9XCYf46dlH+SZB/vCW4Vs0qdZToclHkbhTbHI9tPNKre8EHRQt?= =?us-ascii?Q?zmbmfaTvR983NAOWcU+i/Z9gWbYDvPXiTTRcNy5gdrXV3f33ZUcaM+7iQOg4?= =?us-ascii?Q?7p2qV7lMTf6qIsPP8wcD9Jq1cyjj2z9JzPqm4PysbSjlutavjIApKGseJuPe?= =?us-ascii?Q?IDW5dYfkNGNJnvIR49ZmJEj2QmIZD8W5JxrRddvIBWKK6q3FERaszj+K+Z+1?= =?us-ascii?Q?6/pxmz99sgU7dRd7Uu3/wmW/N4s7l2WLaVsbBEPr4Z7e3oha59Vm5SD89ATQ?= =?us-ascii?Q?bm4gUPnkuAaFeWJKvIiol7sQx+QG5e+94P9s+btBCnt4kyM6tT3Z/wGGm+B+?= =?us-ascii?Q?d7uVfgSCh57ZLGUTehEqcypKcCwPKA8WoX4qeglxelQ3PK+NZJv9vcbQZcQv?= =?us-ascii?Q?oexelC1ixt+KVm0bOBRFvA9L/t407WES2W4Yw0fPHRMVSVdSFry9oTcllXbV?= =?us-ascii?Q?lDO9lC8iaJW57PybWQnw5BVq3NPDN1+fOzfpOaW7n/v578OQIhBZczBQTAMA?= =?us-ascii?Q?dU+4Vj9ZNufpL9y7a7bRfA1MyeyT7kmiMj4pPC5W4bDZJCD9e5sWNllzUN1k?= =?us-ascii?Q?Za/P+qy1rIJfYsj40bfWWcf1TeXVgCyqgQuutu6AHblwRRbJ+E0aT0G/KGh/?= =?us-ascii?Q?d904PUqhQGblvu496A3RkN4okkonmfhX7FKCZpmNe6WLX/9XDU4sBVrtKWh2?= =?us-ascii?Q?lvwwtoMdnYmb3O6IVe4efGBS3L5hviNzxiJBk0GRZWKeu4d0lhl1w7iB0drM?= =?us-ascii?Q?uBssTw=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6af81245-a3aa-4d77-b1ae-08ddc5d75e9c X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7159.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2025 08:44:55.4481 (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: cUzAbaIh+oFCUK1EOveCTE5i6MoUckgrqcKT617u5z50gr8XnoTPIN8w7DV5Q2ksnqWyxOdpcSXfdvehmuK/KBqxgmIcT40NykI1VV+NsZI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR02MB9077 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE2MDAzMiBTYWx0ZWRfX0LdAUZvSdjHE 0Gg0ZqU4p8nnfnzHEny1Cv5Rytjq5CUAq0NFz2+p/eLhGW2FN1UFmIivJZqfgiYO6/1u84ST6YR ul1ovrihc9uzOQl3owaCyLbDI0s+BdUnL/gU+gDW6cSNFXOvzcQ3iZ9GMM6/k9eMgQZuYTkWTod X4JLEcCYrr8G3OJhyBmU9Wkgu85uha0F3rtHq4H9mwsoZiW/jM10Hg89eV1F3Z00GEHAyAYS+x4 1B39P341o3HzmOwnnzgo1hYfa/fYKtqVcoXyjFOfJtDD1hzcA0g9Azb/nM4g1EY/D0lCro+InB4 vM9Fvk7S8IiLndOe1rT//mJOAL+vuGum1qnKHnWLVAmj4idO1gi/nnG8prAxz20xGY2Qg+zdJ2y CpgntxhU X-Proofpoint-ORIG-GUID: 6NvF6dSE76R93u_Gt47xgpZPBR_7O0U6 X-Authority-Analysis: v=2.4 cv=fZity1QF c=1 sm=1 tr=0 ts=687a0989 cx=c_pps a=IA3z5DP03+00aNcgMV2pVQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=qaHvN7llBfijyLw2aiEA:9 X-Proofpoint-GUID: 6NvF6dSE76R93u_Gt47xgpZPBR_7O0U6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-18_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EYNXD2QESJI6VMZY3AXM45BMBT4N4GJM X-Message-ID-Hash: EYNXD2QESJI6VMZY3AXM45BMBT4N4GJM X-MailFrom: mark.caveayland@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 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: 1752828355520116600 Content-Type: text/plain; charset="utf-8" The hardware UUID (hwuuid) element provides a mechanism to supply an extern= al UUID to the guest, as opposed to the libvirt domain UUID. This is to allow for the scenario whereby a domain can be stopped, cloned and then started as a new domain without altering the guest-visible UUID. Add the element, documentation and core code for the hwuuid feature along with an implementation for the QEMU driver. Signed-off-by: Mark Cave-Ayland --- docs/formatdomain.rst | 7 +++++ src/conf/domain_conf.c | 43 +++++++++++++++++++++++++++---- src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 ++++ src/qemu/qemu_command.c | 6 ++++- 5 files changed, 56 insertions(+), 6 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 9a2f065590..7b10dfa3da 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -54,6 +54,13 @@ General metadata =20 :since:`Since 0.8.7`, it is also possible to provide the UUID via a `SMBIOS System Information`_ specification. +``hwuuid`` + The optional ``hwuuid`` element can be used to supply an alternative UU= ID for + identifying the virtual machine from the domain ``uuid`` above. The dif= ference + between using the ``hwuuid`` element and simply providing an alternativ= e UUID + via a `SMBIOS System Information`_ specification is that the ``hwuuid``= affects + all devices that expose the UUID to the guest. + :since:`Since 11.6.0 QEMU/KVM only` ``genid`` :since:`Since 4.4.0`, the ``genid`` element can be used to add a Virtual Machine Generation ID which exposes a 128-bit, cryptographically random, diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index ba0d4a7b12..420525558a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13102,6 +13102,7 @@ static int virSysinfoSystemParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, virSysinfoSystemDef **sysdef, + unsigned char *hwUUID, unsigned char *domUUID, bool uuid_generated) { @@ -13126,10 +13127,18 @@ virSysinfoSystemParseXML(xmlNodePtr node, } if (uuid_generated) { memcpy(domUUID, uuidbuf, VIR_UUID_BUFLEN); - } else if (memcmp(domUUID, uuidbuf, VIR_UUID_BUFLEN) !=3D 0) { - virReportError(VIR_ERR_XML_DETAIL, "%s", + } else if (virUUIDIsValid(hwUUID)) { + if (memcmp(hwUUID, uuidbuf, VIR_UUID_BUFLEN) !=3D 0) { + virReportError(VIR_ERR_XML_DETAIL, "%s", + _("UUID mismatch between and ")); + return -1; + } + } else { + if (memcmp(domUUID, uuidbuf, VIR_UUID_BUFLEN) !=3D 0) { + virReportError(VIR_ERR_XML_DETAIL, "%s", _("UUID mismatch between and ")= ); - return -1; + return -1; + } } /* Although we've validated the UUID as good, virUUIDParse() is * lax with respect to allowing extraneous "-" and " ", but the @@ -13267,6 +13276,7 @@ virSysinfoChassisParseXML(xmlNodePtr node, static int virSysinfoParseSMBIOSDef(virSysinfoDef *def, xmlXPathContextPtr ctxt, + unsigned char *hwUUID, unsigned char *domUUID, bool uuid_generated) { @@ -13280,7 +13290,7 @@ virSysinfoParseSMBIOSDef(virSysinfoDef *def, =20 /* Extract system related metadata */ if ((tmpnode =3D virXPathNode("./system[1]", ctxt)) !=3D NULL) { - if (virSysinfoSystemParseXML(tmpnode, ctxt, &def->system, + if (virSysinfoSystemParseXML(tmpnode, ctxt, &def->system, hwUUID, domUUID, uuid_generated) < 0) return -1; } @@ -13367,6 +13377,7 @@ virSysinfoParseFWCfgDef(virSysinfoDef *def, static virSysinfoDef * virSysinfoParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, + unsigned char *hwUUID, unsigned char *domUUID, bool uuid_generated) { @@ -13381,7 +13392,8 @@ virSysinfoParseXML(xmlNodePtr node, =20 switch (def->type) { case VIR_SYSINFO_SMBIOS: - if (virSysinfoParseSMBIOSDef(def, ctxt, domUUID, uuid_generated) <= 0) + if (virSysinfoParseSMBIOSDef(def, ctxt, hwUUID, domUUID, + uuid_generated) < 0) return NULL; break; =20 @@ -18671,6 +18683,21 @@ virDomainDefParseIDs(virDomainDef *def, VIR_FREE(tmp); } =20 + /* Extract hardware uuid (optional). For some use cases e.g. cloning a + * domain from a snapshot, the hardware uuid must remain constant and + * separate from the domain uuid. */ + tmp =3D virXPathString("string(./hwuuid[1])", ctxt); + if (tmp) { + if (virUUIDParse(tmp, def->hw_uuid) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + "%s", _("malformed hwuuid element")); + return -1; + } + VIR_FREE(tmp); + } else { + memset(def->hw_uuid, 0, VIR_UUID_BUFLEN); + } + /* Extract domain genid - a genid can either be provided or generated = */ if ((n =3D virXPathNodeSet("./genid", ctxt, &nodes)) < 0) return -1; @@ -20136,6 +20163,7 @@ virDomainDefParseXML(xmlXPathContextPtr ctxt, =20 for (i =3D 0; i < n; i++) { virSysinfoDef *sysinfo =3D virSysinfoParseXML(nodes[i], ctxt, + def->hw_uuid, def->uuid, uuid_genera= ted); =20 if (!sysinfo) @@ -28907,6 +28935,11 @@ virDomainDefFormatInternalSetRootName(virDomainDef= *def, virUUIDFormat(uuid, uuidstr); virBufferAsprintf(buf, "%s\n", uuidstr); =20 + if (virUUIDIsValid(def->hw_uuid)) { + virUUIDFormat(def->hw_uuid, uuidstr); + virBufferAsprintf(buf, "%s\n", uuidstr); + } + if (def->genidRequested) { char genidstr[VIR_UUID_STRING_BUFLEN]; =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6008ec66d3..c3492a5f66 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3116,6 +3116,7 @@ struct _virDomainDef { int virtType; /* enum virDomainVirtType */ int id; unsigned char uuid[VIR_UUID_BUFLEN]; + unsigned char hw_uuid[VIR_UUID_BUFLEN]; =20 unsigned char genid[VIR_UUID_BUFLEN]; bool genidRequested; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 2d6e15f144..e39dacfff7 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -47,6 +47,11 @@ + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index fc6ce4dd91..d6ed21c136 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10718,7 +10718,11 @@ qemuBuildCommandLine(virDomainObj *vm, qemuBuildNumaCommandLine(cfg, def, cmd, priv) < 0) return NULL; =20 - virUUIDFormat(def->uuid, uuid); + if (virUUIDIsValid(def->hw_uuid)) { + virUUIDFormat(def->hw_uuid, uuid); + } else { + virUUIDFormat(def->uuid, uuid); + } virCommandAddArgList(cmd, "-uuid", uuid, NULL); =20 if (qemuBuildSmbiosCommandLine(cmd, driver, def) < 0) --=20 2.43.0 From nobody Mon Sep 8 07:17:40 2025 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 1752828398430813.052135369198; Fri, 18 Jul 2025 01:46:38 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 69D3E14B0; Fri, 18 Jul 2025 04:46:37 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id D88221633; Fri, 18 Jul 2025 04:45:18 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 608FE15FE; Fri, 18 Jul 2025 04:45:13 -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 597801605 for ; Fri, 18 Jul 2025 04:45:01 -0400 (EDT) Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56HJrdX9015943 for ; Fri, 18 Jul 2025 01:45:00 -0700 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10on2101.outbound.protection.outlook.com [40.107.92.101]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 47wm1sh0ka-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 18 Jul 2025 01:45:00 -0700 (PDT) Received: from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) by DS0PR02MB9077.namprd02.prod.outlook.com (2603:10b6:8:135::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.36; Fri, 18 Jul 2025 08:44:59 +0000 Received: from PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88]) by PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88%5]) with mapi id 15.20.8922.037; Fri, 18 Jul 2025 08:44:59 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=/RDs/j7jIhr6vXYLKbw99cTKAslBhWLrttI54u91w PE=; b=VL2zOXD2fkYfhT6H2d7SP+r6Hwa9FWO81UfqEBIfRzcK6jPwyrfthSSV6 HzzXTh37FSDFrYV8ffR2yecfJMt7eQ05WZL9OLniRxdaYYiEugi/LK5LMGr+lLTf S8sYalztrp9Md4NT44h8QFhDyz6YEixLOH3FjSfi6T6Pfs4zpJVQ6hZ5FGERdySV RN1VPeqn1fx+L5bGoa0KporCc35bqXCjWLl59b9UaFg/2n/RkwGMstUc7IPP7VuL rM261Ai/7RG6tVVf3dOj3KO17fH+1lJRcOoRTsbd3aG5jseu+6ZDFFOVHnrv+C7h Arsn69HYfcSdJAbeyEbUyo9kQI94w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Lcn37sUYgqlNnsWpJYBM0Lis+kMF0dc5FOULeXFY6zE8cCWvVppFjzaTRA/wZ6dergugoLgJjJfAJSi76KIN2qw+k958R5z1X6ijCr0W2W+kqFvtC4r8TNKcRlJFpMOFO8PgwnIZE8h78QGuVn0kGrtlPEMzNazz0Kfc52xpWoXqIJw42bbhahHouOiQehgNFIPxHw8LtGt/6CMlyJIWdO+uV4wZPzyTgck4r+8DSduEWF+4AtkBQOqmQkJJxYiaByETym2yFYZy1NYsD0tF+/WNA5ydIJb+oQBH6GscfzQDDBbvcq4B9mzcucgtYk8L/RGdgVIQJTx9ms/gW0gvtA== 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=/RDs/j7jIhr6vXYLKbw99cTKAslBhWLrttI54u91wPE=; b=yqndhKkrI/LUxcbG0C9M4f50NvlssJAVezL7HTYnOOCsXqZ+RIzlPdgnlmCuvw70pIntZDs3/UR1W0YuhR3fCItZdyA3EUwdOZsCn23asllOAovxU6CTijIkW136K3cEqVCNKl1EJR4Wcr77zFUZXBJ3VawhuBtL1gvUo0ofOrJpGuWzRfJiE4jl1UJV7FMeYyQ+SgcD51KQDsanyErvq4lBNV4uSiMOUlZ93wxrrxXZ70TXSzw35eZ45WVQ3tL6zJqmcxrV065pkVFJWqQIPgYx3R9Y/YE0k1pWkV7OdcAfHMuZJyP7ONA4aq9lLPMTfAFB0JlKk9Y9RfZ0HIe4ZQ== 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=/RDs/j7jIhr6vXYLKbw99cTKAslBhWLrttI54u91wPE=; b=nqB/LAnS4lJ2AVlZUx+AF3R7LEhTqC4qz7974nj+zpMN2LS4Mz69DGin9udGB+Li4iisfgXF5rihoSV+mMEaeLv3bimR8vJ9Y1wYsWYOIFlk0UmKCEn2ROM5CcZ8lFqdo/Dk+GjMj/mQJqAhcBkAkdTXTPwpccfPz7ixXv1QZQEZrzxmLaYzZYxv4Qn0LGQ0mtE8FAlM16D11n7qaW3KgpBEutrRi7yEeLDlm2XKkK9AcpWfQQFFJyVW9aIUmRwfKlzwpYNuf1Rp7hFCZxrn4yFMM6qrcSv2bmpZ6jWz3+R9HHR65Txs/blQaoIoZbe6nHmcUxj9/LJu7U7aG2FSIw== From: Mark Cave-Ayland To: devel@lists.libvirt.org Subject: [PATCH v2 2/2] qemuxmlconftest: add tests for new hardware UUID (hwuuid) element Date: Fri, 18 Jul 2025 09:44:39 +0100 Message-ID: <20250718084448.616898-3-mark.caveayland@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250718084448.616898-1-mark.caveayland@nutanix.com> References: <20250718084448.616898-1-mark.caveayland@nutanix.com> X-ClientProxiedBy: LNXP123CA0005.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:d2::17) To PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7159:EE_|DS0PR02MB9077:EE_ X-MS-Office365-Filtering-Correlation-Id: 1644d8ca-aa0d-46ac-dd15-08ddc5d7609c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cFlnT21HVE1yWDhPRXNIUTcvcW9LWDdSMTJlcnhLQVREY3VSalIyaHU1bWxF?= =?utf-8?B?ODlSOWs1YkhYd1dMellnM1BjTGVxZWZoSVFldXJxTFByMWVQT2E0M05BbDlx?= =?utf-8?B?VER0bVdlbnA0eW1FekdoTk9POTI3T3VMdDBuR25ZVFBVSUlkaVhMSUdsaE9E?= =?utf-8?B?KzhNbDNqNzJwWlZlaVlCRE9RMmJuS1hmYkNnSHJqNGhmQ0lxSDFTa29jdHYr?= =?utf-8?B?U2taOFVXUzhLTllla3JaV2RjNVdwWFFvRmJHTnE3Ri84cHZmNWx3SVJLVW11?= =?utf-8?B?NGpVM2FZc2xIQVpwZGNKaEpwb2ZPOWRaUzRTUFAzbm1JcXZUVWhvVXIvU21E?= =?utf-8?B?SXhpZVU4V25CNitIMEdkY2dScnVZcVZ2VlVvcEVtNWx4dE85QUN3di90UHU0?= =?utf-8?B?dys1V3ZzQzg5b3RjRFpIVDVlMFNVMGc5QTRLOVBJU25uMlM1T3ZDRDd1bE55?= =?utf-8?B?OHRhUHBFM3ErUndBakxhSVEvaFZ2c1ZaV0pJZEVzYzVGSE1obWxKR2hNNDkz?= =?utf-8?B?VVJJYWk0YjZ6SC9HcTFqTmo5SlJKNGZJNDhudnRHeGhmZWVVYnF2WFpUMjM0?= =?utf-8?B?R3lBenFWb1JIcGRRRWppTGx2b0hRWmVjdnFGSEY3UkpRSFJxQWpMUVFFbE1u?= =?utf-8?B?bjErRUVET0ZlV3U1Zm5Wc1VQMUpiRWJ5WFYzWFBTMzMwNFl1U2NNdzZpSWZm?= =?utf-8?B?ZHMvUUdXT2lEQ3AvdFhOanJFKytpTW16bzZsMVVERUlocEdpelRFVVhlSllP?= =?utf-8?B?ckpKY3ZoTVE2amFvZUtERG1uSjRXanIzd3c4SExUNEZPdWNwc3EzSkUxL2ZO?= =?utf-8?B?ZXBFL2M1TGhlMnNPdXhIRmViY0FUYk4vY1RtemNLekl4SGQ4eWlLRHdnNWZk?= =?utf-8?B?QnVGOVdoRkdJMnJ5ZHJORThIYy9KWDZOOUM2Z2VWdFYzd0lzeW14RjBDZG1l?= =?utf-8?B?dFNZNzdSMW8yM1dpbXFxYjV4RGM0ekU4clBMTWZGMFoxbnhVMVJnZ2pmQXVa?= =?utf-8?B?azhIL21GVU9RYUM3RjNvMjNsMm1GZmcvR1E0UVplYnNuRFI3YWxjanY5U1FS?= =?utf-8?B?Y1BENE5hSUswZldJVnF0WmptQ0g0cHZPTW9xemh0dlNWN0w4dDRUc0JUMEtR?= =?utf-8?B?WkQ1VFdSZWZ6UmFJZFVRVGh6cGRqbEdSbDg3dE9Nb3B4eXplbmt4MmR2dDEy?= =?utf-8?B?NFFWS01RRTdPMkpzTm1GODhQU3E2UW9TNnRnK2pyWitqOWtKdUE5UzVacVNz?= =?utf-8?B?YU5WUTZJTCtGaHBSSStwRHc0ZDhSbjBjSHVqeFFzRFRXRTJXU3FoSEZWeWdy?= =?utf-8?B?ZUxLTHVNVzBxczY3bGwzaWduTWhIckJrYzNIWkRRVTBzcXYzZDE3WHhmZVBJ?= =?utf-8?B?U0l5NVZFaUJEakFGMUZEbUhmNHRlRS8ySGFVN0g1OWw5cFh2ejFNQ3JLV0th?= =?utf-8?B?dkxIWE9kNDNJMHBGZ0lmeGYwWERxWVNtc3dGT05DZjdULzZ0a3dEM0hmUk5m?= =?utf-8?B?S09XMWphTlZCY1Z1b3hrL3dOTU9DY3VEa3N2ZHB5N3JWdlVGd1pNaUN0Zkh1?= =?utf-8?B?bGZtWHhiREFqK0RRUEVjMzJyWDVueHBRcXk3bFVKbkpJQ25waHVmZU40Vm5z?= =?utf-8?B?UzQyVFArN1lBdlFHb2lid3dUdjRtZEsxQ29LcHpFNGVFSkkrcG9zTjRHeW4x?= =?utf-8?B?S0VBbzBCSnR4VzBjRmxKbTNHTGxlYmgrSnkwb29sNWRscGZMTENUQUdmQ1BC?= =?utf-8?B?OGNOdExRT21pVGkyUk5TRGIyNWpwZUJBYjJPN2gwMDM0eEQ1YmR1ZUY2MUJz?= =?utf-8?B?OTJJNEFRTllzSkNzdUt3bDErdVlzVnZ5Nitxelg0U2V4ejJLb2RpdDVlNzg0?= =?utf-8?B?RVJCUkMyNXNQS0lvRHJkMVJLMjhJU2VFeFQzYUxzV2ZldHc9PQ==?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR02MB7159.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(10070799003)(1800799024)(366016);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZSt2eVVDZ1VnZXgxeFZmY0pIa2ZRTE9GNExpNDE5bW5OelE0aGphNU8yb2VK?= =?utf-8?B?czEzWUIvS2FvSnVnZFZQS1phS2grRkhOM3pOOTNTRU5vbzdJNTlpTi8zYjF0?= =?utf-8?B?RXdpV2ZlUUlIME03ZlRZM2Q0NmlZT2pHZm5qazB0OVdMNDZmbWNFcTlnYmtW?= =?utf-8?B?VzB4eGVINjdHeVVVeVhMOVBDZi8vdWgyQU96Y1NWbGFxM1p5TVJmOGhvNHM4?= =?utf-8?B?T3hiV1VQd3dWYlNzMEJyb1pWNlRZRmlXOUthRWUzOE9OSGY2NUJYOHBQVGF5?= =?utf-8?B?aU5LQ3pLNjYvWE0ySjFkM1o5UFEzOFZ0elJ5d3p1Z0J6YWV3NE85T3dya1Fi?= =?utf-8?B?OGxyYjRTampJSWpseGJlOHVUNjNWNG5yM0FiUWNNVFI4WlRZWWVTZG01TlI0?= =?utf-8?B?Ny9RcEp4T3dvVU1YdzBiRHl4ME1ZbmFXNFo3YWYwbTRBOUVCZTJGRHYxL1Np?= =?utf-8?B?WnhRejN0NnEwYnVWOGFvbmZLa05QYlV5K2FlM3MyTXRaK0JGZEtFUTZKc1JB?= =?utf-8?B?TTUraVlCOUNUTVo3S21yazJjcWJGRzJFQ0pDTjFYeHpTZmMxdVF0M1ZhUkZt?= =?utf-8?B?Um9lZkJDUDB3TGR6ZHd5eThaRWt5ZC9Zb2puTWtnenltSGRaOE4yQ3UrbDlP?= =?utf-8?B?S20vRmRJZGlrNFJlalNlNzU5TWw1bnBmV21DajMwMnAra0VHeFVMVFRKTXho?= =?utf-8?B?bWVldjNPOW5jMThDS0RSQ1RORU9pZW1MbDBrUURCTjdnTVFOTE1TQWxXVjdz?= =?utf-8?B?eVRWZThJU09NbnM2bjlrWFppS3pnYk13ZkhrRGQwSzNvWEg0bmZHd0VBVElw?= =?utf-8?B?Sk14ajZXYUg1c1RqRlo4N2VCSHFjZTFhYzMxNS9KOVhNSlhmbGs4eCthZ25G?= =?utf-8?B?UjRaakNsdmp6Qkx0VEc5OWxtMklnaEYwNmRSeU9kUGphVHlzMTBIamVwaDFF?= =?utf-8?B?MXVwd0pGNEhjdHdFY0pIV3EzQVVDNXBLNjVZeS9ZY3VocFpTL3drdktBcHhU?= =?utf-8?B?Mk5HUlRlNWNwZkJ0K0FTLys3ZGRDZlhQR1gzYWtDMFVsTm9yVFpUZFNkV216?= =?utf-8?B?c0ZZcm5EOUJKaEpSUFJLRk53NnI0T1kxUUkxODZPeiswd0FCVkNOeUtLSEgw?= =?utf-8?B?Mk9xVjNwRVhGZTlCL01mTERmcDg5d1QrSGVydmJkWkthQUFaMExSRHBPU1Nx?= =?utf-8?B?TlA4dHp0Vlc3UkcvRURrVVNCSXM5eFRwU1hyaC8xYkpKWUFIdHhOcHdncC9s?= =?utf-8?B?UHhSS2dUbENQY3lUVWlXWjJkRmNuT0xMVVhHOURRQWVONGhmWStxeW52Lzgz?= =?utf-8?B?RGxKekQ1K0JaYW40SzcrZXBGekhFQSs0Mmpwem83c3FJWmhkQXdWaENSNk1W?= =?utf-8?B?SmpFclJIY1JnL2JBK0IvQVhZbko2Q2pTWjY3YjZ1ajBqbldGVjRSc094akhQ?= =?utf-8?B?ZWF0eW5ydFF3Q25yWVppcXUzVjZWQjJ5R3dsektkNmpNL1MyZ253QjhJM0Jp?= =?utf-8?B?RXVaNmF2WWJTSnNZRHpvVDR5bnAwbzA3RFhGRUJySWNuSW5YcE1oRjdZR3o5?= =?utf-8?B?M1A0c2w3NkdmNVBNbmdsZGJKYVZmQlpGU1NZcTNQVVJPMWtuWG1oZThPcHpz?= =?utf-8?B?MmEzRUZqZG1YOVBOVHRxQms1OFM3MFRZQlQ4MFBuREVNRGZtUzlqSGo5Wkxw?= =?utf-8?B?eHhrUFBXOU5ZZlFBNkNmMlZTbitvVkZqWkhpKzRacjZvcTkrUWxaQVBDZFY3?= =?utf-8?B?T1FmVFFZUldZYktCRUI5RW1taU5EMTF2bXlRMlFoMVVaRzdvazk5SGZXR3Ax?= =?utf-8?B?Y0h2VWZhOXN1S2pKOHJpY0VJZHp2MnJwZDgvWlZETjdNWXlCVHk2K2s0Q1Fm?= =?utf-8?B?YXpqNC8yTmJQNlFVSFhKd0h2bXQ2VUN5ZUtpSVZBaFU2TUw1QTlPenJHNkR5?= =?utf-8?B?Q0lsS3AxMHorcnArenF2SEhSUXVOblg1b054ZXJPVzUrc0E0WE0vSlllcmdO?= =?utf-8?B?MG1kUWxHdHJqUGRxR2xlbTF0TGtjbEJXS1RJTDRHU0NHb3BMNzFUdXdUc2pK?= =?utf-8?B?TFM3YXUwMHlsNkd2OVQ2QWhNZ2UvTWJrckZjeVQ5NS9iRFdxRWZFZEJkUUhx?= =?utf-8?B?cVRvakpNbzBlZ0lxS0wzaVU0cG1xWlJaYm9kaThUT3U0UmZTVFRZZ3VjU05s?= =?utf-8?B?WlY4S1dqMEllYVhYcks3V2xzM3hFV25KNkIrc01EcURkNkcyb2VrbElpNnll?= =?utf-8?B?Z2h0bW85STVtbHJFeERFYUVFSlR3PT0=?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1644d8ca-aa0d-46ac-dd15-08ddc5d7609c X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7159.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2025 08:44:58.8625 (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: mUjoCN8iPJfn3KKFDw9Mrv1tDh9OE816dM+RWiKzUTUJtKbkmeL/q0bIpHxueblWeqW7p7olKbtUVwQieGMNeQkq+6w/9oudVlV2mRYp8Ds= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR02MB9077 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE2MDAzMiBTYWx0ZWRfXzK6mXFsqWwPq B6txLuBYFvpuXvrq2yUjwXfuuc1MzzsidDOCNJ/Yj9sFtGO0xO9gspHRILUpAvrc/DYGjHLbA3y oF71nKm5/yra0CIrPYuC4ZM71t80YjL7Iur7Tz7LxHcXmKlAVzlvfvFD05LKNBwLFN6lB05Or25 nNkQ95ZK1Z0k8XdBvOs3EygYvcBLQ4yfr5T67GMixt+/L+LMX4Roeh/1wQp1vG+mplAhagnt3f8 xpHXZlygq5mNgLRvknoKVf69Q4EwqPeuXl6fuIiHpTPPQcFzjSqhC5ydUcu4kBEh/UFqFoLSceu iyk1+JPYwRr46p4cntHpUwVGvTUMSj99aJWJzLAO7p2Fg4wlGUhNxTlNgLby2WAL/qPSZMfdVGG /kFbtvyf X-Proofpoint-ORIG-GUID: -iqNll_AcIdmrq6KVYvXHuPD1Ve_u2YI X-Authority-Analysis: v=2.4 cv=fZity1QF c=1 sm=1 tr=0 ts=687a098c cx=c_pps a=pnS7nB6XDcB6LLzu7J+DKg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Wb1JkmetP80A:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=20KFwNOVAAAA:8 a=ihdK8xOFRcA5fhOFpCYA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: -iqNll_AcIdmrq6KVYvXHuPD1Ve_u2YI X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-18_02,2025-07-17_02,2025-03-28_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ZOIUQ7HCV3UYW7NZOJKOWEI2T6UKCSYD X-Message-ID-Hash: ZOIUQ7HCV3UYW7NZOJKOWEI2T6UKCSYD X-MailFrom: mark.caveayland@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 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: 1752828400169116600 Content-Type: text/plain; charset="utf-8" Add new 'hwuuid' and 'hwuuid-smbios-uuid-match' tests to verify that the new hardware UUID (hwuuid) element is working as intended. In particular the 'hwuuid-smbios-uuid-match' test is designed to ensure that the hwuuid and smbios UUIDs are always identical, similar to the existing l= ogic works for the domain UUID and the smbios UUID. Signed-off-by: Mark Cave-Ayland Reviewed-by: Daniel P. Berrang=C3=A9 --- ...hwuuid-smbios-uuid-match.x86_64-latest.err | 1 + .../hwuuid-smbios-uuid-match.xml | 36 ++++++++++++++++ .../qemuxmlconfdata/hwuuid.x86_64-latest.args | 35 ++++++++++++++++ .../qemuxmlconfdata/hwuuid.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/hwuuid.xml | 30 ++++++++++++++ tests/qemuxmlconftest.c | 3 ++ 6 files changed, 146 insertions(+) create mode 100644 tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-l= atest.err create mode 100644 tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.xml create mode 100644 tests/qemuxmlconfdata/hwuuid.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/hwuuid.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/hwuuid.xml diff --git a/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-latest.e= rr b/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-latest.err new file mode 100644 index 0000000000..10a98baf4b --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-latest.err @@ -0,0 +1 @@ +UUID mismatch between and diff --git a/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.xml b/tests/qem= uxmlconfdata/hwuuid-smbios-uuid-match.xml new file mode 100644 index 0000000000..0fe95b4ed8 --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.xml @@ -0,0 +1,36 @@ + + QEMUGuest1 + f1449954-3a7e-48f8-aa7f-1f25fd6fa38f + af2d912f-5f99-4036-a9a1-8739b1f34518 + 219100 + 219100 + 1 + + + 22173deb-d53e-4db9-b874-93f5bba6e98b + + + + hvm + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + +
+ + + + + + + + + diff --git a/tests/qemuxmlconfdata/hwuuid.x86_64-latest.args b/tests/qemuxm= lconfdata/hwuuid.x86_64-latest.args new file mode 100644 index 0000000000..fa3eb6b163 --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid.x86_64-latest.args @@ -0,0 +1,35 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dpc.ram,acpi= =3Doff \ +-accel tcg \ +-cpu qemu64 \ +-m size=3D219136k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}'= \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 5d5b0f1d-128b-4517-8e65-b258a8734c1d \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ +-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","no= de-name":"libvirt-1-storage","read-only":false}' \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-stor= age","id":"ide0-0-0","bootindex":1}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","add= r":"0x2"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/hwuuid.x86_64-latest.xml b/tests/qemuxml= confdata/hwuuid.x86_64-latest.xml new file mode 100644 index 0000000000..a0cc12f698 --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid.x86_64-latest.xml @@ -0,0 +1,41 @@ + + QEMUGuest1 + 33721861-ccee-4dc2-858c-5f1e4629771f + 5d5b0f1d-128b-4517-8e65-b258a8734c1d + 219100 + 219100 + 1 + + hvm + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + +
+ + +
+ + +
+ + + + +