a8d21ee296
This patch contains several misc. changes to queue, message, and claim limits to reduce confusion and bring the implementation in line with the v1 spec. 1. Removed a couple of WSGI driver config options that are no longer needed now that we have redefined (and simplified) how we constrain message and metadata size. metadata_max_length = 65536 content_max_length = 262144 2. Renamed options to be more readable and consistent 3. Moved options to [transport] section 4. Made max messages that can be claimed its own setting, to reduce confusion 5. Removed enforcing an upper limit on the number of messages that can be posted; this was never in the spec, and appears to be gold-plating. Now, the only upper limit is max_message_size. 6. Removed the check on the size of a create claim request since (1) it is not part of the API spec, and (2) sanity-checks like that are best done by the web server, before a request even touches the app. 7. Migrated limits for storage driver interface params to static values, since those defaults define the static contract between transport and storage drivers. 8. Wrapped validation error messages in gettextutils._, and converted them to use .format instead of %. Change-Id: I1372e5002f030f5c8c47774ab00ca8ee7e12232d Closes-Bug: #1270260
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
# Copyright (c) 2013 Rackspace, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
from marconi.common import api
|
|
|
|
|
|
class ResponseSchema(api.Api):
|
|
|
|
"""Define validation schema for json response."""
|
|
|
|
def __init__(self, limits):
|
|
self.limits = limits
|
|
self.schema = {
|
|
'message_get_many':
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"href": {
|
|
"type": "string",
|
|
"pattern": "^(/v1/queues/[a-zA-Z0-9_-]{1,64}"
|
|
"/messages/[a-zA-Z0-9_-]+)$"
|
|
},
|
|
"ttl": {
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"maximum": self.limits.max_message_ttl
|
|
},
|
|
"age": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"body": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["href", "ttl", "age", "body"]
|
|
},
|
|
"minItems": 1,
|
|
"maxItems": self.limits.max_messages_per_page
|
|
}
|
|
}
|