Use context interface for constraint
Use the new constraint interface on the context rather than setting an ugly attribute. Depends-On: I6bc2539a1ddbf7990164abeb8bb951ddcb45c993 Related-Bug: #1493714 Change-Id: I9142ca96a40092b2a4c94920c4ded9bbc3a0b35b
This commit is contained in:
parent
4a316960f2
commit
9662e2b170
|
@ -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