diff options
Diffstat (limited to 'zarb-ml/mageia-sysadm/attachments/20110121/d701158a/attachment-0001.html')
-rw-r--r-- | zarb-ml/mageia-sysadm/attachments/20110121/d701158a/attachment-0001.html | 317 |
1 files changed, 317 insertions, 0 deletions
diff --git a/zarb-ml/mageia-sysadm/attachments/20110121/d701158a/attachment-0001.html b/zarb-ml/mageia-sysadm/attachments/20110121/d701158a/attachment-0001.html new file mode 100644 index 000000000..42a57009f --- /dev/null +++ b/zarb-ml/mageia-sysadm/attachments/20110121/d701158a/attachment-0001.html @@ -0,0 +1,317 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" +"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /> +<title>[333] Add queue current status and suggested time until next submit in the HTTP header</title> +</head> +<body> + +<style type="text/css"><!-- +#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } +#msg dl.meta dt { float: left; width: 6em; font-weight: bold; } +#msg dt:after { content:':';} +#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } +#msg dl a { font-weight: bold} +#msg dl a:link { color:#fc3; } +#msg dl a:active { color:#ff0; } +#msg dl a:visited { color:#cc6; } +h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } +#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; } +#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; } +#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; } +#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; } +#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; } +#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; } +#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; } +#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; } +#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; } +#logmsg pre { background: #eee; padding: 1em; } +#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;} +#logmsg dl { margin: 0; } +#logmsg dt { font-weight: bold; } +#logmsg dd { margin: 0; padding: 0 0 0.5em 0; } +#logmsg dd:before { content:'\00bb';} +#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; } +#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; } +#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; } +#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; } +#logmsg table th.Corner { text-align: left; } +#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; } +#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; } +#patch { width: 100%; } +--></style> +<div id="msg"> +<dl class="meta"> +<dt>Revision</dt> <dd>333</dd> +<dt>Author</dt> <dd>pterjan</dd> +<dt>Date</dt> <dd>2011-01-21 12:41:03 +0100 (Fri, 21 Jan 2011)</dd> +</dl> + +<h3>Log Message</h3> +<pre>Add queue current status and suggested time until next submit in the HTTP header</pre> + +<h3>Modified Paths</h3> +<ul> +<li><a href="#build_systemwebindexphp">build_system/web/index.php</a></li> +</ul> + +</div> +<div id="patch"><pre> +<a id="build_systemwebindexphp">Modified: build_system/web/index.php</a> +=================================================================== +--- build_system/web/index.php 2011-01-20 17:35:27 UTC (rev 332) ++++ build_system/web/index.php 2011-01-21 11:41:03 UTC (rev 333) +@@ -24,6 +24,84 @@ + + error_reporting(E_ALL); + ++/** ++ * @param array $pkg ++ * ++ * @return string ++*/ ++function pkg_gettype($pkg) { ++ if (array_key_exists("rejected", $pkg["status"])) ++ return "rejected"; ++ if (array_key_exists("youri", $pkg["status"])) { ++ if (array_key_exists("src", $pkg["status"])) ++ return "youri"; ++ else ++ return "uploaded"; ++ } ++ if (array_key_exists("failure", $pkg["status"])) ++ return "failure"; ++ if (array_key_exists("done", $pkg["status"])) ++ return "partial"; ++ if (array_key_exists("build", $pkg["status"])) ++ return "building"; ++ if (array_key_exists("todo", $pkg["status"])) ++ return "todo"; ++ return "unknown"; ++} ++ ++/** ++ * @param integer $num ++ * ++ * @return string ++*/ ++function plural($num) { ++ if ($num > 1) ++ return "s"; ++} ++ ++/** ++ * Return timestamp from package key ++ * @param string $key package submission key ++ * ++ * @return integer ++*/ ++ ++function key2timestamp($key) { ++ global $tz; ++ ++ $date = DateTime::createFromFormat("YmdHis", $key+0, $tz); ++ if ($date <= 0) ++ return null; ++ ++ return $date->getTimestamp(); ++} ++ ++function timediff($start, $end) { ++/** ++ * Return human-readable time difference ++ * ++ * @param integer $start timestamp ++ * @param integer $end timestamp, defaults to now ++ * ++ * @return string ++*/ ++ if (is_null($end)) { ++ $end = time(); ++ } ++ $diff = $end - $start; ++ if ($diff<60) ++ return $diff . " second" . plural($diff); ++ $diff = round($diff/60); ++ if ($diff<60) ++ return $diff . " minute" . plural($diff); ++ $diff = round($diff/60); ++ if ($diff<24) ++ return $diff . " hour" . plural($diff); ++ $diff = round($diff/24); ++ ++ return $diff . " day" . plural($diff); ++} ++ + $g_user = isset($_GET['user']) ? htmlentities(strip_tags($_GET['user'])) : null; + + $upload_dir = '/home/schedbot/uploads'; +@@ -97,84 +175,52 @@ + // sort by key in reverse order to have more recent pkgs first + krsort($pkgs); + +-/** +- * @param array $pkg +- * +- * @return string +-*/ +-function pkg_gettype($pkg) { +- if (array_key_exists("rejected", $pkg["status"])) +- return "rejected"; +- if (array_key_exists("youri", $pkg["status"])) { +- if (array_key_exists("src", $pkg["status"])) +- return "youri"; +- else +- return "uploaded"; +- } +- if (array_key_exists("failure", $pkg["status"])) +- return "failure"; +- if (array_key_exists("done", $pkg["status"])) +- return "partial"; +- if (array_key_exists("build", $pkg["status"])) +- return "building"; +- if (array_key_exists("todo", $pkg["status"])) +- return "todo"; +- return "unknown"; +-} ++// count all packages statuses ++$stats = array( ++ 'uploaded' => 0, ++ 'failure' => 0, ++ 'todo' => 0, ++ 'building' => 0, ++ 'partial' => 0, ++ 'built' => 0, ++); ++$total = count($pkgs); + +-/** +- * @param integer $num +- * +- * @return string +-*/ +-function plural($num) { +- if ($num > 1) +- return "s"; +-} ++// count users' packages ++$users = array(); + +-/** +- * Return timestamp from package key +- * @param string $key package submission key +- * +- * @return integer +-*/ ++if ($total > 0) { ++ foreach ($pkgs as $key => $p) { ++ $pkgs[$key]['type'] = pkg_gettype($p); + +-function key2timestamp($key) { +- global $tz; ++ $stats[$pkgs[$key]['type']] += 1; + +- $date = DateTime::createFromFormat("YmdHis", $key+0, $tz); +- if ($date <= 0) +- return null; +- +- return $date->getTimestamp(); ++ if (!array_key_exists($p['user'], $users)) ++ $users[$p['user']] = 1; ++ else ++ $users[$p['user']] += 1; ++ } + } + +-function timediff($start, $end) { +-/** +- * Return human-readable time difference +- * +- * @param integer $start timestamp +- * @param integer $end timestamp, defaults to now +- * +- * @return string +-*/ +- if (is_null($end)) { +- $end = time(); +- } +- $diff = $end - $start; +- if ($diff<60) +- return $diff . " second" . plural($diff); +- $diff = round($diff/60); +- if ($diff<60) +- return $diff . " minute" . plural($diff); +- $diff = round($diff/60); +- if ($diff<24) +- return $diff . " hour" . plural($diff); +- $diff = round($diff/24); ++// feedback labels ++$badges = array( ++ 'uploaded' => 'Congrats %s! \o/', ++ 'failure' => 'Booooo! /o\\', ++ 'todo' => '', ++ 'building' => '', ++ 'partial' => '', ++ 'built' => '' ++); + +- return $diff . " day" . plural($diff); ++foreach ($stats as $k => $v) { ++ Header("X-BS-Queue-$k: $v"); + } + ++$w = $stats['todo'] - 10; ++if($w < 0) ++ $w = 0; ++$w = $w * 60; ++Header("X-BS-Throttle: $w"); + ?> + <!DOCTYPE html> + <html lang="en"> +@@ -251,41 +297,8 @@ + <td class="status-box"></td> + T; + +-// count all packages statuses +-$stats = array( +- 'uploaded' => 0, +- 'failure' => 0, +- 'todo' => 0, +- 'building' => 0, +- 'partial' => 0, +- 'built' => 0, +-); +-$total = count($pkgs); +- +-// count users' packages +-$users = array(); +- +-// feedback labels +-$badges = array( +- 'uploaded' => 'Congrats %s! \o/', +- 'failure' => 'Booooo! /o\\', +- 'todo' => '', +- 'building' => '', +- 'partial' => '', +- 'built' => '' +-); +- + if ($total > 0) { + foreach ($pkgs as $key => $p) { +- $p['type'] = pkg_gettype($p); +- +- $stats[$p['type']] += 1; +- +- if (!array_key_exists($p['user'], $users)) +- $users[$p['user']] = 1; +- else +- $users[$p['user']] += 1; +- + $s .= sprintf($tmpl, + $p['type'], + timediff(key2timestamp($key)) . ' ago', + +</pre></div> + +</body> +</html>
\ No newline at end of file |