)]}'
{"nova/exception_wrapper.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"180d7f8c6f39d9b6b797c6cde6adee714b868580","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    # NOTE(gibi) remove context as well as it contains sensitive information"},{"line_number":91,"context_line":"    # and it can also contain circular references"},{"line_number":92,"context_line":"    call_dict.pop(\u0027context\u0027, None)"},{"line_number":93,"context_line":"    return strutils.mask_dict_password(call_dict)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_e98bedbc","line":93,"range":{"start_line":93,"start_character":4,"end_line":93,"end_character":49},"updated":"2017-03-29 15:36:37.000000000","message":"Based on the source [1], this looks like it\u0027ll result in different output: namely, the fields will be replaced with \u0027???\u0027 rather than simply dropped\n\n[1] https://github.com/openstack/oslo.utils/blob/824adac/oslo_utils/strutils.py#L330-L332","commit_id":"2907cfffb264215c080f78caf2411bcfca42a40f"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"936d798a193482c92fedc2f2119c3977220e3996","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    # NOTE(gibi) remove context as well as it contains sensitive information"},{"line_number":91,"context_line":"    # and it can also contain circular references"},{"line_number":92,"context_line":"    call_dict.pop(\u0027context\u0027, None)"},{"line_number":93,"context_line":"    return strutils.mask_dict_password(call_dict)"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfeb2761_4a13c767","line":93,"range":{"start_line":93,"start_character":4,"end_line":93,"end_character":49},"in_reply_to":"ffe62b97_428172c3","updated":"2017-03-30 18:46:34.000000000","message":"AFAIK, we don\u0027t expose any other info apart from status code and message on occurence of exception in API layer. Apart from that it sends exception to the notification system.","commit_id":"2907cfffb264215c080f78caf2411bcfca42a40f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7da482d6bb2b6234a3ce50748050ce7ce75109ca","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    # NOTE(gibi) remove context as well as it contains sensitive information"},{"line_number":91,"context_line":"    # and it can also contain circular references"},{"line_number":92,"context_line":"    call_dict.pop(\u0027context\u0027, None)"},{"line_number":93,"context_line":"    return strutils.mask_dict_password(call_dict)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_428172c3","line":93,"range":{"start_line":93,"start_character":4,"end_line":93,"end_character":49},"in_reply_to":"ffe62b97_802e5589","updated":"2017-03-30 08:33:06.000000000","message":"Right. Does any of this information make its way to the user via an API though?","commit_id":"2907cfffb264215c080f78caf2411bcfca42a40f"},{"author":{"_account_id":18339,"name":"Sivasathurappan Radhakrishnan","email":"siva.radhakrishnan@intel.com","username":"sivakrishnan"},"change_message_id":"e9b49ea51d94b875f9d5c1469e3523f8093eecb9","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    # NOTE(gibi) remove context as well as it contains sensitive information"},{"line_number":91,"context_line":"    # and it can also contain circular references"},{"line_number":92,"context_line":"    call_dict.pop(\u0027context\u0027, None)"},{"line_number":93,"context_line":"    return strutils.mask_dict_password(call_dict)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ffe62b97_802e5589","line":93,"range":{"start_line":93,"start_character":4,"end_line":93,"end_character":49},"in_reply_to":"ffe62b97_e98bedbc","updated":"2017-03-30 07:47:41.000000000","message":"Hi Stephen!\nThanks for the review. Current _cleanse_dict function is not as robust as mask_dict_password as it checks only for occurences of \"_pass\" which is not the only key containing sensitive information and there are chances that it might not be removing some sensitive keys as well which we aren\u0027t aware of. mask_dict_password doesn\u0027t remove key instead it masks which is still on the safer side. Moreover this creates consistency across all projects on how sensitive information is being handled.\n\nThanks,\nSiva.","commit_id":"2907cfffb264215c080f78caf2411bcfca42a40f"}],"nova/tests/unit/test_exception.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f1e8d0e1ceaf2dcd98ed5f33efa6b2e8f99e0871","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        self.assertEqual({\u0027foo\u0027: 1}, exception_wrapper._cleanse_dict(kwargs))"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        kwargs \u003d {}"},{"line_number":160,"context_line":"        self.assertEqual({}, exception_wrapper._cleanse_dict(kwargs))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def test_format_message_local(self):"},{"line_number":163,"context_line":"        class FakeNovaException(exception.NovaException):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa31d9ce_4c520f15","side":"PARENT","line":160,"updated":"2017-02-10 12:55:02.000000000","message":"Can we please have a test that is similar for _get_call_dict to prove this change works.","commit_id":"045f08ab8a57b90b00e4777ca71a20b5603c296c"}]}
