)]}'
{"glance/common/auth.py":[{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"59b602af591d2a94fd5f93d21f2609b4168d560a","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            glance_info \u003d resp_auth[\u0027serviceCatalog\u0027][\u0027glance\u0027]"},{"line_number":171,"context_line":"            glance_endpoint \u003d glance_info[0][\u0027publicURL\u0027]"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            self.management_url \u003d glance_endpoint"},{"line_number":174,"context_line":"            self.auth_token \u003d resp_auth[\u0027token\u0027][\u0027id\u0027]"},{"line_number":175,"context_line":"        elif resp.status \u003d\u003d 305:"},{"line_number":176,"context_line":"            raise exception.RedirectException(resp[\u0027location\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F5MQ%3D","side":"PARENT","line":173,"updated":"2011-11-02 15:59:10.000000000","message":"We need to handle the case that \u0027glance\u0027 doesn\u0027t show up in the serviceCatalog, and we might as well break once we find the first glance_endpoint.","commit_id":"cef073049a70b9d6b5bf90678890924e1c3abb7a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"43de9ab53e04c968a2678504749c57d1f7a58cc7","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            glance_info \u003d resp_auth[\u0027serviceCatalog\u0027][\u0027glance\u0027]"},{"line_number":171,"context_line":"            glance_endpoint \u003d glance_info[0][\u0027publicURL\u0027]"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            self.management_url \u003d glance_endpoint"},{"line_number":174,"context_line":"            self.auth_token \u003d resp_auth[\u0027token\u0027][\u0027id\u0027]"},{"line_number":175,"context_line":"        elif resp.status \u003d\u003d 305:"},{"line_number":176,"context_line":"            raise exception.RedirectException(resp[\u0027location\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F5LA%3D","side":"PARENT","line":173,"in_reply_to":"AAAACX%2F%2F5LU%3D","updated":"2011-11-02 16:22:54.000000000","message":"Awesome.","commit_id":"cef073049a70b9d6b5bf90678890924e1c3abb7a"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"11b46da98c115782281c09340c98922a47b8d869","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            glance_info \u003d resp_auth[\u0027serviceCatalog\u0027][\u0027glance\u0027]"},{"line_number":171,"context_line":"            glance_endpoint \u003d glance_info[0][\u0027publicURL\u0027]"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            self.management_url \u003d glance_endpoint"},{"line_number":174,"context_line":"            self.auth_token \u003d resp_auth[\u0027token\u0027][\u0027id\u0027]"},{"line_number":175,"context_line":"        elif resp.status \u003d\u003d 305:"},{"line_number":176,"context_line":"            raise exception.RedirectException(resp[\u0027location\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F5LU%3D","side":"PARENT","line":173,"in_reply_to":"AAAACX%2F%2F5MQ%3D","updated":"2011-11-02 16:15:47.000000000","message":"Yeah, you have a point; I more or less just copied the patch from Roman.  I\u0027ll add a break here, and see if I can find an appropriate exception to raise if we can\u0027t find an endpoint.","commit_id":"cef073049a70b9d6b5bf90678890924e1c3abb7a"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"59b602af591d2a94fd5f93d21f2609b4168d560a","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        creds \u003d {"},{"line_number":152,"context_line":"            \"auth\": {"},{"line_number":153,"context_line":"                \"tenantName\": creds[\u0027tenant\u0027],"},{"line_number":154,"context_line":"                \"passwordCredentials\": {"},{"line_number":155,"context_line":"                    \"username\": creds[\u0027username\u0027],"},{"line_number":156,"context_line":"                    \"password\": creds[\u0027password\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F5MI%3D","line":153,"updated":"2011-11-02 15:59:10.000000000","message":"I just want to do a sanity check here and make sure we want tenantName and not tenantId. Right?","commit_id":"54dbad4504a22cde20b3dda1aaeebbec5b12d61c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"10e9814007f33b14393260e65e206e479859490b","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        creds \u003d {"},{"line_number":152,"context_line":"            \"auth\": {"},{"line_number":153,"context_line":"                \"tenantName\": creds[\u0027tenant\u0027],"},{"line_number":154,"context_line":"                \"passwordCredentials\": {"},{"line_number":155,"context_line":"                    \"username\": creds[\u0027username\u0027],"},{"line_number":156,"context_line":"                    \"password\": creds[\u0027password\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F5K0%3D","line":153,"in_reply_to":"AAAACX%2F%2F5LE%3D","updated":"2011-11-02 16:37:16.000000000","message":"Yes, I understood; I was trying to explain why it\u0027s logical that it\u0027s \u0027name\u0027 here :)  In any case, I had Aaron test this in his set-up (he\u0027s more recently set up Keystone than I have), and it did get a correct auth token, and the glance server did accept it and give us the expected response, so we should be good.","commit_id":"54dbad4504a22cde20b3dda1aaeebbec5b12d61c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"43de9ab53e04c968a2678504749c57d1f7a58cc7","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        creds \u003d {"},{"line_number":152,"context_line":"            \"auth\": {"},{"line_number":153,"context_line":"                \"tenantName\": creds[\u0027tenant\u0027],"},{"line_number":154,"context_line":"                \"passwordCredentials\": {"},{"line_number":155,"context_line":"                    \"username\": creds[\u0027username\u0027],"},{"line_number":156,"context_line":"                    \"password\": creds[\u0027password\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F5LE%3D","line":153,"in_reply_to":"AAAACX%2F%2F5Lk%3D","updated":"2011-11-02 16:22:54.000000000","message":"I more wanted to make sure we want \u0027name\u0027 and not \u0027id\u0027.","commit_id":"54dbad4504a22cde20b3dda1aaeebbec5b12d61c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"11b46da98c115782281c09340c98922a47b8d869","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        creds \u003d {"},{"line_number":152,"context_line":"            \"auth\": {"},{"line_number":153,"context_line":"                \"tenantName\": creds[\u0027tenant\u0027],"},{"line_number":154,"context_line":"                \"passwordCredentials\": {"},{"line_number":155,"context_line":"                    \"username\": creds[\u0027username\u0027],"},{"line_number":156,"context_line":"                    \"password\": creds[\u0027password\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F5Lk%3D","line":153,"in_reply_to":"AAAACX%2F%2F5MI%3D","updated":"2011-11-02 16:15:47.000000000","message":"Yes, this is the user telling Keystone (via Glance) which tenant they want credentials for.","commit_id":"54dbad4504a22cde20b3dda1aaeebbec5b12d61c"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"d0c7d268212319442fa55e317d81bd5203c7ab82","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                if service[\u0027name\u0027] \u003d\u003d \u0027glance\u0027:"},{"line_number":179,"context_line":"                    glance_endpoint \u003d service[\u0027endpoints\u0027][0][\u0027publicURL\u0027]"},{"line_number":180,"context_line":"                    break"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                raise exception.NoServiceEndpoint()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"            self.management_url \u003d glance_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F5J8%3D","line":181,"updated":"2011-11-02 17:41:07.000000000","message":"This is a clever way to handle 0 endpoints, but what about when there are endpoints but no \u0027glance\u0027 endpoints? The variable glance_endpoint will be undefined when we try to use it at line 184.","commit_id":"bc7aeb4a0a1295f90f7ea8824a1c8bf5313fafb7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ae6920b039d5fb0f05db416d8a5a372b77898ccd","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                if service[\u0027name\u0027] \u003d\u003d \u0027glance\u0027:"},{"line_number":179,"context_line":"                    glance_endpoint \u003d service[\u0027endpoints\u0027][0][\u0027publicURL\u0027]"},{"line_number":180,"context_line":"                    break"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                raise exception.NoServiceEndpoint()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"            self.management_url \u003d glance_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F5Ak%3D","line":181,"in_reply_to":"AAAACX%2F%2F5Bg%3D","updated":"2011-11-02 20:29:18.000000000","message":"\u003e\u003e\u003e def test(inseq):\n...     for elem in inseq:\n...             if elem \u003d\u003d \u0027glance\u0027:\n...                     endpoint \u003d elem\n...                     break\n...     else:\n...             raise Exception(\"glance not in sequence\")\n...     return endpoint\n... \n\u003e\u003e\u003e test([])\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"\u003cstdin\u003e\", line 7, in test\nException: glance not in sequence\n\u003e\u003e\u003e test([\u0027nova\u0027])\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"\u003cstdin\u003e\", line 7, in test\nException: glance not in sequence\n\u003e\u003e\u003e test([\u0027nova\u0027, \u0027glance\u0027])\n\u0027glance\u0027","commit_id":"bc7aeb4a0a1295f90f7ea8824a1c8bf5313fafb7"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"5a0c225e696e49d68ba4ef06867ba044fd5211b0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                if service[\u0027name\u0027] \u003d\u003d \u0027glance\u0027:"},{"line_number":179,"context_line":"                    glance_endpoint \u003d service[\u0027endpoints\u0027][0][\u0027publicURL\u0027]"},{"line_number":180,"context_line":"                    break"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                raise exception.NoServiceEndpoint()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"            self.management_url \u003d glance_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F5Ao%3D","line":181,"in_reply_to":"AAAACX%2F%2F5Bg%3D","updated":"2011-11-02 20:32:28.000000000","message":"Well, I guess we should just have read what you posted. I apologize, you\u0027re absolutely right :)","commit_id":"bc7aeb4a0a1295f90f7ea8824a1c8bf5313fafb7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d0894aa450de8bf5a4ae9ad5c1556ea98b0a0d29","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                if service[\u0027name\u0027] \u003d\u003d \u0027glance\u0027:"},{"line_number":179,"context_line":"                    glance_endpoint \u003d service[\u0027endpoints\u0027][0][\u0027publicURL\u0027]"},{"line_number":180,"context_line":"                    break"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                raise exception.NoServiceEndpoint()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"            self.management_url \u003d glance_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F5Bg%3D","line":181,"in_reply_to":"AAAACX%2F%2F5F4%3D","updated":"2011-11-02 20:27:07.000000000","message":"When there are no glance-specific endpoints, the NoServiceEndpoint exception will be raised.  Should I do something else here?","commit_id":"bc7aeb4a0a1295f90f7ea8824a1c8bf5313fafb7"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bc0490fee4d952b18b564f27a0b531e11b2e8960","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                if service[\u0027name\u0027] \u003d\u003d \u0027glance\u0027:"},{"line_number":179,"context_line":"                    glance_endpoint \u003d service[\u0027endpoints\u0027][0][\u0027publicURL\u0027]"},{"line_number":180,"context_line":"                    break"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                raise exception.NoServiceEndpoint()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"            self.management_url \u003d glance_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F5F4%3D","line":181,"in_reply_to":"AAAACX%2F%2F5HI%3D","updated":"2011-11-02 19:13:13.000000000","message":"Brian is referring to the situation where there are no Glance-specific endpoints, not when there are no endpoints at all...","commit_id":"bc7aeb4a0a1295f90f7ea8824a1c8bf5313fafb7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"99a30111282c1cffc0226644ec17dafb29dfd6c4","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                if service[\u0027name\u0027] \u003d\u003d \u0027glance\u0027:"},{"line_number":179,"context_line":"                    glance_endpoint \u003d service[\u0027endpoints\u0027][0][\u0027publicURL\u0027]"},{"line_number":180,"context_line":"                    break"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                raise exception.NoServiceEndpoint()"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"            self.management_url \u003d glance_endpoint"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F5HI%3D","line":181,"in_reply_to":"AAAACX%2F%2F5J8%3D","updated":"2011-11-02 18:59:26.000000000","message":"If there are no \u0027glance\u0027 endpoints, then the \u0027else\u0027 clause is executed, which raises the NoServiceEndpoint exception.  The \u0027break\u0027 statement is what stops \u0027else\u0027 from executing when we find a \u0027glance\u0027 endpoint.  See:\n\n  http://docs.python.org/reference/compound_stmts.html#the-for-statement","commit_id":"bc7aeb4a0a1295f90f7ea8824a1c8bf5313fafb7"}]}
