Make entities (Resource, User, Project) able to store lists

When one Resource contains several meters we should store all of them.
The same is true about User, Project and Resource regarding sources.
To make it possible it is needed to change the way we store data in Hbase.

Now Resource, User and Project may contain several sources. Besides, Resource may contain several meters.
To store all of them we use ColumnFamily f and columns m_meters and s_sources.
All meters stored as JSON-ed list.
E.g.
resource_1: {f: {meters: [meter1, meter2, meter3]} }
The same for users and projects:
user_1: {f: [sources: [source_1, source_2]}

We cannot update these lists safely.

In this commit m_meters and s_sources are changed to m_{unique_meter_structure} and s_{unique_source_name}.
So we getting rid of 'lists' and may use safe put() method.
All meters in Resource and sources in User, Project, Resource are
stored with stub value=1 to make filtering simpler.

New ColumnFamilies are not introdused here because CF is a 'namespace' and make sence in case when
there is a lot of requests only for this CF. But it's not the case for Ceilometer: each request may
contain _id field or metadata filter. It's better to store all this info in one CF.

Closes bug 1288284

Change-Id: I5814202e3d59fd29f96c8734e445367f766e6a4a
cleanup virt pollster code

apply minor fixes relating to comments in recently merged vmware
pollster.

Change-Id: I1fae3bfe31b84334164c3748df44003ca5705667
Improve combination rule validation

Combination rule alarms should contain at least two different alarms
in the alarm_ids list. This patch adds a check to the validate method
of AlarmCombinationRule and raise ClientSideError, if the condition
fails.

Closes-Bug: #1305519

Change-Id: Ic5968d6ecf5781070cab39274131e605619e264a
Disable reverse dns lookup

The BaseHTTPServer will do a reverse dns lookup when log message, which
will cause 10 seconds latency in some network environment. This will
significantly slow down the api request when wsgiref.simple_server is
used.

This patch creates a class, which inherits from
simple_server.WSGIRequestHandler but overrides address_string method,
and passes it to handler_class param of simple_server.make_server.

Change-Id: Ia38c7719ed700ab5867dcc4bcf3700bff282a907
Closes-Bug: #1291229
Made get_capabilities a classmethod instead of object method

Capabilities are the same for all objects so there is no need for them
to be nonstatic. Another benefit is that we can check capabilities of
the Connection without the need to create an object and open real
connection.

Change-Id: Ie9314cb49b4c2bffb2bae4d5eeca6f5d8e2637ce
Merge "cleanup virt pollster code"
Describe storage backends in the collector installation guide

Move information about the storage backends to the collector
section and add info about their usage.

Change-Id: I979a458c91f5dee486799f201b8f4d75a4163782
Merge "Describe storage backends in the collector installation guide"
Merge "Improve combination rule validation"
Replace hard coded WSGI application creation

This change replaces the hard coded WSGI app creation with a pipeline
of WSGI apps declared in a configuration file.
Paste Deploy was used to create the pipeline since it is used by many other
OpenStack projects and it is an active project
with new contributors and supports Python 3. Dependency on Paste is
localized so switching to another library would not be hard if OpenStack moves
to another package in the future.

The changes are small but the changes for the tests were large since many
acl tests were assuming a hard coded WSGI app creation.

blueprint declarative-filters
Change-Id: I5ce05eab980271873269eca2945dc809f2923045
Add a alarm notification using trusts

This patch adds a new alarm notifier which can be used to talk to an
endpoint using keystone authentication. This allows to do secure alarm
actions.

Change-Id: I634b96443eeaccbd736a812ab551b903c3972540
Implements: blueprint trust-alarm-notifier
Merge "Add a alarm notification using trusts"
Don't allow queries with 'IN' predicate with an empty sequence

While SQLalchemy-based storage tests running
(test_storage_scenarios.test_query_filter_with_empty_in) there was
invoked SAWarning: The IN-predicate on "sample.resource_id" with
an empty sequence.

Reason is in not checking of 'in' query lists elements number.
These queries make no sense, so JSON Schema for this was fixed.

Change-Id: I43ea2d20269c9567b3ef99936f63b7c0003170df
Merge "Made get_capabilities a classmethod instead of object method"
Remove eventlet.sleep(0) in collector tests

This change removes eventlet.sleep(0) in collector tests

Change-Id: I72df104720c4c0b6cf41adfcafea0c769e872953
Closes-bug: #1312826
Merge "Remove eventlet.sleep(0) in collector tests"
Fix the return of statistic with getting no sample

In mysql scenario, when getting statistics with no sample
(this can be presented with invalid value of sample filters), ceilometer
will raise an error about NoneType.
Like other API of ceilometer, it should return an empty list.

Change-Id: I07cbc3f03f7a5e6751e6851f14ed1cdc16ee4a4c
Closes-bug: #1292322
Merge "Don't allow queries with 'IN' predicate with an empty sequence"
Remove conversion debug message

Removing unnecessary debug message confusing the user to
think the error is fatal. Instead just let it pass silently
to avoid confusion. The debug message wasnt adding much
value anyway.

Closes-Bug: #1306280

Change-Id: I03420311f0a6ec77d68b750afce3c4110ccffecf
Merge "Fix the return of statistic with getting no sample"