You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by jf...@apache.org on 2010/08/18 20:49:11 UTC
svn commit: r986851 - /incubator/vcl/trunk/web/.ht-inc/computers.php
Author: jfthomps
Date: Wed Aug 18 18:49:11 2010
New Revision: 986851
URL: http://svn.apache.org/viewvc?rev=986851&view=rev
Log:
VCL-254
block request improvements
modified submitCompStateChange - for tomaintenance, tovmhostinuse, and hpc, check to see if computer is part of an upcoming block allocation and act accordingly
Modified:
incubator/vcl/trunk/web/.ht-inc/computers.php
Modified: incubator/vcl/trunk/web/.ht-inc/computers.php
URL: http://svn.apache.org/viewvc/incubator/vcl/trunk/web/.ht-inc/computers.php?rev=986851&r1=986850&r2=986851&view=diff
==============================================================================
--- incubator/vcl/trunk/web/.ht-inc/computers.php (original)
+++ incubator/vcl/trunk/web/.ht-inc/computers.php Wed Aug 18 18:49:11 2010
@@ -2464,6 +2464,7 @@ function submitCompStateChange() {
$changenow = array();
$changeasap = array();
$changetimes = array();
+ $changetimes2 = array();
foreach($data['computerids'] as $compid) {
if($computers[$compid]['state'] == 'maintenance')
array_push($noaction, $compid);
@@ -2472,11 +2473,12 @@ function submitCompStateChange() {
}
$passes = array();
$fails = array();
+ $blockallocs = array();
+ $blockfails = array();
// get semaphore lock
if(! semLock())
abort(3);
foreach($changeasap as $compid) {
- # TODO what about blockComputers?
# try to move future reservations off of computer
moveReservationsOffComputer($compid);
# get end time of last reservation
@@ -2489,6 +2491,15 @@ function submitCompStateChange() {
. "ORDER BY end DESC "
. "LIMIT 1";
$qh = doQuery($query, 101);
+ $query2 = "SELECT t.end "
+ . "FROM blockComputers c, "
+ . "blockTimes t "
+ . "WHERE c.computerid = $compid AND "
+ . "c.blockTimeid = t.id AND "
+ . "t.end > NOW() "
+ . "ORDER BY t.end DESC "
+ . "LIMIT 1";
+ $qh2 = doQuery($query2, 101);
# create a really long reservation starting at that time in state tomaintenance
if($row = mysql_fetch_assoc($qh)) {
$start = $row['end'];
@@ -2500,6 +2511,18 @@ function submitCompStateChange() {
else
$fails[] = $compid;
}
+ // if part of a block allocation, create a really long reservation
+ # starting at the block allocation end time in state tomaintenance
+ elseif($row = mysql_fetch_assoc($qh2)) {
+ $start = $row['end'];
+ $changetimes2[$compid] = $start;
+ $end = datetimeToUnix($start) + SECINWEEK; // hopefully keep future reservations off of it
+ $end = unixToDatetime($end);
+ if(simpleAddRequest($compid, $imageid, $imagerevisionid, $start, $end, 18, $vclreloadid))
+ $blockallocs[] = $compid;
+ else
+ $blockfails[] = $compid;
+ }
# change to maintenance state and save in $changenow
// if we wait and put them all in maintenance at the same time,
# we may end up moving reservations to the computer later in the
@@ -2568,6 +2591,38 @@ function submitCompStateChange() {
print "</TABLE>\n";
print "<br>\n";
}
+ if(count($blockallocs)) {
+ print "The following computers are part of an upcoming block allocation ";
+ print "and will be placed in the maintenance state at the time listed ";
+ print "for each computer:\n";
+ print "<TABLE>\n";
+ print " <TR>\n";
+ print " <TH>Computer</TH>\n";
+ print " <TH>Maintenance time</TH>\n";
+ print " </TR>\n";
+ foreach($blockallocs as $compid) {
+ print " <TR>\n";
+ print " <TD align=center><font color=\"ff8c00\">{$computers[$compid]['hostname']}</font></TD>\n";
+ $time = date('n/j/y g:i a', datetimeToUnix($changetimes2[$compid]));
+ print " <TD align=center>$time</TD>\n";
+ print " </TR>\n";
+ }
+ print "</TABLE>\n";
+ print "<br>\n";
+ }
+ if(count($blockfails)) {
+ print "The following computers currently have reservations on them ";
+ print "but no functional management node was found for them. Nothing will ";
+ print "be done with them at this time:\n";
+ print "<TABLE>\n";
+ foreach($blockfails as $compid) {
+ print " <TR>\n";
+ print " <TD align=center><font color=\"ff0000\">{$computers[$compid]['hostname']}</font></TD>\n";
+ print " </TR>\n";
+ }
+ print "</TABLE>\n";
+ print "<br>\n";
+ }
if(count($noaction)) {
print "The following computers were already in the maintenance ";
print "state and had their notes on being in the maintenance state ";
@@ -2594,6 +2649,7 @@ function submitCompStateChange() {
$noaction = array();
$changenow = array();
$changeasap = array();
+ $blockalloc = array();
$changetimes = array();
$fails = array();
foreach($data['computerids'] as $compid) {
@@ -2606,7 +2662,6 @@ function submitCompStateChange() {
if(! semLock())
abort(3);
foreach($changeasap as $compid) {
- # TODO what about blockComputers?
moveReservationsOffComputer($compid);
# get end time of last reservation
$query = "SELECT rq.end "
@@ -2618,10 +2673,23 @@ function submitCompStateChange() {
. "ORDER BY end DESC "
. "LIMIT 1";
$qh = doQuery($query, 101);
+ $query2 = "SELECT c.computerid "
+ . "FROM blockComputers c, "
+ . "blockTimes t "
+ . "WHERE c.computerid = $compid AND "
+ . "c.blockTimeid = t.id AND "
+ . "t.end > NOW()";
+ $qh2 = doQuery($query2, 101);
if($row = mysql_fetch_assoc($qh)) {
// if there is a reservation, leave in $changeasap so we can
# notify that we can't change this one
}
+ // if computer allocated to block allocation remove from $changeasap
+ # and add to $blockalloc
+ elseif($row = mysql_fetch_assoc($qh2)) {
+ unset_by_val($compid, $changeasap);
+ $blockalloc[] = $compid;
+ }
# change to vmhostinuse state and save in $changenow
// if we wait and put them all in vmhostinuse at the same time,
# we may end up moving reservations to the computer later in the
@@ -2708,6 +2776,18 @@ function submitCompStateChange() {
print "</TABLE>\n";
print "<br>\n";
}
+ if(count($blockalloc)) {
+ print "The following computers are part of an upcoming block allocation ";
+ print "and cannot be placed in the vmhostinuse state at this time:\n";
+ print "<TABLE>\n";
+ foreach($blockalloc as $compid) {
+ print " <TR>\n";
+ print " <TD><font color=\"ff0000\">{$computers[$compid]['hostname']}</font></TD>\n";
+ print " </TR>\n";
+ }
+ print "</TABLE>\n";
+ print "<br>\n";
+ }
if(count($noaction)) {
print "The following computers were already in the vmhostinuse ";
print "state:\n";
@@ -2726,6 +2806,7 @@ function submitCompStateChange() {
$noaction = array();
$changenow = array();
$changeasap = array();
+ $blockalloc = array();
$changetimes = array();
foreach($data['computerids'] as $compid) {
if($computers[$compid]['state'] == 'hpc')
@@ -2736,7 +2817,6 @@ function submitCompStateChange() {
if(! semLock())
abort(3);
foreach($changeasap as $compid) {
- # TODO what about blockComputers?
moveReservationsOffComputer($compid);
# get end time of last reservation
$query = "SELECT rq.end "
@@ -2748,10 +2828,23 @@ function submitCompStateChange() {
. "ORDER BY end DESC "
. "LIMIT 1";
$qh = doQuery($query, 101);
+ $query2 = "SELECT c.computerid "
+ . "FROM blockComputers c, "
+ . "blockTimes t "
+ . "WHERE c.computerid = $compid AND "
+ . "c.blockTimeid = t.id AND "
+ . "t.end > NOW()";
+ $qh2 = doQuery($query2, 101);
if($row = mysql_fetch_assoc($qh)) {
// if there is a reservation, leave in $changeasap so we can
# notify that we can't change this one
}
+ // if computer allocated to block allocation remove from $changeasap
+ # and add to $blockalloc
+ elseif($row = mysql_fetch_assoc($qh2)) {
+ unset_by_val($compid, $changeasap);
+ $blockalloc[] = $compid;
+ }
# change to hpc state and save in $changenow
// if we wait and put them all in hpc at the same time,
# we may end up moving reservations to the computer later in the
@@ -2791,6 +2884,18 @@ function submitCompStateChange() {
print "</TABLE>\n";
print "<br>\n";
}
+ if(count($blockalloc)) {
+ print "The following computers are part of an upcoming block allocation ";
+ print "and cannot be placed in the hpc state at this time:\n";
+ print "<TABLE>\n";
+ foreach($blockalloc as $compid) {
+ print " <TR>\n";
+ print " <TD><font color=\"ff0000\">{$computers[$compid]['hostname']}</font></TD>\n";
+ print " </TR>\n";
+ }
+ print "</TABLE>\n";
+ print "<br>\n";
+ }
if(count($noaction)) {
print "The following computers were already in the hpc ";
print "state:\n";