)]}'
{"cinder/api/contrib/qos_specs_manage.py":[{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"998fa92de9cb3d506087d92202442e23accaa85d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if name is None:"},{"line_number":85,"context_line":"            msg \u003d _(\"Please specify a name for QoS specs.\")"},{"line_number":86,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        for key, value in specs.items():"},{"line_number":89,"context_line":"            if key is not None:"},{"line_number":90,"context_line":"                utils.check_string_length(key, \u0027Key \"%s\"\u0027 % key,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_c1967fee","line":87,"updated":"2016-07-15 08:30:45.000000000","message":"You just checked key/value, and skipped the name check. It should be added.\n\ncinder qos-create \u003cname\u003e \u003ckey\u003dvalue\u003e [\u003ckey\u003dvalue\u003e ...]","commit_id":"0409062eac1c64559c44aa490d9af6eaf878d2cc"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"b3d2edf4b99be0215fee4bab26702849c5553a62","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if name is None:"},{"line_number":85,"context_line":"            msg \u003d _(\"Please specify a name for QoS specs.\")"},{"line_number":86,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        for key, value in specs.items():"},{"line_number":89,"context_line":"            if key is not None:"},{"line_number":90,"context_line":"                utils.check_string_length(key, \u0027Key \"%s\"\u0027 % key,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_6bf5f5c9","line":87,"in_reply_to":"1aa78d24_5b76ef3e","updated":"2016-07-19 06:42:14.000000000","message":"Done","commit_id":"0409062eac1c64559c44aa490d9af6eaf878d2cc"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"93b2e423b80ba858cd73873c505806db318ec51b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if name is None:"},{"line_number":85,"context_line":"            msg \u003d _(\"Please specify a name for QoS specs.\")"},{"line_number":86,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        for key, value in specs.items():"},{"line_number":89,"context_line":"            if key is not None:"},{"line_number":90,"context_line":"                utils.check_string_length(key, \u0027Key \"%s\"\u0027 % key,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_323731e5","line":87,"in_reply_to":"1aa78d24_5b76ef3e","updated":"2016-07-18 01:48:37.000000000","message":"Oh, yes. Agree with Vipin. utils.validate_extra_specs does same thing.","commit_id":"0409062eac1c64559c44aa490d9af6eaf878d2cc"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"970ae489bef5758ddad5f039c5c327c7331ce3ad","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if name is None:"},{"line_number":85,"context_line":"            msg \u003d _(\"Please specify a name for QoS specs.\")"},{"line_number":86,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        for key, value in specs.items():"},{"line_number":89,"context_line":"            if key is not None:"},{"line_number":90,"context_line":"                utils.check_string_length(key, \u0027Key \"%s\"\u0027 % key,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_c85cdcf2","line":87,"in_reply_to":"1aa78d24_c1967fee","updated":"2016-07-15 09:49:51.000000000","message":"Hi LisaLi,\n\nThanks for your review but \u0027name\u0027 is present in \u0027specs\u0027 dict and it is getting validated as I am looping through whole \u0027specs\u0027 dict.","commit_id":"0409062eac1c64559c44aa490d9af6eaf878d2cc"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0586fc63e17dc4b11b08168a165335bc378cc995","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if name is None:"},{"line_number":85,"context_line":"            msg \u003d _(\"Please specify a name for QoS specs.\")"},{"line_number":86,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        for key, value in specs.items():"},{"line_number":89,"context_line":"            if key is not None:"},{"line_number":90,"context_line":"                utils.check_string_length(key, \u0027Key \"%s\"\u0027 % key,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_5b76ef3e","line":87,"in_reply_to":"1aa78d24_c85cdcf2","updated":"2016-07-15 12:10:31.000000000","message":"It is not needed to validate name separately here since it is part of specs.\n\nCan we use utils.validate_extra_specs (after renaming it?) here to avoid code duplication?","commit_id":"0409062eac1c64559c44aa490d9af6eaf878d2cc"}],"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":"0586fc63e17dc4b11b08168a165335bc378cc995","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":470,"context_line":"                          self.controller.create, req, body)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def test_create_value_greater_than_255_characters(self):"},{"line_number":473,"context_line":"        body \u003d {\u0027qos_specs\u0027: {\u0027name\u0027: \u0027fake_name\u0027,"},{"line_number":474,"context_line":"                              \u0027fake_key\u0027: \u0027fake_value\u0027 * 255}}"},{"line_number":475,"context_line":"        self._create_qos_specs_bad_body_invalid_input(body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_5b20aff7","line":472,"updated":"2016-07-15 12:10:31.000000000","message":"Use ddt.data to reduce code duplication.\n\nSee https://github.com/openstack/cinder/blob/master/cinder/tests/unit/api/contrib/test_types_manage.py#L345","commit_id":"0409062eac1c64559c44aa490d9af6eaf878d2cc"},{"author":{"_account_id":20191,"name":"Dinesh Bhor","email":"bhordinesh07@gmail.com","username":"dineshbhor"},"change_message_id":"b3d2edf4b99be0215fee4bab26702849c5553a62","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":470,"context_line":"                          self.controller.create, req, body)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def test_create_value_greater_than_255_characters(self):"},{"line_number":473,"context_line":"        body \u003d {\u0027qos_specs\u0027: {\u0027name\u0027: \u0027fake_name\u0027,"},{"line_number":474,"context_line":"                              \u0027fake_key\u0027: \u0027fake_value\u0027 * 255}}"},{"line_number":475,"context_line":"        self._create_qos_specs_bad_body_invalid_input(body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dada55a8_0b06f9cd","line":472,"in_reply_to":"1aa78d24_5b20aff7","updated":"2016-07-19 06:42:14.000000000","message":"Done","commit_id":"0409062eac1c64559c44aa490d9af6eaf878d2cc"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"cf0e5d2cc2f230bec42a24f41fe1a8c8e9b75fe0","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        body \u003d {\u0027qos_specs\u0027: \u0027string\u0027}"},{"line_number":466,"context_line":"        self._create_qos_specs_bad_body(body\u003dbody)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    @ddt.data({\u0027name\u0027: \u0027fake_name\u0027, \u0027a\u0027 * 256: \u0027a\u0027},"},{"line_number":469,"context_line":"              {\u0027name\u0027: \u0027fake_name\u0027, \u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":470,"context_line":"              {\u0027name\u0027: \u0027fake_name\u0027 * 256, \u0027a\u0027: \u0027a\u0027})"},{"line_number":471,"context_line":"    def test_create_qos_with_invalid_specs(self, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_02837205","line":468,"updated":"2016-07-19 10:16:17.000000000","message":"Good to have one more case where the key length is 0.","commit_id":"f5c3bb158e4e600379301281cb630d655c46d7e0"}]}
