)]}'
{"neutronclient/client.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dce6318c55f4f6846e59df1b2f0b7f8543c869cb","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    def authenticate(self):"},{"line_number":210,"context_line":"        if self.auth_strategy !\u003d \u0027keystone\u0027:"},{"line_number":211,"context_line":"            raise exceptions.Unauthorized("},{"line_number":212,"context_line":"                message\u003d\u0027unknown auth strategy: %s\u0027 % self.auth_strategy)"},{"line_number":213,"context_line":"        if self.tenant_id:"},{"line_number":214,"context_line":"            body \u003d {\u0027auth\u0027: {\u0027passwordCredentials\u0027:"},{"line_number":215,"context_line":"                             {\u0027username\u0027: self.username,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fy4M%3D","line":212,"updated":"2013-09-19 06:06:47.000000000","message":"It is better to define a new exception class since the message is completely replaced and there is no need to use Unauthorized.\nIn addition, I am not sure an error of unknown auth strategy should be classied into Unauthorized.","commit_id":"853aabe716765b9d9eacc88f05225c90b1c575df"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"9d5bc11721747fde36cdd49bf97e83bb939d74e2","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    def authenticate(self):"},{"line_number":210,"context_line":"        if self.auth_strategy !\u003d \u0027keystone\u0027:"},{"line_number":211,"context_line":"            raise exceptions.Unauthorized("},{"line_number":212,"context_line":"                message\u003d\u0027unknown auth strategy: %s\u0027 % self.auth_strategy)"},{"line_number":213,"context_line":"        if self.tenant_id:"},{"line_number":214,"context_line":"            body \u003d {\u0027auth\u0027: {\u0027passwordCredentials\u0027:"},{"line_number":215,"context_line":"                             {\u0027username\u0027: self.username,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FW2A%3D","line":212,"in_reply_to":"AAAAS3%2F%2Fy4M%3D","updated":"2013-09-28 17:13:27.000000000","message":"Done","commit_id":"853aabe716765b9d9eacc88f05225c90b1c575df"}],"neutronclient/shell.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dce6318c55f4f6846e59df1b2f0b7f8543c869cb","unresolved":false,"context_lines":[{"line_number":535,"context_line":"                not self.options.os_token):"},{"line_number":536,"context_line":"                raise exc.CommandError("},{"line_number":537,"context_line":"                    \"You must provide a token via\""},{"line_number":538,"context_line":"                    \" either --os-token or env[OS_TOKEN]\")"},{"line_number":539,"context_line":"            if not self.options.os_url:"},{"line_number":540,"context_line":"                raise exc.CommandError("},{"line_number":541,"context_line":"                    \"You must provide a service URL via\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2Fy0A%3D","line":538,"updated":"2013-09-19 06:06:47.000000000","message":"Do we really need a token when noauth is used? I haven\u0027t checked the detail though.\nMy question is a check for auth_strategy \u003d\u003d noauth at L.534 is needed or not.\n\nWhen keystone auth is enabled in the server and you would like to skip keystone authentication when invoking a command, I believe you just pass os-token and os-url with auth_strategy \u003d\u003d keystone.","commit_id":"853aabe716765b9d9eacc88f05225c90b1c575df"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"9d5bc11721747fde36cdd49bf97e83bb939d74e2","unresolved":false,"context_lines":[{"line_number":535,"context_line":"                not self.options.os_token):"},{"line_number":536,"context_line":"                raise exc.CommandError("},{"line_number":537,"context_line":"                    \"You must provide a token via\""},{"line_number":538,"context_line":"                    \" either --os-token or env[OS_TOKEN]\")"},{"line_number":539,"context_line":"            if not self.options.os_url:"},{"line_number":540,"context_line":"                raise exc.CommandError("},{"line_number":541,"context_line":"                    \"You must provide a service URL via\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FW0k%3D","line":538,"in_reply_to":"AAAAS3%2F%2Fy0A%3D","updated":"2013-09-28 17:13:27.000000000","message":"Done","commit_id":"853aabe716765b9d9eacc88f05225c90b1c575df"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"7706e123910492716a92877abf7661caaf566558","unresolved":false,"context_lines":[{"line_number":548,"context_line":"                    self.log.error(\u0027Could not clean up: %s\u0027, unicode(err3))"},{"line_number":549,"context_line":"        return result"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"    def authenticate_user(self):"},{"line_number":552,"context_line":"        \"\"\"Make sure the user has provided all of the authentication"},{"line_number":553,"context_line":"        info we need."},{"line_number":554,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATX%2F%2F9UQ%3D","line":551,"updated":"2013-10-23 17:16:03.000000000","message":"This method actually just checks specified parameters and creates clientmanager instance. The method name looks wrong.","commit_id":"f015368247323c1ece562bb6314f54f276e58758"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"7706e123910492716a92877abf7661caaf566558","unresolved":false,"context_lines":[{"line_number":592,"context_line":"            if not self.options.os_url:"},{"line_number":593,"context_line":"                raise exc.CommandError("},{"line_number":594,"context_line":"                    \"You must provide a service URL via\""},{"line_number":595,"context_line":"                    \" either --os-url or env[OS_URL]\")"},{"line_number":596,"context_line":""},{"line_number":597,"context_line":"        self.client_manager \u003d clientmanager.ClientManager("},{"line_number":598,"context_line":"            token\u003dself.options.os_token,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATX%2F%2F9UE%3D","line":595,"updated":"2013-10-23 17:16:03.000000000","message":"Is this exception message still correct?","commit_id":"f015368247323c1ece562bb6314f54f276e58758"}],"tests/unit/test_shell.py":[{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"4b89dd04029c1bbf227072410c32d09488e861b4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return out"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_run_unknown_command(self):"},{"line_number":93,"context_line":"        self.shell(\u0027fake\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_help(self):"},{"line_number":96,"context_line":"        required \u003d \u0027usage:\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2Fdh8%3D","line":93,"updated":"2013-09-04 14:34:29.000000000","message":"It seems as if there will be conflict between this change and your other change (https://review.openstack.org/#/c/38783/1/tests/unit/test_shell.py), if the both are approved.","commit_id":"853aabe716765b9d9eacc88f05225c90b1c575df"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"872960ef44fd2b39b3430cbf8383dc4a80579337","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return out"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def test_run_unknown_command(self):"},{"line_number":93,"context_line":"        self.shell(\u0027fake\u0027)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_help(self):"},{"line_number":96,"context_line":"        required \u003d \u0027usage:\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASn%2F%2FdYw%3D","line":93,"in_reply_to":"AAAASn%2F%2Fdh8%3D","updated":"2013-09-04 14:52:53.000000000","message":"yes, but gate will prevent that then one of them need rebase","commit_id":"853aabe716765b9d9eacc88f05225c90b1c575df"}]}
