)]}'
{"keystone/common/crypt.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"3490ddf0af2e4b608f67556ad5269e8fc9d8ee3e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":"Routines for URL-safe encrypting/decrypting"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F%2Fy4%3D","line":18,"updated":"2012-01-09 17:19:09.000000000","message":"This file is here twice *and* isn\u0027t used?","commit_id":"8b06ffd00d184b8acc0634d0d5d82579db1a7820"}],"keystone/content/admin/OS-KSVALIDATE-admin.wadl":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"3490ddf0af2e4b608f67556ad5269e8fc9d8ee3e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                \u003cresource id\u003d\"validate\" path\u003d\"OS-KSVALIDATE\"\u003e"},{"line_number":40,"context_line":"                    \u003cparam name\u003d\"X-Auth-Token\" style\u003d\"header\" type\u003d\"xsd:string\" required\u003d\"true\"\u003e"},{"line_number":41,"context_line":"                        \u003cdoc\u003eYou need a valid admin token for access.\u003c/doc\u003e"},{"line_number":42,"context_line":"\t\t   \t            \u003c/param\u003e"},{"line_number":43,"context_line":"                    \u003cparam name\u003d\"X-Subject-Token\" style\u003d\"header\" type\u003d\"xsd:string\" required\u003d\"true\"\u003e"},{"line_number":44,"context_line":"                        \u003cdoc\u003eYou need to supply a token to validate.\u003c/doc\u003e"},{"line_number":45,"context_line":"\t\t   \t            \u003c/param\u003e"}],"source_content_type":"text/xml","patch_set":3,"id":"AAAAD3%2F%2F%2Fys%3D","line":42,"updated":"2012-01-09 17:19:09.000000000","message":"Should be spaces","commit_id":"8b06ffd00d184b8acc0634d0d5d82579db1a7820"}],"keystone/middleware/auth_token.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"3490ddf0af2e4b608f67556ad5269e8fc9d8ee3e","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        if self.memcache_hosts:"},{"line_number":212,"context_line":"            if self.cache is None:"},{"line_number":213,"context_line":"                self.cache \u003d \"keystone.cache\""},{"line_number":214,"context_line":"        self.osksvalidate \u003d self._supports_osksvalidate()"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def __init__(self, app, conf):"},{"line_number":217,"context_line":"        \"\"\" Common initialization code \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F%2Fy8%3D","line":214,"updated":"2012-01-09 17:19:09.000000000","message":"variable name should reflect that this is a boolean -- but variable name is a noun","commit_id":"8b06ffd00d184b8acc0634d0d5d82579db1a7820"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f6276c05442e189fa259c7ae9fe9925821174343","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        #Khaled\u0027s version uses creds to get a token"},{"line_number":473,"context_line":"        # \"X-Auth-Token\": admin_token}"},{"line_number":474,"context_line":"        # we\u0027re using a test token from the ini file for now"},{"line_number":475,"context_line":"        try:"},{"line_number":476,"context_line":"            conn \u003d http_connect(self.auth_host, self.auth_port, \u0027GET\u0027,"},{"line_number":477,"context_line":"                                path,"},{"line_number":478,"context_line":"                                headers\u003dheaders,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2FmE%3D","line":475,"updated":"2012-01-23 21:43:52.000000000","message":"This giant try/except block already appears twice... should there not be a function or decorator to wrap calls to http_connect?","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"23de515a37c838ce4aa65a3a74301fff56cb9c51","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        #Khaled\u0027s version uses creds to get a token"},{"line_number":473,"context_line":"        # \"X-Auth-Token\": admin_token}"},{"line_number":474,"context_line":"        # we\u0027re using a test token from the ini file for now"},{"line_number":475,"context_line":"        try:"},{"line_number":476,"context_line":"            conn \u003d http_connect(self.auth_host, self.auth_port, \u0027GET\u0027,"},{"line_number":477,"context_line":"                                path,"},{"line_number":478,"context_line":"                                headers\u003dheaders,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2FfI%3D","line":475,"in_reply_to":"AAAAEH%2F%2F%2FmE%3D","updated":"2012-01-24 00:37:02.000000000","message":"The blocks (the other one in _verify_claims) handle the exceptions differently (Not saying there may not be a cleaner way to handle this). We can do this after E3 as long as this currently works with DevStack and helps with troubleshooting.","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f6276c05442e189fa259c7ae9fe9925821174343","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                                timeout\u003dself.auth_timeout)"},{"line_number":483,"context_line":"            resp \u003d conn.getresponse()"},{"line_number":484,"context_line":"            data \u003d resp.read()"},{"line_number":485,"context_line":"        except EnvironmentError as exc:"},{"line_number":486,"context_line":"            if exc.errno \u003d\u003d errno.ECONNREFUSED:"},{"line_number":487,"context_line":"                logger.error(\"Keystone server not responding on %s://%s:%s \""},{"line_number":488,"context_line":"                             \"to check claims\" % (self.auth_protocol,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2FnE%3D","line":485,"updated":"2012-01-23 21:43:52.000000000","message":"Are exceptions not logged at the highest level anyway?\n\n    msg \u003d None\n    if exc.errno \u003d\u003d errno.ECONNREFUSED:\n        msg \u003d \"Keystone server not responding...\"\n    else:\n        msg \u003d \"Error trying to detect...\"\n    logger.exception(exc)\n    logger.error(msg)\n    raise KeystoneUnreachable(msg)","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"23de515a37c838ce4aa65a3a74301fff56cb9c51","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                                timeout\u003dself.auth_timeout)"},{"line_number":483,"context_line":"            resp \u003d conn.getresponse()"},{"line_number":484,"context_line":"            data \u003d resp.read()"},{"line_number":485,"context_line":"        except EnvironmentError as exc:"},{"line_number":486,"context_line":"            if exc.errno \u003d\u003d errno.ECONNREFUSED:"},{"line_number":487,"context_line":"                logger.error(\"Keystone server not responding on %s://%s:%s \""},{"line_number":488,"context_line":"                             \"to check claims\" % (self.auth_protocol,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fe8%3D","line":485,"in_reply_to":"AAAAEH%2F%2F%2FnE%3D","updated":"2012-01-24 00:37:02.000000000","message":"Connection refused is a known condition where Keystone is not up at the provided endpoint. We\u0027re handling it, logging it, and returning it as a known error.\nOther exceptions are considered unexpected, so being logged as exceptions and raised (code updated - see incoming review).","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f6276c05442e189fa259c7ae9fe9925821174343","unresolved":false,"context_lines":[{"line_number":490,"context_line":"                                                  self.auth_port))"},{"line_number":491,"context_line":"            else:"},{"line_number":492,"context_line":"                logger.exception(exc)"},{"line_number":493,"context_line":"                logger.debug(\"Error trying to detect extensions. \""},{"line_number":494,"context_line":"                                 \"Falling back to core API\")"},{"line_number":495,"context_line":"            raise KeystoneUnreachable()"},{"line_number":496,"context_line":"        except HTTPException as exc:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fms%3D","line":493,"updated":"2012-01-23 21:43:52.000000000","message":"Why is this one debug?\n\n    ... debug(\"Error ...","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"23de515a37c838ce4aa65a3a74301fff56cb9c51","unresolved":false,"context_lines":[{"line_number":490,"context_line":"                                                  self.auth_port))"},{"line_number":491,"context_line":"            else:"},{"line_number":492,"context_line":"                logger.exception(exc)"},{"line_number":493,"context_line":"                logger.debug(\"Error trying to detect extensions. \""},{"line_number":494,"context_line":"                                 \"Falling back to core API\")"},{"line_number":495,"context_line":"            raise KeystoneUnreachable()"},{"line_number":496,"context_line":"        except HTTPException as exc:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fe4%3D","line":493,"in_reply_to":"AAAAEH%2F%2F%2Fms%3D","updated":"2012-01-24 00:37:02.000000000","message":"It\u0027s just additional helpful information for where the error happened. I\u0027ll remove it to keep code clear...","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f6276c05442e189fa259c7ae9fe9925821174343","unresolved":false,"context_lines":[{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    def _supports_osksvalidate(self):"},{"line_number":617,"context_line":"        \"\"\"Check if target Keystone server supports OS-KSVALIDATE.\"\"\""},{"line_number":618,"context_line":"        if self.tested_for_osksvalidate \u003d\u003d True:"},{"line_number":619,"context_line":"            return self.osksvalidate"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"        headers \u003d {\"Accept\": \"application/json\"}"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2FmY%3D","line":618,"updated":"2012-01-23 21:43:52.000000000","message":"These \u003d\u003d True and !\u003d True are a bit redundant ;)","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"23de515a37c838ce4aa65a3a74301fff56cb9c51","unresolved":false,"context_lines":[{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    def _supports_osksvalidate(self):"},{"line_number":617,"context_line":"        \"\"\"Check if target Keystone server supports OS-KSVALIDATE.\"\"\""},{"line_number":618,"context_line":"        if self.tested_for_osksvalidate \u003d\u003d True:"},{"line_number":619,"context_line":"            return self.osksvalidate"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"        headers \u003d {\"Accept\": \"application/json\"}"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fac%3D","line":618,"in_reply_to":"AAAAEH%2F%2F%2FmY%3D","updated":"2012-01-24 00:37:02.000000000","message":"Done","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f6276c05442e189fa259c7ae9fe9925821174343","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        try:"},{"line_number":625,"context_line":"            self.last_test_for_osksvalidate \u003d time.time()"},{"line_number":626,"context_line":"            conn \u003d http_connect(self.auth_host, self.auth_port, \u0027GET\u0027,"},{"line_number":627,"context_line":"                            \u0027/v2.0/extensions/\u0027,"},{"line_number":628,"context_line":"                            headers\u003dheaders,"},{"line_number":629,"context_line":"                            ssl\u003d(self.auth_protocol \u003d\u003d \u0027https\u0027),"},{"line_number":630,"context_line":"                            key_file\u003dself.key_file, cert_file\u003dself.cert_file,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fmk%3D","line":627,"updated":"2012-01-23 21:43:52.000000000","message":"8 extra columns of indentation?","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"23de515a37c838ce4aa65a3a74301fff56cb9c51","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        try:"},{"line_number":625,"context_line":"            self.last_test_for_osksvalidate \u003d time.time()"},{"line_number":626,"context_line":"            conn \u003d http_connect(self.auth_host, self.auth_port, \u0027GET\u0027,"},{"line_number":627,"context_line":"                            \u0027/v2.0/extensions/\u0027,"},{"line_number":628,"context_line":"                            headers\u003dheaders,"},{"line_number":629,"context_line":"                            ssl\u003d(self.auth_protocol \u003d\u003d \u0027https\u0027),"},{"line_number":630,"context_line":"                            key_file\u003dself.key_file, cert_file\u003dself.cert_file,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fa4%3D","line":627,"in_reply_to":"AAAAEH%2F%2F%2Fmk%3D","updated":"2012-01-24 00:37:02.000000000","message":"Done - but handled by aligning to start of (","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f6276c05442e189fa259c7ae9fe9925821174343","unresolved":false,"context_lines":[{"line_number":684,"context_line":"    logger.debug(\"Initializing with config file: %s\" % config_file)"},{"line_number":685,"context_line":"    wsgiapp \u003d loadapp(\"config:%s\" % config_file,"},{"line_number":686,"context_line":"                    global_conf\u003d{\"log_name\": \"auth_token.log\"})"},{"line_number":687,"context_line":"    wsgi.server(eventlet.listen((\u0027\u0027, 8090)), wsgiapp)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"if __name__ \u003d\u003d \"__main__\":"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fl4%3D","line":687,"updated":"2012-01-23 21:43:52.000000000","message":"What\u0027s 8090, anyway?","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"},{"author":{"_account_id":5,"name":"Ziad Sawalha","email":"ziad.sawalha@rackspace.com","username":"ziad-sawalha"},"change_message_id":"23de515a37c838ce4aa65a3a74301fff56cb9c51","unresolved":false,"context_lines":[{"line_number":684,"context_line":"    logger.debug(\"Initializing with config file: %s\" % config_file)"},{"line_number":685,"context_line":"    wsgiapp \u003d loadapp(\"config:%s\" % config_file,"},{"line_number":686,"context_line":"                    global_conf\u003d{\"log_name\": \"auth_token.log\"})"},{"line_number":687,"context_line":"    wsgi.server(eventlet.listen((\u0027\u0027, 8090)), wsgiapp)"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"if __name__ \u003d\u003d \"__main__\":"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAEH%2F%2F%2Fa8%3D","line":687,"in_reply_to":"AAAAEH%2F%2F%2Fl4%3D","updated":"2012-01-24 00:37:02.000000000","message":"Pre-existing code. That\u0027s used in some tests as a default port for a stand-alone proxy config.","commit_id":"01281b8e16de6b6c8cb2cf2adbe2dc41e77d593f"}],"keystone/middleware/crypt.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"3490ddf0af2e4b608f67556ad5269e8fc9d8ee3e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":16,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":17,"context_line":"#    under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":"Routines for URL-safe encrypting/decrypting"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAD3%2F%2F%2Fy0%3D","line":18,"updated":"2012-01-09 17:19:09.000000000","message":"This file is here twice *and* isn\u0027t used?","commit_id":"8b06ffd00d184b8acc0634d0d5d82579db1a7820"}]}
