Author: arkurth
Date: Wed Jan  5 17:05:27 2011
New Revision: 1055529

URL: http://svn.apache.org/viewvc?rev=1055529&view=rev
Log:
VCL-127
Added VM host name to subject for critical email messages and to the vcld 
process name.

VCL-428
Updated get_request_info to populate the current image info using the 
computer.imagerevisionid value rather than the computer.currentimageid value.  
It's possible that these 2 values may refer to a different image.  The 
imagerevisionid value is more accurate.

Other
Added TB info to the string returned by utils.pm::get_file_size_info_string() 
if the value is >= 1TB.

Updated utils.pm::escape_file_path() to use quotemeta rather than only escaping 
spaces.  This allows it to escape other special characters in file paths which 
cause problems with other subroutines.

Modified:
    incubator/vcl/trunk/managementnode/lib/VCL/utils.pm

Modified: incubator/vcl/trunk/managementnode/lib/VCL/utils.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1055529&r1=1055528&r2=1055529&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/utils.pm Wed Jan  5 17:05:27 2011
@@ -718,6 +718,9 @@ END
                        my $computer_name = 
$ENV{data}->get_computer_short_name(0);
                        $subject .= "|$computer_name" if (defined 
$computer_name);
                        
+                       my $vmhost_hostname = 
$ENV{data}->get_vmhost_hostname(0);
+                       $subject .= ">$vmhost_hostname" if (defined 
$vmhost_hostname);
+                       
                        my $image_name = $ENV{data}->get_image_name(0);
                        $subject .= "|$image_name" if (defined $image_name);
                        
@@ -4349,67 +4352,46 @@ sub get_request_info {
                        }
                } ## end if ($reservation_row{computer_vmhostid})
 
