)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"4c7dc574443f7c8add0962749abdc91acbb6896f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the input format for qos_spec is not dict, Cinder"},{"line_number":10,"context_line":"will raise 500 error."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I5cb68af74c68cd53bc3b84e705ca3472859c1ec3"},{"line_number":13,"context_line":"Closes-bug: #1704988"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff346bd7_fef5a684","line":11,"updated":"2017-07-22 15:00:53.000000000","message":"This should indicate that you change the code to instead produce an InvalidInput exception please.  Thanks!","commit_id":"aa24d325742a5a15367c4562c35c321daaeaaa36"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"912113a023f111a8236c99eb149b63f52367ca8a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the input format for qos_spec is not dict, Cinder"},{"line_number":10,"context_line":"will raise 500 error."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I5cb68af74c68cd53bc3b84e705ca3472859c1ec3"},{"line_number":13,"context_line":"Closes-bug: #1704988"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff346bd7_aed59bbb","line":11,"in_reply_to":"ff346bd7_fef5a684","updated":"2017-07-24 07:22:27.000000000","message":"Done","commit_id":"aa24d325742a5a15367c4562c35c321daaeaaa36"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"5c53e577244204a63e409cdab33473494ff66b45","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add input format check for qos_spec update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the input format for qos_spec is not dict, Cinder"},{"line_number":10,"context_line":"will raise 500 error."},{"line_number":11,"context_line":"This patch added the format check and raised 400"},{"line_number":12,"context_line":"InvalidInput error to users."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9f436f4f_686c909b","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":21},"updated":"2017-08-16 07:15:30.000000000","message":"The case which will cause 500 error is when you update qos with dict that contains none string key or value (see the log you pasted on the launchpad), so it\u0027s still a valid dict, please update the commit message.","commit_id":"b793a3c23e5d1fbaf6b9f16266ff7cd7405da864"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3e5c7d7cdc56fae5e86e43c960e0886a7ab6eb3e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add input format check for qos_spec update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If the input format for qos_spec is not dict, Cinder"},{"line_number":10,"context_line":"will raise 500 error."},{"line_number":11,"context_line":"This patch added the format check and raised 400"},{"line_number":12,"context_line":"InvalidInput error to users."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9f436f4f_8ed8c552","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":21},"in_reply_to":"9f436f4f_686c909b","updated":"2017-08-17 01:39:22.000000000","message":"Sure, np","commit_id":"b793a3c23e5d1fbaf6b9f16266ff7cd7405da864"}],"cinder/tests/unit/api/contrib/test_qos_specs_manage.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"ba7ba13a14aa615338a8455dfb6f7be9826d57bd","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                          req, fake.INVALID_ID, body)"},{"line_number":507,"context_line":"        self.assertEqual(1, self.notifier.get_notification_count())"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def test_update_invalid_input_with_dict(self):"},{"line_number":510,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/%s/qos-specs/%s\u0027 %"},{"line_number":511,"context_line":"                                      (fake.PROJECT_ID, fake.UUID1),"},{"line_number":512,"context_line":"                                      use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_cb4ec495","line":509,"range":{"start_line":509,"start_character":8,"end_line":509,"end_character":43},"updated":"2017-08-16 19:25:18.000000000","message":"This function name is not appropriate because dict is a valid input. I believe you want to assert that InvalidQoSSpecs is raised if the key or value is not of type str. My suggestion is to update the above test case (test_update_invalid_input) to test this case. You may want to use ddt.data to pass different invalid qos_specs input to the test case.","commit_id":"b793a3c23e5d1fbaf6b9f16266ff7cd7405da864"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"3e5c7d7cdc56fae5e86e43c960e0886a7ab6eb3e","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                          req, fake.INVALID_ID, body)"},{"line_number":507,"context_line":"        self.assertEqual(1, self.notifier.get_notification_count())"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"    def test_update_invalid_input_with_dict(self):"},{"line_number":510,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/%s/qos-specs/%s\u0027 %"},{"line_number":511,"context_line":"                                      (fake.PROJECT_ID, fake.UUID1),"},{"line_number":512,"context_line":"                                      use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f436f4f_ce97ed44","line":509,"range":{"start_line":509,"start_character":8,"end_line":509,"end_character":43},"in_reply_to":"9f436f4f_cb4ec495","updated":"2017-08-17 01:39:22.000000000","message":"Thanks for reviewing, but I feel it\u0027s not appropriate to update the test_update_invalid_input using ddt,  since it is for testing the invalid id in url, not in body.  So I suggest we update this test to test_update_none_string_key_or_value.","commit_id":"b793a3c23e5d1fbaf6b9f16266ff7cd7405da864"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"72e36bb64b6cc1473e532d990d7a17806a42017e","unresolved":false,"context_lines":[{"line_number":507,"context_line":"    @ddt.data({\u0027qos_specs\u0027: {\u0027key1\u0027: [\u0027value1\u0027]}},"},{"line_number":508,"context_line":"              {\u0027qos_specs\u0027: {1: \u0027value1\u0027}}"},{"line_number":509,"context_line":"              )"},{"line_number":510,"context_line":"    def test_update_none_string_key_or_value(self, body):"},{"line_number":511,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/%s/qos-specs/%s\u0027 %"},{"line_number":512,"context_line":"                                      (fake.PROJECT_ID, fake.UUID1),"},{"line_number":513,"context_line":"                                      use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_a735d5aa","line":510,"updated":"2017-08-17 21:05:50.000000000","message":"This name is not appropriate. I think you meant to write _non_string.","commit_id":"035218712852bd531f12d2cab8fe030aee5d4d7f"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"2576897c37ce413ef08db24dec566f011af9daee","unresolved":false,"context_lines":[{"line_number":507,"context_line":"    @ddt.data({\u0027qos_specs\u0027: {\u0027key1\u0027: [\u0027value1\u0027]}},"},{"line_number":508,"context_line":"              {\u0027qos_specs\u0027: {1: \u0027value1\u0027}}"},{"line_number":509,"context_line":"              )"},{"line_number":510,"context_line":"    def test_update_none_string_key_or_value(self, body):"},{"line_number":511,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/%s/qos-specs/%s\u0027 %"},{"line_number":512,"context_line":"                                      (fake.PROJECT_ID, fake.UUID1),"},{"line_number":513,"context_line":"                                      use_admin_context\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f436f4f_24231e08","line":510,"in_reply_to":"9f436f4f_a735d5aa","updated":"2017-08-18 00:53:55.000000000","message":"yeah, thanks","commit_id":"035218712852bd531f12d2cab8fe030aee5d4d7f"}]}
