Author: fapeeler
Date: Wed Aug  6 18:00:24 2014
New Revision: 1616293

URL: http://svn.apache.org/r1616293
Log:
VCL-772

leaving node_status in Lab.pm for now as it is handled differently than general 
images
added get_current_image_info routine, customized to return values pulled from 
the db instead of from the standalone lab machine


Modified:
    vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/UnixLab.pm

Modified: vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/UnixLab.pm
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/UnixLab.pm?rev=1616293&r1=1616292&r2=1616293&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/UnixLab.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/OS/Linux/UnixLab.pm Wed Aug  6 
18:00:24 2014
@@ -544,7 +544,7 @@ sub notify_user_console {
 
        my $computer_node_name = $self->data->get_computer_node_name();
 
-       my $cmd = "echo $message \| write $username";
+       my $cmd = "echo \"$message\" \| write $username";
        my ($exit_status, $output) = $self->execute({
                 node => $computer_node_name,
                 command => $cmd,
@@ -552,7 +552,7 @@ sub notify_user_console {
                 timeout => 30,
                 max_attempts => 2,
                 port => 24,
-                user => "vclstaff"
+                user => "vclstaff",
                });
        if (!defined($output)) {
                notify($ERRORS{'WARNING'}, 0, "failed to execute command to 
determine if the '$cmd' shell command exists on $computer_node_name");
@@ -563,6 +563,73 @@ sub notify_user_console {
                return 1;
        }
 }
+
+
+#/////////////////////////////////////////////////////////////////////////////
+
+=head2 get_current_image_info
+
+ Parameters  : optional 
+                                       
id,computer_hostname,computer_id,current_image_name,imagerevision_datecreated,imagerevision_id,prettyname,vcld_post_load
 
+ Returns     : If successful: 
+                                       if no parameter return the 
imagerevision_id
+                                       return the value of parameter input
+               If failed: false
+ Description : Collects currentimage hash on a computer and returns a
+               value containing of the input paramter or the imagerevision_id 
if no inputs.
+                                       This also updates the DataStructure.pm 
so data matches what is currently loaded.
+=cut
+
+sub get_current_image_info {
+       my $self = shift;
+       if (ref($self) !~ /VCL::Module/i) {
+               notify($ERRORS{'CRITICAL'}, 0, "subroutine was called as a 
function, it must be called as a class method");
+               return;
+       }
+
+       my $input = shift;
+
+       if(!defined $input) {
+               $input = "imagerevision_id";
+       }
+
+       my $computer_node_name = $self->data->get_computer_node_name();
+       my $imagerevision_id = $self->data->get_imagerevision_id();
+
+       #The Lab machine image does have a currentimage.txt file.
+       #Predefine matching variables so it doesn't fail.
+
+       my %current_image_txt_contents;
+       $current_image_txt_contents{"imagerevision_id"} = $imagerevision_id;
+       my $time = localtime;
+       $current_image_txt_contents{"vcld_post_load"} = "vcld_post_load=success 
($time)";
+
+       # Make sure an empty hash wasn't returned
+       if (defined $current_image_txt_contents{imagerevision_id}) {
+               notify($ERRORS{'DEBUG'}, 0, "user selected content of image 
currently loaded on $computer_node_name: 
$current_image_txt_contents{current_image_name}");
+       
+               if (my $imagerevision_info = 
get_imagerevision_info($current_image_txt_contents{imagerevision_id})){
+                       
$self->data->set_computer_currentimage_data($imagerevision_info->{image});
+                       
$self->data->set_computer_currentimagerevision_data($imagerevision_info);
+                       
+                       if (defined 
$current_image_txt_contents{"vcld_post_load"}) {
+                               
$self->data->set_computer_currentimage_vcld_post_load($current_image_txt_contents{vcld_post_load});
+                       }
+               }
+               
+               if (defined($current_image_txt_contents{$input})){
+                       return $current_image_txt_contents{$input};
+               }
+               else {
+                       notify($ERRORS{'WARNING'}, 0, "$input was not defined 
in current_image_txt");   
+                       return;
+               }
+       }
+       else {
+               notify($ERRORS{'WARNING'}, 0, "empty hash was returned when 
currentimage.txt contents were retrieved from $computer_node_name");
+               return;
+       }
+}
 #/////////////////////////////////////////////////////////////////////////////
 
 1;


Reply via email to