[Midnightbsd-cvs] mports: lib/Magus: reset port machine
ctriv at midnightbsd.org
ctriv at midnightbsd.org
Wed Mar 19 23:48:31 EDT 2008
Log Message:
-----------
reset port machine
Modified Files:
--------------
mports/Tools/lib/Magus:
Event.pm (r1.2 -> r1.3)
mports/Tools/magus/www/data/magus:
index.cgi (r1.8 -> r1.9)
mports/Tools/magus/www/data/magus/auth:
.htaccess (r1.1 -> r1.2)
Added Files:
-----------
mports/Tools/magus/www/data/magus/auth:
reset_port.cgi (r1.1)
-------------- next part --------------
Index: Event.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Magus/Event.pm,v
retrieving revision 1.2
retrieving revision 1.3
diff -L Tools/lib/Magus/Event.pm -L Tools/lib/Magus/Event.pm -u -r1.2 -r1.3
--- Tools/lib/Magus/Event.pm
+++ Tools/lib/Magus/Event.pm
@@ -39,6 +39,10 @@
__PACKAGE__->has_a(port => 'Magus::Port');
__PACKAGE__->has_a(machine => 'Magus::Machine');
+__PACKAGE__->set_sql(by_run_and_machine => <<END_OF_SQL);
+SELECT events.* FROM events,ports
+WHERE events.port=ports.id AND run=? AND machine=? ORDER BY time DESC
+END_OF_SQL
=head2 types
Index: index.cgi
===================================================================
RCS file: /home/cvs/mports/Tools/magus/www/data/magus/index.cgi,v
retrieving revision 1.8
retrieving revision 1.9
diff -L Tools/magus/www/data/magus/index.cgi -L Tools/magus/www/data/magus/index.cgi -u -r1.8 -r1.9
--- Tools/magus/www/data/magus/index.cgi
+++ Tools/magus/www/data/magus/index.cgi
@@ -34,14 +34,16 @@
if ($path eq '' || $path eq '/') {
summary_page($p);
- } elsif ($path =~ m:/list/(.*):) {
- list_page($p, $1);
+ } elsif ($path =~ m:/machines/(.*):) {
+ machine_page($p, $1);
} elsif ($path =~ m:runs/(.*):) {
run_page($p, $1);
} elsif ($path =~ m:/ports/(.*):) {
port_page($p, $1);
} elsif ($path =~ m:/async/run-ports-list:) {
async_run_port_stats($p);
+ } elsif ($path =~ m:/async/machine-events:) {
+ async_machine_events($p);
} elsif ($path =~ m:/search:) {
return search($p);
} else {
@@ -85,7 +87,7 @@
arch => $_->port->run->arch,
run => $_->port->run->id,
osversion => $_->port->run->osversion,
- }} Magus::Lock->retrieve_all;
+ }} sort { $a->port->run <=> $b->port->run } Magus::Lock->retrieve_all;
my @runs = map {{
run => $_->id,
@@ -183,20 +185,49 @@
print $p->header, $tmpl->output;
}
-sub async_run_port_stats {
+
+sub machine_page {
+ my ($p, $machine) = @_;
+
+ $machine = Magus::Machine->retrieve($machine) || die "No such machine: $machine\n";
+
+ my $tmpl = template($p, 'machine.tmpl');
+
+ (my $maint = $machine->maintainer) =~ s/\@/{...}/;
+
+ # XXX - this isn't quite right, will improve later.
+ my @runs = map {{
+ run => $_->id
+ }} Magus::Run->search(arch => $machine->arch, osversion => $machine->osversion, { order_by => 'id DESC' });
+
+
+ $tmpl->param(
+ title => 'Magus // Machine // ' . $machine->name,
+ id => $machine->id,
+ name => $machine->name,
+ maintainer => $maint,
+ arch => $machine->arch,
+ run => $machine->run,
+ osversion => $machine->osversion,
+ runs => \@runs,
+ );
+
+ print $p->header, $tmpl->output;
+}
+
+
+sub search {
my ($p) = @_;
- my $run = $p->param('run');
- my $status = $p->param('status');
+ my $query = $p->param('q');
- my %details = (run => $run, status => $status);
- my @ports;
+ my @ports = Magus::Port->retrieve_from_sql("name LIKE ?", "%$query%");
- if ($status eq 'ready') {
- @ports = Magus::Port->search_ready_ports($run);
- } else {
- @ports = Magus::Port->search(run => $run, status => $status);
- }
+ if (@ports == 1) {
+ my $id = $ports[0]->id;
+ print $p->redirect("http://www.midnightbsd.org/magus/ports/$id");
+ return;
+ }
my @results = map {{
summary => $_->status,
@@ -207,58 +238,53 @@
run => $_->run,
osversion => $_->run->osversion,
}} @ports;
-
- my $tmpl = template($p, 'result-list.tmpl');
- $tmpl->param(results => \@results);
- $details{html} = $tmpl->output;
+ my $tmpl = template($p, 'list.tmpl');
+
+ $tmpl->param(results => \@results, title => "Search Results for "$query"", count => scalar @results);
- print $p->header(-type => 'text/plain'), encode_json(\%details);
+ print $p->header, $tmpl->output;
}
-sub list_page {
- my ($p, $summary) = @_;
+sub async_machine_events {
+ my ($p) = @_;
- Magus::Result->set_sql(current_results => "SELECT results.* FROM results JOIN ports ON results.port=ports.name AND results.version=ports.version WHERE summary=? ORDER BY id DESC");
-
- my @results = map {{
- summary => $_->summary,
- port => $_->port,
- version => $_->version,
- machine => $_->machine->name,
- arch => $_->arch,
- id => $_->id,
- has_details => ($_->summary eq 'pass') ? 0 : 1,
- }} Magus::Result->search_current_results($summary);
+ my $run = $p->param('run');
+ my $machine = $p->param('machine');
- my $tmpl = template($p, 'list.tmpl');
+ my @events = map { {
+ type => $_->type,
+ msg => $_->msg,
+ port => $_->port,
+ port_id => $_->port->id,
+ run => $_->port->run,
+ time => $_->time,
+ }} Magus::Event->search_by_run_and_machine($run, $machine);
- my %titles = (
- fail => 'Failed Ports',
- skip => 'Skipped Ports',
- pass => 'Passed Ports',
- internal => 'Internal failures',
- warn => 'Warned Ports',
- );
+ my %details = (run => $run, machine => $machine);
- $tmpl->param(results => \@results, title => $titles{$summary}, count => scalar @results);
+ my $tmpl = template($p, 'machine-events.tmpl');
+ $tmpl->param(events => \@events);
- print $p->header, $tmpl->output;
+ $details{html} = $tmpl->output;
+
+ print $p->header(-type => 'text/plain'), encode_json(\%details);
}
-
-sub search {
+sub async_run_port_stats {
my ($p) = @_;
- my $query = $p->param('q');
+ my $run = $p->param('run');
+ my $status = $p->param('status');
- my @ports = Magus::Port->retrieve_from_sql("name LIKE ?", "%$query%");
+ my %details = (run => $run, status => $status);
+ my @ports;
- if (@ports == 1) {
- my $id = $ports[0]->id;
- print $p->redirect("http://www.midnightbsd.org/magus/ports/$id");
- return;
- }
+ if ($status eq 'ready') {
+ @ports = Magus::Port->search_ready_ports($run);
+ } else {
+ @ports = Magus::Port->search(run => $run, status => $status);
+ }
my @results = map {{
summary => $_->status,
@@ -269,14 +295,14 @@
run => $_->run,
osversion => $_->run->osversion,
}} @ports;
+
+ my $tmpl = template($p, 'result-list.tmpl');
+ $tmpl->param(results => \@results);
- my $tmpl = template($p, 'list.tmpl');
-
- $tmpl->param(results => \@results, title => "Search Results for "$query"", count => scalar @results);
+ $details{html} = $tmpl->output;
- print $p->header, $tmpl->output;
+ print $p->header(-type => 'text/plain'), encode_json(\%details);
}
-
sub template {
Index: .htaccess
===================================================================
RCS file: /home/cvs/mports/Tools/magus/www/data/magus/auth/.htaccess,v
retrieving revision 1.1
retrieving revision 1.2
diff -L Tools/magus/www/data/magus/auth/.htaccess -L Tools/magus/www/data/magus/auth/.htaccess -u -r1.1 -r1.2
--- Tools/magus/www/data/magus/auth/.htaccess
+++ Tools/magus/www/data/magus/auth/.htaccess
@@ -1,4 +1,5 @@
AuthType Basic
AuthName "Authorization Required"
-AuthUserFile /usr/local/etc/apache22/magus-passwd
-Require valid-user
\ No newline at end of file
+AuthBasicProvider file
+AuthUserFile /home/mbsd/magus/magus-passwd
+Require valid-user
--- /dev/null
+++ Tools/magus/www/data/magus/auth/reset_port.cgi
@@ -0,0 +1,34 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use lib qw(/home/mbsd/magus/mports/Tools/lib);
+
+use Magus;
+use CGI;
+
+
+eval { main() };
+
+if ($@) {
+ print "Content-Type: text/html\n\n";
+ print <<END_OF_ERROR;
+<html>
+<head><title>Error</title></head>
+<body>
+<h1>Error</h1>
+<p>The following error occured:</p>
+<pre>$@</pre>
+END_OF_ERROR
+}
+
+sub main {
+ my $q = CGI->new;
+ my $id = $q->param('id') || die "No id given.\n";
+
+ my $port = Magus::Port->retrieve($id) || die "No such port: $id\n";
+
+ $port->reset;
+
+ print $q->redirect($q->referer);
+}
More information about the Midnightbsd-cvs
mailing list