-               # Get the computer's current image information
-               if ($reservation_row{computer_currentimageid}) {
-                       my %computer_currentimage_info;
-                       if (%computer_currentimage_info = 
get_image_info($reservation_row{computer_currentimageid})) {
-                               
$request_info{reservation}{$reservation_id}{computer}{currentimage} = 
\%computer_currentimage_info;
-                       }
-                       else {
-                               notify($ERRORS{'WARNING'}, 0, "unable to get 
current image info for computer");
-                       }
-               }
-               else {
-                       # currentimageid wasn't set for the computer
-                       notify($ERRORS{'WARNING'}, 0, "currentimageid is not 
set for computer id=" . $reservation_row{computer_id});
-               }
-
                # Get the computer's next image information
                if ($reservation_row{computer_nextimageid}) {
-                       my %computer_nextimage_info;
-                       if (%computer_nextimage_info = 
get_image_info($reservation_row{computer_nextimageid})) {
+                       if (my %computer_nextimage_info = 
get_image_info($reservation_row{computer_nextimageid})) {
                                
$request_info{reservation}{$reservation_id}{computer}{nextimage} = 
\%computer_nextimage_info;
 
                                # For next imageid get the production 
imagerevision info
-                               my %next_imagerevision_info;
-                               if (%next_imagerevision_info = 
get_production_imagerevision_info($reservation_row{computer_nextimageid})) {
+                               if (my %next_imagerevision_info = 
get_production_imagerevision_info($reservation_row{computer_nextimageid})) {
                                        
$request_info{reservation}{$reservation_id}{computer}{nextimagerevision} = 
\%next_imagerevision_info;
                                }
                                else {
                                        notify($ERRORS{'WARNING'}, 0, "unable 
to get next image revision info for computer, image revision ID is not set, 
tried to get production image for image ID " . 
$reservation_row{computer_nextimageid});
                                }
-                       } ## end if (%computer_nextimage_info = 
get_image_info...
+                       }
                        else {
                                notify($ERRORS{'WARNING'}, 0, "unable to get 
nextimage image info for computer");
                        }
-               } ## end if ($reservation_row{computer_nextimageid...
+               }
                else {
-                       # currentimageid wasn't set for the computer
-                       notify($ERRORS{'WARNING'}, 0, "nextimageid is not set 
for computer id=" . $reservation_row{computer_id});
+                       notify($ERRORS{'DEBUG'}, 0, "nextimageid is not set for 
computer");
                }
 
-               # Get the computer's current imagemeta information
-               my %computer_currentimagerevision_info;
-               if ($reservation_row{computer_imagerevisionid} > 0) {
-                       # imagerevisionid is set for computer, get the info for 
that specific revision
-                       if (%computer_currentimagerevision_info = 
get_imagerevision_info($reservation_row{computer_imagerevisionid})) {
-                               
$request_info{reservation}{$reservation_id}{computer}{currentimagerevision} = 
\%computer_currentimagerevision_info;
+               # Get the computer's current imagerevision information
+               if ($reservation_row{computer_imagerevisionid}) {
+                       if (my %computer_currentimagerevision_info = 
get_imagerevision_info($reservation_row{computer_imagerevisionid})) {
+                               if (my %computer_currentimage_info = 
get_image_info($computer_currentimagerevision_info{imageid})) {
+                                       
$request_info{reservation}{$reservation_id}{computer}{currentimagerevision} = 
\%computer_currentimagerevision_info;
+                                       
$request_info{reservation}{$reservation_id}{computer}{currentimage} = 
\%computer_currentimage_info;
+                               }
+                               else {
+                                       notify($ERRORS{'WARNING'}, 0, "unable 
to get current image info for computer, image ID: 
$computer_currentimagerevision_info{imageid}");
+                               }
                        }
                        else {
-                               notify($ERRORS{'WARNING'}, 0, "unable to get 
current image revision info for computer, image revision ID is set to " . 
$reservation_row{computer_imagerevisionid});
+                               notify($ERRORS{'WARNING'}, 0, "unable to get 
current image revision info for computer, image revision ID: 
$reservation_row{computer_imagerevisionid}");
                        }
                }
                else {
-                       # imagerevisionid is not set for computer, get the info 
for the production revision of currentimageid
-                       if (%computer_currentimagerevision_info = 
get_production_imagerevision_info($reservation_row{computer_currentimageid})) {
-                               
$request_info{reservation}{$reservation_id}{computer}{currentimagerevision} = 
\%computer_currentimagerevision_info;
-                       }
-                       else {
-                               notify($ERRORS{'WARNING'}, 0, "unable to get 
current image revision info for computer, image revision ID is not set, tried 
to get production image for image ID " . 
$reservation_row{computer_currentimageid});
-                       }
+                       notify($ERRORS{'DEBUG'}, 0, "imagerevisionid is not set 
for computer");
                }
-
-
+               
                # Loop through all the columns returned for the reservation
                foreach my $key (keys %reservation_row) {
                        my $value = $reservation_row{$key};
@@ -5261,7 +5243,7 @@ sub get_vmhost_info {
 
 sub run_ssh_command {
        my ($node, $identity_paths, $command, $user, $port, $output_level) = @_;
-       
+
        my $max_attempts = 3;
        
        if (ref($_[0]) eq 'HASH') {
@@ -5274,6 +5256,7 @@ sub run_ssh_command {
                $port = $arguments->{port} || '22';
                $output_level = $arguments->{output_level};
                $max_attempts = $arguments->{max_attempts} || 3;
+               
        }
        
        # Determine the output level if it was specified
@@ -7079,6 +7062,7 @@ sub rename_vcld_process {
                        my $reservation_id        = 
$data_structure->get_reservation_id();
                        my $request_state_name    = 
$data_structure->get_request_state_name();
                        my $computer_short_name   = 
$data_structure->get_computer_short_name();
+                       my $vmhost_hostname       = 
$data_structure->get_vmhost_hostname(0);
                        my $image_name            = 
$data_structure->get_image_name();
                        my $user_login_id         = 
$data_structure->get_user_login_id();
                        my $request_forimaging    = 
$data_structure->get_request_forimaging();
@@ -7089,6 +7073,7 @@ sub rename_vcld_process {
                        $new_process_name .= " $request_id:$reservation_id";
                        $new_process_name .= " $request_state_name" if 
($request_state_name);
                        $new_process_name .= " $computer_short_name" if 
($computer_short_name);
+                       $new_process_name .= ">$vmhost_hostname" if 
($vmhost_hostname);
                        $new_process_name .= " $image_name" if ($image_name);
                        $new_process_name .= " $user_login_id" if 
($user_login_id);
                        $new_process_name .= " (imaging)" if 
$request_forimaging;
@@ -9788,11 +9773,13 @@ sub get_file_size_info_string {
        
        my $size_mb = format_number(($size_bytes / 1024 / 1024), 1);
        my $size_gb = format_number(($size_bytes / 1024 / 1024 / 1024), 2);
+       my $size_tb = format_number(($size_bytes / 1024 / 1024 / 1024 / 1024), 
2);
        
        my $size_info;
        $size_info .= format_number($size_bytes) . " bytes$separator";
        $size_info .= "$size_mb MB$separator";
        $size_info .=  "$size_gb GB";
+       $size_info .=  "$separator$size_tb TB" if ($size_tb >= 1);
        return $size_info;
 }
 
@@ -9894,9 +9881,11 @@ sub escape_file_path {
        
        $path = normalize_file_path($path);
        
-       # Add a backslash before each space
-       # Also check for spaces that already have a leading backslash
-       $path =~ s/\\*(\s)/\\$1/g;
+       # Call quotemeta to escape all special character
+       $path = quotemeta $path;
+       
+       # Unescape wildcard * characters or else subroutines will fail which 
accept a wildcard file path
+       $path =~ s/\\+\*/\*/g;
        
        return $path;
 }


Reply via email to