CHANGES
=======

* Remove MySQL-python from the dependency list

2014.1.rc1
----------

* Don't fork marconi-server unless USE_SCREEN=False
* keystone middleware version change due to a bug
* Add a help text for auth_strategy
* Improve cleanup of test_insert_queue_header_asterisk
* Switch to oslosphinx
* keystoneclient now supports Py3K
* Add keystone_authtoken to our config generator
* fix() : introduce division import
* Fix message.first return value for mongodb
* Updated from global requirements
* Add more unit tests for message controller
* Include full license text
* Update license headers on select source files
* Fix functional config file instructions
* Add default mongod URI to README
* Marconi Operations Document
* adds docs directory with dev guide
* fix(gate): one for pypy, one for docs
* Improve README file
* Enable the basic dev doc for Marconi
* Allow marconi-server to properly daemonize
* Rename logging.conf-sample to logging.conf.sample
* Fix config file name in README instructions
* Keep python 3.X compatibility for xrange
* Use oslo's config generator to generate sample
* Prepare Marconi to support oslo's config.generator
* Add an options module to sqlalchemy
* Updated from global requirements
* Use a colon instead of a . in setup.cfg
* Sync from oslo-incubator
* Add MySQL-python as a dependency
* Add missing logging trace queues collection
* fix(cli): Print statement in global error handler
* Enable shards test for sqlalchemy
* Remove unused method from timeutils
* Reuse the transaction before getting messages
* Set time_zone to UTC on MySQL
* MySQL requires VARCHARs to have a length
* Slighty refactored url_prefix usage in WSGI tests
* Update marconi.conf-sample to deprecate sqlite
* Replace `Sqlite` with `Sqlalchemy` in test names
* Removed debug level messages translations
* fix(MongoDB): Driver does not retry on AutoReconnect errors

2014.1.b3
---------

* Fix assertion for Testutils to check on sqlite://:memory:
* Deprecate sqlite in favor of sqlalchemy
* Don't raise `DoesNotExist` on claims deletion
* Register sqlalchemy endpoints
* Fix message's get and deletion
* Enable pragma foreign key for sqlite
* Remove termios support (and associated issues)
* Updated from global requirements
* fix(mongodb): Limit kwarg must be an int
* test(wsgi): Refactor tests in preparation for API v1.1
* test(wsgi): Enable test_default_limits and fix UUID bug
* Add an sqlalchemy storage to Marconi
* Updated from global requirements
* feat(sql/catalogue): add catalogue controller
* feat(sqlalchemy): add shards controller
* Replace unicode() by six.text_type for python3 compatability
* Replace basestring by six for python3 compatability
* feat(v1.1): Implement /ping endpoint for v1.1
* feat(v1.1): Plumb v1.1 API in the WSGI transport
* Sync common modules from olso and remove py3kcompat
* doc(README): Have the user pass '-v' when starting marconi-server
* Fix two small typos in marconi/queues/storage/sharding.py
* feat(sql/driver): expose ControlDriver, more config
* Apply six for metaclass
* Use six.moves.urllib.parse instead of urlparse
* Improve help strings
* fix(wsgi): Cleanup limit config options
* fix(shards): guard against registering bad shard URIs
* Fix misspellings in marconi
* test(functional): Use direct WSGI requests in lieu of a wsgiref server
* chore: Fix pylint errors
* test(functional): Don't use a dead test server
* fix(testtools): 0.9.35 is not compatible with subunit 0.0.17
* Skip message_get_many schema test until we can repro reliably
* Removed copyright from files without code
* add copyright notices to some source files
* DRY applied to class names
* Add a _config_options function to Marconi
* chore: Add pylint envs
* Drop msgpack dependency
* fix: Move decorator out of class definition since it is static
* Sync oslo-cache from oslo-incubator
* Don't use `override_time` but mock instead

2014.1.b2
---------

