Merge "Use context interface for constraint"
This commit is contained in:
commit
1a11bc9605
|
@ -92,11 +92,8 @@ def Resource(controller, faults=None, deserializers=None, serializers=None,
|
|||
revision_number = api_common.check_request_for_revision_constraint(
|
||||
request)
|
||||
if revision_number is not None:
|
||||
constraint = {'if_revision_match': revision_number,
|
||||
'resource': controller._collection,
|
||||
'resource_id': args['id']}
|
||||
# TODO(kevinbenton): add an interface to context to do this
|
||||
setattr(request.context, '_CONSTRAINT', constraint)
|
||||
request.context.set_transaction_constraint(
|
||||
controller._collection, args['id'], revision_number)
|
||||
|
||||
method = getattr(controller, action)
|
||||
result = method(request=request, **args)
|
||||
|
|
|
@ -118,13 +118,8 @@ class QueryParametersHook(hooks.PecanHook):
|
|||
state.request)
|
||||
if revision_number is None:
|
||||
return
|
||||
constraint = {
|
||||
'if_revision_match': revision_number,
|
||||
'resource': collection,
|
||||
'resource_id': state.request.context['resource_id']}
|
||||
# TODO(kevinbenton): add an interface to context to do this
|
||||
setattr(state.request.context['neutron_context'],
|
||||
'_CONSTRAINT', constraint)
|
||||
state.request.context['neutron_context'].set_transaction_constraint(
|
||||
collection, state.request.context['resource_id'], revision_number)
|
||||
|
||||
def after(self, state):
|
||||
resource = state.request.context.get('resource')
|
||||
|
|
|
@ -147,18 +147,18 @@ class RevisionPlugin(service_base.ServicePluginBase):
|
|||
instance that is constrained as well as the requested revision number
|
||||
to match.
|
||||
"""
|
||||
criteria = getattr(session.info.get('using_context'),
|
||||
'_CONSTRAINT', None)
|
||||
context = session.info.get('using_context')
|
||||
criteria = context.get_transaction_constraint() if context else None
|
||||
if not criteria:
|
||||
return None, None
|
||||
match = criteria['if_revision_match']
|
||||
match = criteria.if_revision_match
|
||||
mmap = standard_attr.get_standard_attr_resource_model_map()
|
||||
model = mmap.get(criteria['resource'])
|
||||
model = mmap.get(criteria.resource)
|
||||
if not model:
|
||||
msg = _("Revision matching not supported for this resource")
|
||||
raise exc.BadRequest(resource=criteria['resource'], msg=msg)
|
||||
raise exc.BadRequest(resource=criteria.resource, msg=msg)
|
||||
instance = self._find_instance_by_column_value(
|
||||
session, model, 'id', criteria['resource_id'])
|
||||
session, model, 'id', criteria.resource_id)
|
||||
return instance, match
|
||||
|
||||
def _enforce_if_match_constraints(self, session):
|
||||
|
|
Loading…
Reference in New Issue