You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by ar...@apache.org on 2014/09/19 22:41:10 UTC
svn commit: r1626325 - in
/vcl/trunk/managementnode/lib/VCL/Module/Predictive: Level_0.pm Level_1.pm
Author: arkurth
Date: Fri Sep 19 20:41:09 2014
New Revision: 1626325
URL: http://svn.apache.org/r1626325
Log:
Cleaned up indentation and formatting in Level_0.pm and Level_1.pm.
Modified:
vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm
vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.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=1626325&r1=1626324&r2=1626325&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_0.pm Fri Sep 19 20:41:09 2014
@@ -78,64 +78,63 @@ sub get_next_image {
exit 1;
}
#notify($ERRORS{'WARNING'}, 0, "get_next_image_revision works!");
-
+
# Retrieve variables from the DataStructure
my $request_id = $self->data->get_request_id();
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 $notify_prefix = "predictive_reload_Level_0: ";
-
+
notify($ERRORS{'OK'}, 0, "$notify_prefix for $computer_id");
-
+
#check if node is part of block reservation
- if(is_inblockrequest($computer_id)){
+ 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);
-
- if(defined($block_ret_array[0]) && $block_ret_array[0]){
+ 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;
}
else{
notify($ERRORS{'WARNING'}, 0, "computer $computer_id is part of blockComputers, failed to return image info");
}
-
}
-
+
my $select_statement = "
- SELECT DISTINCT
- req.start AS starttime,
- ir.imagename AS imagename,
- res.imagerevisionid AS imagerevisionid,
- res.imageid AS imageid
- FROM
- reservation res,
- request req,
- image i,
- state s,
- imagerevision ir
- WHERE
- res.requestid = req.id
- AND req.stateid = s.id
- AND i.id = res.imageid
- AND ir.id = res.imagerevisionid
- AND res.computerid = $computer_id
- AND (s.name = \'new\' OR s.name = \'reload\' OR s.name = \'imageprep\')
- ";
-
+ SELECT DISTINCT
+ req.start AS starttime,
+ ir.imagename AS imagename,
+ res.imagerevisionid AS imagerevisionid,
+ res.imageid AS imageid
+ FROM
+ reservation res,
+ request req,
+ image i,
+ state s,
+ imagerevision ir
+ WHERE
+ res.requestid = req.id
+ AND req.stateid = s.id
+ AND i.id = res.imageid
+ AND ir.id = res.imagerevisionid
+ AND res.computerid = $computer_id
+ AND (s.name = \'new\' OR s.name = \'reload\' OR s.name = \'imageprep\')
+ ";
+
# Call the database select subroutine
# This will return an array of one or more rows based on the select statement
my @selected_rows = database_select($select_statement);
my @ret_array;
-
+
# Check to make sure 1 or more rows were returned
if (scalar @selected_rows > 0) {
# Loop through list of upcoming reservations
# Based on the start time load the next one
-
+
my $now = time();
-
+
# It contains a hash
for (@selected_rows) {
my %reservation_row = %{$_};
@@ -154,29 +153,29 @@ sub get_next_image {
}
} ## end for (@selected_rows)
} ## end if (scalar @selected_rows > 0)
-
+
# No upcoming reservations - fetch next image information
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
+ 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
";
-
-
+
+
# 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");
@@ -187,13 +186,12 @@ sub get_next_image {
return 0;
}
notify($ERRORS{'OK'}, 0, "$notify_prefix returning nextimage image=$next_selected_rows[0]{imagename} imageid=$next_selected_rows[0]{imageid}");
- push(@ret_array, $next_selected_rows[0]{imagename}, $next_selected_rows[0]{imageid}, $next_selected_rows[0]{imagerevisionid});
+ push (@ret_array, $next_selected_rows[0]{imagename}, $next_selected_rows[0]{imageid}, $next_selected_rows[0]{imagerevisionid});
#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");
+ notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to clear next_image_id for computerid $computer_id");
}
return @ret_array;
-
} ## end sub get_next_image_revision
#/////////////////////////////////////////////////////////////////////////////
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=1626325&r1=1626324&r2=1626325&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/Module/Predictive/Level_1.pm Fri Sep 19 20:41:09 2014
@@ -77,66 +77,63 @@ sub get_next_image {
notify($ERRORS{'CRITICAL'}, 0, "subroutine was called as a function, it must be called as a class method, process exiting");
exit 1;
}
- #notify($ERRORS{'WARNING'}, 0, "get_next_image_revision works!");
-
+
# Retrieve variables from the DataStructure
- my $request_id = $self->data->get_request_id();
- 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 $request_id = $self->data->get_request_id();
+ 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 :";
-
+
notify($ERRORS{'OK'}, 0, "$notify_prefix starting predictive_reload_level_1 for $computer_id");
-
- #check if node is part of block reservation
- if(is_inblockrequest($computer_id)){
+
+ # 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);
-
- if(defined($block_ret_array[0]) && $block_ret_array[0]){
+ if (defined($block_ret_array[0]) && $block_ret_array[0]) {
return @block_ret_array;
}
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) {
+
+ # 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
+ 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
";
-
- # 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");
+ 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});
+ push (@next_image_ret_array, $next_selected_rows[0]{imagename}, $next_selected_rows[0]{imageid}, $next_selected_rows[0]{imagerevisionid});
#Clear next_imageid
if(!clear_next_image_id($computer_id)){
@@ -144,52 +141,46 @@ sub get_next_image {
}
return @next_image_ret_array;
}
-
}
-
-
+
my $select_statement = "
- SELECT DISTINCT
- req.start AS starttime,
- ir.imagename AS imagename,
- res.imagerevisionid AS imagerevisionid,
- res.imageid AS imageid
- FROM
- reservation res,
- request req,
- image i,
- state s,
- imagerevision ir
- WHERE
- res.requestid = req.id
- AND req.stateid = s.id
- AND i.id = res.imageid
- AND ir.id = res.imagerevisionid
- AND res.computerid = $computer_id
- AND (s.name = \'new\' OR s.name = \'reload\' OR s.name = \'imageprep\')
- ";
-
+ SELECT DISTINCT
+ req.start AS starttime,
+ ir.imagename AS imagename,
+ res.imagerevisionid AS imagerevisionid,
+ res.imageid AS imageid
+ FROM
+ reservation res,
+ request req,
+ image i,
+ state s,
+ imagerevision ir
+ WHERE
+ res.requestid = req.id
+ AND req.stateid = s.id
+ AND i.id = res.imageid
+ AND ir.id = res.imagerevisionid
+ AND res.computerid = $computer_id
+ AND (s.name = \'new\' OR s.name = \'reload\' OR s.name = \'imageprep\')
+ ";
+
# Call the database select subroutine
# This will return an array of one or more rows based on the select statement
my @selected_rows = database_select($select_statement);
-
# Check to make sure 1 or more rows were returned
if (scalar @selected_rows > 0) {
# Loop through list of upcoming reservations
# Based on the start time load the next one
-
+
my $now = time();
-
+
# It contains a hash
for (@selected_rows) {
my %reservation_row = %{$_};
- # $reservation_row{starttime}
- # $reservation_row{imagename}
- # $reservation_row{imagerevisionid}
- # $reservation_row{imageid}
my $epoch_start = convert_to_epoch_seconds($reservation_row{starttime});
- my $diff = $epoch_start - $now;
+ my $diff = $epoch_start - $now;
+
# If start time is less than 50 minutes from now return this image
notify($ERRORS{'OK'}, 0, "$notify_prefix diff= $diff image= $reservation_row{imagename} imageid=$reservation_row{imageid}");
if ($diff < (50 * 60)) {
@@ -199,20 +190,21 @@ sub get_next_image {
}
} ## end for (@selected_rows)
} ## end if (scalar @selected_rows > 0)
-
+
# No upcoming reservations - determine most popular, unloaded image
-
+
# determine state of system
-
+
# get machine type
my $select_type = "
- SELECT
- type,provisioningid
- FROM
- computer
- WHERE
- id = $computer_id
- ";
+ SELECT
+ type,provisioningid
+ FROM
+ computer
+ WHERE
+ id = $computer_id
+ ";
+
my @data = database_select($select_type);
if (scalar @data == 0) {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
@@ -220,102 +212,106 @@ sub get_next_image {
}
my $type = $data[0]{type};
my $provisioningid = $data[0]{provisioningid};
-
+
# online machines
my $select_online = "
- SELECT
- COUNT(id) as cnt
- FROM
- computer
- WHERE
- stateid IN (2, 3, 6, 8, 11)
- AND type = '$type'
- ";
+ SELECT
+ COUNT(id) as cnt
+ FROM
+ computer
+ WHERE
+ stateid IN (2, 3, 6, 8, 11)
+ AND type = '$type'
+ ";
+
@data = database_select($select_online);
if (scalar @data == 0) {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
return 0;
}
my $online = $data[0]{cnt};
-
+
# available machines
my $select_available = "
- SELECT
- COUNT(id) AS cnt
- FROM
- computer
- WHERE
- stateid = 2
- AND type = '$type'
- ";
+ SELECT
+ COUNT(id) AS cnt
+ FROM
+ computer
+ WHERE
+ stateid = 2
+ AND type = '$type'
+ ";
+
@data = database_select($select_available);
if (scalar @data == 0) {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
return 0;
}
+
my $avail = $data[0]{cnt};
-
+
# check if > X% usage, look at past X days, otherwise, look at past 2 months
my $timeframe;
my $notavail = ($online - $avail);
my $usage = ($notavail / $online);
- if ( $usage > 0.40) {
- $timeframe = '1 DAY';
- }
- elsif( $usage > 0.35) {
- $timeframe = '2 DAY';
- }
- elsif( $usage > 0.30) {
- $timeframe = '3 DAY';
- }
- elsif( $usage > 0.25) {
- $timeframe = '4 DAY';
- }
- elsif( $usage > 0.20) {
- $timeframe = '5 DAY';
- }
- elsif( $usage > 0.15) {
- $timeframe = '10 DAY';
- }
- elsif( $usage > 0.10) {
- $timeframe = '20 DAY';
- }
- elsif( $usage > 0.05) {
- $timeframe = '30 DAY';
- }
+ if ($usage > 0.40) {
+ $timeframe = '1 DAY';
+ }
+ elsif ($usage > 0.35) {
+ $timeframe = '2 DAY';
+ }
+ elsif ($usage > 0.30) {
+ $timeframe = '3 DAY';
+ }
+ elsif ($usage > 0.25) {
+ $timeframe = '4 DAY';
+ }
+ elsif ($usage > 0.20) {
+ $timeframe = '5 DAY';
+ }
+ elsif ($usage > 0.15) {
+ $timeframe = '10 DAY';
+ }
+ elsif ($usage > 0.10) {
+ $timeframe = '20 DAY';
+ }
+ elsif ($usage > 0.05) {
+ $timeframe = '30 DAY';
+ }
else {
$timeframe = '2 MONTH';
}
-
+
notify($ERRORS{'OK'}, 0, "$notify_prefix computer_short_name= $computer_short_name type= $type");
- notify($ERRORS{'OK'}, 0, "$notify_prefix avail= $avail notavail= $notavail online= $online timeframe= $timeframe");
-
+ notify($ERRORS{'OK'}, 0, "$notify_prefix avail= $avail notavail= $notavail online= $online timeframe= $timeframe");
+
# what images map to this computer
my $select_mapped_images = "
- SELECT
- id
- FROM
- resource
- WHERE
- resourcetypeid = 12
- AND subid = $computer_id
- ";
+ SELECT
+ id
+ FROM
+ resource
+ WHERE
+ resourcetypeid = 12
+ AND subid = $computer_id
+ ";
@data = database_select($select_mapped_images);
if (scalar @data == 0) {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
return 0;
}
my $resourceid = $data[0]{id};
-
+
my $select_compgrps1 = "
- SELECT
- resourcegroupid
- FROM
- resourcegroupmembers
- WHERE
- resourceid = $resourceid
- ";
+ SELECT
+ resourcegroupid
+ FROM
+ resourcegroupmembers
+ WHERE
+ resourceid = $resourceid
+ ";
@data = database_select($select_compgrps1);
+
if (scalar @data == 0) {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
return 0;
@@ -325,34 +321,36 @@ sub get_next_image {
my %row = %{$_};
push(@compgroups, $row{resourcegroupid});
}
-
+
my $inlist = join(',', @compgroups);
my $select_imggrps1 = "
- SELECT
- resourcegroupid2
- FROM
- resourcemap
- WHERE
- resourcetypeid1 = 12
- AND resourcegroupid1 IN ($inlist)
- AND resourcetypeid2 = 13
- ";
+ SELECT
+ resourcegroupid2
+ FROM
+ resourcemap
+ WHERE
+ resourcetypeid1 = 12
+ AND resourcegroupid1 IN ($inlist)
+ AND resourcetypeid2 = 13
+ ";
@data = database_select($select_imggrps1);
+
my @imggroups;
foreach (@data) {
my %row = %{$_};
push(@imggroups, $row{resourcegroupid2});
}
+
my $select_imggrps2 = "
- SELECT
- resourcegroupid1
- FROM
- resourcemap
- WHERE
- resourcetypeid2 = 12
- AND resourcegroupid2 IN ($inlist)
- AND resourcetypeid1 = 13
- ";
+ SELECT
+ resourcegroupid1
+ FROM
+ resourcemap
+ WHERE
+ resourcetypeid2 = 12
+ AND resourcegroupid2 IN ($inlist)
+ AND resourcetypeid1 = 13
+ ";
@data = database_select($select_imggrps2);
foreach (@data) {
my %row = %{$_};
@@ -362,30 +360,29 @@ sub get_next_image {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
return 0;
}
-
-
+
$inlist = join(',', @imggroups);
my $select_imageids = "
- SELECT
- DISTINCT(r.subid)
- FROM
- image i,
- OS o,
- resource r,
- resourcegroupmembers rgm,
- OSinstalltype osit,
- provisioningOSinstalltype posit
- WHERE
- rgm.resourceid = r.id
- AND r.resourcetypeid = 13
- AND rgm.resourcegroupid IN ($inlist)
- AND r.subid = i.id
- AND i.deleted = 0
- AND i.OSid = o.id
- AND o.installtype = osit.name
- AND osit.id = posit.OSinstalltypeid
- AND posit.provisioningid = $provisioningid
- ";
+ SELECT
+ DISTINCT(r.subid)
+ FROM
+ image i,
+ OS o,
+ resource r,
+ resourcegroupmembers rgm,
+ OSinstalltype osit,
+ provisioningOSinstalltype posit
+ WHERE
+ rgm.resourceid = r.id
+ AND r.resourcetypeid = 13
+ AND rgm.resourcegroupid IN ($inlist)
+ AND r.subid = i.id
+ AND i.deleted = 0
+ AND i.OSid = o.id
+ AND o.installtype = osit.name
+ AND osit.id = posit.OSinstalltypeid
+ AND posit.provisioningid = $provisioningid
+ ";
my @imgids;
@data = database_select($select_imageids);
if (scalar @data == 0) {
@@ -398,20 +395,21 @@ sub get_next_image {
}
my $numselected_imagids = @imgids;
notify($ERRORS{'OK'}, 0, "$notify_prefix $numselected_imagids available images can go on $computer_short_name");
-
+
# which of those are loaded
$inlist = join(',', @imgids);
my $select_loaded = "
- SELECT
- DISTINCT(currentimageid),
- COUNT(currentimageid) AS count
- FROM
- computer
- WHERE
- currentimageid IN ($inlist)
- AND stateid = 2
- GROUP BY currentimageid
- HAVING count > 1";
+ SELECT
+ DISTINCT(currentimageid),
+ COUNT(currentimageid) AS count
+ FROM
+ computer
+ WHERE
+ currentimageid IN ($inlist)
+ AND stateid = 2
+ GROUP BY currentimageid
+ HAVING count > 1
+ ";
@data = database_select($select_loaded);
my @loaded;
foreach (@data) {
@@ -420,7 +418,7 @@ sub get_next_image {
}
my $already_loaded_once = @loaded;
notify($ERRORS{'OK'}, 0, "$notify_prefix $already_loaded_once of $numselected_imagids available images loaded at least once");
-
+
# which of those are not loaded (find difference of @imagids and @loaded)
my (@intersection, @notloaded, $element);
@intersection = @notloaded = ();
@@ -429,59 +427,56 @@ sub get_next_image {
foreach $element (keys %count) {
push @{$count{$element} > 1 ? \@intersection : \@notloaded}, $element;
}
-
+
my $not_loaded = @notloaded;
notify($ERRORS{'OK'}, 0, "$notify_prefix $not_loaded of $numselected_imagids total images available for selection");
-
+
# get the most popular in $timeframe
$inlist = join(',', @notloaded);
my $select_imageid = "
- SELECT
- COUNT(imageid) AS cnt,
- imageid
- FROM
- log
- WHERE
- imageid IN ($inlist)
- AND start > (NOW() - INTERVAL $timeframe)
- GROUP BY imageid
- ORDER BY cnt DESC
- LIMIT 1
- ";
+ SELECT
+ COUNT(imageid) AS cnt,
+ imageid
+ FROM
+ log
+ WHERE
+ imageid IN ($inlist)
+ AND start > (NOW() - INTERVAL $timeframe)
+ GROUP BY imageid
+ ORDER BY cnt DESC
+ LIMIT 1
+ ";
@data = database_select($select_imageid);
if (scalar @data == 0) {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
return 0;
}
my $imageid = $data[0]{imageid};
-
+
notify($ERRORS{'OK'}, 0, "$notify_prefix imageid= $imageid is most popular image during last $timeframe");
-
+
# get extra data about the image
my $select_extra = "
- SELECT
- i.name,
- r.id
- FROM
- image i,
- imagerevision r
- WHERE
- i.id = $imageid
- AND r.imageid = $imageid
- AND r.production = 1
- ";
+ SELECT
+ i.name,
+ r.id
+ FROM
+ image i,
+ imagerevision r
+ WHERE
+ i.id = $imageid
+ AND r.imageid = $imageid
+ AND r.production = 1
+ ";
@data = database_select($select_extra);
if (scalar @data == 0) {
notify($ERRORS{'WARNING'}, 0, "$notify_prefix failed to fetch preferred image for computer_id $computer_id");
return 0;
}
-
-
+
notify($ERRORS{'OK'}, 0, "$notify_prefix $computer_id $data[0]{name}, $imageid, $data[0]{id}");
push(@ret_array, $data[0]{name}, $imageid, $data[0]{id});
return @ret_array;
-
-
} ## end sub get_next_image_revision
#/////////////////////////////////////////////////////////////////////////////