Author: fapeeler
Date: Tue Dec 10 20:38:04 2013
New Revision: 1549959
URL: http://svn.apache.org/r1549959
Log:
VCL-739
use nextimageid if set
clear nextimageid after pulling info
removed updating of nextimageid for reload
Modified:
vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm
vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.pm
vcl/trunk/managementnode/lib/VCL/new.pm
vcl/trunk/managementnode/lib/VCL/utils.pm
Modified: vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm
URL:
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm?rev=1549959&r1=1549958&r2=1549959&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm Tue Dec 10
20:38:04 2013
@@ -172,6 +172,11 @@ sub get_next_image {
AND computer.id = $computer_id
";
+ #Clear next_imageid
+ if(!clear_next_image_id($computer_id)){
+ notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to clear
next_image_id for computerid $computer_id");
+ }
+
# Call the database select subroutine
# This will return an array of one or more rows based on the select
statement
my @next_selected_rows = database_select($select_nextimage);
Modified: vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.pm
URL:
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.pm?rev=1549959&r1=1549958&r2=1549959&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.pm Tue Dec 10
20:38:04 2013
@@ -84,6 +84,7 @@ sub get_next_image {
my $reservation_id = $self->data->get_reservation_id();
my $computer_id = $self->data->get_computer_id();
my $computer_short_name = $self->data->get_computer_short_name();
+ my $computer_nextimage_id = $self->data->get_computer_nextimage_id();
my @ret_array;
my $notify_prefix = "predictive_reload_Level_1 :";
@@ -93,7 +94,7 @@ sub get_next_image {
#check if node is part of block reservation
if(is_inblockrequest($computer_id)){
notify($ERRORS{'DEBUG'}, 0, "computer id $computer_id is in
blockComputers table");
- my @block_ret_array =
get_block_request_image_info($computer_id);
+ my @block_ret_array =
get_block_request_image_info($computer_id);
if(defined($block_ret_array[0]) && $block_ret_array[0]){
return @block_ret_array;
@@ -101,6 +102,47 @@ sub get_next_image {
else{
notify($ERRORS{'WARNING'}, 0, "computer $computer_id is
part of blockComputers, failed to return image info");
}
+ }
+
+ #If nextimageid set, set to default 0 and return the imageid
+ if(defined($computer_nextimage_id) && $computer_nextimage_id) {
+ #Get computer_nextimage_id info
+ my $select_nextimage = "
+ SELECT DISTINCT
+ imagerevision.imagename AS imagename,
+ imagerevision.id AS imagerevisionid,
+ image.id AS imageid
+ FROM
+ image,
+ computer,
+ imagerevision
+ WHERE
+ imagerevision.imageid = computer.nextimageid
+ AND imagerevision.production = 1
+ AND computer.nextimageid = image.id
+ AND computer.id = $computer_id
+ ";
+
+ #Clear next_imageid
+ if(!clear_next_image_id($computer_id)){
+ notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to
clear next_image_id for computerid $computer_id");
+ }
+
+ # Call the database select subroutine
+ # This will return an array of one or more rows based on the
select statement
+ my @next_selected_rows = database_select($select_nextimage);
+ # Check to make sure at least 1 row were returned
+ if (scalar @next_selected_rows == 0) {
+ notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to
fetch next image for computerid $computer_id");
+ }
+ elsif (scalar @next_selected_rows > 1) {
notify($ERRORS{'WARNING'}, 0, "" . scalar @next_selected_rows . " rows were
returned from database select");
+ }
+ else {
+ notify($ERRORS{'OK'}, 0, "$notify_prefix returning
nextimage image=$next_selected_rows[0]{imagename}
imageid=$next_selected_rows[0]{imageid}");
+ my @next_image_ret_array;
+ push(@next_image_ret_array,
$next_selected_rows[0]{imagename}, $next_selected_rows[0]{imageid},
$next_selected_rows[0]{imagerevisionid});
+ return @next_image_ret_array;
+ }
}
Modified: vcl/trunk/managementnode/lib/VCL/new.pm
URL:
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/new.pm?rev=1549959&r1=1549958&r2=1549959&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/new.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/new.pm Tue Dec 10 20:38:04 2013
@@ -671,7 +671,7 @@ sub reload_image {
}
# Update the current image ID in the computer table
- if (update_currentimage($computer_id, $image_id, $imagerevision_id,
$image_id)) {
+ if (update_currentimage($computer_id, $image_id, $imagerevision_id)) {
notify($ERRORS{'OK'}, 0, "updated computer table for
$computer_short_name: currentimageid=$image_id");
}
else {
Modified: vcl/trunk/managementnode/lib/VCL/utils.pm
URL:
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1549959&r1=1549958&r2=1549959&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/utils.pm Tue Dec 10 20:38:04 2013
@@ -87,6 +87,7 @@ our @EXPORT = qw(
check_ssh
check_time
clearfromblockrequest
+ clear_next_image_id
convert_to_datetime
convert_to_epoch_seconds
create_management_node_directory
@@ -3490,7 +3491,7 @@ EOF
my $imagemeta_id = $image_info->{imagemetaid};
my $imagemeta_info = get_imagemeta_info($imagemeta_id);
$image_info->{imagemeta} = $imagemeta_info;
-
+
my $image_owner_id = $image_info->{ownerid};
my $image_owner_user_info = get_user_info($image_owner_id);
$image_info->{owner} = $image_owner_user_info;
@@ -5631,6 +5632,46 @@ sub update_blockrequest_processing {
}
} ## end sub update_blockrequest_processing
+
+
+#/////////////////////////////////////////////////////////////////////////////
+
+=head2 clear_next_image_id
+
+ Parameters : $computer_id
+ Returns : 0 or 1
+ Description : sets next_image_id to 0
+
+=cut
+sub clear_next_image_id {
+ my ($computer_id) = @_;
+ my ($package, $filename, $line, $sub) = caller(0);
+ # Check the passed parameter
+ if (!(defined($computer_id))) {
+ notify($ERRORS{'WARNING'}, 0, "computer_id was not specified");
+ return 0;
+ }
+
+ my $update_statement = "
+ UPDATE
+ computer
+ SET
+ nextimageid = '0'
+ WHERE
+ id = $computer_id
+ ";
+
+ if (database_execute($update_statement)) {
+ notify($ERRORS{'OK'}, 0, "updated nextimageid to 0 for computer
id $computer_id");
+ return 1;
+ }
+ else {
+ notify($ERRORS{'WARNING'}, 0, "unable to update database,
failed to set nextimageid=0 for computerid $computer_id");
+ return 0;
+ }
+
+}
+
#/////////////////////////////////////////////////////////////////////////////
=head2 clearfromblockrequest