Author: arkurth
Date: Mon Feb 28 19:02:51 2011
New Revision: 1075486

URL: http://svn.apache.org/viewvc?rev=1075486&view=rev
Log:
VCL-435
Fixed a bug in VMware.pm::reclaim_vmhost_disk_space.  It would generate "Use of 
uninitialized value in concatenation" warnings under some circumstances because.

Modified:
    
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm

Modified: 
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm?rev=1075486&r1=1075485&r2=1075486&view=diff
==============================================================================
--- 
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm 
(original)
+++ 
incubator/vcl/trunk/managementnode/lib/VCL/Module/Provisioning/VMware/VMware.pm 
Mon Feb 28 19:02:51 2011
@@ -2511,6 +2511,9 @@ sub reclaim_vmhost_disk_space {
        
        my $enough_space_reclaimed = 0;
        
+       notify($ERRORS{'DEBUG'}, 0, "deletable vmx files:\n" . 
format_data($deletable_vmx_files));
+       notify($ERRORS{'DEBUG'}, 0, "deletable vmdk directories:\n" . 
format_data($deletable_vmdk_directories));
+       
        DELETE_STAGE: for my $delete_stage (@delete_stage_order) {
                my ($vmx_vmdk, $key, $value) = @$delete_stage;
                notify($ERRORS{'DEBUG'}, 0, "processing delete stage - 
$vmx_vmdk: $key = $value");
@@ -2535,9 +2538,13 @@ sub reclaim_vmhost_disk_space {
                                        notify($ERRORS{'DEBUG'}, 0, "reclaimed 
space used by VM: $deletable_vmx_file_path");
                                        
                                        for my $vmdk_directory_path (sort keys 
%{$deletable_vmx_files->{$deletable_vmx_file_path}{vmdk_directory_paths}}) {
-                                               notify($ERRORS{'DEBUG'}, 0, 
"deleting $deletable_vmx_file_name from vmdk info: $vmdk_directory_path\n" . 
format_data($deletable_vmdk_directories->{$vmdk_directory_path}{vmx_file_paths}));
+                                               notify($ERRORS{'DEBUG'}, 0, 
"deleting $deletable_vmx_file_name from vmdk info: $vmdk_directory_path\n" . 
format_data($deletable_vmdk_directories->{$vmdk_directory_path}));
                                                delete 
$deletable_vmdk_directories->{$vmdk_directory_path}{vmx_file_paths}{$deletable_vmx_file_path};
-                                               notify($ERRORS{'DEBUG'}, 0, 
"after:\n" . 
format_data($deletable_vmdk_directories->{$vmdk_directory_path}{vmx_file_paths}));
+                                               
+                                               my $vmx_file_path_count = 
scalar(keys 
%{$deletable_vmdk_directories->{$vmdk_directory_path}{vmx_file_paths}});
+                                               
$deletable_vmdk_directories->{$vmdk_directory_path}{vmx_file_path_count} = 
$vmx_file_path_count;
+                                               
+                                               notify($ERRORS{'DEBUG'}, 0, 
"after:\n" . format_data($deletable_vmdk_directories->{$vmdk_directory_path}));
                                        }
                                        delete 
$deletable_vmx_files->{$deletable_vmx_file_path};
                                        
@@ -2552,17 +2559,19 @@ sub reclaim_vmhost_disk_space {
                                my $deletable_vmdk_directory_name = 
$deletable_vmdk_directories->{$deletable_vmdk_directory_path}{directory_name};
                                my $deletable_vmdk_directory_value = 
$deletable_vmdk_directories->{$deletable_vmdk_directory_path}{$key};
                                
-                               if (!defined($deletable_vmdk_directory_value)) {
+                               if (!defined($deletable_vmdk_directory_name)) {
+                                       notify($ERRORS{'WARNING'}, 0, "vmdk 
directory name is not set the hash for deletable vmdk directory path: 
'$deletable_vmdk_directory_path'\n" . 
format_data($deletable_vmdk_directories->{$deletable_vmdk_directory_path}));
+                                       next;
+                               }
+                               elsif 
(!defined($deletable_vmdk_directory_value)) {
                                        notify($ERRORS{'DEBUG'}, 0, "no value: 
$key is not set for vmdk file $deletable_vmdk_directory_name");
                                        next;
                                }
                                elsif ($deletable_vmdk_directory_value ne 
$value) {
-                                       notify($ERRORS{'DEBUG'}, 0, "no match: 
vmdk file $deletable_vmdk_directory_name does not match delete stage criteria: 
$key = $value, vmdk value: $deletable_vmdk_directory_value");
+                                       notify($ERRORS{'DEBUG'}, 0, "no match: 
vmdk directory: $deletable_vmdk_directory_name\ndelete stage criteria: $key = 
$value\nvmdk value: $key = $deletable_vmdk_directory_value");
                                        next;
                                }
-                               
-                               notify($ERRORS{'DEBUG'}, 0, "match: vmdk file 
$deletable_vmdk_directory_name matches delete stage criteria: $key = $value, 
vmdk value: $deletable_vmdk_directory_value");
-                               
+                               notify($ERRORS{'DEBUG'}, 0, "match: vmdk 
directory: $deletable_vmdk_directory_name\ndelete stage criteria: $key = 
$value\nvmdk value: $key = $deletable_vmdk_directory_value");
                                for my $vmx_file_path (sort keys 
%{$deletable_vmdk_directories->{$deletable_vmdk_directory_path}{vmx_file_paths}})
 {
                                        if ($self->delete_vm($vmx_file_path)) {
                                                notify($ERRORS{'DEBUG'}, 0, 
"reclaimed space used by VM: $vmx_file_path");


Reply via email to