Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

VMware import (importVm) fails when datacenter/cluster/host name contains a space

Offen
#13,920 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
75/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
java

Rechercherichtung

Beginne in plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtConvertInstanceCommandWrapper.java und lies buildVpxUrl, getExportOVAUrlFromRemoteInstance und encodeUsername. Reproduziere den Import mit einem Leerzeichen im Namen eines Datacenters, Clusters, Hosts, Pfads oder einer VM und untersuche sowohl die OVA- als auch die VDDK-Pfade. Erledigt ist dies, wenn die generierten vpx://- und vi://-URIs erfolgreich geparst werden und die Ordnertrenner intakt bleiben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

component:kvm component:vmware Severity:Minor type:bug

Summary

LibvirtConvertInstanceCommandWrapper builds the vpx:///vi:// connection URIs for virt-v2v by concatenating the vCenter datacenter/cluster/host names without percent-encoding them. A datacenter (or cluster/host) name containing a space — valid in vSphere — produces an invalid URI, and VM import from VMware fails.

Environment

  • CloudStack main (659f675b059c1e5008deb3bb28793eadf377d687)
  • KVM host, virt-v2v 2.7.1, libvirt 9.0.0
  • Import VM from VMware (UI: Import Instance, or the importVm API with importsource=vmware), reproduced on both the OVA-conversion path and the VDDK path (-it vddk)

Steps to Reproduce

  1. Rename a vCenter Datacenter to include a space, e.g. "QA Lab".
  2. Import a VM from it via the CloudStack UI (Import Instance) or the importVm API.
  3. Conversion fails.

Actual Behavior

Using VPX URL: vpx://Administrator%[email protected]/QA Lab/cluster-a/203.0.113.20?no_verify=1
virt-v2v: error: could not parse '-ic vpx://...QA Lab/cluster-a/203.0.113.20?no_verify=1'. Original error message was: parse_uri: unable to parse URI

Also seen on the VDDK import path (-it vddk), same unencoded QA Lab segment, surfacing as java.io.IOException: Stream closed instead — a downstream symptom of virt-v2v exiting immediately on the same bad URI, not a separate defect.

The username is correctly percent-encoded (Administrator%40vsphere.local); datacenter/cluster/host are not.

Root Cause

plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtConvertInstanceCommandWrapper.java

  • buildVpxUrl (~L463): appends datacenter, cluster, host raw after url.append("/").
  • getExportOVAUrlFromRemoteInstance (~L203): same pattern for datacenter/path/vm in the vi:// URL.
  • encodeUsername (~L298) uses URLEncoder.encode, which encodes space as + — wrong for a URI path/authority (libvirt only decodes %20). Not yet visible as a bug since vCenter usernames rarely have spaces, but worth fixing alongside the above with the same helper.

Suggested Fix

Percent-encode datacenter/cluster/host/path/vm per /-delimited sub-segment (not as one string) — datacenter/cluster names can be folder-nested (e.g. MyFolder/MyDC), and that / must stay literal.

versions
ACS 4.22.1

Vorherrschende Sprache
Java
Sterne
3.1k
Forks
1.4k
Ø Merge
5 T. 19 Std.
Gemergte PRs (30 T.)
17

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus apache/cloudstack

Alle Issues in apache/cloudstack

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.