예제 #1
0
파일: subscription.py 프로젝트: therve/nabu
    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
예제 #2
0
파일: subscription.py 프로젝트: therve/nabu
 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})
예제 #3
0
파일: subscription.py 프로젝트: therve/nabu
 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)
예제 #4
0
파일: env.py 프로젝트: therve/nabu
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()
예제 #5
0
파일: subscription.py 프로젝트: therve/nabu
 def on_delete(self, req, resp, id):
     sub_api = api.SubscriptionAPI(req.context, self.conf)
     sub_api.delete(id)
     resp.status = falcon.HTTP_204
예제 #6
0
 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())
예제 #7
0
 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