Author: arkurth
Date: Wed Mar  6 19:20:07 2013
New Revision: 1453493

URL: http://svn.apache.org/r1453493
Log:
VCL-16
Added timestamps to cached result from utils.pm::get_*_info() subroutines. 
Added timestamp check if cached data is returned. If cached data is too old it 
is retrieved again.

VCL-679
Updated get_computer_info to call get_production_imagerevision_info when 
assembling the nextimage info.

Modified:
    vcl/trunk/managementnode/lib/VCL/utils.pm

Modified: vcl/trunk/managementnode/lib/VCL/utils.pm
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1453493&r1=1453492&r2=1453493&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/utils.pm Wed Mar  6 19:20:07 2013
@@ -123,6 +123,7 @@ our @EXPORT = qw(
   get_current_file_name
   get_current_package_name
   get_current_subroutine_name
+  get_database_table_columns
   get_file_size_info_string
   get_group_name
   get_highest_imagerevision_info
@@ -3809,29 +3810,29 @@ EOF
                        }
                }
                
-               # Store duration in epoch seconds format
-               my $request_start_epoch = 
convert_to_epoch_seconds($request_info->{start});
-               my $request_end_epoch = 
convert_to_epoch_seconds($request_info->{end});
-               $request_info->{DURATION} = ($request_end_epoch - 
$request_start_epoch);
-               
-               # Add the image info to the hash
-               my $image_id = 
$request_info->{reservation}{$reservation_id}{imageid};
-               my $image_info = get_image_info($image_id, 1);
-               $request_info->{reservation}{$reservation_id}{image} = 
$image_info;
-               
-               # Add the imagerevision info to the hash
-               my $imagerevision_id = 
$request_info->{reservation}{$reservation_id}{imagerevisionid};
-               my $imagerevision_info = 
get_imagerevision_info($imagerevision_id, 1);
-               $request_info->{reservation}{$reservation_id}{imagerevision} = 
$imagerevision_info;
-               
-               # Add the computer info to the hash
-               my $computer_id = 
$request_info->{reservation}{$reservation_id}{computerid};
-               my $computer_info = get_computer_info($computer_id, 1);
-               $request_info->{reservation}{$reservation_id}{computer} = 
$computer_info;
-               
-               # Add the connect method info to the hash
-               my $connect_method_info = 
get_connect_method_info($imagerevision_id);
-               $request_info->{reservation}{$reservation_id}{connect_methods} 
= $connect_method_info;
+                       # Store duration in epoch seconds format
+                       my $request_start_epoch = 
convert_to_epoch_seconds($request_info->{start});
+                       my $request_end_epoch = 
convert_to_epoch_seconds($request_info->{end});
+                       $request_info->{DURATION} = ($request_end_epoch - 
$request_start_epoch);
+                       
+                       # Add the image info to the hash
+                       my $image_id = 
$request_info->{reservation}{$reservation_id}{imageid};
+                       my $image_info = get_image_info($image_id, 1);
+                       $request_info->{reservation}{$reservation_id}{image} = 
$image_info;
+                       
+                       # Add the imagerevision info to the hash
+                       my $imagerevision_id = 
$request_info->{reservation}{$reservation_id}{imagerevisionid};
+                       my $imagerevision_info = 
get_imagerevision_info($imagerevision_id);
+                       
$request_info->{reservation}{$reservation_id}{imagerevision} = 
$imagerevision_info;
+                       
+                       # Add the computer info to the hash
+                       my $computer_id = 
$request_info->{reservation}{$reservation_id}{computerid};
+                       my $computer_info = get_computer_info($computer_id, 1);
+                       $request_info->{reservation}{$reservation_id}{computer} 
= $computer_info;
+                       
+                       # Add the connect method info to the hash
+                       my $connect_method_info = 
get_connect_method_info($imagerevision_id);
+                       
$request_info->{reservation}{$reservation_id}{connect_methods} = 
$connect_method_info;
                
                # Add the managementnode info to the hash
                my $management_node_id = 
$request_info->{reservation}{$reservation_id}{managementnodeid};
@@ -3849,39 +3850,39 @@ EOF
                $request_info->{reservation}{$reservation_id}{users}{$user_id} 
= get_user_info($user_id);
                
$request_info->{reservation}{$reservation_id}{users}{$user_id}{ROOTACCESS} = 
$imagemeta_root_access;
                
