)]}'
{"keystone/exception.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a93d7c4b8ef65cff3791d36b4ade6353c5e0da45","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class PolicyNotAuthorized(Forbidden):"},{"line_number":148,"context_line":"    \"\"\"Policy doesn\u0027t allow %(action)s to be performed.\"\"\""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"class RoleNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2BzoE%3D","line":148,"updated":"2013-02-18 21:26:24.000000000","message":"this seems pretty redundant with ForbiddenAction","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2e958fb18a75b8ced3915ddb2c28b9d7548c33f9","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"class PolicyNotAuthorized(Forbidden):"},{"line_number":148,"context_line":"    \"\"\"Policy doesn\u0027t allow %(action)s to be performed.\"\"\""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"class RoleNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2ByUw%3D","line":148,"in_reply_to":"AAAAM3%2F%2BzoE%3D","updated":"2013-02-19 08:48:04.000000000","message":"Yeah, you\u0027re right - was trying to keep us the same as nova, but we can refractor in the future if we want. Done.","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"}],"keystone/policy/backends/rules.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"84fd6fbc1d72bc5b11d2ff783db23d4cee8e70ba","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    init()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    # Add the exception arguments if asked to do a raise"},{"line_number":84,"context_line":"    extra \u003d {}"},{"line_number":85,"context_line":"    if do_raise:"},{"line_number":86,"context_line":"        extra.update(exc\u003dexception.PolicyNotAuthorized, action\u003daction)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B2WQ%3D","line":83,"updated":"2013-02-17 06:01:19.000000000","message":"This seems like a pretty different call path.  Can you give a pointer to the code changed to cause this, or explain it?","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5fdcf8986021c39f282fe007ce2f48ec755c0214","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    \"\"\""},{"line_number":81,"context_line":"    init()"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    # Add the exception arguments if asked to do a raise"},{"line_number":84,"context_line":"    extra \u003d {}"},{"line_number":85,"context_line":"    if do_raise:"},{"line_number":86,"context_line":"        extra.update(exc\u003dexception.PolicyNotAuthorized, action\u003daction)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2B2To%3D","line":83,"in_reply_to":"AAAAM3%2F%2B2WQ%3D","updated":"2013-02-17 07:14:11.000000000","message":"So\n1) The exception raising is a new capability, so we should use it\n2) The old enforce() call used to just make sure there was a \"brian\" initialised, and then call check().  The new policy engines doesn\u0027t have such an enforce() call, just a check() call.\n\nThese changes make us, essentially, do the same thing a nova","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"}],"tests/test_policy.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a93d7c4b8ef65cff3791d36b4ade6353c5e0da45","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"import urllib2"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from keystone.openstack.common import policy as common_policy"},{"line_number":23,"context_line":"from keystone import config"},{"line_number":24,"context_line":"from keystone import exception"},{"line_number":25,"context_line":"from keystone.policy.backends import rules"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Bzn4%3D","line":22,"updated":"2013-02-18 21:26:24.000000000","message":"import order should be revised with this","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2e958fb18a75b8ced3915ddb2c28b9d7548c33f9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"import urllib2"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from keystone.openstack.common import policy as common_policy"},{"line_number":23,"context_line":"from keystone import config"},{"line_number":24,"context_line":"from keystone import exception"},{"line_number":25,"context_line":"from keystone.policy.backends import rules"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2ByVw%3D","line":22,"in_reply_to":"AAAAM3%2F%2Bzn4%3D","updated":"2013-02-19 08:48:04.000000000","message":"Done","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"a93d7c4b8ef65cff3791d36b4ade6353c5e0da45","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        action \u003d \"example:get_http\""},{"line_number":113,"context_line":"        target \u003d {}"},{"line_number":114,"context_line":"        result \u003d rules.enforce(self.credentials, action, target)"},{"line_number":115,"context_line":"        self.assertEqual(result, True)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def test_enforce_http_false(self):"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Bznw%3D","line":115,"updated":"2013-02-18 21:26:24.000000000","message":"self.assertTrue(result)","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2e958fb18a75b8ced3915ddb2c28b9d7548c33f9","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        action \u003d \"example:get_http\""},{"line_number":113,"context_line":"        target \u003d {}"},{"line_number":114,"context_line":"        result \u003d rules.enforce(self.credentials, action, target)"},{"line_number":115,"context_line":"        self.assertEqual(result, True)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def test_enforce_http_false(self):"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2ByV0%3D","line":115,"in_reply_to":"AAAAM3%2F%2Bznw%3D","updated":"2013-02-19 08:48:04.000000000","message":"Done","commit_id":"fc1fc8be1b0059891125781f68107e8dbfae5b27"}]}
