Author: jfthomps
Date: Fri Mar 13 18:40:59 2009
New Revision: 753339
URL: http://svn.apache.org/viewvc?rev=753339&view=rev
Log:
VCL-90
utils.php:
-modified isAvailable to have an additional optional argument named forimaging
that, when set, will only allocate a single computer for images that have
subimages instead of allocating the whole cluster
-modified getUserRequests:
-added forcheckout as a returned index
-fixed bug in query for subreservations where $id was set to user's numeric id
-only restrict primary query to include 'forcheckout = 1' when $type =
'normal'
-added array to track fetched requests so that don't duplicate requests for
cluster reservations
requests.php:
-modified viewRequests: added check to keep requests with forcheckout and
forimaging both set to 0 from being displayed (may never happen anyway)
-modified viewRequestInfo, editRequest, confirmEditRequest,
confirmDeleteRequest, and submitDeleteRequest to set $reservation in a way that
works with cluster reservations
-modified editRequest to not print option to save/update image if request is an
imaging reservation
images.php:
-modified submitCreateImage to call isAvailable with new forimgaging argument
Modified:
incubator/vcl/trunk/web/.ht-inc/images.php
incubator/vcl/trunk/web/.ht-inc/requests.php
incubator/vcl/trunk/web/.ht-inc/utils.php
Modified: incubator/vcl/trunk/web/.ht-inc/images.php
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/images.php?rev=753339&r1=753338&r2=753339&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/images.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/images.php Fri Mar 13 18:40:59 2009
@@ -949,7 +949,7 @@
print "</FORM>\n";
return;
}
- $rc = isAvailable($images, $data["imageid"], $start, $end, $data["os"]);
+ $rc = isAvailable($images, $data["imageid"], $start, $end, $data["os"],
0, 0, 0, 1);
if($rc == -1) {
$printedHTMLheader = 1;
print $HTMLheader;
Modified: incubator/vcl/trunk/web/.ht-inc/requests.php
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/requests.php?rev=753339&r1=753338&r2=753339&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/requests.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/requests.php Fri Mar 13 18:40:59 2009
@@ -1622,6 +1622,9 @@
for($i = 0, $noedit = 0, $text = '';
$i < $count;
$i++, $noedit = 0, $text = '') {
+ if($requests[$i]['forcheckout'] == 0 &&
+ $requests[$i]['forimaging'] == 0)
+ continue;
$imageid = $requests[$i]["imageid"];
$text .= " <TR valign=top
id=reqrow{$requests[$i]['id']}>\n";
if(requestIsReady($requests[$i])) {
@@ -2211,10 +2214,14 @@
function viewRequestInfo() {
$requestid = processInputVar("requestid", ARG_NUMERIC);
$request = getRequestInfo($requestid);
- foreach($request["reservations"] as $res) {
- if($res["forcheckout"]) {
- $prettyimage = $res["prettyimage"];
- break;
+ if($request['forimaging'])
+ $reservation = $request['reservations'][0];
+ else {
+ foreach($request["reservations"] as $res) {
+ if($res["forcheckout"]) {
+ $reservation = $res;
+ break;
+ }
}
}
$states = getStates();
@@ -2228,7 +2235,7 @@
print " </TR>\n";
print " <TR>\n";
print " <TH align=right>Requested Image:</TH>\n";
- print " <TD>$prettyimage</TD>\n";
+ print " <TD>{$reservation['prettyimage']}</TD>\n";
print " </TR>\n";
print " <TR>\n";
print " <TH align=right>Start Time:</TH>\n";
@@ -2316,10 +2323,14 @@
viewRequests();
return;
}
- foreach($request["reservations"] as $res) {
- if($res["forcheckout"]) {
- $reservation = $res;
- break;
+ if($request['forimaging'])
+ $reservation = $request['reservations'][0];
+ else {
+ foreach($request["reservations"] as $res) {
+ if($res["forcheckout"]) {
+ $reservation = $res;
+ break;
+ }
}
}
if($submitErr) {
@@ -2508,6 +2519,9 @@
print " </TR>\n";
print "</table>\n";
+ if($request['forimaging'])
+ return;
+
printEditNewUpdate($request, $res);
}
@@ -2698,10 +2712,14 @@
}
$cdata = getContinuationVar();
$request = getRequestInfo($cdata["requestid"]);
- foreach($request["reservations"] as $res) {
- if($res["forcheckout"]) {
- $reservation = $res;
- break;
+ if($request['forimaging'])
+ $reservation = $request['reservations'][0];
+ else {
+ foreach($request["reservations"] as $res) {
+ if($res["forcheckout"]) {
+ $reservation = $res;
+ break;
+ }
}
}
print "<H2>Modify Reservation</H2>\n";
@@ -3041,12 +3059,14 @@
function confirmDeleteRequest() {
$requestid = getContinuationVar('requestid', 0);
$request = getRequestInfo($requestid);
- # FIXME if an imaging reservation for a non-checkout image, this will
result
- # in $reservation not being set
- foreach($request["reservations"] as $res) {
- if($res["forcheckout"]) {
- $reservation = $res;
- break;
+ if($request['forimaging'])
+ $reservation = $request['reservations'][0];
+ else {
+ foreach($request["reservations"] as $res) {
+ if($res["forcheckout"]) {
+ $reservation = $res;
+ break;
+ }
}
}
if(datetimeToUnix($request["start"]) > time()) {
@@ -3141,10 +3161,14 @@
function submitDeleteRequest() {
$requestid = getContinuationVar('requestid', 0);
$request = getRequestInfo($requestid);
- foreach($request["reservations"] as $res) {
- if($res["forcheckout"]) {
- $reservation = $res;
- break;
+ if($request['forimaging'])
+ $reservation = $request['reservations'][0];
+ else {
+ foreach($request["reservations"] as $res) {
+ if($res["forcheckout"]) {
+ $reservation = $res;
+ break;
+ }
}
}
deleteRequest($request);
Modified: incubator/vcl/trunk/web/.ht-inc/utils.php
URL:
http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/utils.php?rev=753339&r1=753338&r2=753339&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/utils.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/utils.php Fri Mar 13 18:40:59 2009
@@ -3373,7 +3373,7 @@
////////////////////////////////////////////////////////////////////////////////
///
/// \fn isAvailable($images, $imageid, $start, $end, $os, $requestid,
-/// $userid, $ignoreprivileges)
+/// $userid, $ignoreprivileges, $forimaging)
///
/// \param $images - array as returned from getImages
/// \param $imageid - imageid from the image table
@@ -3388,6 +3388,8 @@
/// to 1 to look for computers from any that are mapped to be able to run the
/// image; set to 0 to only look for computers from ones that are both mapped
/// and that $userid has been granted access to through the privilege tree
+/// \param $forimaging - (optional, default=0) - 0 if normal reservation, 1 if
+/// an imaging reservation
///
/// \return -1 if $imageid is limited in the number of concurrent reservations
/// available, and the limit has been reached
@@ -3398,7 +3400,7 @@
///
////////////////////////////////////////////////////////////////////////////////
function isAvailable($images, $imageid, $start, $end, $os, $requestid=0,
- $userid=0, $ignoreprivileges=0) {
+ $userid=0, $ignoreprivileges=0, $forimaging=0) {
global $requestInfo;
$requestInfo["start"] = $start;
$requestInfo["end"] = $end;
@@ -3455,7 +3457,7 @@
$requestInfo["images"][0] = $imageid;
# loop to check for available computers for all needed images
- if($images[$imageid]["imagemetaid"] != NULL) {
+ if(! $forimaging && $images[$imageid]["imagemetaid"] != NULL) {
$count = 1;
foreach($images[$imageid]["subimages"] as $imgid) {
$requestInfo['computers'][$count] = 0;
@@ -4685,6 +4687,7 @@
/// \b currstateid - current stateid of request\n
/// \b laststateid - last stateid of request\n
/// \b forimaging - 0 if an normal request, 1 if imaging request\n
+/// \b forcheckout - 1 if image is available for reservations, 0 if not\n
/// \b test - test flag - 0 or 1\n
/// \b longterm - 1 if request length is > 24 hours\n
/// \b resid - id of primary reservation\n
@@ -4731,6 +4734,7 @@
. "c.IPaddress, "
. "c.type AS comptype, "
. "rq.forimaging, "
+ . "i.forcheckout, "
. "rq.test "
. "FROM request rq, "
. "reservation rs, "
@@ -4744,15 +4748,16 @@
. "i.OSid = o.id AND "
. "c.id = rs.computerid AND "
. "rq.stateid NOT IN (1, 10, 16, 17) AND " # deleted,
maintenance, complete, image, makeproduction
- . "rq.laststateid NOT IN (1, 10, 16, 17) AND " # deleted,
maintenance, complete, image, makeproduction
- . "i.forcheckout = 1 ";
+ . "rq.laststateid NOT IN (1, 10, 16, 17) "; # deleted,
maintenance, complete, image, makeproduction
if($type == "normal")
- $query .= "AND rq.forimaging = 0 ";
+ $query .= "AND rq.forimaging = 0 "
+ . "AND i.forcheckout = 1 ";
if($type == "forimaging")
$query .= "AND rq.forimaging = 1 ";
- $query .= "ORDER BY rq.start";
+ $query .= "ORDER BY rq.start, "
+ . "rs.id";
- $query2 = "SELECT rs.id AS resid, "
+ $qbase2 = "SELECT rs.id AS resid, "
. "i.name AS image, "
. "i.prettyname, "
. "i.id AS imageid, "
@@ -4766,21 +4771,26 @@
. "image i, "
. "OS o, "
. "computer c "
- . "WHERE rs.requestid = $id AND "
- . "rs.imageid = i.id AND "
+ . "WHERE rs.imageid = i.id AND "
. "rs.computerid = c.id AND "
. "i.OSid = o.id AND "
- . "i.forcheckout = 0";
+ . "rs.id != %d AND "
+ . "rs.requestid = %d";
$qh = doQuery($query, 160);
$count = 0;
$data = array();
+ $foundids = array();
while($row = mysql_fetch_assoc($qh)) {
+ if(array_key_exists($row['id'], $foundids))
+ continue;
+ $foundids[$row['id']] = 1;
$data[$count] = $row;
if((datetimeToUnix($row['end']) -
datetimeToUnix($row['start'])) > SECINDAY)
$data[$count]['longterm'] = 1;
else
$data[$count]['longterm'] = 0;
$data[$count]["reservations"] = array();
+ $query2 = sprintf($qbase2, $row['resid'], $row['id']);
$qh2 = doQuery($query2, 160);
while($row2 = mysql_fetch_assoc($qh2)) {
array_push($data[$count]["reservations"], $row2);
@@ -8413,7 +8423,7 @@
global $shibauthed;
$setwrapreferer = processInputVar('am', ARG_NUMERIC, 0);
if(! $authed && $mode == "auth") {
- /*if($oldmode != "auth" && $oldmode != "" &&
array_key_exists('mode', $_GET)) {
+ if($oldmode != "auth" && $oldmode != "" &&
array_key_exists('mode', $_GET)) {
$cookieHeaderString = "WRAP_REFERER=" . BASEURL .
SCRIPT . "?mode=$oldmode; path=/; domain=" . COOKIEDOMAIN;
$itecscookie = BASEURL . SCRIPT . "?mode=$oldmode";
}
@@ -8423,7 +8433,7 @@
}
header("Set-Cookie: $cookieHeaderString");
setcookie("ITECSAUTH_RETURN", "$itecscookie", 0, "/",
COOKIEDOMAIN);
- setcookie("ITECSAUTH_CSS", "vcl.css", 0, "/", COOKIEDOMAIN);*/
+ setcookie("ITECSAUTH_CSS", "vcl.css", 0, "/", COOKIEDOMAIN);
header("Location: " . BASEURL . SCRIPT . "?mode=selectauth");
dbDisconnect();
exit;