From nobody Fri May 15 10:50:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1778831853; cv=none; d=zohomail.com; s=zohoarc; b=nJNFiXv2WEMOt8lg/jGzwisHgrH+XmwuRxgeuApH4wCgDxjkGzMi5FCq7DR/mC84NtsbFf8QyyezeMXMakAKocNO7cPCCGF0hut8OLdZLIkVhc49plBfk3y2fexOQElRbEDENRQj/HxcO+3ibLIaKtQPZcgz90f3pCLZXdWZzng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778831853; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=FjGRRli3rA7k//s+oStQHaiJ4BQihfwb6QOMYWCUZUs=; b=NbAEruflvm/sjS/v5NTFCinHiB61nafLUXr9fy0+ufpcA5n6Nl1fM7Ry0Rt9Bso3FgUPp/YrwS8cuzJEtvUeof7kua32INQMwdAPDXyxjzmtDD//nDXoFPtuwUjJrX+xBid7b5elqymzNywrfis1jcp00nRbXIO7uSdZsN3tQmQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1778831853361436.0768091052687; Fri, 15 May 2026 00:57:33 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 30D67418E2; Fri, 15 May 2026 03:57:31 -0400 (EDT) Received: from [172.19.199.12] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 94F4341B24; Fri, 15 May 2026 03:52:37 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 2DED8417E7; Fri, 15 May 2026 03:52:17 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id A15E641819 for ; Fri, 15 May 2026 03:52:12 -0400 (EDT) Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-608-Fl6ReyzrPdeeo0_eF0LYNQ-1; Fri, 15 May 2026 03:52:10 -0400 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-48feb8b9acfso2014495e9.3 for ; Fri, 15 May 2026 00:52:10 -0700 (PDT) Received: from wheatley.localdomain ([213.175.46.86]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0a19a0csm12717812f8f.20.2026.05.15.00.52.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 May 2026 00:52:08 -0700 (PDT) Received: from wheatley.pinto-pinecone.ts.net (wheatley.k8r.cz [127.0.0.1]) by wheatley.localdomain (Postfix) with ESMTP id 962F71A847F2E for ; Fri, 15 May 2026 09:52:07 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1778831531; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FjGRRli3rA7k//s+oStQHaiJ4BQihfwb6QOMYWCUZUs=; b=XiaAJhUcAUSUcgxh/0aRsoW3VtlUJGsJI3RrhrZxARsfztFsr1meaBJgqBfjK9M8jMMwnq TrAKdwIC0L1oYVk4q8PAuVQNRsPlLUtluCB+wUA5ulcTVERdAbFZWoWbcW63IsL1yZuRB3 HKc0TlL5MrMVFyCImCERX1/oKbOByr8= X-MC-Unique: Fl6ReyzrPdeeo0_eF0LYNQ-1 X-Mimecast-MFC-AGG-ID: Fl6ReyzrPdeeo0_eF0LYNQ_1778831529 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778831529; x=1779436329; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FjGRRli3rA7k//s+oStQHaiJ4BQihfwb6QOMYWCUZUs=; b=flpiEDntXKciaSTccTYe6ooa5UHfWkM3Muqrs4FAdxVfrGtWCxUcAxY19y3VljqZb5 LHv7F/LNnYQ7jabBNumtR0l6n1cnCRUfCkQutLKr4P25x582+7hkp5I+aGMauFP426JT GaQlP6EF2QnmmaSSkoEjhePQ4N1VDtmERQ5Urq99EI6uAgWFVRXc0Mop/+SC9ek+gcDt RJkomUQRtLcJ4H7pgc2SoRrJrstOZj+8ZPe9z8YVYsVfgKwHBXb8EOcx4Kou2DJxO+re HfhS1dTSdiedo7SUd1o6yr5y0NrvPzmj4L9YVPa9wkQMq/8AVBeq6LvNX50FTUIIk/GP DeqQ== X-Gm-Message-State: AOJu0YyJ5UaT+kAl8YcF2gnHhT5y/qcKO/1RX/5Z47GNHoWhNB5AJ//5 xVfzX8jT6YeaIjAzTJw+JZeOpy1yZCZSZczue6rdW5lD+g1+fRceEtuuzOO6hmSCKqhgI66eKin rZkFON+53roP4adc5GjiEKAaakW49ux77z5GsX757QiBP5i1eeJOQ90DiN8HU4aKOJbH1UDzVMI rTZKlF0e4aqRMRriXFWdlPLgS/3/EnMniQ8jPNYK5UuxI= X-Gm-Gg: Acq92OExR0d4fx8S0yTCafxZjWP55vnczBOBLWu6nueY9nEFRQFCMvHAdsuQpRJjz1X CFxf9AxcZ2LGzVark3Vz4pvk0H3GGkDdcaDL3L2v9GggCUHrUTlbY6MuF/o3CuNWP+KQi7G8T5n rnJJbbnAVlivl0SKZeF1oiP2edXLoCcFyzzKggda4K8M+SrHYOVLDTkV+LDvQnf3QdBmDk0hRC+ 8hyLMgZPGQQAW717bhshooIlPaRlIVx9E/EGeJNx6bo0dxr2VX87OGzaHDRWTRbaW463y0+Exut p6JJYZYQYk6TbihAT/cMvqTzEmLSqLCq2+9o3yFaZCKfbMy9jkcWzyzyxKflQn/l2ENwe3pWiuW QXsyJ9StO8hto6K3pZyNJ8Zej+zG9X9zq X-Received: by 2002:a05:600d:8496:10b0:48f:eb8b:997e with SMTP id 5b1f17b1804b1-48feb8b9ab1mr13224725e9.26.1778831529172; Fri, 15 May 2026 00:52:09 -0700 (PDT) X-Received: by 2002:a05:600d:8496:10b0:48f:eb8b:997e with SMTP id 5b1f17b1804b1-48feb8b9ab1mr13224395e9.26.1778831528414; Fri, 15 May 2026 00:52:08 -0700 (PDT) To: devel@lists.libvirt.org Subject: [PATCH v3 1/2] esx: Track VMs by instanceUuid instead of UUID Date: Fri, 15 May 2026 09:52:01 +0200 Message-ID: <825723dd82ac5108bd06b95b7e2b87a426f62fa6.1778831362.git.mkletzan@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: yFf3Ix9NZrkfnYw5HR5z8fNGVW_DQy01Vf4b1zz5Pro_1778831529 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: VY64T2NK6HPGFHAXTSPPN6FB23LD3DIR X-Message-ID-Hash: VY64T2NK6HPGFHAXTSPPN6FB23LD3DIR X-MailFrom: mkletzan@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Martin Kletzander via Devel Reply-To: Martin Kletzander X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1778831854856158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Martin Kletzander The difference is that the usual UUID is supposed to be unique per host and instanceUuid should be unique across the whole cluster. One could think of them as HUID and CUID (as the first "U" does apparently mean something else in the Broadcom world). That _would_ be fine for our scenario. However, that piece of information turns out to be false as well and the UUID we were using (`config.uuid`, or in VMX the `uuid.bios`) can be the same in two machines on the same host. Fortunately the `FindByUuid()` function can also search for VMs based on their `instanceUuid`, dictated by the so far omitted third parameter. Unfortunately that parameter is not parsed (or at least properly) before vSphere API 4.0 (the documentation says 2.0, but we are not using that namespace and 4.0 is the lowest we can target), which we are not specifying in the server returns a 500 HTTP error if we use the `instanceUuid` parameter. So this patch adds the `SOAPAction: urn:vim25/4.0` header to the cURL requests which makes that `FindByUuid()` function work even with the `instanceUuid` set, but without any extra labor. After that this patch also changes all UUIDs to be parsed from the `config.instanceUuid` (or `vc.uuid` in the VMX, but there's a fallback to the old `uuid.bios`) and adjusts tests accordingly. To give users (and management applications) the possibility to revert back to the previous (legacy) behaviour a new URI query parameter is introduced, called `legacy_uuid` which, if set to `1`, still keeps the code working as it did before this patch. Last, but not least it changes the parameter to aforementioned function to be true (unless the legacy behaviour is requested, of course) and henceforth all searching ought to be done with the more unique ID. Resolves: https://redhat.atlassian.net/browse/RHEL-174300 Signed-off-by: Martin Kletzander Reviewed-by: Peter Krempa --- docs/drvesx.rst | 9 +++++ src/esx/esx_driver.c | 43 ++++++++++++++++-------- src/esx/esx_util.c | 11 ++++++ src/esx/esx_util.h | 1 + src/esx/esx_vi.c | 32 +++++++++++++++--- src/esx/esx_vi.h | 3 ++ src/vmx/vmx.c | 12 +++++-- tests/vmx2xmldata/esx-in-the-wild-10.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-11.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-12.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-13.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-14.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-15.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-16.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-17.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-5.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-6.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-7.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-8.xml | 2 +- tests/vmx2xmldata/esx-in-the-wild-9.xml | 2 +- 20 files changed, 104 insertions(+), 33 deletions(-) diff --git a/docs/drvesx.rst b/docs/drvesx.rst index 84416562ba3f..0fd9c865fbf2 100644 --- a/docs/drvesx.rst +++ b/docs/drvesx.rst @@ -156,6 +156,15 @@ The driver understands the extra parameters shown belo= w. | | | ``no_verify`` is set = | | | | to ``1``. = | +-----------------+-----------------------------+-------------------------= ----+ +| ``legacy_uuid`` | ``0`` or ``1`` | If set to ``1``, the dri= ver | +| | | will track VMs based on = | +| | | their "Host-unique" UUID= . | +| | | If set to ``0`` it will = use | +| | | the "Cluster-unique" UUI= D | +| | | instead. The default val= ue | +| | | is ``0``. = | +| | | :since:`Since 12.4.0`. = | ++-----------------+-----------------------------+-------------------------= ----+ =20 Authentication ~~~~~~~~~~~~~~ diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 6ff0db48ac02..c5b3fa47b6a2 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -1418,8 +1418,9 @@ esxDomainLookupByID(virConnectPtr conn, int id) if (esxVI_String_AppendValueListToList(&propertyNameList, "configStatus\0" "name\0" - "runtime.powerState\0" - "config.uuid\0") < 0 || + "runtime.powerState\0") < 0 || + esxVI_String_AppendValueToList(&propertyNameList, + priv->primary->uuid_key) < 0 || esxVI_LookupVirtualMachineList(priv->primary, propertyNameList, &virtualMachineList) < 0) { goto cleanup; @@ -1439,6 +1440,7 @@ esxDomainLookupByID(virConnectPtr conn, int id) continue; =20 if (esxVI_GetVirtualMachineIdentity(virtualMachine, + priv->primary->uuid_key, &id_candidate, &name_candidate, uuid_candidate) < 0) { goto cleanup; @@ -1486,7 +1488,7 @@ esxDomainLookupByUUID(virConnectPtr conn, const unsig= ned char *uuid) esxVI_LookupVirtualMachineByUuid(priv->primary, uuid, propertyName= List, &virtualMachine, esxVI_Occurrence_RequiredItem) < = 0 || - esxVI_GetVirtualMachineIdentity(virtualMachine, &id, &name, NULL) = < 0 || + esxVI_GetVirtualMachineIdentity(virtualMachine, NULL, &id, &name, = NULL) < 0 || esxVI_GetVirtualMachinePowerState(virtualMachine, &powerState) < 0= ) { goto cleanup; } @@ -1521,15 +1523,17 @@ esxDomainLookupByName(virConnectPtr conn, const cha= r *name) =20 if (esxVI_String_AppendValueListToList(&propertyNameList, "configStatus\0" - "runtime.powerState\0" - "config.uuid\0") < 0 || + "runtime.powerState\0") < 0 || + esxVI_String_AppendValueToList(&propertyNameList, + priv->primary->uuid_key) < 0 || esxVI_LookupVirtualMachineByName(priv->primary, name, propertyName= List, &virtualMachine, esxVI_Occurrence_RequiredItem) < = 0) { goto cleanup; } =20 - if (esxVI_GetVirtualMachineIdentity(virtualMachine, &id, NULL, uuid) <= 0 || + if (esxVI_GetVirtualMachineIdentity(virtualMachine, priv->primary->uui= d_key, + &id, NULL, uuid) < 0 || esxVI_GetVirtualMachinePowerState(virtualMachine, &powerState) < 0= ) { goto cleanup; } @@ -2583,7 +2587,7 @@ esxDomainGetXMLDesc(virDomainPtr domain, unsigned int= flags) esxVI_Occurrence_RequiredItem) < = 0 || esxVI_GetVirtualMachineMORef(virtualMachine, &moref) < 0 || esxVI_GetVirtualMachinePowerState(virtualMachine, &powerState) < 0= || - esxVI_GetVirtualMachineIdentity(virtualMachine, &id, NULL, NULL) <= 0 || + esxVI_GetVirtualMachineIdentity(virtualMachine, NULL, &id, NULL, N= ULL) < 0 || esxVI_GetStringValue(virtualMachine, "config.files.vmPathName", &vmPathName, esxVI_Occurrence_RequiredItem) <= 0) { goto cleanup; @@ -2630,6 +2634,9 @@ esxDomainGetXMLDesc(virDomainPtr domain, unsigned int= flags) if (powerState !=3D esxVI_VirtualMachinePowerState_PoweredOff) def->id =3D id; =20 + if (priv->primary->legacy_uuid) + memcpy(def->uuid, def->hw_uuid, VIR_UUID_BUFLEN); + xml =3D virDomainDefFormat(def, priv->xmlopt, virDomainDefFormatConvertXMLFlags(flags)); } @@ -2771,7 +2778,7 @@ esxConnectListDefinedDomains(virConnectPtr conn, char= **const names, int maxname =20 names[count] =3D NULL; =20 - if (esxVI_GetVirtualMachineIdentity(virtualMachine, NULL, &names[c= ount], + if (esxVI_GetVirtualMachineIdentity(virtualMachine, NULL, NULL, &n= ames[count], NULL) < 0) { goto cleanup; } @@ -2838,7 +2845,7 @@ esxDomainCreateWithFlags(virDomainPtr domain, unsigne= d int flags) (priv->primary, domain->uuid, propertyNameList, &virtualMachine, priv->parsedUri->autoAnswer) < 0 || esxVI_GetVirtualMachinePowerState(virtualMachine, &powerState) < 0= || - esxVI_GetVirtualMachineIdentity(virtualMachine, &id, NULL, NULL) <= 0) { + esxVI_GetVirtualMachineIdentity(virtualMachine, NULL, &id, NULL, N= ULL) < 0) { goto cleanup; } =20 @@ -4787,8 +4794,9 @@ esxConnectListAllDomains(virConnectPtr conn, /* Request required data for esxVI_GetVirtualMachineIdentity */ if (esxVI_String_AppendValueListToList(&propertyNameList, "configStatus\0" - "name\0" - "config.uuid\0") < 0) { + "name\0") < 0 || + esxVI_String_AppendValueToList(&propertyNameList, + priv->primary->uuid_key) < 0) { goto cleanup; } } @@ -4827,8 +4835,11 @@ esxConnectListAllDomains(virConnectPtr conn, /* If the lookup of the required properties fails for some of the = machines * in the list it's preferrable to return the valid objects instea= d of * failing outright */ - if ((needIdentity && esxVI_GetVirtualMachineIdentity(virtualMachin= e, &id, &name, uuid) < 0) || - (needPowerState && esxVI_GetVirtualMachinePowerState(virtualMa= chine, &powerState) < 0)) { + if ((needIdentity && + esxVI_GetVirtualMachineIdentity(virtualMachine, priv->primary= ->uuid_key, + &id, &name, uuid) < 0) || + (needPowerState && + esxVI_GetVirtualMachinePowerState(virtualMachine, &powerState= ) < 0)) { =20 /* Raise error only if we didn't successfuly fill any domain */ if (count =3D=3D 0 && !virtualMachine->_next) @@ -4960,9 +4971,13 @@ esxDomainHasManagedSaveImage(virDomainPtr domain, un= signed int flags) esxPrivate *priv =3D domain->conn->privateData; esxVI_ManagedObjectReference *managedObjectReference =3D NULL; char uuid_string[VIR_UUID_STRING_BUFLEN] =3D ""; + esxVI_Boolean instanceUuid =3D esxVI_Boolean_True; =20 virCheckFlags(0, -1); =20 + if (priv->primary->legacy_uuid) + instanceUuid =3D esxVI_Boolean_Undefined; + if (esxVI_EnsureSession(priv->primary) < 0) return -1; =20 @@ -4970,7 +4985,7 @@ esxDomainHasManagedSaveImage(virDomainPtr domain, uns= igned int flags) =20 if (esxVI_FindByUuid(priv->primary, priv->primary->datacenter->_refere= nce, uuid_string, esxVI_Boolean_True, - esxVI_Boolean_Undefined, + instanceUuid, &managedObjectReference) < 0) { return -1; } diff --git a/src/esx/esx_util.c b/src/esx/esx_util.c index 1443ec3b9e46..6dee2259e580 100644 --- a/src/esx/esx_util.c +++ b/src/esx/esx_util.c @@ -42,6 +42,7 @@ esxUtil_ParseUri(esxUtil_ParsedUri **parsedUri, virURI *u= ri) size_t i; int noVerify; int autoAnswer; + int legacy_uuid; char *tmp; =20 ESX_VI_CHECK_ARG_LIST(parsedUri); @@ -87,6 +88,16 @@ esxUtil_ParseUri(esxUtil_ParsedUri **parsedUri, virURI *= uri) } =20 (*parsedUri)->autoAnswer =3D autoAnswer !=3D 0; + } else if (STRCASEEQ(queryParam->name, "legacy_uuid")) { + if (virStrToLong_i(queryParam->value, NULL, 10, &legacy_uuid) = < 0 || + (legacy_uuid !=3D 0 && legacy_uuid !=3D 1)) { + virReportError(VIR_ERR_INVALID_ARG, + _("Query parameter 'legacy_uuid' has unexpe= cted value '%1$s' (should be 0 or 1)"), + queryParam->value); + goto cleanup; + } + + (*parsedUri)->legacy_uuid =3D legacy_uuid !=3D 0; } else if (STRCASEEQ(queryParam->name, "proxy")) { /* Expected format: [://][:] */ (*parsedUri)->proxy =3D true; diff --git a/src/esx/esx_util.h b/src/esx/esx_util.h index 29f01e0c1559..545bf7f3014c 100644 --- a/src/esx/esx_util.h +++ b/src/esx/esx_util.h @@ -46,6 +46,7 @@ struct _esxUtil_ParsedUri { int proxy_port; char *path; char *cacert; + bool legacy_uuid; }; =20 int esxUtil_ParseUri(esxUtil_ParsedUri **parsedUri, virURI *uri); diff --git a/src/esx/esx_vi.c b/src/esx/esx_vi.c index db006ed16f40..818ff0de4c50 100644 --- a/src/esx/esx_vi.c +++ b/src/esx/esx_vi.c @@ -300,6 +300,17 @@ esxVI_CURL_Connect(esxVI_CURL *curl, esxUtil_ParsedUri= *parsedUri) curl->headers =3D curl_slist_append(curl->headers, "Content-Type: text/xml; charset=3DU= TF-8"); =20 + /* + * Testing showed that the 4.0 version is most close to our current ty= pes in + * esx_vi_generator.input data. We could update the version if new me= thod + * parameters or object properties are needed. + * + * The other option is to drop the "/x.y" suffix completely once + * https://gitlab.com/libvirt/libvirt/-/work_items/878 is implemented = since + * that will not limit the version at all. + */ + curl->headers =3D curl_slist_append(curl->headers, "SOAPAction: urn:vi= m25/4.0"); + /* * Add an empty expect header to stop CURL from waiting for a response= code * 100 (Continue) from the server before continuing the POST operation. @@ -933,7 +944,8 @@ esxVI_Context_Connect(esxVI_Context *ctx, const char *u= rl, if (ctx->productLine =3D=3D esxVI_ProductLine_VPX) ctx->hasSessionIsActive =3D true; =20 - + ctx->legacy_uuid =3D parsedUri->legacy_uuid; + ctx->uuid_key =3D ctx->legacy_uuid ? "config.uuid" : "config.instanceU= uid"; =20 if (esxVI_Login(ctx, username, escapedPassword, NULL, &ctx->session) <= 0 || esxVI_BuildSelectSetCollection(ctx) < 0) { @@ -2386,6 +2398,7 @@ esxVI_LookupNumberOfDomainsByPowerState(esxVI_Context= *ctx, =20 int esxVI_GetVirtualMachineIdentity(esxVI_ObjectContent *virtualMachine, + const char *uuid_key, int *id, char **name, unsigned char *uuid) { const char *uuid_string =3D NULL; @@ -2443,6 +2456,12 @@ esxVI_GetVirtualMachineIdentity(esxVI_ObjectContent = *virtualMachine, } =20 if (uuid) { + if (!uuid_key) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Cannot get VM's UUID without supplying a VM = UUID key")); + goto failure; + } + if (esxVI_GetManagedEntityStatus(virtualMachine, "configStatus", &configStatus) < 0) { goto failure; @@ -2452,7 +2471,8 @@ esxVI_GetVirtualMachineIdentity(esxVI_ObjectContent *= virtualMachine, for (dynamicProperty =3D virtualMachine->propSet; dynamicProperty; dynamicProperty =3D dynamicProperty->_next) { - if (STREQ(dynamicProperty->name, "config.uuid")) { + + if (STREQ(dynamicProperty->name, uuid_key)) { if (esxVI_AnyType_ExpectType(dynamicProperty->val, esxVI_Type_String) < 0) { goto failure; @@ -2676,13 +2696,17 @@ esxVI_LookupVirtualMachineByUuid(esxVI_Context *ctx= , const unsigned char *uuid, int result =3D -1; esxVI_ManagedObjectReference *managedObjectReference =3D NULL; char uuid_string[VIR_UUID_STRING_BUFLEN] =3D ""; + esxVI_Boolean instanceUuid =3D esxVI_Boolean_True; + + if (ctx->legacy_uuid) + instanceUuid =3D esxVI_Boolean_Undefined; =20 ESX_VI_CHECK_ARG_LIST(virtualMachine); =20 virUUIDFormat(uuid, uuid_string); =20 if (esxVI_FindByUuid(ctx, ctx->datacenter->_reference, uuid_string, - esxVI_Boolean_True, esxVI_Boolean_Undefined, + esxVI_Boolean_True, instanceUuid, &managedObjectReference) < 0) { return -1; } @@ -2742,7 +2766,7 @@ esxVI_LookupVirtualMachineByName(esxVI_Context *ctx, = const char *name, candidate =3D candidate->_next) { g_autofree char *name_candidate =3D NULL; =20 - if (esxVI_GetVirtualMachineIdentity(candidate, NULL, &name_candida= te, + if (esxVI_GetVirtualMachineIdentity(candidate, NULL, NULL, &name_c= andidate, NULL) < 0) { goto cleanup; } diff --git a/src/esx/esx_vi.h b/src/esx/esx_vi.h index b083ef2b0c66..98f89278a6e6 100644 --- a/src/esx/esx_vi.h +++ b/src/esx/esx_vi.h @@ -199,6 +199,8 @@ struct _esxVI_Context { esxVI_SelectionSpec *selectSet_datacenterToNetwork; bool hasQueryVirtualDiskUuid; bool hasSessionIsActive; + bool legacy_uuid; + const char *uuid_key; }; =20 int esxVI_Context_Alloc(esxVI_Context **ctx); @@ -351,6 +353,7 @@ int esxVI_LookupNumberOfDomainsByPowerState bool inverse); =20 int esxVI_GetVirtualMachineIdentity(esxVI_ObjectContent *virtualMachine, + const char *uuid_key, int *id, char **name, unsigned char *u= uid); =20 int esxVI_GetNumberOfSnapshotTrees diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 084b4154427f..572087341ae0 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -1492,11 +1492,19 @@ virVMXParseConfig(virVMXContext *ctx, def->scsiBusMaxUnit =3D SCSI_SUPER_WIDE_BUS_MAX_CONT_UNIT; } =20 - /* vmx:uuid.bios -> def:uuid */ + /* vmx:uuid.bios -> def:hwuuid */ /* FIXME: Need to handle 'uuid.action =3D "create"' */ - if (virVMXGetConfigUUID(conf, "uuid.bios", def->uuid, true) < 0) + if (virVMXGetConfigUUID(conf, "uuid.bios", def->hw_uuid, true) < 0) goto cleanup; =20 + /* vmx:vc.uuid -> def:uuid */ + if (virVMXGetConfigUUID(conf, "vc.uuid", def->uuid, true) < 0) + goto cleanup; + + /* Fallback to legacy behaviour if there is no vc.uuid */ + if (!virUUIDIsValid(def->uuid)) + memcpy(def->uuid, def->hw_uuid, VIR_UUID_BUFLEN); + /* vmx:displayName -> def:name */ if (virVMXGetConfigString(conf, "displayName", &def->name, true) < 0) goto cleanup; diff --git a/tests/vmx2xmldata/esx-in-the-wild-10.xml b/tests/vmx2xmldata/e= sx-in-the-wild-10.xml index 1b1fdf06623f..3a8bb20140a1 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-10.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-10.xml @@ -1,6 +1,6 @@ w2019biosvmware - 421a6177-5aa9-abb7-5924-fc376c18a1b4 + 501af9f2-6d29-1c76-19a9-b208ede5f374 13c67c91-9f47-526f-b0d6-e4dd2e4bb4f9 4194304 4194304 diff --git a/tests/vmx2xmldata/esx-in-the-wild-11.xml b/tests/vmx2xmldata/e= sx-in-the-wild-11.xml index 0dd297af43f0..6398e50c5c6c 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-11.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-11.xml @@ -1,6 +1,6 @@ esx6.7-rhel7.7-x86_64 - 422c0152-63ab-cd03-9650-4301ae77aefd + 502ca229-12eb-24f6-0c37-c025ff5da005 2097152 2097152 1 diff --git a/tests/vmx2xmldata/esx-in-the-wild-12.xml b/tests/vmx2xmldata/e= sx-in-the-wild-12.xml index ac83982b9b88..d505ff58d12d 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-12.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-12.xml @@ -1,6 +1,6 @@ Auto-esx8.0-rhell9.3-efi-with-empty-cdrom - 4220fca7-11dd-d67e-19cc-fcad0a37c342 + 5020ca5b-7ac1-5c44-cfa1-9e762e2f933b 2097152 2097152 1 diff --git a/tests/vmx2xmldata/esx-in-the-wild-13.xml b/tests/vmx2xmldata/e= sx-in-the-wild-13.xml index cef9fd4e48c9..2bea51a087eb 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-13.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-13.xml @@ -1,6 +1,6 @@ Test-Mig-VM-1 (01ce57d0-4e20-41a5-8b6c-bcbf49a032ec) - 421eb458-5448-fc12-2074-83d5e419e138 + 01ce57d0-4e20-41a5-8b6c-bcbf49a032ec name:Test-Mig-VM-1 userid:962314ba515c48388a0e95c0961709ff username:admin diff --git a/tests/vmx2xmldata/esx-in-the-wild-14.xml b/tests/vmx2xmldata/e= sx-in-the-wild-14.xml index f10707d1d412..574dd2097455 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-14.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-14.xml @@ -1,6 +1,6 @@ wild14 - 421b223a-f2c1-c7c9-a399-34d2d9fde26d + 501b831e-75d8-15f8-36fa-b9e225f395aa execution env sandbox automation platform 33554432 33554432 diff --git a/tests/vmx2xmldata/esx-in-the-wild-15.xml b/tests/vmx2xmldata/e= sx-in-the-wild-15.xml index 78d15e1538e6..4c753f87e2ea 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-15.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-15.xml @@ -1,6 +1,6 @@ dokuwiki - 420338bd-1c9e-ad50-99a2-59e92ddda8b6 + 500341d5-fe23-ac46-8cb3-77a8e5a1143d 2097152 2097152 2 diff --git a/tests/vmx2xmldata/esx-in-the-wild-16.xml b/tests/vmx2xmldata/e= sx-in-the-wild-16.xml index 51746dd77ef0..8c5bc7f43513 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-16.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-16.xml @@ -1,6 +1,6 @@ Auto-esx8.0-rhel9.4-efi-nvme-disk - 4220df89-e3a8-8513-f611-ad252bfd7047 + 5020196e-c5c8-7310-fcdb-d2933d0c4b2f 2097152 2097152 1 diff --git a/tests/vmx2xmldata/esx-in-the-wild-17.xml b/tests/vmx2xmldata/e= sx-in-the-wild-17.xml index 725f21bdf601..506e08fc54ec 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-17.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-17.xml @@ -1,6 +1,6 @@ esx8.0-win11-with-second-disk-in-subfolder - 42256ec1-e066-9364-3dd1-36a0b75263dd + 50250f27-538b-5091-a43b-a50ce95f2382 3191ed70-eb21-9c71-2478-373fb27fed9b 4194304 4194304 diff --git a/tests/vmx2xmldata/esx-in-the-wild-5.xml b/tests/vmx2xmldata/es= x-in-the-wild-5.xml index c88e60bdc070..a86119508c70 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-5.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-5.xml @@ -1,6 +1,6 @@ vmtest.local - 423e94a9-a1c7-b31d-7161-76c7586c830e + 503e06db-f8d5-458e-a2fb-f9820253a7be Centos 5.5 64bit Server 2097152 2097152 diff --git a/tests/vmx2xmldata/esx-in-the-wild-6.xml b/tests/vmx2xmldata/es= x-in-the-wild-6.xml index 805f03356129..f252304f9796 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-6.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-6.xml @@ -1,6 +1,6 @@ el6-test - 564d15d4-d062-fe9a-80f5-eb8e1a2c3afc + 5200b69b-8d88-7bdf-a14a-02705d653772 1048576 1048576 1 diff --git a/tests/vmx2xmldata/esx-in-the-wild-7.xml b/tests/vmx2xmldata/es= x-in-the-wild-7.xml index b641574776b6..076655f37ac2 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-7.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-7.xml @@ -1,6 +1,6 @@ esx-rhel6-mini-with-scsi-device - 564d9176-621f-0239-f5ad-3a002371953b + 52409533-33a2-56c5-36ce-80d605f8ecf4 2097152 2097152 1 diff --git a/tests/vmx2xmldata/esx-in-the-wild-8.xml b/tests/vmx2xmldata/es= x-in-the-wild-8.xml index f13e6f744880..2ef609e87bdb 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-8.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-8.xml @@ -1,6 +1,6 @@ RHEL7_10_NICs - 42359420-99dc-4261-5264-ba58ddae20e4 + 50351de6-7d56-29ab-9d72-c7f9ea3fcfd0 2097152 2097152 8 diff --git a/tests/vmx2xmldata/esx-in-the-wild-9.xml b/tests/vmx2xmldata/es= x-in-the-wild-9.xml index 6b4d878ab18a..4fbe141f6c47 100644 --- a/tests/vmx2xmldata/esx-in-the-wild-9.xml +++ b/tests/vmx2xmldata/esx-in-the-wild-9.xml @@ -1,6 +1,6 @@ v2v-windows-kkulkarn - 42009372-17da-be73-779d-007ccf1bd228 + 5000d2b0-616e-6129-8c06-82b07440a871 MIQ GUID=3Db55c806d-99b9-4fa5-bbcc-a4de04f822e5 16777216 16777216 --=20 2.54.0 From nobody Fri May 15 10:50:02 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; 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 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1778831597; cv=none; d=zohomail.com; s=zohoarc; b=J2pNbdQ8T1W/7Wq+c5OsRwmMcEmm5/EP7tSy+Bifglpk84NPTjeC2IiG54B69+dhkL2dHvoqc1CL7xA9MRanH6zoHsAnWD7NCuqS+bRNk9ys5fWTp7rMFBM/u/lft1V0LQaRvOnEKKgLeQHW6RHogPmM2KvBEU4cXRfjS0UCeAU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778831597; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=TTxtJG55c/vsRZJ6lsHI3zV7onFN74PpUougZZacH4M=; b=QraReC8qxrSzz5PrmhSB8/kLbNZsCrdPEDrptSsK9Z2ts0JEHNRsPfZXGKadILLJ8iNqJhCypt4RUykkJm85L45PxZ4moRamYJCOWVUwZzBunp+SfPMleLoxK8aktazO9H9xOLRR2oTxTwsHCNmYiPmJ4sDWCH8+2OEkwNPEdyQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1778831597617325.9740304393215; Fri, 15 May 2026 00:53:17 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 4A781419AA; Fri, 15 May 2026 03:53:16 -0400 (EDT) Received: from [172.19.199.12] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 35F0A41A7B; Fri, 15 May 2026 03:52:27 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id EA905418E2; Fri, 15 May 2026 03:52:14 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 944F5417E7 for ; Fri, 15 May 2026 03:52:12 -0400 (EDT) Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-377-y-fmuuOtMYSXmAqNP2fFLQ-1; Fri, 15 May 2026 03:52:10 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-48fd9c22b8fso11809785e9.3 for ; Fri, 15 May 2026 00:52:09 -0700 (PDT) Received: from wheatley.localdomain ([213.175.46.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48fe57943b2sm44984345e9.8.2026.05.15.00.52.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 May 2026 00:52:08 -0700 (PDT) Received: from wheatley.pinto-pinecone.ts.net (wheatley.k8r.cz [127.0.0.1]) by wheatley.localdomain (Postfix) with ESMTP id A2B931A847F2F for ; Fri, 15 May 2026 09:52:07 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1778831531; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TTxtJG55c/vsRZJ6lsHI3zV7onFN74PpUougZZacH4M=; b=gR9SPKkI9TWIhXrwXoIX9jCJIY5WV0x1SS4no4Riob9BiHSIsaMwBya1pq5IijfTAmJYGk I8hZv5l2kxYIIUsRJGv6CnXocdF9Vi3a08uWdxhf8Oi1sCyEN29XWl7UoRN3X2XfY9MIbG nETRbuVN1rYZWMiXG2/UZQtxZ5mb/EU= X-MC-Unique: y-fmuuOtMYSXmAqNP2fFLQ-1 X-Mimecast-MFC-AGG-ID: y-fmuuOtMYSXmAqNP2fFLQ_1778831529 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778831529; x=1779436329; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TTxtJG55c/vsRZJ6lsHI3zV7onFN74PpUougZZacH4M=; b=BjKocou8FdIw1AQfwBD9sZP7x4VwedjNZjPCi6gNTH19+et7xrq1Nz7PY9ElJi1/Xe otz4pwrcdiivFLPw5MWpKJbfIOTwOiL3xCIeOz1VYT8lqvd6GMPT9vT5/hU6L2lzVeNy j4VEEGUevhkL8hsxUcJK4L2n3PM2rn+uPO9WzY2PQ2R3U2H1RaB8olQo3NiXSEVUrUT6 r/N2xfSRqT19KZiMv7QpF6RJHMdLMNm/ZG9PAKh/8iD9shaT24MPKZxSbr7ccJ86yqU9 knTUtfyQEtUyhbDlG89Eqb2DQ/JJqHec7kXTIGBUlec9Uhh4YlWbAEB97WaPW6FJ2Lz3 WLBA== X-Gm-Message-State: AOJu0YyqQ2/jE6shwS21BNparRBbFDNT87CjCKM9OJxf5XA2ZTvBzdY1 InjCLFlzhuAVhN9NVosGJMw6h2595s0z1m9G8SwQs0T92vJWaBiTGGJTG8VaixMlN/aVVjvGzDT hmypk+pEbsNrhOJ57sn7/3BmMtpaee+o4jxIBRpXHijUX+CXLIBU/IbIoKcRRU9zwPwLRNVtxM8 bgCOghtnX+cnrJkoZpHDMXOOdEz+hyJI5nLtB8crRB+Zs= X-Gm-Gg: Acq92OED88NKwozX2tVklML+Ze+FnsK6CMfI+CejfDTyzcMIkEnkLb5+W8k+EAsTTOH d74YMPlt3EiUInpehHO6NJD0UkOXwucvz4aHQqtVu3+LbNWQDWxotK28nN5WPGaxfnlYHkLsvqs umznao9CDya6/9na3i+hx3+8eN+mbyq71qFHKA+f/N9wPB0BXXDpoZkkA5VLXx9gUAX7PZe/KIf yES3D7TUpCcu92nTXXsUTR9iZVW9MJCESGdVLwhT10yw0/aCAPDkETAVzPxkJSLpDqi5i6Hi8Ox j9qsp57uBSwclMI2KLINTp7cifSnLP0jVVOn4j/VeaerbktkMU5zwDho/s2UkjLpuKgi3z7Jg8K whp2jnqeSRl5XuZouB4I3qA== X-Received: by 2002:a05:600c:a11c:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-48fe61f27famr26574205e9.14.1778831528958; Fri, 15 May 2026 00:52:08 -0700 (PDT) X-Received: by 2002:a05:600c:a11c:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-48fe61f27famr26573955e9.14.1778831528582; Fri, 15 May 2026 00:52:08 -0700 (PDT) To: devel@lists.libvirt.org Subject: [PATCH v3 2/2] NEWS: Add information about VMWare domains having different UUIDs Date: Fri, 15 May 2026 09:52:02 +0200 Message-ID: <5d3f350ef8506f5472ef7079ce0a198bd7385bbf.1778831362.git.mkletzan@redhat.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: mBgttpg1_pgqxzwDgVHANsqzqJD8aYivonzBSOc2-54_1778831529 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: RQOHQPPPAXO5NMGD6CIWLD6FOW6BZDVG X-Message-ID-Hash: RQOHQPPPAXO5NMGD6CIWLD6FOW6BZDVG X-MailFrom: mkletzan@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Martin Kletzander via Devel Reply-To: Martin Kletzander X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1778831602288158500 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Martin Kletzander Signed-off-by: Martin Kletzander Reviewed-by: Peter Krempa --- NEWS.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 105a398ca879..9a97e4436746 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -21,6 +21,15 @@ v12.4.0 (unreleased) =20 * **Bug fixes** =20 + * esx/vmware: VMs are tracked under different UUIDs by default + + The VMWare-related drivers were using allegedly unique IDs for domains= , but + it turned out they were not completely unique, even for the same host.= That + caused an issue where a different domain could have been acted upon th= en + requested. Unfortunately, to make this work, the UUIDs of all + VMWare-related domains will change from this release. In order to use= the + pre-v12.4.0 behaviour there is a new URI query parameter ``legacy_uuid= `` + which, if set to ``1``, will revert to the older way of working. =20 v12.3.0 (2026-05-02) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --=20 2.54.0