[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