4778f708fa
This patch is the third part of subscription confirmation feature. Support to send email to subscriber if confirmation is needed. Change-Id: I230f5c7fbc9d19554bbcf34ce9b2f3b14230321b Implements: blueprint subscription-confirmation-support
152 lines
5.2 KiB
Python
152 lines
5.2 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 zaqar.common import decorators
|
|
from zaqar.transport.wsgi.v2_0 import claims
|
|
from zaqar.transport.wsgi.v2_0 import flavors
|
|
from zaqar.transport.wsgi.v2_0 import health
|
|
from zaqar.transport.wsgi.v2_0 import homedoc
|
|
from zaqar.transport.wsgi.v2_0 import messages
|
|
from zaqar.transport.wsgi.v2_0 import ping
|
|
from zaqar.transport.wsgi.v2_0 import pools
|
|
from zaqar.transport.wsgi.v2_0 import purge
|
|
from zaqar.transport.wsgi.v2_0 import queues
|
|
from zaqar.transport.wsgi.v2_0 import stats
|
|
from zaqar.transport.wsgi.v2_0 import subscriptions
|
|
from zaqar.transport.wsgi.v2_0 import urls
|
|
|
|
|
|
VERSION = {
|
|
'id': '2',
|
|
'status': 'CURRENT',
|
|
'updated': '2014-9-24T04:06:47Z',
|
|
'media-types': [
|
|
{
|
|
'base': 'application/json',
|
|
'type': 'application/vnd.openstack.messaging-v2+json'
|
|
}
|
|
],
|
|
'links': [
|
|
{
|
|
'href': '/v2/',
|
|
'rel': 'self'
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
@decorators.api_version_manager(VERSION)
|
|
def public_endpoints(driver, conf):
|
|
queue_controller = driver._storage.queue_controller
|
|
message_controller = driver._storage.message_controller
|
|
claim_controller = driver._storage.claim_controller
|
|
subscription_controller = driver._storage.subscription_controller
|
|
|
|
defaults = driver._defaults
|
|
|
|
return [
|
|
# Home
|
|
('/',
|
|
homedoc.Resource(conf)),
|
|
|
|
# Queues Endpoints
|
|
('/queues',
|
|
queues.CollectionResource(driver._validate,
|
|
queue_controller)),
|
|
('/queues/{queue_name}',
|
|
queues.ItemResource(driver._validate,
|
|
queue_controller,
|
|
message_controller)),
|
|
('/queues/{queue_name}/stats',
|
|
stats.Resource(queue_controller)),
|
|
('/queues/{queue_name}/purge',
|
|
purge.Resource(driver)),
|
|
# Messages Endpoints
|
|
('/queues/{queue_name}/messages',
|
|
messages.CollectionResource(driver._wsgi_conf,
|
|
driver._validate,
|
|
message_controller,
|
|
queue_controller,
|
|
defaults.message_ttl)),
|
|
('/queues/{queue_name}/messages/{message_id}',
|
|
messages.ItemResource(message_controller)),
|
|
|
|
# Claims Endpoints
|
|
('/queues/{queue_name}/claims',
|
|
claims.CollectionResource(driver._wsgi_conf,
|
|
driver._validate,
|
|
claim_controller,
|
|
defaults.claim_ttl,
|
|
defaults.claim_grace)),
|
|
('/queues/{queue_name}/claims/{claim_id}',
|
|
claims.ItemResource(driver._wsgi_conf,
|
|
driver._validate,
|
|
claim_controller,
|
|
defaults.claim_ttl,
|
|
defaults.claim_grace)),
|
|
|
|
# Ping
|
|
('/ping',
|
|
ping.Resource(driver._storage)),
|
|
|
|
# Subscription Endpoints
|
|
('/queues/{queue_name}/subscriptions',
|
|
subscriptions.CollectionResource(driver._validate,
|
|
subscription_controller,
|
|
defaults.subscription_ttl,
|
|
queue_controller,
|
|
conf)),
|
|
|
|
('/queues/{queue_name}/subscriptions/{subscription_id}',
|
|
subscriptions.ItemResource(driver._validate,
|
|
subscription_controller)),
|
|
|
|
('/queues/{queue_name}/subscriptions/{subscription_id}/confirm',
|
|
subscriptions.ConfirmResource(driver._validate,
|
|
subscription_controller,
|
|
conf)),
|
|
|
|
# Pre-Signed URL Endpoint
|
|
('/queues/{queue_name}/share', urls.Resource(driver)),
|
|
]
|
|
|
|
|
|
@decorators.api_version_manager(VERSION)
|
|
def private_endpoints(driver, conf):
|
|
|
|
catalogue = [
|
|
# Health
|
|
('/health',
|
|
health.Resource(driver._storage)),
|
|
]
|
|
|
|
if conf.pooling:
|
|
pools_controller = driver._control.pools_controller
|
|
flavors_controller = driver._control.flavors_controller
|
|
validate = driver._validate
|
|
|
|
catalogue.extend([
|
|
('/pools',
|
|
pools.Listing(pools_controller, validate)),
|
|
('/pools/{pool}',
|
|
pools.Resource(pools_controller)),
|
|
('/flavors',
|
|
flavors.Listing(flavors_controller, pools_controller,
|
|
validate)),
|
|
('/flavors/{flavor}',
|
|
flavors.Resource(flavors_controller, pools_controller)),
|
|
])
|
|
|
|
return catalogue
|