def on_post(self, req, resp): data = jsonutils.loads(req.stream.read()) try: jsonschema.validate(data, subscription_schema) except jsonschema.ValidationError as e: resp.status = falcon.HTTP_400 resp.body = str(e) return opts = { 'os_auth_token': req.context.auth_token, 'os_auth_url': req.context.auth_url, 'os_project_id': req.context.project_id, 'os_service_type': 'messaging' } auth_opts = {'backend': 'keystone', 'options': opts} conf = {'auth_opts': auth_opts} endpoint = req.env['keystone.token_auth'].get_endpoint( None, 'messaging') client = zaqarclient.Client(url=endpoint, conf=conf, version=2.0) queue = client.queue(data['target']) signed_url_data = queue.signed_url(['messages'], methods=['POST']) data['signed_url_data'] = jsonutils.dumps(signed_url_data) sub_api = api.SubscriptionAPI(req.context, self.conf) resp.body = jsonutils.dumps(sub_api.create(data).items()) resp.status = falcon.HTTP_201
def on_get(self, req, resp): marker = req.get_param('marker') limit = req.get_param_as_int('limit', min=0, max=self.MAX_LIMIT) sub_api = api.SubscriptionAPI(req.context, self.conf) if limit is None: limit = self.DEFAULT_LIMIT data = [sub.items() for sub in sub_api.list(limit, marker)] resp.body = jsonutils.dumps({'subscriptions': data})
def on_get(self, req, resp, id): sub_api = api.SubscriptionAPI(req.context, self.conf) try: sub = sub_api.get(id) except exceptions.NotFound: resp.status = falcon.HTTP_404 else: resp.body = jsonutils.dumps(sub)
def run_migrations_online(conf): """Run migrations in 'online' mode. In this scenario we need to create an Engine and associate a connection with the context. """ ctxt = nabu_context.DispatcherContext() sub_api = api.SubscriptionAPI(ctxt, conf) with sub_api._writer() as session: connection = session.connection() context.configure(connection=connection, target_metadata=target_metadata) with context.begin_transaction(): context.run_migrations()
def on_delete(self, req, resp, id): sub_api = api.SubscriptionAPI(req.context, self.conf) sub_api.delete(id) resp.status = falcon.HTTP_204
def setUp(self): super(ApiTests, self).setUp() self.sub_api = api.SubscriptionAPI(self.context, self.conf) with self.sub_api._writer() as session: models.Base.metadata.create_all(session.connection())
def __init__(self, conf): self.context = context.DispatcherContext() self.nabu_conf = service.prepare_service([]) self.api = api.SubscriptionAPI(self.context, self.nabu_conf) self._endpoint = None