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

Re: [Xen-devel] [OSSTEST] ms-planner: add a flight summary html report



Ian Campbell writes ("[OSSTEST] ms-planner: add a flight summary html report"):
> I often find myself intested in when a given flight (or the current flight for
> a branch) will complete, which with the current resource plan means searching
> and cycling through trying to figure out which box ends the latest.
> 
> Add an explicit flight status summary, which produces a table for each flight
> listing the jobs, there start and end times and the host they run on. The
> output is something like a list of these, ordered by flight number (rendered
> with links(1), header is bold):
> 
>   Flight 26043 [linux-3.4 real] 4 jobs expected to run until 2014-Apr-27 Sun 
> 23:54:19
>    build-amd64-pvops                        2014-Apr-27 Sun 20:06:09 
> 2014-Apr-27 Sun 21:21:23 host leaf-beetle
>    build-i386-pvops                         2014-Apr-27 Sun 21:20:15 
> 2014-Apr-27 Sun 21:31:27 host grain-weevil
>    build-amd64                              2014-Apr-27 Sun 21:21:23 
> 2014-Apr-27 Sun 21:44:22 host leaf-beetle
>    build-i386                               2014-Apr-27 Sun 22:18:43 
> 2014-Apr-27 Sun 23:54:19 host field-cricket
> 
> I renamed the existing show-html option to show-resource-plan-html for 
> clarity.

Hrm.

I think this is a nice thing to have, but:

> +    while (my ($reso,$evts) = each %{ $plan->{Events} }) {
> +        # [osstest real] job 26010.test-amd64-amd64-xl-win7-amd64
> +        foreach my $evt ( @{$evts} ) {
> +            next unless $evt->{Type} =~ m/^(Start|End)$/;
> +            next unless $evt->{Info} =~ m/^\[(\S+) (\S+)\] job ([0-9]+)\
\.(\S+) (.*)/;

This is rather a layering violation.  Info is for the consumption of
humans.  Perhaps the plan should have an explicit "flight.job" field.
You could compute the "[linux-3.4 real]" part by looking at the common
prefix of all the Infos.

Also, can you wrap everything to 75 or so ?

> +            $flights{$flight}->{Jobs}{$job} = {
> +                Reso => $reso
> +            } unless $flights{$flight}->{Jobs}{$job};

This isn't right.  A job can have more than one resource.  You should
either list each resource as its own line, accumulate a list of
resources.

> +            if ( $evt->{Time} > $flights{$flight}->{End} ) {
> +                $flights{$flight}->{Last} = $evt;
> +                $flights{$flight}->{LastReso} = $reso;

You don't seem to use LastReso and I can't seem to see why you'd want
it.

> +        flight_hdr("Flight $flight [$inf->{Branch} $inf->{Blessing}] ".
> +               (keys %{$inf->{Jobs}})." jobs ".
> +               "expected to run until ".strftime("%Y-%b-%d %a %H:%M:%S"\
, localtime $inf->{End}));

You repeat the strftime rune many times.  You should probably use
show_abs_time.  (Which produces UTC.  I see that ms-planner has a pair
of localtimes in it, which should perhaps be changed.)

> +        foreach my $job (sort { $inf->{Jobs}{$a}->{Start}->{Time} cmp $\
inf->{Jobs}{$b}->{Start}->{Time} } keys %{ $inf->{Jobs} }) {

You repeat the $inf->{Jobs}{$x}->{Start}->{Time} expression.  Make it
an anonymous subref or something and this will become much clearer.

And I think you should probably sort the jobs by end time, not start
time.

> +            my $sevt = $inf->{Jobs}{$job}->{Start};
> +            my $eevt = $inf->{Jobs}{$job}->{End};
> +            print("<tr>\n");
> +            cell($job);
> +            cell(strftime("%Y-%b-%d %a %H:%M:%S", localtime $inf->{Jobs\
}{$job}->{Start}->{Time}));
> +            cell(strftime("%Y-%b-%d %a %H:%M:%S", localtime $inf->{Jobs\
}{$job}->{End}->{Time}));

How about
    foreach my $se (qw(Start End)) {
?

> diff --git a/ms-queuedaemon b/ms-queuedaemon
> index 26d83e2..a5bebd3 100755
> --- a/ms-queuedaemon
> +++ b/ms-queuedaemon
> @@ -224,12 +224,18 @@ proc queuerun-perhaps-step {} {
>  proc report-plan {} {
>      global c
>      if {[catch {
> -        exec ./ms-planner show-html > "$c(WebspaceFile)/resource-plan.html"
> +        exec ./ms-planner show-resource-plan-html > "$c(WebspaceFile)/r\
esource-plan.html"
>      } emsg]} {
> -        log "INTERNAL ERROR showing plan html: $emsg"
> +        log "INTERNAL ERROR showing resource plan html: $emsg"
>      } else {
>          log "report-plan OK"
>      }
> +    if {[catch {
> +        exec ./ms-planner show-flight-summary-html > "$c(WebspaceFile)/\
flight-summary.html"
> +    } emsg]} {
> +        log "INTERNAL ERROR showing flight summary html: $emsg"
> +    } else {
> +        log "report-flight-summary OK"

Repetition.

Thanks,
Ian.

_______________________________________________
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®.