Adds Hyper-V compute inspector

Blueprint: hyper-v-agent

Adds a compute inspector for Hyper-V. Supports Windows Server / Hyper-V
Server 2012 and above.

Disk stats are supported starting with Hyper-V 2012 R2.

Change-Id: Ib6499b631a2f7e406198b13f4b5788a3b880fb1b
Extra indexes cleanup

After all migrations database state has a difference with model state
in each dialect.

There is difference in models with database in indexes.
For some dialects indexes is skipped and for other extra indexes declared.

Dropped unique index:
- `source.id` for mysql.

Created index:
- `resource_user_id_project_id_key` for mysql and sqlite.

bp: ceilometer-db-sync-models-with-migrations

Change-Id: I1fbb6dcdf6c3c21075caeef5241f09122d5e34c1
Adds else and TODO in statistics storage tests

Fixes bug #1217688

Addresses minor issues that were raised in the code review comments
for Patch Set 10 of "Add SQLAlchemy implementation of groupby"
https://review.openstack.org/#/c/41597/

The issues were in the StatisticsGroupByTest class of the storage
driver tests.

1) Adds else clause to test_group_by_with_query_filter_multiple

   The else clause ensures that all possible values for 'project_id'
   and 'resource_id' are covered when checking the values returned
   by get_meter_statistics().

2) Adds TODO comments for tests that are not implemented

   The tests that have not been implemented are ones involving
   metadata fields, since group by with metadata fields has not yet
   been implemented.

Change-Id: I55cc0cb6cc791708c9b8038787d712760f9515df
Fix wrong UniqueConstraint name

Table `sourseassoc` has a conflicted with
OpenStack naming convention UniqueConstraint name.
Each UniqueConstraint should be named as
`uniq_table_name0column_first0column_second`.

bp: ceilometer-db-sync-models-with-migrations

Change-Id: Ic35a9351add9dd3ce014c938505e268e131112e8
Adds group by statistics for MongoDB driver

Implements: blueprint api-group-by

Adds group by meter statistics in the MongoDB driver for the case
where the groupby fields are a combination of 'user-id',
'resource-id', 'project-id', and 'source' (metadata fields not
implemented)

The group by meter statistics can be requested with query filtering
and/or period parameters.  In this case, the query filtering and/or
period grouping is applied first, followed by the calculation of
group by meter statistics.

Refactors the meter statistics map functions MAP_STATS and
MAP_STATS_PERIOD to remove duplicate code

Modifies test_group_by_unknown_field in class StatisticsGroupByTest
so that it works for both the SQL Alchemy driver and the MongoDB
driver; the previous version only worked for the SQL Alchemy driver

Change-Id: I6954abe9d8c86c780ad96bbf04849d068b360b1c
Merge "Adds group by statistics for MongoDB driver"
Imported Translations from Transifex

Change-Id: I502c226264d0e0e40dcf8e1e9ec3a934651c2955
Import middleware from Oslo

Change-Id: I90babb2c1f2b4f875214d38ddad0ccb644adfd6c
Blueprint: count-api-requests
Merge "Adds else and TODO in statistics storage tests"
alarm: generate alarm_id in API

This isn't a detail of the storage, this is something we handle and
expose in the API, so the responsability for handling should be in the
API.
Also, they shouldn't exist any alarm without an id, so the model makes
it mandatory now.

Change-Id: I726ca74489007ee1d387bcb06b23af2f060ceb5f
Merge "Import middleware from Oslo"
Fix empty metadata issue of instance

Based on current implement, some metadata can't be extracted by
pollster, such as architecture, reservation_id, ephemeral_gb, etc.
This patch will try to get those metadata if we can and remove
those metadata what can't be pulled by pollster.

Fixes bug 1202749

Change-Id: I1f08c4eaa1cfacb612097cd0e90629d682f8acc9
Merge "alarm: generate alarm_id in API"
Base Alarm history persistence model

Provides the storage model and non-implemented hooks
into the storage drivers as a placeholder.

Partially implements bp alarm-audit-api

Change-Id: I950bef5f01e545982709bfb78a2364fb8d4def7b
Add pagination parameter to the database backends of storage

Put all parameters for pagination into class named pagination,
add this paramter to the interface of the database driver.
For now, the methods support pagination query include
get_resources, get_meters, get_alarms.
For get_samples function, because it has parameter limit now,
which should be include in pagination class, it is hard to
add the pagination query in this patch(it involves API codes).
We will add that in another patch.

Pagination parameter includes the following members:
1) 'limit': maximum number of items to return.
2) 'primary_sort_dir': sort direction of primary key.
2) 'marker_value': value of the primary key to identify the last
    item of the previous page.
3) 'sort_keys': array of attributes user pass in except the primary key.
4) 'sort_dirs': per-column array of sort_dirs, corresponding to sort_keys.

We update the prototype of sqlalchemy, hbase, mongodb
db2 and logging storage backend.
Pagination query for mongodb is merged already, we need to
reverse it first.

It is part of bp/paginate-db-search.

Implements blueprint paginate-db-search

Change-Id: I6eedcd728427f4ab20f575aa10675822301fd472
Merge "Imported Translations from Transifex"
Merge "Adds Hyper-V compute inspector"
Imported Translations from Transifex

Change-Id: I02f03ab114a7919b8b25d3605ecd4a5a438e1a1e
Merge "Base Alarm history persistence model"
Merge "Add pagination parameter to the database backends of storage"