)]}'
{"quantumclient/client.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e9431233c156f8c069a5e58be96c0583ce431430","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def authenticate(self):"},{"line_number":184,"context_line":"        if self.auth_strategy !\u003d \u0027keystone\u0027:"},{"line_number":185,"context_line":"            raise exceptions.Unauthorized(message\u003d\u0027unknown auth strategy\u0027)"},{"line_number":186,"context_line":"        if self.tenant_name:"},{"line_number":187,"context_line":"            body \u003d {\u0027auth\u0027: {\u0027passwordCredentials\u0027:"},{"line_number":188,"context_line":"                             {\u0027username\u0027: self.username,"},{"line_number":189,"context_line":"                              \u0027password\u0027: self.password, },"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FYQQ%3D","line":186,"updated":"2013-07-02 23:56:48.000000000","message":"if we have tenant_id is specified, we should use id since it is more specific.","commit_id":"cef7f446165651d2dc54cdff1e00655da6f26e68"}],"quantumclient/shell.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"f0827a412d150f3d29c1cd0ea44da6a26f4ade43","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    raise exc.CommandError("},{"line_number":577,"context_line":"                        \"You must provide a tenant_name or tenant_id via\""},{"line_number":578,"context_line":"                        \"  --os-tenant-name, env[OS_TENANT_NAME]\""},{"line_number":579,"context_line":"                        \"  --os-tenant-id, or via env[OS_TENANT_ID]\")"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"                if not self.options.os_auth_url:"},{"line_number":582,"context_line":"                    raise exc.CommandError("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2Fd3E%3D","line":579,"updated":"2013-07-01 11:40:17.000000000","message":"It looks like this can be achieve with a mutually exclusive, but required option group.\nI\u0027d prefer using argparse whenever possible.","commit_id":"cef7f446165651d2dc54cdff1e00655da6f26e68"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"078ff32dac867ee26da1c4a5af7c4c13032e6d89","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    raise exc.CommandError("},{"line_number":577,"context_line":"                        \"You must provide a tenant_name or tenant_id via\""},{"line_number":578,"context_line":"                        \"  --os-tenant-name, env[OS_TENANT_NAME]\""},{"line_number":579,"context_line":"                        \"  --os-tenant-id, or via env[OS_TENANT_ID]\")"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"                if not self.options.os_auth_url:"},{"line_number":582,"context_line":"                    raise exc.CommandError("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FdxU%3D","line":579,"in_reply_to":"AAAAPn%2F%2Fd3E%3D","updated":"2013-07-01 12:11:33.000000000","message":"Why would we want to stop people having both TENANT_NAME and TENANT_ID in their Env ? \n\nThis check is just to make sure that they have at least one of them, and I don\u0027t think you can do that with an exclusive group.\n\nAlso seems more consistent with the rest of the existing code to have the validation here.","commit_id":"cef7f446165651d2dc54cdff1e00655da6f26e68"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"6e44a2c71c39686ebe53b2917bf7d35585bd7b2d","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                    raise exc.CommandError("},{"line_number":577,"context_line":"                        \"You must provide a tenant_name or tenant_id via\""},{"line_number":578,"context_line":"                        \"  --os-tenant-name, env[OS_TENANT_NAME]\""},{"line_number":579,"context_line":"                        \"  --os-tenant-id, or via env[OS_TENANT_ID]\")"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"                if not self.options.os_auth_url:"},{"line_number":582,"context_line":"                    raise exc.CommandError("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2FdwA%3D","line":579,"in_reply_to":"AAAAPn%2F%2FdxU%3D","updated":"2013-07-01 12:18:02.000000000","message":"Sorry it looked like it made sense to offer a mutual exclusive option.\n\nI don\u0027t have a strong opinion in regard.","commit_id":"cef7f446165651d2dc54cdff1e00655da6f26e68"}],"tests/unit/test_auth.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e9431233c156f8c069a5e58be96c0583ce431430","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                                        tenant_id\u003dTENANT_ID,"},{"line_number":332,"context_line":"                                        password\u003dPASSWORD,"},{"line_number":333,"context_line":"                                        auth_url\u003dAUTH_URL,"},{"line_number":334,"context_line":"                                        region_name\u003dREGION)"},{"line_number":335,"context_line":"        self.addCleanup(self.mox.VerifyAll)"},{"line_number":336,"context_line":"        self.addCleanup(self.mox.UnsetStubs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FVAM%3D","line":334,"updated":"2013-07-03 22:26:01.000000000","message":"I cannot see what you are testing","commit_id":"d6f9d164a35c634a205020c9396db635e53f71e7"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e9431233c156f8c069a5e58be96c0583ce431430","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                                        tenant_id\u003dTENANT_ID,"},{"line_number":332,"context_line":"                                        password\u003dPASSWORD,"},{"line_number":333,"context_line":"                                        auth_url\u003dAUTH_URL,"},{"line_number":334,"context_line":"                                        region_name\u003dREGION)"},{"line_number":335,"context_line":"        self.addCleanup(self.mox.VerifyAll)"},{"line_number":336,"context_line":"        self.addCleanup(self.mox.UnsetStubs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUAg%3D","line":334,"in_reply_to":"AAAAPn%2F%2FUFI%3D","updated":"2013-07-04 09:04:21.000000000","message":"Do u have case to test the tenant_id and tenant_name are provided at the same time and we choose tenant_id?","commit_id":"d6f9d164a35c634a205020c9396db635e53f71e7"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"unresolved":false,"context_lines":[{"line_number":331,"context_line":"                                        tenant_id\u003dTENANT_ID,"},{"line_number":332,"context_line":"                                        password\u003dPASSWORD,"},{"line_number":333,"context_line":"                                        auth_url\u003dAUTH_URL,"},{"line_number":334,"context_line":"                                        region_name\u003dREGION)"},{"line_number":335,"context_line":"        self.addCleanup(self.mox.VerifyAll)"},{"line_number":336,"context_line":"        self.addCleanup(self.mox.UnsetStubs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FUFI%3D","line":334,"in_reply_to":"AAAAPn%2F%2FVAM%3D","updated":"2013-07-04 08:33:02.000000000","message":"Its a repeat of all of the existing Auth tests using tenant_id instead of tenant_name","commit_id":"d6f9d164a35c634a205020c9396db635e53f71e7"}]}
