[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [OSSTEST PATCH 3/4] ts-logs-capture: Break out guest listing and do it earlier



Break out the function find_guests from what was
fetch_logs_host_guests, and have it save its results in the @guests
global.

We do this soon because in the next patch we are going to want to
do something to each guest before we call serial_fetch_logs.

The loop containing fetch_logs_guest is now in the main program.

Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
---
 ts-logs-capture |   60 ++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 35 insertions(+), 25 deletions(-)

diff --git a/ts-logs-capture b/ts-logs-capture
index 13795e8..7127675 100755
--- a/ts-logs-capture
+++ b/ts-logs-capture
@@ -33,6 +33,34 @@ our ($whhost) = @ARGV;
 $whhost ||= 'host';
 our $ho= selecthost($whhost);
 
+our @guests;
+
+sub find_guests () {
+    my $sth= $dbh_tests->prepare(<<END);
+        SELECT name FROM runvars WHERE flight=? AND job=?
+            AND name LIKE '%_domname'
+            ORDER BY name
+END
+    $sth->execute($flight, $job);
+    my $row;
+    while ($row= $sth->fetchrow_hashref) {
+        my $gn= $row->{name};
+        $gn =~ s/_domname$//;
+
+       my $gho= selectguest($gn,$ho);
+       if (!eval {
+           guest_find_domid($ho,$gho);
+           1;
+       }) {
+           logm("cannot find domid: $@");;
+           next;
+       }
+
+       push @guests, $gho;
+    }
+    $sth->finish();
+}
+
 sub try_fetch_logs ($$) {
     my ($lho, $logfilepats) = @_;
     my $ok= 0;
@@ -97,7 +125,7 @@ sub try_cmd_output_save ($;$) {
     close $fh or die $!;
 }
 
-sub fetch_logs_host_guests () {
+sub fetch_logs_host () {
     my $logs= [qw(
                   /var/log/kern.log*
                   /var/log/syslog*
@@ -173,33 +201,13 @@ sub fetch_logs_host_guests () {
          ) {
             try_cmd_output_save($cmd);
         }
-
-    my $sth= $dbh_tests->prepare(<<END);
-        SELECT name FROM runvars WHERE flight=? AND job=?
-            AND name LIKE '%_domname'
-            ORDER BY name
-END
-    $sth->execute($flight, $job);
-    my $row;
-    while ($row= $sth->fetchrow_hashref) {
-        my $gn= $row->{name};
-        $gn =~ s/_domname$//;
-        fetch_logs_guest($gn);
-    }
-    $sth->finish();
 }
 
 sub fetch_logs_guest ($) {
-    my ($gn) = @_;
+    my ($gho) = @_;
+    my $gn = $gho->{Name};
     logm("saving logs for $gn");
-    my $gho= selectguest($gn,$ho);
-    if (!eval {
-        guest_find_domid($ho,$gho);
-        1;
-    }) {
-        logm("cannot find domid: $@");
-        return;
-    }
+
     my $consolecmd= toolstack($ho)->consolecmd($gho);
     try_cmd_output_save("sleep 1 | $consolecmd | cat",
                         "guest-$gho->{Name}-console");
@@ -226,6 +234,8 @@ sub fetch_logs_guest ($) {
     }
 }
 
+find_guests();
 serial_fetch_logs($ho);
-fetch_logs_host_guests();
+fetch_logs_host();
+fetch_logs_guest($_) foreach @guests;
 logm("logs captured to $stash");
-- 
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.