Author: arkurth
Date: Fri Jan  9 13:55:25 2009
New Revision: 733162

URL: http://svn.apache.org/viewvc?rev=733162&view=rev
Log:
VCL-40
Added code to DataStructure.pm get_next_image_dataStructure so that it returns 
the current image information if it fails to determine the the next image to be 
loaded.

Fixed reclaim.pm insert_reload_and_exit. It was calling get_next_image instead 
of get_next_image_dataStructure.

Modified:
    incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm
    incubator/vcl/trunk/managementnode/lib/VCL/reclaim.pm

Modified: incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm?rev=733162&r1=733161&r2=733162&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/DataStructure.pm Fri Jan  9 
13:55:25 2009
@@ -967,12 +967,28 @@
 
 sub get_next_image_dataStructure {
        my $self = shift;
+       
+       # Get the current image data in case something goes wrong
+       my $image_name = $self->get_image_name();
+       my $image_id = $self->get_image_id();
+       my $imagerevision_id = $self->get_imagerevision_id();
+       
+       # Assemble an array with the current image information
+       # This will be returned if the predictive method fails
+       my @current_image;
+       if ($image_name && $image_id && $imagerevision_id) {
+               @current_image = ($image_name, $image_id, $imagerevision_id);
+       }
+       else {
+               notify($ERRORS{'WARNING'}, 0, "unable to obtain current image 
information");
+      @current_image = ();
+       }
 
        #collect predictive reload information from database.
        my $management_predictive_info = get_management_predictive_info();
        if(!$management_predictive_info->{predictivemoduleid}){
-               notify($ERRORS{'CRITICAL'}, 0, "unable to obtain management 
node info for this node");
-      return 0;
+               notify($ERRORS{'CRITICAL'}, 0, "unable to obtain management 
node info for this node, returning current reservation image information");
+      return @current_image;
        }
 
        #update ENV in case other modules need to know
@@ -992,22 +1008,29 @@
 
                if ($EVAL_ERROR) {
                        notify($ERRORS{'WARNING'}, 0, "$predictive_perl_package 
module could not be loaded");
-                       notify($ERRORS{'OK'},      0, "returning 0");
-                       return 0;
+                       notify($ERRORS{'OK'},      0, "returning current 
reservation image information");
+                       return @current_image;
                }
                if (my $predictor = 
($predictive_perl_package)->new({data_structure => $self})) {
                        notify($ERRORS{'OK'}, 0, ref($predictor) . " predictive 
loading object successfully created");
                        @nextimage = $predictor->get_next_image();
-                       return @nextimage;
+                       if (scalar(@nextimage) == 3) {
+                               notify($ERRORS{'OK'}, 0, "predictive loading 
module retreived image information: @nextimage");
+                               return @nextimage;
+                       }
+                       else {
+                               notify($ERRORS{'WARNING'}, 0, "predictive 
loading module failed to retrieve image information, returning current 
reservation image information");
+                               return @current_image;
+                       }
                }
                else {
-                       notify($ERRORS{'WARNING'}, 0, "predictive loading 
object could not be created, returning 0");
-                       return 0;
+                       notify($ERRORS{'WARNING'}, 0, "predictive loading 
object could not be created, returning current reservation image information");
+                       return @current_image;
                }
        } ## end if ($predictive_perl_package)
        else {
-               notify($ERRORS{'OK'}, 0, "predictive loading module not loaded, 
Perl package is not defined");
-               return 0
+               notify($ERRORS{'OK'}, 0, "predictive loading module not loaded, 
Perl package is not defined, returning current reservation image information");
+               return @current_image;
        }
 
 }

Modified: incubator/vcl/trunk/managementnode/lib/VCL/reclaim.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/reclaim.pm?rev=733162&r1=733161&r2=733162&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/reclaim.pm (original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/reclaim.pm Fri Jan  9 13:55:25 
2009
@@ -442,12 +442,12 @@
        my $next_image_name;
        my $next_image_id;
        my $next_imagerevision_id;
-
-       if($self->predictor->can("get_next_image")){
-               ($next_image_name, $next_image_id, $next_imagerevision_id) = 
$self->predictor->get_next_image();
+       
+       if($self->data->can("get_next_image_dataStructure")){
+               ($next_image_name, $next_image_id, $next_imagerevision_id) = 
$self->data->get_next_image_dataStructure();
        }
        else{
-               notify($ERRORS{'WARNING'}, 0, "predictor module does not 
support get_next_image, calling get_next_image_default");
+               notify($ERRORS{'WARNING'}, 0, "predictor module does not 
support get_next_image_dataStructure, calling get_next_image_default from 
utils");
                ($next_image_name, $next_image_id, $next_imagerevision_id) = 
get_next_image_default($computer_id);
        }
 


Reply via email to