]> git.proxmox.com Git - pve-storage.git/commitdiff
esxi: add helper to get vm from manifest for vmx path
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Mon, 11 Mar 2024 12:49:58 +0000 (13:49 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 13 Mar 2024 14:29:35 +0000 (15:29 +0100)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
src/PVE/Storage/ESXiPlugin.pm

index 9114c6cc2cd0046336b2311f4a0bf5fe465045cf..91fb208d5e150af54da827aa0c536889dd5e649f 100644 (file)
@@ -634,6 +634,26 @@ sub resolve_path_relative_to {
     return "$rel_dc/$rel_ds/$rel_path/$path";
 }
 
+# Imports happen by the volume id which is a path to a VMX file.
+# In order to find the vm's power state and disk capacity info, we need to find the
+# VM the vmx file belongs to.
+sub vm_for_vmx_path {
+    my ($self, $vmx_path) = @_;
+
+    my ($dc_name, $ds_name, $path) = PVE::Storage::ESXiPlugin::split_path($vmx_path);
+    if (my $dc = $self->{$dc_name}) {
+       my $vms = $dc->{vms};
+       for my $vm_name (keys %$vms) {
+           my $vm = $vms->{$vm_name};
+           my $cfg_info = $vm->{config};
+           if ($cfg_info->{datastore} eq $ds_name && $cfg_info->{path} eq $path) {
+               return $vm;
+           }
+       }
+    }
+    return;
+}
+
 package PVE::Storage::ESXiPlugin::VMX;
 
 use strict;