)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8db6f069202f95bfd87fde73f652d736d733fc3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add a method for changing a user\u0027s password in V3"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"resource for changing user\u0027s password added in keystone."},{"line_number":10,"context_line":"https://review.openstack.org/#/c/52456/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iaf0e4ab369dc1b69f75fd7cb07065f667bfcec5b"},{"line_number":13,"context_line":"Closes-Bug: #1239757"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAUH%2F%2Fais%3D","line":10,"updated":"2014-01-14 00:26:21.000000000","message":"Remove this paragraph since it\u0027s not useful. The code could have changed since that review.","commit_id":"fe121c77cd5031100e63ec7355a5e2a08fcdd443"}],"keystoneclient/tests/v3/test_users.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f373801cce564d3e0977271ed05501f8803537de","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, \u0027123\u0027, \u0027password\u0027],"},{"line_number":214,"context_line":"                      json\u003dresp_body)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.client.user_id \u003d \u0027123\u0027"},{"line_number":217,"context_line":"        self.client.users.update_password(\u0027123\u0027, \u0027DCBA\u0027, \u0027ABCD\u0027)"},{"line_number":218,"context_line":"        self.assertRequestBodyIs(json\u003dreq_body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9esE%3D","line":216,"updated":"2013-12-11 03:37:26.000000000","message":"this would appear not to do anything","commit_id":"04d6a9e071a849f8313b61c55e7fde4bbee8f451"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"55b69b32114f1f9d466f2478360fbb09a9bceaf3","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, \u0027123\u0027, \u0027password\u0027],"},{"line_number":214,"context_line":"                      json\u003dresp_body)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.client.user_id \u003d \u0027123\u0027"},{"line_number":217,"context_line":"        self.client.users.update_password(\u0027123\u0027, \u0027DCBA\u0027, \u0027ABCD\u0027)"},{"line_number":218,"context_line":"        self.assertRequestBodyIs(json\u003dreq_body)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F9eWU%3D","line":216,"in_reply_to":"AAAATn%2F9esE%3D","updated":"2013-12-11 05:40:19.000000000","message":"Done","commit_id":"04d6a9e071a849f8313b61c55e7fde4bbee8f451"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0b84d6fb93d28991de45aa48534e25732116b9c1","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    def test_update_password(self):"},{"line_number":205,"context_line":"        req_body \u003d {"},{"line_number":206,"context_line":"            \u0027user\u0027: {"},{"line_number":207,"context_line":"                \u0027password\u0027: \u0027ABCD\u0027, \u0027original_password\u0027: \u0027DCBA\u0027"},{"line_number":208,"context_line":"            }"},{"line_number":209,"context_line":"        }"},{"line_number":210,"context_line":"        resp_body \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BWk%3D","line":207,"updated":"2014-01-06 00:14:50.000000000","message":"rather than copy-paste the password and new-password, assign it to a variable.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0b84d6fb93d28991de45aa48534e25732116b9c1","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        resp_body \u003d {"},{"line_number":211,"context_line":"            \u0027access\u0027: {}"},{"line_number":212,"context_line":"        }"},{"line_number":213,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, \u0027123\u0027, \u0027password\u0027],"},{"line_number":214,"context_line":"                      json\u003dresp_body)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.client.users.update_password(\u0027123\u0027, \u0027DCBA\u0027, \u0027ABCD\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BWs%3D","line":213,"updated":"2014-01-06 00:14:50.000000000","message":"rather than copy-paste the user, give it a name.\n user\u003d\u0027123\u0027\n self.stub_url(httpretty.POST, [\u0027users\u0027, user, \u0027password\u0027],\n\nthen use the variable wherever would have used the string.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0b84d6fb93d28991de45aa48534e25732116b9c1","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, \u0027123\u0027, \u0027password\u0027],"},{"line_number":214,"context_line":"                      json\u003dresp_body)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.client.users.update_password(\u0027123\u0027, \u0027DCBA\u0027, \u0027ABCD\u0027)"},{"line_number":217,"context_line":"        self.assertRequestBodyIs(json\u003dreq_body)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BXI%3D","line":216,"updated":"2014-01-06 00:14:50.000000000","message":"give names to the arguments so that reviewers know what they\u0027re for.\n\n user\u003d\u0027123\u0027\n self.client.users.update_password(name, origpassword\u003d\u0027DCBA\u0027, password\u003d\u0027ABCD\u0027)","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f37b64112a9a2e2f5bf1880d58337d0c9d08c201","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        origpass \u003d \u0027DCBA\u0027"},{"line_number":207,"context_line":"        newpass \u003d \u0027ABCD\u0027"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        req_body \u003d {"},{"line_number":210,"context_line":"            \u0027user\u0027: {"},{"line_number":211,"context_line":"                \u0027password\u0027: newpass, \u0027original_password\u0027: origpass"},{"line_number":212,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Flhs%3D","line":209,"updated":"2014-01-10 19:13:36.000000000","message":"(nit) this isn\u0027t used until line 223, so move it right before that line.\n\nAlso, call it exp_req_body.","commit_id":"d93f94a54c5155ffe2344489254d003563a3d929"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f37b64112a9a2e2f5bf1880d58337d0c9d08c201","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                \u0027password\u0027: newpass, \u0027original_password\u0027: origpass"},{"line_number":212,"context_line":"            }"},{"line_number":213,"context_line":"        }"},{"line_number":214,"context_line":"        resp_body \u003d {"},{"line_number":215,"context_line":"            \u0027access\u0027: {}"},{"line_number":216,"context_line":"        }"},{"line_number":217,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, user, \u0027password\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Flc0%3D","line":214,"updated":"2014-01-10 19:13:36.000000000","message":"the keystone server doesn\u0027t respond with this and the identity-api spec says the server returns no body. So the test should simulate that behavior rather than simulate returning a body.","commit_id":"d93f94a54c5155ffe2344489254d003563a3d929"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8db6f069202f95bfd87fde73f652d736d733fc3","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self.assertEntityRequestBodyIs(req_ref)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @httpretty.activate"},{"line_number":204,"context_line":"    def test_update_password(self):"},{"line_number":205,"context_line":"        user \u003d \u0027123\u0027"},{"line_number":206,"context_line":"        origpass \u003d \u0027DCBA\u0027"},{"line_number":207,"context_line":"        newpass \u003d \u0027ABCD\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2Faig%3D","line":204,"updated":"2014-01-14 00:26:21.000000000","message":"seems like we should be able to have a function that\u0027s shared between v2 and v3.","commit_id":"fe121c77cd5031100e63ec7355a5e2a08fcdd443"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"6b5b3ccc068e366152fd5c42f6844bf596bc0a08","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        self.assertEntityRequestBodyIs(req_ref)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @httpretty.activate"},{"line_number":204,"context_line":"    def test_update_password(self):"},{"line_number":205,"context_line":"        user \u003d \u0027123\u0027"},{"line_number":206,"context_line":"        origpass \u003d \u0027DCBA\u0027"},{"line_number":207,"context_line":"        newpass \u003d \u0027ABCD\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2FaIA%3D","line":204,"in_reply_to":"AAAAUH%2F%2Faig%3D","updated":"2014-01-14 02:16:46.000000000","message":"Hmm... the request url between v2 and v3 are totally different.","commit_id":"fe121c77cd5031100e63ec7355a5e2a08fcdd443"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4fdb128cf6dd891a310d488d2768b5ce2732c4ff","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, user, \u0027password\u0027])"},{"line_number":210,"context_line":"        self.client.user_id \u003d user"},{"line_number":211,"context_line":"        self.client.users.update_own_password(origpasswd\u003dorigpass,"},{"line_number":212,"context_line":"                                              passwd\u003dnewpass)"},{"line_number":213,"context_line":"        exp_req_body \u003d {"},{"line_number":214,"context_line":"            \u0027user\u0027: {"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2BtAc%3D","line":211,"updated":"2014-01-23 01:05:05.000000000","message":"Since these are not kwargs and the variable names are self-explanatory I think you can safely remove the argument name.","commit_id":"979a3448cca8451089cfba6ec55bce989da44b5e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4fdb128cf6dd891a310d488d2768b5ce2732c4ff","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                \u0027password\u0027: newpass, \u0027original_password\u0027: origpass"},{"line_number":216,"context_line":"            }"},{"line_number":217,"context_line":"        }"},{"line_number":218,"context_line":"        self.assertRequestBodyIs(json\u003dexp_req_body)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Bs%2FE%3D","line":218,"updated":"2014-01-23 01:05:05.000000000","message":"Any reason to not just use self.assertEntityRequestBodyIs like the other examples in this file?  I\u0027m fine either way, just wondering.","commit_id":"979a3448cca8451089cfba6ec55bce989da44b5e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"09e21a3249dd2b480a934056166126c989d48a27","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        newpass \u003d \u0027ABCD\u0027"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, user, \u0027password\u0027])"},{"line_number":210,"context_line":"        self.client.user_id \u003d user"},{"line_number":211,"context_line":"        self.client.users.update_own_password(origpass, newpass)"},{"line_number":212,"context_line":"        exp_req_body \u003d {"},{"line_number":213,"context_line":"            \u0027user\u0027: {"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FtV4%3D","line":210,"updated":"2014-03-04 15:09:57.000000000","message":"i think you can remove this line, and line 205","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1753488b4ccd8afe146ab78cc23e1a1296ad78ab","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        newpass \u003d \u0027ABCD\u0027"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, user, \u0027password\u0027])"},{"line_number":210,"context_line":"        self.client.user_id \u003d user"},{"line_number":211,"context_line":"        self.client.users.update_own_password(origpass, newpass)"},{"line_number":212,"context_line":"        exp_req_body \u003d {"},{"line_number":213,"context_line":"            \u0027user\u0027: {"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FsNw%3D","line":210,"in_reply_to":"AAAAVn%2F%2FtV4%3D","updated":"2014-03-04 16:49:04.000000000","message":"It\u0027s needed so that the manager can calculate the correct URL. I did modify it to user self.TEST_USER as we talked about in chat.","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"09e21a3249dd2b480a934056166126c989d48a27","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, user, \u0027password\u0027])"},{"line_number":210,"context_line":"        self.client.user_id \u003d user"},{"line_number":211,"context_line":"        self.client.users.update_own_password(origpass, newpass)"},{"line_number":212,"context_line":"        exp_req_body \u003d {"},{"line_number":213,"context_line":"            \u0027user\u0027: {"},{"line_number":214,"context_line":"                \u0027password\u0027: newpass, \u0027original_password\u0027: origpass"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FtU8%3D","line":211,"updated":"2014-03-04 15:09:57.000000000","message":"call self.manager.update_own_password(...)\n\nAlso, save the result in a variable, and test to make sure it\u0027s the expected result. The method on the server side is 204 no content.","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1753488b4ccd8afe146ab78cc23e1a1296ad78ab","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.stub_url(httpretty.POST, [\u0027users\u0027, user, \u0027password\u0027])"},{"line_number":210,"context_line":"        self.client.user_id \u003d user"},{"line_number":211,"context_line":"        self.client.users.update_own_password(origpass, newpass)"},{"line_number":212,"context_line":"        exp_req_body \u003d {"},{"line_number":213,"context_line":"            \u0027user\u0027: {"},{"line_number":214,"context_line":"                \u0027password\u0027: newpass, \u0027original_password\u0027: origpass"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FsNs%3D","line":211,"in_reply_to":"AAAAVn%2F%2FtU8%3D","updated":"2014-03-04 16:49:04.000000000","message":"Done","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e0dbb5b1144f12345e622de6be9c961673f4d8c1","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @httpretty.activate"},{"line_number":204,"context_line":"    def test_update_password(self):"},{"line_number":205,"context_line":"        origpass \u003d \u0027DCBA\u0027"},{"line_number":206,"context_line":"        newpass \u003d \u0027ABCD\u0027"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        self.stub_url(httpretty.POST,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2B3Qo%3D","line":205,"updated":"2014-03-22 15:00:49.000000000","message":"use random values for these -- uuid.uuid4.hex() or something.","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"b94b58f880952706bdb68b6404b36af667575d30","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    @httpretty.activate"},{"line_number":204,"context_line":"    def test_update_password(self):"},{"line_number":205,"context_line":"        origpass \u003d \u0027DCBA\u0027"},{"line_number":206,"context_line":"        newpass \u003d \u0027ABCD\u0027"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        self.stub_url(httpretty.POST,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2BwJA%3D","line":205,"in_reply_to":"AAAAWH%2F%2B3Qo%3D","updated":"2014-03-24 16:05:34.000000000","message":"Done","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3f96605d5fd5c9fe2c33e9dcce6a7e5e69a7a64e","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        }"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        self.assertRequestBodyIs(json\u003dexp_req_body)"},{"line_number":220,"context_line":"        self.assertIsNone(resp)  # we don\u0027t get back a body in the response"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_update_password_with_bad_inputs(self):"},{"line_number":223,"context_line":"        origpass \u003d \u0027DCBA\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVn%2F%2FsJ4%3D","line":220,"updated":"2014-03-04 16:57:40.000000000","message":"++","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e0dbb5b1144f12345e622de6be9c961673f4d8c1","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        }"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        self.assertRequestBodyIs(json\u003dexp_req_body)"},{"line_number":220,"context_line":"        self.assertIsNone(resp)  # we don\u0027t get back a body in the response"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_update_password_with_bad_inputs(self):"},{"line_number":223,"context_line":"        origpass \u003d \u0027DCBA\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2B3Qk%3D","line":220,"updated":"2014-03-22 15:00:49.000000000","message":"This is just testing the stub \u0026 httpretty.\n\nCan we also validate the request path, in addition to the request body?","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3f96605d5fd5c9fe2c33e9dcce6a7e5e69a7a64e","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        self.assertRequestBodyIs(json\u003dexp_req_body)"},{"line_number":220,"context_line":"        self.assertIsNone(resp)  # we don\u0027t get back a body in the response"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_update_password_with_bad_inputs(self):"},{"line_number":223,"context_line":"        origpass \u003d \u0027DCBA\u0027"},{"line_number":224,"context_line":"        newpass \u003d \u0027ABCD\u0027"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVn%2F%2FsI8%3D","line":222,"updated":"2014-03-04 16:57:40.000000000","message":"nice addition","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e0dbb5b1144f12345e622de6be9c961673f4d8c1","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.assertIsNone(resp)  # we don\u0027t get back a body in the response"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def test_update_password_with_bad_inputs(self):"},{"line_number":223,"context_line":"        origpass \u003d \u0027DCBA\u0027"},{"line_number":224,"context_line":"        newpass \u003d \u0027ABCD\u0027"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        self.assertRaises(exceptions.ValidationError,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAWH%2F%2B3Qc%3D","line":223,"updated":"2014-03-22 15:00:49.000000000","message":"use random values for these -- uuid.uuid4.hex() or something.","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"26a60e3c2b9c6f150a5e0b336af42aa429698771","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        self.assertRaises(exceptions.ValidationError,"},{"line_number":234,"context_line":"                          self.manager.update_own_password,"},{"line_number":235,"context_line":"                          None, None)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F%2BmkA%3D","line":235,"updated":"2014-03-25 16:20:12.000000000","message":"Should test cases be added here testing empty strings too since we are testing None? \n\n    \u003e\u003e\u003e opass \u003d \"\"\n    \u003e\u003e\u003e npass \u003d \"something\" \n    \u003e\u003e\u003e opass\n    \u0027\u0027\n    \u003e\u003e\u003e npass\n    \u0027something\u0027\n    \u003e\u003e\u003e if not (opass and npass):\n    ...     print \"Fail, we need both.\"\n    ...\n    Fail, we need both.","commit_id":"9f8d94050ba1e093184db72637a64df0db624bc3"}],"keystoneclient/v3/users.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0b84d6fb93d28991de45aa48534e25732116b9c1","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_password(self, user, origpassword\u003dNone, password\u003dNone):"},{"line_number":135,"context_line":"        \"\"\"Update password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BXA%3D","line":134,"updated":"2014-01-06 00:14:50.000000000","message":"change \"origpassword\" to \"original_password\" to match the field in the request.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed909a0cf1b955726b91906ac859925bc1dd8fd3","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_password(self, user, origpassword\u003dNone, password\u003dNone):"},{"line_number":135,"context_line":"        \"\"\"Update password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fw10%3D","line":134,"in_reply_to":"AAAAUH%2F%2F%2BXA%3D","updated":"2014-01-08 18:53:01.000000000","message":"++\n\ni wouldn\u0027t mind the \u0027password\u0027 being \u0027new_password\u0027 in this method signature though","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0b84d6fb93d28991de45aa48534e25732116b9c1","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_password(self, user, origpassword\u003dNone, password\u003dNone):"},{"line_number":135,"context_line":"        \"\"\"Update password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BW4%3D","line":136,"updated":"2014-01-06 00:14:50.000000000","message":"use \u0027 for strings.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed909a0cf1b955726b91906ac859925bc1dd8fd3","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_password(self, user, origpassword\u003dNone, password\u003dNone):"},{"line_number":135,"context_line":"        \"\"\"Update password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fw1s%3D","line":136,"in_reply_to":"AAAAUH%2F%2F%2BW4%3D","updated":"2014-01-08 18:53:01.000000000","message":"++","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0b84d6fb93d28991de45aa48534e25732116b9c1","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BW0%3D","line":139,"updated":"2014-01-06 00:14:50.000000000","message":"URLs should be properly encoded.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed909a0cf1b955726b91906ac859925bc1dd8fd3","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fw1c%3D","line":139,"in_reply_to":"AAAAUH%2F%2F%2BF0%3D","updated":"2014-01-08 18:53:01.000000000","message":"this is a common anti-pattern across the client ... it just happens to be a \"safe\" assumption today given our service-side implementation. i\u0027d like the client to be more robust though. the change shouldn\u0027t be part of this patch","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"655e179130d2acf731f8149c14d652b9696c43a6","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BF0%3D","line":139,"in_reply_to":"AAAAUH%2F%2F%2BW0%3D","updated":"2014-01-06 02:33:30.000000000","message":"but there isn\u0027t any url encoded in other method.\nL149: base_url \u003d \u0027/groups/%s\u0027 % base.getid(group)","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"79c540de958c443b00489b0ff39a2028fad63892","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        params \u003d {\"user\": {\"password\": password,"},{"line_number":137,"context_line":"                           \"original_password\": origpassword}}"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fwzo%3D","line":139,"in_reply_to":"AAAAUH%2F%2Fw1c%3D","updated":"2014-01-08 18:56:22.000000000","message":"I\u0027m fine with this being a separate commit... I\u0027ll put it on my list.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed909a0cf1b955726b91906ac859925bc1dd8fd3","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","},{"line_number":143,"context_line":"                            method\u003d\"POST\","},{"line_number":144,"context_line":"                            management\u003dFalse)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fw00%3D","line":142,"updated":"2014-01-08 18:53:01.000000000","message":"why is the response key access ... the operation shouldn\u0027t result in a response at all i thought","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"49f7cdc7fa42acd13049e67829799edace2e9461","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","},{"line_number":143,"context_line":"                            method\u003d\"POST\","},{"line_number":144,"context_line":"                            management\u003dFalse)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FvCQ%3D","line":142,"in_reply_to":"AAAAUH%2F%2Fw00%3D","updated":"2014-01-09 02:46:00.000000000","message":"method set to be \"POST\" here, _post need a response key.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0b84d6fb93d28991de45aa48534e25732116b9c1","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","},{"line_number":143,"context_line":"                            method\u003d\"POST\","},{"line_number":144,"context_line":"                            management\u003dFalse)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def add_to_group(self, user, group):"},{"line_number":147,"context_line":"        self._require_user_and_group(user, group)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BWw%3D","line":144,"updated":"2014-01-06 00:14:50.000000000","message":"why is management\u003dFalse here?","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"655e179130d2acf731f8149c14d652b9696c43a6","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\"access\","},{"line_number":143,"context_line":"                            method\u003d\"POST\","},{"line_number":144,"context_line":"                            management\u003dFalse)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def add_to_group(self, user, group):"},{"line_number":147,"context_line":"        self._require_user_and_group(user, group)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F%2BII%3D","line":144,"in_reply_to":"AAAAUH%2F%2F%2BWw%3D","updated":"2014-01-06 02:33:30.000000000","message":"This method is for both admin and common users to update their own password. just like v2_0/users/update_own_password.","commit_id":"506389105519e95e1a7599c01d29cfc8de361a52"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f37b64112a9a2e2f5bf1880d58337d0c9d08c201","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_password(self, user, original_password\u003dNone, new_password\u003dNone):"},{"line_number":135,"context_line":"        \"\"\"Update password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: new_password,"},{"line_number":137,"context_line":"                           \u0027original_password\u0027: original_password}}"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FlhM%3D","line":134,"updated":"2014-01-10 19:13:36.000000000","message":"having a default for these parameters doesn\u0027t make any sense and will generate an invalid request according to the API spec. The password and original_password are expected to be strings.","commit_id":"d93f94a54c5155ffe2344489254d003563a3d929"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d992c3dd33f7bff9ec96a1d87cac9b3cacfcb3ad","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\u0027access\u0027,"},{"line_number":143,"context_line":"                            method\u003d\u0027POST\u0027,"},{"line_number":144,"context_line":"                            management\u003dFalse)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FqU0%3D","line":142,"updated":"2014-01-09 23:34:59.000000000","message":"if response_key is required but not given then either add a comment here saying that the response_key is ignored but required for the _update function or make the response key really obviously ignore like response_key\u003d\u0027ignored_but_required_param\u0027.\n\nEven better would be if you want to fix the _post function.","commit_id":"d93f94a54c5155ffe2344489254d003563a3d929"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"f37b64112a9a2e2f5bf1880d58337d0c9d08c201","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % base.getid(user)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            response_key\u003d\u0027access\u0027,"},{"line_number":143,"context_line":"                            method\u003d\u0027POST\u0027,"},{"line_number":144,"context_line":"                            management\u003dFalse)"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2FldE%3D","line":142,"in_reply_to":"AAAAUH%2F%2FqU0%3D","updated":"2014-01-10 19:13:36.000000000","message":"agree with this, please add a comment at least.","commit_id":"d93f94a54c5155ffe2344489254d003563a3d929"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"d8db6f069202f95bfd87fde73f652d736d733fc3","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_password(self, user, original_password, new_password):"},{"line_number":135,"context_line":"        \"\"\"Update password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: new_password,"},{"line_number":137,"context_line":"                           \u0027original_password\u0027: original_password}}"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2Fai0%3D","line":134,"updated":"2014-01-14 00:26:21.000000000","message":"I noticed that we\u0027ve got this in the v2 API, too, but it\u0027s called \"update_own_password\":\n\nhttp://git.openstack.org/cgit/openstack/python-keystoneclient/tree/keystoneclient/v2_0/users.py#n69\n\nI think it would be best to have the same signature for the v3 version as we have for the v2 version, especially since we have version discovery that could return either v2 or v3, so this would be\n\n def update_own_password(self, origpasswd, passwd):\n\nI know this is different from what I requested before but I didn\u0027t know that we already had this in v2. You could add a comment to the code here that this is compatible with v2.","commit_id":"fe121c77cd5031100e63ec7355a5e2a08fcdd443"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"6f33ee6e874b84ad1b5f69c5cbec09ccb262958b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":135,"context_line":"        \"\"\"Update password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: passwd,"},{"line_number":137,"context_line":"                           \u0027original_password\u0027: origpasswd}}"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAUH%2F%2Bzss%3D","line":135,"updated":"2014-01-21 21:50:30.000000000","message":"Docstring is not representative of the fact that this is updating the password for the user the token belongs to.  Please expand the docstring to include this information","commit_id":"c47b0ba59aa7c95389fe98f8477b3d497c52c917"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"cb5e81eb1a70f74bdb47fda8394d56800c252f41","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":135,"context_line":"        \"\"\"Update own password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: passwd,"},{"line_number":137,"context_line":"                           \u0027original_password\u0027: origpasswd}}"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Bxa0%3D","line":135,"updated":"2014-01-22 09:52:45.000000000","message":"(nit) The docstring is not very helpful","commit_id":"979a3448cca8451089cfba6ec55bce989da44b5e"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"4fdb128cf6dd891a310d488d2768b5ce2732c4ff","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":135,"context_line":"        \"\"\"Update own password.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: passwd,"},{"line_number":137,"context_line":"                           \u0027original_password\u0027: origpasswd}}"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2Bs%2Bs%3D","line":135,"in_reply_to":"AAAAUH%2F%2Bxa0%3D","updated":"2014-01-23 01:05:05.000000000","message":"I think your best bet is to rephrase Morgan\u0027s comment from the previous changeset and put it here.","commit_id":"979a3448cca8451089cfba6ec55bce989da44b5e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"09e21a3249dd2b480a934056166126c989d48a27","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":135,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: passwd,"},{"line_number":137,"context_line":"                           \u0027original_password\u0027: origpasswd}}"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FtZI%3D","line":134,"updated":"2014-03-04 15:09:57.000000000","message":"You could add a method (similar to _require_user_and_group) for some validation.","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1753488b4ccd8afe146ab78cc23e1a1296ad78ab","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":135,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":136,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: passwd,"},{"line_number":137,"context_line":"                           \u0027original_password\u0027: origpasswd}}"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FsNk%3D","line":134,"in_reply_to":"AAAAVn%2F%2FtZI%3D","updated":"2014-03-04 16:49:04.000000000","message":"I didn\u0027t add a method because right now it wouldn\u0027t be reused, but I did add the validation check. Eventually if we need to use the logic somewhere else we can break it out.","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"09e21a3249dd2b480a934056166126c989d48a27","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % self.api.user_id"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            method\u003d\u0027POST\u0027,"},{"line_number":143,"context_line":"                            management\u003dFalse)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FtY0%3D","line":141,"updated":"2014-03-04 15:09:57.000000000","message":"nit: could place \u0027method\u0027 on this line","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1753488b4ccd8afe146ab78cc23e1a1296ad78ab","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        base_url \u003d \u0027/users/%s/password\u0027 % self.api.user_id"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return self._update(base_url, params,"},{"line_number":142,"context_line":"                            method\u003d\u0027POST\u0027,"},{"line_number":143,"context_line":"                            management\u003dFalse)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVn%2F%2FsNY%3D","line":141,"in_reply_to":"AAAAVn%2F%2FtY0%3D","updated":"2014-03-04 16:49:04.000000000","message":"Did you one better...the entire call is on one line now.","commit_id":"0c184cee81bfca637a854579f93fe0eea128c66c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"daf23edc408d13e4ca562f65880629f259b82746","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":135,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":136,"context_line":"        if not (origpasswd and passwd):"},{"line_number":137,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVn%2F%2FnBA%3D","line":134,"updated":"2014-03-05 03:18:02.000000000","message":"can we not abbreviate things in the method signature unnecessarily? just spell them out as original_password and password (or even new_password)","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59f286c0c02b2b7e5e540eda906ed3683c3c6e26","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            description\u003ddescription,"},{"line_number":132,"context_line":"            enabled\u003denabled)"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":135,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":136,"context_line":"        if not (origpasswd and passwd):"},{"line_number":137,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVn%2F%2FG5k%3D","line":134,"in_reply_to":"AAAAVn%2F%2FnBA%3D","updated":"2014-03-09 15:31:48.000000000","message":"Dolph - The signature as it is now matches the signature in the v2 API: http://git.openstack.org/cgit/openstack/python-keystoneclient/tree/keystoneclient/v2_0/users.py#n69\n\nIf we keep the interface the same then it\u0027ll be easier to migrate.","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"daf23edc408d13e4ca562f65880629f259b82746","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":136,"context_line":"        if not (origpasswd and passwd):"},{"line_number":137,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"},{"line_number":138,"context_line":"            raise exceptions.ValidationError(msg)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: passwd,"},{"line_number":141,"context_line":"                           \u0027original_password\u0027: origpasswd}}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVn%2F%2FnAc%3D","line":138,"updated":"2014-03-05 03:18:02.000000000","message":"they\u0027re both required arguments already","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"dbaa64962fde184f42f6d0df9f339f159b1ee4b3","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":136,"context_line":"        if not (origpasswd and passwd):"},{"line_number":137,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"},{"line_number":138,"context_line":"            raise exceptions.ValidationError(msg)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        params \u003d {\u0027user\u0027: {\u0027password\u0027: passwd,"},{"line_number":141,"context_line":"                           \u0027original_password\u0027: origpasswd}}"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAVn%2F%2FVfM%3D","line":138,"in_reply_to":"AAAAVn%2F%2FnAc%3D","updated":"2014-03-06 19:04:02.000000000","message":"Yes, but they could be passed in as None.  I think that is what he should be confirming:  Both are non None and that they are the same.","commit_id":"c078119baf0ecf9e969075b5aeee1600665af8a5"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"62e4c23d837ecf3755cc1df4745e06beab923ae0","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            enabled\u003denabled,"},{"line_number":134,"context_line":"            **kwargs)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":137,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":138,"context_line":"        if not (origpasswd and passwd):"},{"line_number":139,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F%2BmRg%3D","line":136,"updated":"2014-03-25 16:48:02.000000000","message":"i still think the argument in favor of using unnecessarily abbreviated parameter names (\"that\u0027s what they were in the v2 client, so it eases the migration path to v3\") is weak at best. nowhere else in the v3 client API do we arbitrarily abbreviate attribute names, so it feels like a great opportunity to provide a user-friendly method signature, without having to break backwards compatibility.\n\ni\u0027d suggest making this interface incredibly explicit. it does not have to be 1:1 with the HTTP API:\n\n  def update_own_password(self, old_password, new_password):","commit_id":"9f8d94050ba1e093184db72637a64df0db624bc3"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d1b4c398889f4f6ea31783b562e535ca50083019","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":137,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":138,"context_line":"        if not (origpasswd and passwd):"},{"line_number":139,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"},{"line_number":140,"context_line":"            raise exceptions.ValidationError(msg)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F%2BsH0%3D","line":138,"updated":"2014-03-25 02:25:37.000000000","message":"I recall dolphm mentioning that there is no point in checking this, as they are both required parameters.","commit_id":"9f8d94050ba1e093184db72637a64df0db624bc3"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"558ad3b43e765874d440798588073be2dc9c72bd","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":137,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":138,"context_line":"        if not (origpasswd and passwd):"},{"line_number":139,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"},{"line_number":140,"context_line":"            raise exceptions.ValidationError(msg)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F%2Bn94%3D","line":138,"in_reply_to":"AAAAWH%2F%2BsEQ%3D","updated":"2014-03-25 13:59:35.000000000","message":"Yes, I agree. Python enforces that something is provided, but not that it meets our criteria. There actually a test in this patch that I would expect to fail if this check was removed.","commit_id":"9f8d94050ba1e093184db72637a64df0db624bc3"},{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"900db37c371003c7ea8f28c19ac62ac7ff263154","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def update_own_password(self, origpasswd, passwd):"},{"line_number":137,"context_line":"        \"\"\"Update the password for the user the token belongs to.\"\"\""},{"line_number":138,"context_line":"        if not (origpasswd and passwd):"},{"line_number":139,"context_line":"            msg \u003d \u0027Specify both the current password and a new password\u0027"},{"line_number":140,"context_line":"            raise exceptions.ValidationError(msg)"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAWH%2F%2BsEQ%3D","line":138,"in_reply_to":"AAAAWH%2F%2BsH0%3D","updated":"2014-03-25 02:42:27.000000000","message":"Required parameters could be passed in as None or \u0027\u0027, so we need to confirm this.","commit_id":"9f8d94050ba1e093184db72637a64df0db624bc3"}]}
