Start 2014.1 development

Raise version in preparation of Icehouse release.

Change-Id: I400343f098842fd5c6180004e9869f247faeea99
Sync with global requirements

Change-Id: I8b30752d171fa957c58fd5a435bfe1ccfcc3d876
feat: add catalogue storage driver for queues

The upcoming sharding feature requires a catalogue storage driver very
similar to that used by the proxy. This patch ports the proxy
catalogue storage driver to the queues storage space and updates the
semantics accordingly. Specifically, the queues catalogue maintains a
mapping from project/queue to shard identifier.

Unit tests and helpers have been updated accordingly. The sqlite
portion of this is still to be done, and is reserved for a future
patch.

The faulty storage drivers has been given the appropriate
catalogue_controller impls.

Furthermore, minor py3k updates were added: metaclass using
six.add_metaclass.

Change-Id: I380d028520e9a712064810a15e2c6576de67e485
Partially-implements: blueprint storage-sharding
Closes-Bug: #1241686
Renamed "exceptions" module to "errors"

Changes exceptions.py into error.py

Renaming exception-related code to errors
because most of the conditions handled by
marconi are errorneous rather than exceptional.

Closes-Bug:#1232074

Change-Id: Ie3509236b07a372a44d97f97e5f3fe183b409606
feat: integrate shard storage with transport

This patch refines the interface and storage implementation defined in
the last patch and integrates it with the transport layer.

A few updates have been made:
- 'name' -> 'href' for listing shards
- limiting, markers, and detailed are all used
- use of common_utils.fields to clean up shards transport PATCH
- add missing init for schemas
- fix schema issues found: 'location' -> 'uri', __init__.py
- shard resource correctly implements PUT semantics (replaces)

Transport: the admin API concept has been expanded to include
functionality from the public interface *in addition* to admin
functionality. Part of the rationale behind this is to simplify unit
testing. The other part of this is that an admin should be able to do
everything a normal user can do in addition to their special
functions.

Storage: now divided into control and data plane. The bootstrap passes
a control driver down to the transport which *can* be used for
endpoints as needed.

A test suite has been added that exercises the functionality from the
transport side of the shard registry resource.

Finally, the way the FaultyStorage driver tests were handled was
changed. Something about the setattr magic in that suite's setup made
it such that *all* tests would use the Faulty storage driver. This is
possibly related to the use of lazy_property decorators. To address
this issue, this patch promotes the faulty storage driver to setup.cfg
visibility and removes the setattrs.

Change-Id: I5b8cdb3a11d29422762b52f1e15e33167eecb867
Partitally-implements: blueprint storage-sharding
Partially-Closes: 1241686
Closes-Bug: 1243898
Add Tests for non-existing resources

This patch adds tests for action on non-existing queues, messages & claims.

Change-Id: I68517b1b98f668eff86a0bcad19dc9ed8d01267c
Tests-Bug: #1243752
Merge "Add Tests for non-existing resources"
Update openstack/common/lockutils

The following commits are in this update:

79e6bc6 fix lockutils.lock() to make it thread-safe
ace5120 Add main() to lockutils that creates temp dir for locks
537d8e2 Allow lockutils to get lock_path conf from envvar

Change-Id: Id50b7c0ccbb417493320e19191a92675fcf126ff
refactor: drop simplejson requirement

After much benchmarking, it was decided that it is preferable to
remove the simplejson dependency. This comes with the caveat that json
handling is slower on Python<=2.6, but faster on Python>2.7, including
Python 3 and pypy.

The recommendation moving forward is to deploy Marconi on Python>2.7.

Change-Id: If7a9380bd32023ec973fd2f267255723aaa49306
Support building wheels (PEP-427)

With that, building and uploading wheels to PyPI is only one "python
setup.py bdist_wheel" away.

Change-Id: I51e0358e9a6efec26588ce076bda5e3fe2d91b44
Merge "Start 2014.1 development"
Merge "Support building wheels (PEP-427)"
feat: connect sharding manager to control drivers

This patch implements the register/deregister/lookup operations for
the sharding manager.

As a result of this patch, the sharding driver now takes the control
driver as a paramater. This gives it the access needed to make
decisions about queue placement (and lookups) based on the entries in
the control plane.

In order to get the sharding manager working correctly, several
methods had to be overridden to properly handle the QueueNotMapped
error. When a QueueNotMapped error is encountered under normal
conditions, it is equivalent to the target resource not being
found. The overrides mimic the default behavior of those controllers'
methods in the case where the queue isn't found.

An inconsistency was found between the base storage driver and the
concrete implementations. message_controller.list did not provide an
include_claimed parameter. This has been corrected.

To avoid DuplicateOptErrors in the mongodb driver in a sharded
context, a filtering algorithm is applied. To make it clear to data
drivers that they need to apply this filtering algorithm, conf.dynamic
is set by the sharding driver.

Unit tests have been added for the weighted select algorithm.

Up next: sharded queue listing support, caching

Change-Id: Ic36cd657ba13fa4c0b624dc5c71bfe99f9a70139
Partitally-implements: blueprint storage-sharding
Merge "Sync with global requirements"
Merge "feat: connect sharding manager to control drivers"
Isolate tests a bit more

This patch isolates mongodb tests and adds new `shortcut-methods` to
base clases in order to make it easier for subclasses to access conf
instances, override them or even hook them.

Change-Id: I8fe05bf383198244616499adb60480859f1ec7c6
Revert "Support building wheels (PEP-427)"

Universal means support for py2/py3. 

Marconi doesn't support PY3K

This reverts commit 4d6830104dfe7a1b728b8782a02af5b99ca0366f
Merge "Revert "Support building wheels (PEP-427)""
Cleans up marconi-queues and marconi-proxy config files

Changes [proxy:config] and [queues:config] into
just [drivers] since both these projects are
separate and so there's less repetition.

Change-Id: I982b5a08ed45426df17d9008854853c68c207608
Closes-Bug:#1231669
Remove proxy code

As discussed in one our meetings, the proxy code has been deprecated in
favor of the new sharding work. This patch removes all the code related
to the proxy.

Partially-implements bp storage-sharding

Change-Id: I6622332707c5a53ab56fa2796bef73be9e8c8c49