Author: arkurth
Date: Fri Nov 21 15:38:06 2014
New Revision: 1640940

URL: http://svn.apache.org/r1640940
Log:
VCL-800
Updated utils.pm::switch_state to not set log.ending to failed if the 
request.state = image, checkpoint, or inuse.

Updated State.pm::reservation_failed to only update log.ending to failed if the 
state is new or reserved.

Other
Changed abbreviated $reservation_cnt variable in vcld to $reservation_count.

Modified:
    vcl/trunk/managementnode/bin/vcld
    vcl/trunk/managementnode/lib/VCL/Module/State.pm
    vcl/trunk/managementnode/lib/VCL/utils.pm

Modified: vcl/trunk/managementnode/bin/vcld
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/bin/vcld?rev=1640940&r1=1640939&r2=1640940&view=diff
==============================================================================
--- vcl/trunk/managementnode/bin/vcld (original)
+++ vcl/trunk/managementnode/bin/vcld Fri Nov 21 15:38:06 2014
@@ -207,7 +207,7 @@ sub main () {
 
                        
                        my @reservation_ids = sort { $a <=> $b } keys 
%{$info{request}{$request_id}{reservation}};
-                       my $reservation_cnt = @reservation_ids;
+                       my $reservation_count = @reservation_ids;
                        
                        $ENV{request_id} = $request_id;
                        $ENV{reservation_id} = 0;
@@ -249,7 +249,7 @@ sub main () {
                                
                                # Figure out the status of this reservation 
based on reservation times and the request state
                                # check_time_result can be: start, preload, 
end, poll, old, remove, 0
-                               my $check_time_result = 
check_time($request_start, $request_end, $reservation_lastcheck, 
$request_state_name, $request_laststate_name, 
$server_request_id,$reservation_cnt);
+                               my $check_time_result = 
check_time($request_start, $request_end, $reservation_lastcheck, 
$request_state_name, $request_laststate_name, $server_request_id, 
$reservation_count);
                                
                                # Do nothing if check_time returned 0
                                # Check this before querying for the large set 
of request data
@@ -579,7 +579,7 @@ sub make_new_child {
                                $state_object = 
($state_module)->new({%{$request_data}, data_structure => $data_structure});
                        };
                        
-                       if ($state_object) {
+                       if (!$state_object) {
                                notify($ERRORS{'OK'}, $LOGFILE, "$state_module 
object created and initialized");
                                
                                # Call the state object's process() subroutine

Modified: vcl/trunk/managementnode/lib/VCL/Module/State.pm
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/State.pm?rev=1640940&r1=1640939&r2=1640940&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/State.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/State.pm Fri Nov 21 15:38:06 2014
@@ -342,7 +342,7 @@ sub reservation_failed {
                notify($ERRORS{'WARNING'}, 0, "unable to set request to 
$new_request_state_name/$request_state_name");
        }
        
-       if ($request_state_name =~ /^(new|reserved|inuse|image)/){
+       if ($request_state_name =~ /^(new|reserved)/){
                # Update log table ending column to failed for this request
                if (update_log_ending($request_logid, "failed")) {
                        notify($ERRORS{'OK'}, 0, "updated log ending value to 
'failed', logid=$request_logid");

Modified: vcl/trunk/managementnode/lib/VCL/utils.pm
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1640940&r1=1640939&r2=1640940&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/utils.pm Fri Nov 21 15:38:06 2014
@@ -6067,8 +6067,8 @@ sub switch_state {
        my $request_id                 = $request_data->{id};
        my $request_logid              = $request_data->{logid};
        my $reservation_id             = $request_data->{RESERVATIONID};
-       my $request_state_name_old     = $request_data->{state}{name};
-       my $request_laststate_name_old = $request_data->{laststate}{name};
+       my $request_state_name_old     = $request_data->{state}{name} || '';
+       my $request_laststate_name_old = $request_data->{laststate}{name} || '';
        my $computer_id                = 
$request_data->{reservation}{$reservation_id}{computer}{id};
        my $computer_type              = 
$request_data->{reservation}{$reservation_id}{computer}{type};
        my $computer_state_name_old    = 
$request_data->{reservation}{$reservation_id}{computer}{state}{name};
@@ -6094,7 +6094,7 @@ sub switch_state {
        
        # Don't set request state to failed if previous state is image or inuse
        if ($request_state_name_new && $request_state_name_new eq 'failed') {
-               if ($request_state_name_old eq 'image') {
+               if ($request_state_name_old =~ /(image|checkpoint)/) {
                        notify($ERRORS{'DEBUG'}, 0, "previous request state is 
$request_state_name_old, not setting request state to $request_state_name_new, 
setting request state to maintenance");
                        $request_state_name_new = 'maintenance';
                        $computer_state_name_new = 'maintenance';
@@ -6106,6 +6106,15 @@ sub switch_state {
                }
        }
        
+       # Don't set log.ending to failed for inuse - this throws off the counts 
on the dashboard page
+       # Don't set log.ending to failed for image or checkpoint
+       if ($request_log_ending && $request_log_ending =~ /(failed)/) {
+               if ($request_state_name_old =~ /(image|checkpoint|inuse)/) {
+                       notify($ERRORS{'DEBUG'}, 0, "request state is 
$request_state_name_old, not setting log.ending to $request_log_ending");
+                       $request_log_ending = 0;
+               }
+       }
+       
        # Check if new request state was passed
        if (!$request_state_name_new) {
                notify($ERRORS{'DEBUG'}, 0, "request state was not specified, 
state not changed");


Reply via email to