* fix: ConnectionError no longer takes positional arguments
* Remove dev1 from version, since it is added automagically by pbr
* fix(mongodb): Ensure batch message posts are atomic (all or nothing)
* Enforce size verification on content-length
* Use testr instead of nosetest
* Remove __MARCONI_SETUP__
* test: Use srmock header_dict in preparation for Falcon 0.1.8
* Added a request and response file to common
* Map HTTP request codes in jsonschema
* Verify response jsonschema for List Messages by ID
* Change shards & catalogue db into single property
* Implement DataDriver for sqlalchemy storage backend
* Implement tables and unit tests for sqlalchemy storage backend
* chore: Sync local (marconi) requirements with global reqs
* DRY queues storage error message format
* Added logging to HTTP errors
* chore: Bump version to icehouse-2 dev
* Return relative URIs for href-template of homedoc
* Remove the __MARCONI_SETUP_ global from init
* Use relative import for base in tests
* Don't use tuple parameters
* Disable keystone client if running under Py3K
* Remove gettext magic and import _ explicitly
* fix: Reduce logging severity of certain errors
* chore: Remove remaining proxy cruft
* fix(mongo): Delete claimed message fails
* feat(sharding): Cache shard mappings
* chore: Pass cache into drivers
* fix: shard test failing
* fix: mongodb tests consume storage like crazy
* Fixes wrong hrefs when getting set of messages
* Make sqlite connection lazy
* cleanup: remove proxy cruft
* opt: add hints to make delete/claim checks faster
* fix: cache contract for memcached backend
* Make consumer_for a context manager
* feat(health): make health API storage-aware
* feat(validation): verify project id length
* feat(shard): queue listing from multiple sources
* Added empty packages and a test for the API v1
* Remove proxy code
* Cleans up marconi-queues and marconi-proxy config files
* Revert "Support building wheels (PEP-427)"
* Isolate tests a bit more
* feat: connect sharding manager to control drivers
* Support building wheels (PEP-427)
* refactor: drop simplejson requirement
* Update openstack/common/lockutils
* Add Tests for non-existing resources
* feat: integrate shard storage with transport
* Renamed "exceptions" module to "errors"
* feat: add catalogue storage driver for queues
* Sync with global requirements
* feat(logging): format msg when log level met
* feat: shards mongodb driver + tests
* feat: shards storage controller interface
* Update the Marconi readme with more detailed installation instructions
* feat: add shard management resource
* Don't enable_echo when we don't have a tty
* Start 2014.1 development
* feat: split queues API into public/admin
* fix: one less unnecessary modification
* Move misplaced test under the right package
* Fix Pep8 indentation errors missed by Pep8 1.4.5
* fix(bootstrap): Logging CLI options don't work
* feat: Storage sharding foundation
* Validation for messages returned by queue/stats
* Return a consumer function instead of consuming
* Use stevedore instead of importutils
* fix(queues): Global config used everywhere
* 'Persist' __getattr__ results
* Setup storage pipeline in the boostrap instead of driver base
* chore: Remove GC cruft from storage driver base class
* Follow hacking rules about import
* doc: Update conf filename used to enable mongod
* fix: invalidate partition cache entry on delete
* doc: Recommend installing marconi via pip
* Updated Marconi ReadMe file with correct git repo address
* Tests for Client-ID validation
* Use the pipeline for the storage layer
* Implement common pipeline class
* feat: storage sharding schema for marconi-queues
* fix(mongo): Negative age reported in stats
* fix: proxy mongodb storage fields overspecified
* fix: validate queue listing limits in proxy
* Use oslo.config directly instead of common.config
* Replace deprecated method aliases in tests
* fix(mongo): Queue listing may include queues from other projects
* fix: stream request data rather than loading it into memory
* fix: allow multi-update on partition storage
* feat(api): Client-ID as a real UUID
* feat(api): give validation resp a different title
* bug: proxy headers aren't forwarded properly
* feat: add logging to proxy
* fix: listing queue fails when detailed=True
* fix: do not duplicate queues across partitions
* chore: Designate semi-private "friend" helper methods as such
* chore: Rename MONGODB_TEST_LIVE to MARCONI_TEST_MONGODB
* feat(proxy): listing opts returns lists
* Add Tests for Queue Stats
* fix(wsgi): Non-ASCII characters in the queue name trigger 500 status
* fix: encode keys before caching
* fix: force exception content to be text_type
* feat (proxy/admin): allow partition modifications
* feat: split proxy API into admin and public apps
* feat: separate config for queues and proxy
* proxy: mirror structure of marconi queues + bootstrap
* fix(proxy): forward marconi headers
* Fix queue's packages namespaces
* feat(mongodb): Partition data across multiple databases
* chore: Expose commit hash in version module
* WSGI: added the control for non empty X-PROJECT-ID
* Update oslo to latest and greatest
* perf(mongodb): Combine project and queue message fields
* fix(mongodb): Marker generation creates a bottleneck under heavy load
* fix: age presented as negative
* test(proxy): fix proxy-transport tests
* proxy: adds oslo.cache, config support, & stevedore
* Require oslo.config 1.2.0 final
* Move queues' unittests under tests/unit/queues/
* Move test_default_limits to the new tests location
* Move tests/unit/storage/base under m/tests/storage
* proxy: mongodb storage driver
* proxy: memory storage driver + tests + fixes
* fix(mongodb): Remove $or clause used to claim messages
* Help Bleeding Eyes
* Update pbr and requirements to be current
* Update HACKING file with the new structure
* test(proxy): catalog tested
* Fix old import paths
* test(proxy): partition related endpoints tested
* feat: define interfaces for proxy storage
* feat: marconi-proxy forwarding
* feat: marconi proxy (v1, health)
* feat: marconi proxy
* Change Marconi's codebase structure
* Fix Functional Tests
* chore: Update Falcon dep to allow version 0.1.7
* Update .gitreview for incubation org move
* feat(mongo): use UNIX timestamp instead of datetime
* Replace old functional http.post call
* chore: Update oslo.config to version 1.2.0a4
* fix(tests): unit tests disabled due to missing __ini__.py
* fix: Requests get slower when queues have a lot of messages
* Move Unit tests under a unit package
* Use format instead of % for string formatting
* Move functional tests into wsgi/v1
* Implement small http client for tests
* Implement embedded marconi-server execution
* Run functional tests under tox
* Use oslo.config for functional tests
* Remove util packages
* Pull actual tests out of marconi/tests
* fix(transport.wsgi): JSON home doc missing GET and HEAD hints
* feat(storage): configurable default paging size
* fix(storage.mongodb): Race condition when creating a claim
* Make tox use develop instead of sdist
* fix: Claim can return 404
* chore: Update openstack.common to get latest timeutils
* chore: Track the up-and-coming oslo.cache module
* fix: claimed message require claim_id to delete
* chore: Update openstack.common, add lockutils
* Refactor System Tests
* feat(wsgi): homedoc now ships relative URIs
* chore: remove queue_id cruft in mongo driver
* chore: increase coverage in some trivial ways
* chore: remove unneeded statements in wsgi
* Update Tests for Input Validation
* chore: cleanup the unit tests with ddt
* Added a PyPy env to tox
* Log pymongo's exception on ConnectionFailure
* fix: bad marker behaves like non-existing marker
* Don't wait for ack when deleting expired messages
* Use req.get_param's store feature in lieu of utils.purge
* restructure: rm -rf tools, move test requires
* test: delete msg w/ invalid claim isn't deleted
* fix: fetching nonexistent message/claims raises 503s
* Ignore *.egg dirs
* Don't use claim creation time to calc claim's age
* fix: rename _payload_uplimit into _paging_uplimit
* feat(validation): check metadata JSON size
* Convert "outgoing" literals to unicode
* fix(storage/mongo): unclaimed messages not listed
* Fixes unique constraint regex
* doc(validation): update the sample config file
* Use oslo.config 1.2
* feat(validation): validate user input
* Buffer message documents when enqueuing them, in lieu of streaming
* Rename transport helpers to utils
* Update tests to reflect http 201 on Post Claim
* Add "total", "oldest" and "newest" to queue stats
* feat(wsgi): claim creation returns 201
* Add Tests for GET/HEAD queue
* Update oslo-incubator requirements
* feat(transport): place request size limit for JSON
* Don't check for active messages
* Use queue's name and project to get messages
* Test for bulk delete of messages
* feat(api): GET and HEAD methods on queue
* Update tests to reflect queue metadata changes
* Implement v1 JSON Home Document
* feat(wsgi): message bulk deletion
* feat(storage): message bulk deletion
* Fix active index's order
* Sort everything by K
* Tell _list queries what index to use
* Verify headers in server response
* refactor: _basic_message builder for mongo driver
* Gate on Python 3.3
* Include queue ID in unclaim to trigger use of index
* refactor: get single message in storage
* Adds test for include_claimed flag
* fix(typo): Phython to Python
* Tests for out of range integers
* Implements new metadata endpoint
* feat(storage): separate queue set_metadata()
* Exception messages are no longer marked as translatable
* Add support for listing claimed messages (transport)
* Add support for listing claimed messages (storage)
* feat(transport): define acceptable integer range
* chore: drop unused bulk message support on /queues
* chore: switch to py3 print function
* feat(wsgi): check for client media type support
* Add Test for Health endpoint
* Fix Message Tests
* feat(storage): do not restrict the container type
* Log all transport actions
* Cleanup PATCH Claim Tests
* Print caught exceptions in cli
* Replace foo.next() with next(foo)
* fix(wsgi): patching claims only requires "ttl"
* fix(wsgi): a non-existing queue stats returns 404
* Fix route for bulk-get message by ID
* Update README and make it more explicit
* Handle AutoReconnect errors
* Add test for bulk delete of messages
* Implement grace period for claimed message lifetimes
* Implement health endpoint for WSGI driver
* Fix Verification for Bulk Inserts
* Factor out entry point helper and apply to marconi.cmd.server
* Fixed pep8 dependency conflict
* Refactored storage controllers into standalone modules
* System Tests - Switch from robot to nosetests
* Remove project ID from the URI
* Get several messages by ID using a queue filter parameter
* Don't sink stdout when running unit tests
* Get messages by id
* Set Falcon version in requirements.txt
* Edited the READMEs to improve layout and prose
* Added some de-facto style guidelines to HACKING and fixed violations
* Update marconi.conf-sample to support stevedore
* Migrate to stevedore
* Removing cliff from dependencies
* Rename pip-requires / test-requires into (test-)requirements.txt
* Migrate to pbr
* Log retry attempts resulting from parallel message posts
* Move log.setup to Bootstrap and use cfg.CONF opts
* Guarantee FIFO/once-and-only-once delivery when using MongoDB
* Add Verification for List Queue
* Pass content length to req.stream.read() in WSGI transport
* Make sure transport's conf are registered
* Wrap transport's app with keystoneclient's middleware
* Replace gunicorn with wsgiref
* Add System Tests
* Don't use BaseException.message
* Properly handle message post with an empty iterable
* Expand controller abbreviations in WSGI resources
* Clean up exception handling in the WSGI transport driver
* Use oslo's log
* Rename bin package into cmd
* perf: Decrease time to create a claim by ~1 us
* refactor: Hoist helpers.expect into package namespace
* style: Fix flake8 and hacking errors
* Rename tenant into project
* Raise NotFound when an invalid ID is passed
* style: Migrate to the new hacking package on pypi
* style: Enable flake8 with proper exclusions
* Set messages ttl to claims ttl
* Fix tests which were broken by incomplete changes
* Switch to flake8 and fix errors
* A helper to remove None value entries from a dict
* Support list queue pagination in transport
* Support list queue pagination in storage
* Message listing switches to the new API
* Define the new pagination API in storage base
* Use ttl indexes as message scrubber
* Add simplejson into dependency
* Support the new claim TTL semantics in SQlite
* Get rid of SQlite's own test code
* Support message deletion with claim in MongoDB
* A self-format exception, ClaimNotPermitted
* Bugfix: Deleting a claimed msg is idempotent
* Move SQlite ID tests to driver-specific tests
* Let the storage tests cover the SQlite driver
* All endpoints in WSGI pick up the faulty driver
* Make Paste use default configs
* Fix a bug in test; "href" needs to be splitted
* Bugfix: Exclude expired claimed messages in stats
* Count "claimed" and "free" msgs in Queue stats
* Bugfix: Do not claim expired messages in SQlite
* Queue mgmt picks up the faulty driver in WSGI
* Delete messages when a queue is deleted
* Improved mongodb's storage queries and indexes
* Make use of simplejson in the transport layer
* fix: Enable reading from secondaries in the MongoDB driver
* Bugfix: respond 204 if no message get claimed
* Log the traceback as well
* Immigrate SQlite message tests to storage tests
* client_uuid is not optional to POST messages
* Added total, claimed, expired to queue stats
* chore: Remove bin/marconi-self-host
* Queue stats returns claimed, expired, and total
* Config module no longer remember cli args
* Added gunicorn as server application manager
* Remove unused code in storage
* Implemented marconi-server entry point
* Queue stats in MongoDB
* Add the "href" field to listing queues
* Use "href" instead of "id" in the claimed messages
* Use "href" instead of "id" in the message body
* Make use of the features in falcon 0.1.3 & 0.1.4
* Queue Stats in WSGI
* List queues in WSGI (w/o paging, but compatible)
* Delete queue in WSGI
* Check for malformed JSON when creating a queue
* Claim support in WSGI
* ClaimMessage implementation for mongodb
* Do not allow updating an expired claim in SQlite
* Bugfix: exclude expired messages in Queue stats
* ClaimMessage Base Tests
* Return (claim_id, message_iter) in SQLite create()
* Raise self-formatted exceptions in SQlite
* Don't call super on queue deletion
* Set 'Content-Location' on get-messages correctly
* MessageController implementation for mongodb storage
* Rename QueueResource to queues.ItemResource
* Claim messages in SQlite
* Message support in WSGI
* split message's get method in 2 separate methods
* Suppress some Coverage report output
* Improve the documentation of the config module
* Message support in SQlite
* Use metadata instead of **metadata for claim's updates
* Keystone Authentication
* test: Added mongodb and faulty storage tests, and made them pass
* style(HACKING): Add notes about whitespace, naming, and wrapping
* chore: Remove unused module (superseded by bootstrap)
* Bootstrap now dynamically imports storage and transport modules
* style: Enable pep8 warnings/errors and fix ensuing chaos
* SQlite storage improved
* feat(transport.wsgi): Create or update queue
* chore: Remove unused test
* refactor: Rename AUTHORS so that it doesn't keep getting overwritten
* refactor: Rename TestSuite to TestBase
* refactor: Rename Kernel class to make it less confusing
* QueueController for mongodb storage
* refactor(tests.util): Remove prepare method support
* Implementation of the reference storage
* Add py26 to tox.ini
* Move .set_cli and .load to the project() object
* Metadata is not optional (to storage)
* Replace create / update with upsert
* Added tenant to the *ControllerBaseTest
* Updated README file with Marconi's goal
* Implement some logic in abstract methods
* Changed Maintainer from OpenStack LLC to OpenStack Foundation
* Add gettext support
* fix(nose): Comment out detailed-errors to workaround a testtools+nose bug
* fix(tox): Address warnings
* Decentralized configuration
* Use issublcass instead of isinstance
* Implements base classes for storage controllers
* doc(transport.driver_base): Add docstrings
* Added hacking file
* Move marconi.common.Kernel to marconi.Kernel
* Switch to oslo.config
* Ignore vim backup files
* doc: Make file headings consistent, and update docstrings per the proposed HACKING guide
* feat(Kernel): Demonstrate wiring up endpoints
* test: Add test suite utility class and sample conf
* chore: Stub out how the kernel will be configured, and connect transports and storage
* chore: Setup directory structure
* Added license to setup.py
* Added oslo-config as dependency
* Fixed setup, tox and requirements
* Added files to gitignore
* Add README
* Initial import