-               # If server request and logingroupid is set, add user group 
members to hash, set ROOTACCESS to 0
-               if (my $login_group_id = 
$request_info->{reservation}{$reservation_id}{serverrequest}{logingroupid}) {
-                       my $login_group_member_info = 
get_user_group_member_info($login_group_id);
-                       for my $login_user_id (keys %$login_group_member_info) {
-                               
$request_info->{reservation}{$reservation_id}{users}{$login_user_id} = 
get_user_info($login_user_id);
-                               
$request_info->{reservation}{$reservation_id}{users}{$login_user_id}{ROOTACCESS}
 = 0;
+                       # If server request and logingroupid is set, add user 
group members to hash, set ROOTACCESS to 0
+                       if (my $login_group_id = 
$request_info->{reservation}{$reservation_id}{serverrequest}{logingroupid}) {
+                               my $login_group_member_info = 
get_user_group_member_info($login_group_id);
+                               for my $login_user_id (keys 
%$login_group_member_info) {
+                                       
$request_info->{reservation}{$reservation_id}{users}{$login_user_id} = 
get_user_info($login_user_id);
+                                       
$request_info->{reservation}{$reservation_id}{users}{$login_user_id}{ROOTACCESS}
 = 0;
+                               }
                        }
-               }
-               
-               # If server request and admingroupid is set, add user group 
members to hash, set ROOTACCESS to 1
-               if (my $admin_group_id = 
$request_info->{reservation}{$reservation_id}{serverrequest}{admingroupid}) {
-                       my $admin_group_member_info = 
get_user_group_member_info($admin_group_id);
-                       for my $admin_user_id (keys %$admin_group_member_info, 
$user_id) {
-                               
$request_info->{reservation}{$reservation_id}{users}{$admin_user_id} = 
get_user_info($admin_user_id);
-                               
$request_info->{reservation}{$reservation_id}{users}{$admin_user_id}{ROOTACCESS}
 = 1;
+                       
+                       # If server request and admingroupid is set, add user 
group members to hash, set ROOTACCESS to 1
+                       if (my $admin_group_id = 
$request_info->{reservation}{$reservation_id}{serverrequest}{admingroupid}) {
+                               my $admin_group_member_info = 
get_user_group_member_info($admin_group_id);
+                               for my $admin_user_id (keys 
%$admin_group_member_info, $user_id) {
+                                       
$request_info->{reservation}{$reservation_id}{users}{$admin_user_id} = 
get_user_info($admin_user_id);
+                                       
$request_info->{reservation}{$reservation_id}{users}{$admin_user_id}{ROOTACCESS}
 = 1;
+                               }
                        }
-               }
-               
-               # If server request or duration is greater >= 24 hrs disable 
user checks
-               if 
($request_info->{reservation}{$reservation_id}{serverrequest}{id}) {
-                       notify($ERRORS{'DEBUG'}, 0, "server sequest - disabling 
user checks");
-                       $request_info->{checkuser} = 0;
-                       
$request_info->{reservation}{$reservation_id}{serverrequest}{ALLOW_USERS} = 
$request_info->{user}{unityid};
-               }
-               elsif ($request_info->{DURATION} >= (60 * 60 * 24) ){
-                       notify($ERRORS{'DEBUG'}, 0, "request length > 24 hours, 
disabling user checks");
-                       $request_info->{checkuser} = 0;
-               }
-               
-               
$request_info->{reservation}{$reservation_id}{serverrequest}{id} ||= 0;
-               
$request_info->{reservation}{$reservation_id}{serverrequest}{fixedIP} ||= 0;
-               
$request_info->{reservation}{$reservation_id}{serverrequest}{fixedMAC} ||= 0;
-               
$request_info->{reservation}{$reservation_id}{serverrequest}{router} ||= 0;
+                       
+                       # If server request or duration is greater >= 24 hrs 
disable user checks
+                       if 
($request_info->{reservation}{$reservation_id}{serverrequest}{id}) {
+                               notify($ERRORS{'DEBUG'}, 0, "server sequest - 
disabling user checks");
+                               $request_info->{checkuser} = 0;
+                               
$request_info->{reservation}{$reservation_id}{serverrequest}{ALLOW_USERS} = 
$request_info->{user}{unityid};
+                       }
+                       elsif ($request_info->{DURATION} >= (60 * 60 * 24) ){
+                               notify($ERRORS{'DEBUG'}, 0, "request length > 
24 hours, disabling user checks");
+                               $request_info->{checkuser} = 0;
+                       }
+                       
+                       
$request_info->{reservation}{$reservation_id}{serverrequest}{id} ||= 0;
+                       
$request_info->{reservation}{$reservation_id}{serverrequest}{fixedIP} ||= 0;
+                       
$request_info->{reservation}{$reservation_id}{serverrequest}{fixedMAC} ||= 0;
+                       
$request_info->{reservation}{$reservation_id}{serverrequest}{router} ||= 0;
                
$request_info->{reservation}{$reservation_id}{serverrequest}{netmask} ||= 0;
                
$request_info->{reservation}{$reservation_id}{serverrequest}{DNSservers} ||= 0;
                
$request_info->{reservation}{$reservation_id}{serverrequest}{admingroupid} ||= 
0;
@@ -4094,7 +4095,17 @@ sub get_image_info {
                return;
        }
        
-       return $ENV{image_info}{$image_identifier} if (!$no_cache && 
$ENV{image_info}{$image_identifier});
+       # Check if cached image info exists
+       if (!$no_cache && defined($ENV{image_info}{$image_identifier})) {
+               # Check the time the info was last retrieved
+               my $data_age_seconds = (time - 
$ENV{image_info}{$image_identifier}{RETRIEVAL_TIME});
+               if ($data_age_seconds < 600) {
+                       return $ENV{image_info}{$image_identifier};
+               }
+               else {
+                       notify($ERRORS{'DEBUG'}, 0, "retrieving current image 
info for '$image_identifier' from database, cached data is stale: 
$data_age_seconds seconds old");
+               }
+       }
        
        # Get a hash ref containing the database column names
        my $database_table_columns = get_database_table_columns();
@@ -4206,6 +4217,7 @@ EOF
        
        #notify($ERRORS{'DEBUG'}, 0, "retrieved info for image 
'$image_identifier':\n" . format_data($image_info));
        $ENV{image_info}{$image_identifier} = $image_info;
+       $ENV{image_info}{$image_identifier}{RETRIEVAL_TIME} = time;
        return $ENV{image_info}{$image_identifier};
 }
 
@@ -4226,7 +4238,17 @@ sub get_imagerevision_info {
                return;
        }
        
-       return $ENV{imagerevision_info}{$imagerevision_identifier} if 
(!$no_cache && $ENV{imagerevision_info}{$imagerevision_identifier});
+       # Check if cached imagerevision info exists
+       if (!$no_cache && 
defined($ENV{imagerevision_info}{$imagerevision_identifier})) {
+               # Check the time the info was last retrieved
+               my $data_age_seconds = (time - 
$ENV{imagerevision_info}{$imagerevision_identifier}{RETRIEVAL_TIME});
+               if ($data_age_seconds < 600) {
+                       return 
$ENV{imagerevision_info}{$imagerevision_identifier};
+               }
+               else {
+                       notify($ERRORS{'DEBUG'}, 0, "retrieving current 
imagerevision info for '$imagerevision_identifier' from database, cached data 
is stale: $data_age_seconds seconds old");
+               }
+       }
 
        my $select_statement = <<EOF;
 SELECT
@@ -4274,6 +4296,7 @@ EOF
        
        # Add the info to %ENV so it doesn't need to be retrieved from the 
database again
        $ENV{imagerevision_info}{$imagerevision_identifier} = 
$imagerevision_info;
+       $ENV{imagerevision_info}{$imagerevision_identifier}{RETRIEVAL_TIME} = 
time;
        #notify($ERRORS{'DEBUG'}, 0, "retrieved info from database for 
imagerevision '$imagerevision_identifier':\n" . 
format_data($ENV{imagerevision_info}{$imagerevision_identifier}));
        return $ENV{imagerevision_info}{$imagerevision_identifier};
 }
@@ -4282,7 +4305,7 @@ EOF
 
 =head2 get_production_imagerevision_info
 
- Parameters  : $image_id
+ Parameters  : $image_id, $no_cache (optional)
  Returns     : Hash containing imagerevision data for the production revision 
of an image
  Description :
 
@@ -4290,7 +4313,7 @@ EOF
 
 
 sub get_production_imagerevision_info {
-       my ($image_identifier) = @_;
+       my ($image_identifier, $no_cache) = @_;
 
        # Check the passed parameter
        if (!defined($image_identifier)) {
@@ -4298,6 +4321,8 @@ sub get_production_imagerevision_info {
                return;
        }
        
+       return $ENV{production_imagerevision_info}{$image_identifier} if 
(!$no_cache && $ENV{production_imagerevision_info}{$image_identifier});
+       
        my $select_statement = <<EOF;
 SELECT
 id
@@ -4328,9 +4353,15 @@ EOF
                notify($ERRORS{'WARNING'}, 0, "" . scalar @selected_rows . " 
rows were returned from database select statement:\n$select_statement");
                return;
        }
-
+       
        my $imagerevision_id = $selected_rows[0]{id};
-       return get_imagerevision_info($imagerevision_id);
+       
+       my $imagerevision_info = get_imagerevision_info($imagerevision_id);
+       
+       $ENV{production_imagerevision_info}{$image_identifier} = 
$imagerevision_info;
+       notify($ERRORS{'DEBUG'}, 0, "retrieved info from database for 
production revision of image '$image_identifier'");
+       return $ENV{production_imagerevision_info}{$image_identifier};
+       
 } ## end sub get_production_imagerevision_info
 
 #/////////////////////////////////////////////////////////////////////////////
@@ -6885,18 +6916,18 @@ sub switch_state {
 
 sub get_management_node_blockrequests {
        my ($managementnode_id) = @_;
-
+       
        my ($package, $filename, $line, $sub) = caller(0);
-
+       
        # Check the passed parameter
        if (!defined($managementnode_id)) {
                notify($ERRORS{'WARNING'}, 0, "management node ID was not 
specified");
                return;
        }
-
+       
        # Create the select statement
        my $select_statement = "
-   SELECT
+       SELECT
        blockRequest.id AS blockRequest_id,
        blockRequest.name AS blockRequest_name,
        blockRequest.imageid AS blockRequest_imageid,
@@ -6926,10 +6957,10 @@ sub get_management_node_blockrequests {
        
        WHERE
        blockRequest.managementnodeid = $managementnode_id AND
-        blockRequest.status = 'accepted' AND
+   blockRequest.status = 'accepted' AND
        blockTimes.processed = '0' AND
        (blockTimes.skip = '0' AND blockTimes.start < (NOW() + INTERVAL 360 
MINUTE )) OR
-        blockTimes.end < NOW() 
+   blockTimes.end < NOW() 
    ";
 
        # Call the database select subroutine
@@ -6940,37 +6971,37 @@ sub get_management_node_blockrequests {
        if (scalar @selected_rows == 0) {
                #Lets check to see if we have blockRequests that have expired 
and don't have any time ids
                $select_statement = "
-               SELECT
-               blockRequest.id AS blockRequest_id,
-               blockRequest.name AS blockRequest_name,
-               blockRequest.imageid AS blockRequest_imageid,
-               blockRequest.numMachines AS blockRequest_numMachines,
-               blockRequest.groupid AS blockRequest_groupid,
-               blockRequest.repeating AS blockRequest_repeating,
-               blockRequest.ownerid AS blockRequest_ownerid,
-               blockRequest.admingroupid AS blockRequest_admingroupid,
-               blockRequest.managementnodeid AS blockRequest_managementnodeid,
-               blockRequest.expireTime AS blockRequest_expireTime,
-               blockRequest.processing AS blockRequest_processing,
-               blockRequest.status AS blockRequest_status,
-       
-               blockTimes.id AS blockTimes_id,
-               blockTimes.blockRequestid AS blockTimes_blockRequestid,
-               blockTimes.start AS blockTimes_start,
-               blockTimes.end AS blockTimes_end,
-               blockTimes.processed AS blockTimes_processed
-               
-               FROM
-               blockRequest
-               LEFT JOIN
-               blockTimes ON (
-                blockRequest.id = blockTimes.blockRequestid
-               )
-
-               WHERE
-               blockRequest.managementnodeid = $managementnode_id AND
-               blockRequest.status = 'accepted' AND
-               blockRequest.expireTime < NOW()
+                       SELECT
+                       blockRequest.id AS blockRequest_id,
+                       blockRequest.name AS blockRequest_name,
+                       blockRequest.imageid AS blockRequest_imageid,
+                       blockRequest.numMachines AS blockRequest_numMachines,
+                       blockRequest.groupid AS blockRequest_groupid,
+                       blockRequest.repeating AS blockRequest_repeating,
+                       blockRequest.ownerid AS blockRequest_ownerid,
+                       blockRequest.admingroupid AS blockRequest_admingroupid,
+                       blockRequest.managementnodeid AS 
blockRequest_managementnodeid,
+                       blockRequest.expireTime AS blockRequest_expireTime,
+                       blockRequest.processing AS blockRequest_processing,
+                       blockRequest.status AS blockRequest_status,
+       
+                       blockTimes.id AS blockTimes_id,
+                       blockTimes.blockRequestid AS blockTimes_blockRequestid,
+                       blockTimes.start AS blockTimes_start,
+                       blockTimes.end AS blockTimes_end,
+                       blockTimes.processed AS blockTimes_processed
+                       
+                       FROM
+                       blockRequest
+                       LEFT JOIN
+                       blockTimes ON (
+                               blockRequest.id = blockTimes.blockRequestid
+                       )
+                       
+                       WHERE
+                       blockRequest.managementnodeid = $managementnode_id AND
+                       blockRequest.status = 'accepted' AND
+                       blockRequest.expireTime < NOW()
                ";
                
                @selected_rows = database_select($select_statement);
@@ -6979,28 +7010,28 @@ sub get_management_node_blockrequests {
                        return 0;
                }
        }
-
+       
        # Build the hash
        my %blockrequests;
-
+       
        for (@selected_rows) {
                my %blockrequest_row = %{$_};
-
+               
                # Get the blockRequest id and blockTimes id
                my $blockrequest_id = $blockrequest_row{blockRequest_id};
                my $blocktimes_id   = $blockrequest_row{blockTimes_id};
                $blocktimes_id = -1 if !$blocktimes_id;
-
+               
                # Loop through all the columns returned for the blockrequest
                foreach my $key (keys %blockrequest_row) {
                        my $value = $blockrequest_row{$key};
-
+                       
                        # Create another variable by stripping off the column_ 
part of each key
                        # This variable stores the original (correct) column 
name
                        (my $original_key = $key) =~ s/^.+_//;
-
+                       
                        $value = '-1' if (!defined($value));
-
+                       
                        if ($key =~ /blockRequest_/) {
                                $blockrequests{$blockrequest_id}{$original_key} 
= $value;
                                if($key =~ /_groupid/){
@@ -7014,9 +7045,9 @@ sub get_management_node_blockrequests {
                                notify($ERRORS{'WARNING'}, 0, "unknown key 
found in SQL data: $key");
                        }
                } ## end foreach my $key (keys %blockrequest_row)
-
+       
        } ## end for (@selected_rows)
-
+       
        return \%blockrequests;
 
 } ## end sub get_management_node_blockrequests
@@ -7271,7 +7302,11 @@ sub get_user_info {
                return;
        }
        
-       #return $ENV{user_info}{$user_identifier} if (!$no_cache && 
$ENV{user_info}{$user_identifier});
+       if (!$no_cache && $ENV{user_info}{$user_identifier}) {
+               notify($ERRORS{'DEBUG'}, 0, "returning cached user info: 
$user_identifier");
+               return $ENV{user_info}{$user_identifier};
+       }
+       notify($ERRORS{'DEBUG'}, 0, "retrieving user info: $user_identifier");
        
        # If affiliation identifier argument wasn't supplied, set it to % 
wildcard
        $affiliation_identifier = '%' if !$affiliation_identifier;
@@ -7423,6 +7458,7 @@ EOF
        
        #notify($ERRORS{'DEBUG'}, 0, "retrieved info for user 
'$user_identifier', affiliation: '$affiliation_identifier':\n" . 
format_data($user_info));
        $ENV{user_info}{$user_identifier} = $user_info;
+       $ENV{user_info}{$user_identifier}{RETRIEVAL_TIME} = time;
        return $ENV{user_info}{$user_identifier};       
 }
 
@@ -7730,22 +7766,15 @@ EOF
                }
        }
        
-       # 
-       my $next_image_id = $computer_info->{nextimageid};
-       if ($next_image_id && (my $nextimage_info = 
get_image_info($next_image_id))) {
-               my $next_image_name = $nextimage_info->{name};
-               #trim trailing white space
-               $next_image_name =~ s/\s+$//;
-               
-               my $next_imagerevision_info = 
get_imagerevision_info($next_image_name);
-               if ($next_imagerevision_info) {
+       # Get the nextimage info
+       if (my $next_image_id = $computer_info->{nextimageid}) {
+               if (my $next_imagerevision_info = 
get_production_imagerevision_info($next_image_id)) {
                        $computer_info->{nextimagerevision} = 
$next_imagerevision_info;
                        $computer_info->{nextimage} = 
$next_imagerevision_info->{image};
                }
                else {
-                       notify($ERRORS{'WARNING'}, 0, "failed to retrieve 
nextimage info for $computer_hostname, nextimageid=$next_image_id 
next_image_name=$next_image_name");
+                       notify($ERRORS{'WARNING'}, 0, "failed to retrieve 
nextimage info for $computer_hostname, nextimageid=$next_image_id");
                }
-               
        }
        
        # Check if the computer associated with this reservation has a vmhostid 
set
@@ -7762,6 +7791,7 @@ EOF
        
        #notify($ERRORS{'DEBUG'}, 0, "retrieved info for computer 
'$computer_identifier':\n" . format_data($computer_info));
        $ENV{computer_info}{$computer_identifier} = $computer_info;
+       $ENV{computer_info}{$computer_identifier}{RETRIEVAL_TIME} = time;
        return $ENV{computer_info}{$computer_identifier};
 }
 
@@ -7851,6 +7881,15 @@ sub insert_request {
                notify($ERRORS{'WARNING'}, 0, "missing mandatory reservation 
key: managementnode_id");
                return 0;
        }
+       
+       if ($computer_id !~ /^\d+$/) {
+               my @computer_ids = get_computer_ids($computer_id);
+               if (scalar(@computer_ids) != 1) {
+                       notify($ERRORS{'WARNING'}, 0, "computer ID argument is 
not numeric and computer ID could not be determined");
+                       return;
+               }
+               $computer_id = $computer_ids[0];
+       }
 
        my $insert_request_statment = "
        INSERT INTO
@@ -9885,7 +9924,7 @@ sub kill_child_processes {
 
 =head2 get_connect_method_info
 
- Parameters  : $imagerevision_id
+ Parameters  : $imagerevision_id, $no_cache (optional)
  Returns     : hash reference
  Description : Returns the connect methods for the image revision specified as
                the argument.
@@ -9893,12 +9932,24 @@ sub kill_child_processes {
 =cut
 
 sub get_connect_method_info {
-       my ($imagerevision_id) = @_;
+       my ($imagerevision_id, $no_cache) = @_;
        if (!defined($imagerevision_id)) {
                notify($ERRORS{'WARNING'}, 0, "imagerevision ID argument was 
not supplied");
                return;
        }
        
+       # Check if cached image info exists
+       if (!$no_cache && 
defined($ENV{connect_method_info}{$imagerevision_id})) {
+               # Check the time the info was last retrieved
+               my $data_age_seconds = (time - 
$ENV{connect_method_info}{$imagerevision_id}{RETRIEVAL_TIME});
+               if ($data_age_seconds < 600) {
+                       return $ENV{connect_method_info}{$imagerevision_id};
+               }
+               else {
+                       notify($ERRORS{'DEBUG'}, 0, "retrieving current connect 
method info for imagerevision $imagerevision_id from database, cached data is 
stale: $data_age_seconds seconds old");
+               }
+       }
+       
        my $imagerevision_info = get_imagerevision_info($imagerevision_id);
        
        notify($ERRORS{'DEBUG'}, 0, "attempting to retrieve connect method 
info:\n" .
@@ -9995,7 +10046,9 @@ EOF
        }
 
        #notify($ERRORS{'DEBUG'}, 0, "retrieved connect method info:\n" . 
format_data($connect_method_info));
-       return $connect_method_info;
+       $ENV{connect_method_info}{$imagerevision_id} = $connect_method_info;
+       $ENV{connect_method_info}{$imagerevision_id}{RETRIEVAL_TIME} = time;
+       return $ENV{connect_method_info}{$imagerevision_id};
 }
 
 #/////////////////////////////////////////////////////////////////////////////


Reply via email to