Gate on Python 3.3

This makes OS-jenkins run our tests in Python 3.3 mode in addition to
Python 2.6 and Python 2.7.

Rationale: keep our Python 3 compatibility high

Change-Id: Ia4c2964f7cc2a8e5ec0b47818698a96ec93fc892
Merge "Gate on Python 3.3"
refactor: _basic_message builder for mongo driver

Use a message building function to generate the common part
of different message bodies returned from the storage driver.

Change-Id: I2c3fd45c7e6985911b56540850258fc569d30429
Merge "refactor: _basic_message builder for mongo driver"
Verify headers in server response

This patch verifies the headers returned by the server.
Refer https://trello.com/c/Az78XtQ7/195-test-vary-header-is-set-correctly.

Change-Id: I348b30f3014b8875f3794eb8ef05bd9c19db624a
Tell _list queries what index to use

This patch adds hint to all _list queries telling them to use the
'active' index. This can be overriden by the caller of _list but that,
most likely, won't be necessary. All callers of _list care about getting
active messages and provide the parameters necessary for that.

Fixes bug: #1206128

Change-Id: Ifbe48711825cadd81ebbd5dd07bc9da8a88975fa
Sort everything by K

The 'k' field is the one we're using to guarantee FIFO. Instead of
sorting by _id, which we were using for the same purpose, the message
controller should always use 'k' for that matter.

Fixes bug: #1206153

Change-Id: I74704ddb50de35e3d50c4108b28d063376a34cf8
Fix active index's order

Message Controller's active index is not ordere correctly. Since we're
using K for sorting operation, it should be in the second position right
after the equality filters' indexes ('q'). This is necessary because
MongoDB sorts everything before applying range filters ('e', 'c.e') and
compound indexes are traversed in order. Without this patch, mongodb
would filter records and then sort them in memory w/o using the index.

Fixes bug: #1206517

Change-Id: I54ac464ce849f2dcde92a96090c27c489ea80e97
feat(storage): message bulk deletion

Implemented as a separated method `bulk_delete`.

Change-Id: Id104e341eeae39dc96d8b1d34e41e92c831697cd
Implements: blueprint message-bulk-delete
feat(wsgi): message bulk deletion

The purpose of this feature is to allow the "Location" header
returned from message posting to accept the DELETE method.

    DELETE /queues/q/messages?ids=msgid1,msgid2...

Note that if the "ids" parameter is not present, such an
operation will be denied.

Change-Id: Id8313a675c2427b772f1e9095452dda4d0d67432
Implements: blueprint message-bulk-delete
Fixes: bug #1201649
Merge "feat(storage): message bulk deletion"
Merge "Verify headers in server response"
Implement v1 JSON Home Document

This patch introduces a JSON Home Document that enables users and api
clients to "follow their nose" in interacting with the Marconi
HTTP API. This is meant to be a baseline implementation, and as such
simply returns a hard-coded document.

Future iterations may include support for vendor-specific JSON and
dynamic, RBAC-aware home documents.

This patch anticipates the creation of http://docs.openstack-marconi.org

Implements: blueprint v1-api
Change-Id: Ie13e77fc220884bbb97aa988ddf2bc85076e37a1
Merge "feat(wsgi): message bulk deletion"
Merge "Implement v1 JSON Home Document"