Introduces Basic Report and Model

Introduces the classes for basic reports and the base data model
class to hold data for the report.  A basic report is composed of
sections, each of which has a generator (which produces the model)
and a view (which converts the model into a given representation).
Models may have an associated view, as well, to allow for sub-models
to have specific views attached to them.  This is the first part
of the Guru Meditation Report Framework.

Change-Id: Ic3ad1fd595da8742b5e7d4349a23132fc560f292
Implements: bp guru-meditation-report
Optimize timeutils.utcnow_ts()

This patch short-circuits the use of utcnow() when it is not
needed, resulting in a ~7x increase in performance, putting the
cost of the call in the nanosecond range.

Change-Id: I7c89140935bd8c9a702deb8ff5bcb892624ff76b
Support a new qpid topology

There has been a bug open for a while pointing out that the way we
create direct exchanges with qpid results in leaking exchanges since
qpid doesn't support auto-deleting exchanges.  This was somewhat
mitigated by change to use a single reply queue.  This meant we created
far fewer direct exchanges, but the problem persists anyway.

A Qpid expert, William Henry, originally proposed a change to address
this issue.  Unfortunately, it wasn't backwards compatible with existing
installations.  This patch takes the same approach, but makes it
optional and off by default.  This will allow a migration period.

As a really nice side effect, the Qpid experts have told us that this
change will also allow us to use Qpid broker federation to provide HA.

DocImpact
Closes-bug: #1178375
Co-authored-by: William Henry <whenry@redhat.com>
Change-Id: I09b8317c0d8a298237beeb3105f2b90cb13933d8
Merge "Introduces Basic Report and Model"
Merge "Support a new qpid topology"
Introduces Report Views

Introduces classes representing generic view types for each of the
standard report serialization types: text (human-readable), JSON, and
XML.  Each category of view has at least a basic key-value view.
Additionally, a view which utilizes the Jinja templating system
(http://jinja.pocoo.org/) is available for easy creation of more
complex views.  Finally, a method of specifying several views for
a model, each associated with a different serialization type, was
introduced.

Change-Id: I30b127d67587127e5f08317fe06fa81246897ed6
Implements: bp guru-meditation-report
Introduces Openstack-Specific Report Utilities

Introduces classes representing various Openstack-specific
views, data models, and generators.  This commit also introduces
the folder for generators, since the only predefined generators are
those which are Openstack-specific.

Change-Id: Ice56cb63b2a9807b15642d7cfa4f24a507c70266
Implements: bp guru-meditation-report
Fixes issue with SUGHUP in services on Windows

Fixes bug: #1217043

The signal module does not have a SIGHUP member on Windows. This
commit adds conditional statements based on the platform to allow the
execution of Oslo based services on Windows.

Change-Id: Ic873ce2a3337b0832055b760607e58df92a3cead
Merge "Optimize timeutils.utcnow_ts()"
Send rootwrap exit error message to stderr

Closes-Bug: #1219530
Change-Id: Icc2216ddb4611d8a50fc351f9117090c68c6a89e
Replace list with dict in AvailabilityZoneFilter.host_passes

Bug #1213935

Change-Id: Ie58ce35cbc41285c9bb602488741db028c66a6a7
Merge "Introduces Report Views"
Merge "Introduces Openstack-Specific Report Utilities"
Merge "Fixes issue with SUGHUP in services on Windows"
Merge "Send rootwrap exit error message to stderr"
Merge "Replace list with dict in AvailabilityZoneFilter.host_passes"