'Check request is permitted to delete certain properties.  Read
permission is required to delete a property.
Note, the absence of a property in a request does not necessarily
indicate a delete.  The requester may not have read access, and so can
not know the property exists.  Hence, read access is a requirement for
delete, otherwise the delete is ignored transparently.
:param delete_props: List of properties to check
:param image_meta: Mapping of proposed new metadata about image
:param orig_meta: Mapping of existing metadata about image
:param req: The WSGI/Webob Request object
:raises HTTPForbidden: if request forbidden to create a property'

def _enforce_delete_protected_props(self, delete_props, image_meta, orig_meta, req):

    if property_utils.is_property_protection_enabled():
        for key in delete_props:
            if (self.prop_enforcer.check_property_rules(key, 'read', req.context) is False):
                image_meta['properties'][key] = orig_meta['properties'][key]
            elif (self.prop_enforcer.check_property_rules(key, 'delete', req.context) is False):
                msg = (_("Property    '%s'    is    protected") % key)
                LOG.warn(msg)
                raise HTTPForbidden(explanation=msg, request=req, content_type='text/plain')
