Comment 11 for bug 723846

Revision history for this message
James Hunt (jamesodhunt) wrote :

@Dave - great! Thanks for trying this out. The vis support doc is below. This will be added to the Natty Tech Overview when it lands:

==== Basic Job/Event Visualisation ====

Upstart provides a new Python script `initctl2dot` which converts the
output of the new `initctl show-config` command to
[[http://www.graphviz.org/|GraphViz]] format. By default, all job
configuration files are considered and the links between jobs and events
are displayed graphically. Additionally, it is possible to list a set of
jobs to graph.

==== New Initctl Commands ====

Two new `initctl` commands have been added:

 1. `show-config`
 1. `check-config`

The `show-config` command displays core job configuration details,
namely the `start on`, `stop on` and `emits` stanza information. This is
useful since it allows users to see how Upstart has parsed the job
configuration files. Additionally, the `show-config` command accepts an
optional `--enumerate` option which makes it easy to see which elements
of complex conditions are jobs, which are events and which are
environment details. This option forms the basis of the Visualisation
feature above.

The `check-config` command is useful for System Adminstrators and
tooling to ensure that all jobs are theoretically startable/stoppable.
For example, if a job configuration file specified the following complex
condition:

{{{
  start on (A and (B or (starting C or (starting D or starting E))))
}}}

The `check-config` command would flag an error if for example none of
the jobs 'C', 'D' or 'E' were available since that would indicate
the job in question could never be automatically started (since the
start on condition could never be true). Similar checks are performed on
events, so if jobs 'C', 'D' and 'E' are available but events 'A' and 'B'
are not advertised as being emitted by any job, 'check-config' will
generate an error. If no errors are detected, `check-config` displays no
output and returns zero. If errors are detected for a job, each
condition that is unsatisfiable is displayed with a message.