)]}'
{"novaclient/tests/v1_1/test_servers.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"4e6965d45d0bc3d43339ca542771646f29488c91","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def test_get_password_without_key(self):"},{"line_number":429,"context_line":"        s \u003d cs.servers.get(1234)"},{"line_number":430,"context_line":"        self.assertEqual(s.get_password(), \u0027\u0027)"},{"line_number":431,"context_line":"        cs.assert_called(\u0027GET\u0027, \u0027/servers/1234/os-server-password\u0027)"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    def test_clear_password(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BdvI%3D","line":430,"updated":"2013-11-25 19:37:10.000000000","message":"I was thinking this and test_get_password aren\u0027t testing that the password comes back in the clear vs encrypted but understand maybe doing that is too complicated given the precedent returning os-server-password as empty string in fakes.","commit_id":"cd3fd5058760ac7634bc1fac2eee3073d507142f"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"fcf3e2bb50b97fb5bc4065e6636894ed454a5e90","unresolved":false,"context_lines":[{"line_number":427,"context_line":""},{"line_number":428,"context_line":"    def test_get_password_without_key(self):"},{"line_number":429,"context_line":"        s \u003d cs.servers.get(1234)"},{"line_number":430,"context_line":"        self.assertEqual(s.get_password(), \u0027\u0027)"},{"line_number":431,"context_line":"        cs.assert_called(\u0027GET\u0027, \u0027/servers/1234/os-server-password\u0027)"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"    def test_clear_password(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BUfw%3D","line":430,"in_reply_to":"AAAATn%2F%2BdvI%3D","updated":"2013-11-27 12:32:07.000000000","message":"Thanks. You\u0027re right. I\u0027ll try and add better testing of the get_password feature.","commit_id":"cd3fd5058760ac7634bc1fac2eee3073d507142f"}],"novaclient/v1_1/servers.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"65d39d55f08fa9a64e2b25f144c22ed96e2d0b4d","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        if body:"},{"line_number":522,"context_line":"            ciphered_pw \u003d body.get(\u0027password\u0027, \u0027\u0027)"},{"line_number":523,"context_line":"        else:"},{"line_number":524,"context_line":"            ciphered_pw \u003d \u0027\u0027"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        if private_key and ciphered_pw:"},{"line_number":527,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1EQ%3D","line":524,"updated":"2013-11-19 16:30:13.000000000","message":"Could also use:\n\n    ciphered_pw \u003d body.get(\u0027password\u0027, \u0027\u0027) if body else \u0027\u0027","commit_id":"a390462ee973fcca079d7f687f0b031aeb0121f0"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"365a73738e17c3357996a66c24efdd2b1fd55c70","unresolved":false,"context_lines":[{"line_number":521,"context_line":"        if body:"},{"line_number":522,"context_line":"            ciphered_pw \u003d body.get(\u0027password\u0027, \u0027\u0027)"},{"line_number":523,"context_line":"        else:"},{"line_number":524,"context_line":"            ciphered_pw \u003d \u0027\u0027"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        if private_key and ciphered_pw:"},{"line_number":527,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2ByOE%3D","line":524,"in_reply_to":"AAAATn%2F%2B1EQ%3D","updated":"2013-11-20 09:29:03.000000000","message":"Fair enough, your code is more concise. I\u0027ll update it in the next patch.","commit_id":"a390462ee973fcca079d7f687f0b031aeb0121f0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"65d39d55f08fa9a64e2b25f144c22ed96e2d0b4d","unresolved":false,"context_lines":[{"line_number":527,"context_line":"            try:"},{"line_number":528,"context_line":"                return crypto.decrypt_password(private_key, ciphered_pw)"},{"line_number":529,"context_line":"            except Exception as exc:"},{"line_number":530,"context_line":"                return \u0027%sFailed to decrypt:\\n%s\u0027 % (exc, ciphered_pw)"},{"line_number":531,"context_line":"        return ciphered_pw"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    def clear_password(self, server):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1EI%3D","line":530,"updated":"2013-11-19 16:30:13.000000000","message":"Ugh.  Not your fault, but why the heck would we _return_ an error message instead of raising an exception to let the caller know of the failure?","commit_id":"a390462ee973fcca079d7f687f0b031aeb0121f0"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"365a73738e17c3357996a66c24efdd2b1fd55c70","unresolved":false,"context_lines":[{"line_number":527,"context_line":"            try:"},{"line_number":528,"context_line":"                return crypto.decrypt_password(private_key, ciphered_pw)"},{"line_number":529,"context_line":"            except Exception as exc:"},{"line_number":530,"context_line":"                return \u0027%sFailed to decrypt:\\n%s\u0027 % (exc, ciphered_pw)"},{"line_number":531,"context_line":"        return ciphered_pw"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    def clear_password(self, server):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2ByCI%3D","line":530,"in_reply_to":"AAAATn%2F%2B1EI%3D","updated":"2013-11-20 09:29:03.000000000","message":"Also true. I\u0027ll add the error message to the exception caught and then forward it.","commit_id":"a390462ee973fcca079d7f687f0b031aeb0121f0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e8e4c065104291adec8845e388bf84f2e1ec165a","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            except Exception as exc:"},{"line_number":525,"context_line":"                # Add some information to the exception and forward it"},{"line_number":526,"context_line":"                raise type(exc)("},{"line_number":527,"context_line":"                    \u0027%sFailed to decrypt:\\n%s\u0027 % (exc, ciphered_pw))"},{"line_number":528,"context_line":"        return ciphered_pw"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def clear_password(self, server):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BwWA%3D","line":527,"updated":"2013-11-20 16:20:36.000000000","message":"I would rather we be specific about the exception we raise.  I\u0027d try something like:\n\n    raise DecryptionException(\u0027Failed to decrypt password \"%s\": %s\u0027 % (ciphered_pw, exc))\n\nWith of course substituting an appropriate exception for DecryptionException…","commit_id":"9444930acb56385daf06e0d9e40b4bd324ccd8f3"},{"author":{"_account_id":8996,"name":"Florent Flament","email":"contact@florentflament.com","username":"florent"},"change_message_id":"f6f17821ff704356a9bf98fc96cc543da3f05bf7","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            except Exception as exc:"},{"line_number":525,"context_line":"                # Add some information to the exception and forward it"},{"line_number":526,"context_line":"                raise type(exc)("},{"line_number":527,"context_line":"                    \u0027%sFailed to decrypt:\\n%s\u0027 % (exc, ciphered_pw))"},{"line_number":528,"context_line":"        return ciphered_pw"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"    def clear_password(self, server):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BwSE%3D","line":527,"in_reply_to":"AAAATn%2F%2BwWA%3D","updated":"2013-11-20 16:36:20.000000000","message":"Sounds reasonable.\nBesides, I\u0027ll follow the advice in your cover message, by reverting the raise statement to the original return statement. This update will have to be done in a follow-up patch.","commit_id":"9444930acb56385daf06e0d9e40b4bd324ccd8f3"}]}
