Author: jfthomps
Date: Wed Apr 25 15:54:28 2012
New Revision: 1330367
URL: http://svn.apache.org/viewvc?rev=1330367&view=rev
Log:
VCL-276
log Block reservation data
utils.php:
-modified isAvailable - handle additional data returned from
getAvailableBlockComputerids; added 'fromblock' key to $requestInfo array, and
if that is true, add 'blockdata' key to $requestInfo as well that is the
additional info about the block allocation
-modified allocComputer - added 'fromblock' to the returned array
-modified addRequest - if $requestInfo['fromblock'][$key] is true, get block
data from $requestInfo; when calling addSublogEntry, pass $fromblock and
$blockdata
-modified getAvailableBlockComputers - return array of computer ids as an
element of the array, and return block data about each computer in the array as
a separate element of the array
-modified addSublogEntry - if computer was from a block allocation, add the
extra block info to the sublog table
Modified:
incubator/vcl/trunk/web/.ht-inc/utils.php
Modified: incubator/vcl/trunk/web/.ht-inc/utils.php
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/utils.php?rev=1330367&r1=1330366&r2=1330367&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/utils.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/utils.php Wed Apr 25 15:54:28 2012
@@ -3971,8 +3971,9 @@ function isAvailable($images, $imageid,
}
}
# get computer ids available from block allocations
- $blockids = getAvailableBlockComputerids($imageid,
$start, $end,
-
$allocatedcompids);
+ $blockdata = getAvailableBlockComputerids($imageid,
$start, $end,
+
$allocatedcompids);
+ $blockids = $blockdata['compids'];
}
#remove computers from list that are already scheduled
@@ -4101,6 +4102,9 @@ function isAvailable($images, $imageid,
$requestInfo["computers"][$key] = $comparr['compid'];
$requestInfo["mgmtnodes"][$key] = $comparr['mgmtid'];
$requestInfo["loaded"][$key] = $comparr['loaded'];
+ $requestInfo['fromblock'][$key] = $comparr['fromblock'];
+ if($comparr['fromblock'])
+ $requestInfo['blockdata'][$key] =
$blockdata[$comparr['compid']];
array_push($allocatedcompids, $comparr['compid']);
}
@@ -4229,7 +4233,7 @@ function schCheckMaintenance($start, $en
////////////////////////////////////////////////////////////////////////////////
function allocComputer($blockids, $currentids, $computerids, $start,
$nowfuture) {
- $ret = array();
+ $ret = array('fromblock' => 0);
if(SCHEDULER_ALLOCATE_RANDOM_COMPUTER) {
shuffle($blockids);
shuffle($currentids);
@@ -4242,6 +4246,7 @@ function allocComputer($blockids, $curre
$ret['compid'] = $compid;
$ret['mgmtid'] = $mgmtnodeid;
$ret['loaded'] = 1;
+ $ret['fromblock'] = 1;
return $ret;
}
foreach($currentids as $compid) {
@@ -4613,8 +4618,12 @@ function addRequest($forimaging=0, $revi
else
$imagerevisionid = getProductionRevisionid($imageid);
$computerid = $requestInfo["computers"][$key];
-
$mgmtnodeid = $requestInfo['mgmtnodes'][$key];
+ $fromblock = $requestInfo['fromblock'][$key];
+ if($fromblock)
+ $blockdata = $requestInfo['blockdata'][$key];
+ else
+ $blockdata = array();
$query = "INSERT INTO reservation "
. "(requestid, "
@@ -4629,7 +4638,8 @@ function addRequest($forimaging=0, $revi
. "$imagerevisionid, "
. "$mgmtnodeid)";
doQuery($query, 133);
- addSublogEntry($logid, $imageid, $imagerevisionid, $computerid,
$mgmtnodeid);
+ addSublogEntry($logid, $imageid, $imagerevisionid, $computerid,
+ $mgmtnodeid, $fromblock, $blockdata);
}
// release semaphore lock
semUnlock();
@@ -7525,7 +7535,12 @@ function sortComputers($a, $b) {
/// \param $allocatedcompids - array of computer ids that have already been
/// allocated while processing this reservation
///
-/// \return an array of computer ids
+/// \return an array with the key 'compids' that is an array of available
+/// computerids; additional keys exist for each computerid that are arrays
+/// of block data for that computer with these keys:\n
+/// \b start - start of block time\n
+/// \b end - end of block time\n
+/// \b blockid - id of block request
///
/// \brief gets all computer ids that are part of a block allocation the logged
/// in user is a part of that are available between $start and $end
@@ -7533,14 +7548,17 @@ function sortComputers($a, $b) {
////////////////////////////////////////////////////////////////////////////////
function getAvailableBlockComputerids($imageid, $start, $end,
$allocatedcompids) {
global $user;
- $compids = array();
+ $data = array('compids' => array());
$groupids = implode(',', array_keys($user['groups']));
if(! count($user['groups']))
$groupids = "''";
$startdt = unixToDatetime($start);
$enddt = unixToDatetime($end);
$alloccompids = implode(",", $allocatedcompids);
- $query = "SELECT c.computerid "
+ $query = "SELECT c.computerid, "
+ . "t.start, "
+ . "t.end, "
+ . "r.id AS blockid "
. "FROM blockComputers c, "
. "blockRequest r, "
. "blockTimes t, "
@@ -7561,9 +7579,10 @@ function getAvailableBlockComputerids($i
. "ORDER BY s.name";
$qh = doQuery($query, 101);
while($row = mysql_fetch_assoc($qh)) {
- array_push($compids, $row['computerid']);
+ $data['compids'][] = $row['computerid'];
+ $data[$row['computerid']] = $row;
}
- return $compids;
+ return $data;
}
////////////////////////////////////////////////////////////////////////////////
@@ -8582,19 +8601,23 @@ function addChangeLogEntryOther($logid,
////////////////////////////////////////////////////////////////////////////////
///
/// \fn addSublogEntry($logid, $imageid, $imagerevisionid, $computerid,
-/// $mgmtnodeid)
+/// $mgmtnodeid, $fromblock, $blockdata)
///
/// \param $logid - id of parent log entry
/// \param $imageid - id of requested image
/// \param $imagerevisionid - revision id of requested image
/// \param $computerid - assigned computer id
/// \param $mgmtnodeid - id of management node handling this reservation
+/// \param $fromblock - boolean telling if this computer is from a block
+/// allocation
+/// \param $blockdata - if $fromblock is 1, this contains data about the block
+/// allocation
///
/// \brief adds an entry to the log table
///
////////////////////////////////////////////////////////////////////////////////
function addSublogEntry($logid, $imageid, $imagerevisionid, $computerid,
- $mgmtnodeid) {
+ $mgmtnodeid, $fromblock, $blockdata) {
$query = "SELECT predictivemoduleid "
. "FROM managementnode "
. "WHERE id = $mgmtnodeid";
@@ -8618,16 +8641,26 @@ function addSublogEntry($logid, $imageid
. "imagerevisionid, "
. "computerid, "
. "managementnodeid, "
- . "predictivemoduleid, "
- . "hostcomputerid) "
+ . "predictivemoduleid, ";
+ if($fromblock) {
+ $query .= "blockRequestid, "
+ . "blockStart, "
+ . "blockEnd, ";
+ }
+ $query .= "hostcomputerid) "
. "VALUES "
. "($logid, "
. "$imageid, "
. "$imagerevisionid, "
. "$computerid, "
. "$mgmtnodeid, "
- . "$predictiveid, "
- . "$hostcomputerid)";
+ . "$predictiveid, ";
+ if($fromblock) {
+ $query .= "{$blockdata['blockid']}, "
+ . "'{$blockdata['start']}', "
+ . "'{$blockdata['end']}', ";
+ }
+ $query .= "$hostcomputerid)";
doQuery($query, 101);
}