]> xenbits.xensource.com Git - people/liuw/osstest.git/commitdiff
cs-hosts-list: Support --arches and --kernels
authorIan Jackson <ian.jackson@eu.citrix.com>
Tue, 9 May 2017 17:50:41 +0000 (18:50 +0100)
committerIan Jackson <ian.jackson@eu.citrix.com>
Wed, 17 May 2017 22:53:57 +0000 (23:53 +0100)
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
cs-hosts-list

index 1fea3cd83bdee806c016e92b0e4e69396295d2f9..92f44ee2af001db202933e0b348c62e8eb75d22c 100755 (executable)
@@ -29,9 +29,25 @@ use Osstest;
 
 csreadconfig();
 
+our @kernels = qw(xen linux);
+our @arches;
+
+while (@ARGV && $ARGV[0] =~ m/^-/) {
+    $_ = shift @ARGV;
+    last if m/^--$/;
+    while (m/^-./) {
+       if (s/^--arches=(.*)/-/) {
+           @arches = split /\,/, $1;
+       } elsif (s/^--kernels=(.*)/-/) {
+           @kernels = split /\,/, $1;
+       } else {
+           die "bad option $_ ?";
+       }
+    }
+}
+
 @ARGV == 1 or die $!;
 my ($flags) = @ARGV;
-$flags =~ m/^-/ and die $!;
 
 my @qargs;
 my $qtxt= <<END;
@@ -49,13 +65,36 @@ END
 }
 
 my $q= $dbh_tests->prepare($qtxt);
+
+my $flagq = $dbh_tests->prepare(<<END);
+        SELECT 1
+          FROM hostflags
+         WHERE hostname=? AND hostflag=?
+END
+
 my $o;
 
+sub report_arch ($) {
+    my ($host) = @_;
+    foreach my $kernel (@kernels) {
+       my $kernprefix = $kernel eq 'linux' ? '' : "$kernel-";
+       foreach my $arch (@arches) {
+           $flagq->execute($host,"arch-$kernprefix$arch");
+           if ($flagq->fetchrow_arrayref()) {
+               $o .= " $kernel $arch";
+               return;
+           }
+       }
+    }
+    $o .= " NONE NONE";
+}
+
 db_retry($dbh_tests,[],sub {
     $o='';
     $q->execute(@qargs);
     while (my ($host) = $q->fetchrow_array()) {
        $o .= $host;
+       report_arch($host) if @arches;
        $o .= "\n";
     }
 });