)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2f2ff208e3892e2e49f522576ad5863eab86c9dc","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add validation for the metadata properties"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Besides /v2/volume_metadata, the volume metadata can also"},{"line_number":10,"context_line":"be updated by /v2/volumes along with the name and description."},{"line_number":11,"context_line":"But there is no validation for the latter now. And this patch"},{"line_number":12,"context_line":"tries to add the validation logic for it and meanwhile add some"},{"line_number":13,"context_line":"test cases as well."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_0b829294","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":62},"updated":"2016-06-22 09:35:09.000000000","message":"-1: This is only talking about volumes, but you are also fixing it in backups, CGs, CGsnapshots, snapshots...","commit_id":"20e763f9860d89090029a2956e2e6e6cfcbec629"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"fc353f6263cd0d4a1398b641d03492974659d2fe","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add validation for the metadata properties"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Besides /v2/volume_metadata, the volume metadata can also"},{"line_number":10,"context_line":"be updated by /v2/volumes along with the name and description."},{"line_number":11,"context_line":"But there is no validation for the latter now. And this patch"},{"line_number":12,"context_line":"tries to add the validation logic for it and meanwhile add some"},{"line_number":13,"context_line":"test cases as well."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_5c5c5e25","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":62},"in_reply_to":"3aaa91ec_0b829294","updated":"2016-06-22 10:06:59.000000000","message":"The change in backups etc. is due to the renaming of the validation function. If the new validation logic is a separate function, there would be no change in those places (see patch set 1).","commit_id":"20e763f9860d89090029a2956e2e6e6cfcbec629"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"d48d2f549e396bee2b11c13adeef6775cf572b3b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add validation for the metadata properties"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Besides /v2/volume_metadata, the volume metadata can also"},{"line_number":10,"context_line":"be updated by /v2/volumes along with the name and description."},{"line_number":11,"context_line":"But there is no validation for the latter now. And this patch"},{"line_number":12,"context_line":"tries to add the validation logic for it and meanwhile add some"},{"line_number":13,"context_line":"test cases as well."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_c2f868e8","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":62},"in_reply_to":"3aaa91ec_5c5c5e25","updated":"2016-06-22 10:23:11.000000000","message":"You are right, I forgot we were not using the metadata there... In that case I think I prefer wanghao\u0027s approach better.","commit_id":"20e763f9860d89090029a2956e2e6e6cfcbec629"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2f2ff208e3892e2e49f522576ad5863eab86c9dc","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Besides /v2/volume_metadata, the volume metadata can also"},{"line_number":10,"context_line":"be updated by /v2/volumes along with the name and description."},{"line_number":11,"context_line":"But there is no validation for the latter now. And this patch"},{"line_number":12,"context_line":"tries to add the validation logic for it and meanwhile add some"},{"line_number":13,"context_line":"test cases as well."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I1c621c3d33403b197e0b8e99493ef9817d35d8b9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_ab5b7e53","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":12},"updated":"2016-06-22 09:35:09.000000000","message":"nit: I don\u0027t think we should say \"tries\", we should just say: \"this patch adds the validation\"","commit_id":"20e763f9860d89090029a2956e2e6e6cfcbec629"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"292b20112cf2f61d77d4b493ec8117d18b10af87","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add validation for the metadata properties"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Besides /v2/volume_metadata API, the volume metadata can also"},{"line_number":10,"context_line":"be controlled(i.e. create/update) by /v2/volumes along with"},{"line_number":11,"context_line":"name and description. But there is no validation for"},{"line_number":12,"context_line":"/v2/volumes API, so that 500 error will be encountered"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3aaa91ec_1538723c","line":9,"range":{"start_line":9,"start_character":8,"end_line":9,"end_character":27},"updated":"2016-06-24 06:30:31.000000000","message":"This issue is existing in V2 and V3 both, not only v2.","commit_id":"ae57be19ff1955951be05ceb6a47d766867e3a74"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"85a08d86fc2564cdb80f11c8dcaab5dc5dc87b87","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Co-Authored-By: wanghao \u003cwanghao749@huawei.com\u003e"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I1c621c3d33403b197e0b8e99493ef9817d35d8b9"},{"line_number":24,"context_line":"Closes-Bug: #1593588"},{"line_number":25,"context_line":"Closes-Bug: #1592331"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3aaa91ec_15e4e8de","line":24,"updated":"2016-06-24 10:29:20.000000000","message":"Please remove this line. Bug 1593588 is a duplicate of bug 1592331.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a2ab46a1f922ec72a10a2922523a5de8f20442d6","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Co-Authored-By: wanghao \u003cwanghao749@huawei.com\u003e"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I1c621c3d33403b197e0b8e99493ef9817d35d8b9"},{"line_number":24,"context_line":"Closes-Bug: #1593588"},{"line_number":25,"context_line":"Closes-Bug: #1592331"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3aaa91ec_987bef27","line":24,"in_reply_to":"3aaa91ec_15e4e8de","updated":"2016-06-24 10:38:29.000000000","message":"Since the bug has not been closed in LP we can leave it here or if we remove it it hast to be closed in LP.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"7e6362030ea20e5882065585c7d9f2439c64a848","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Co-Authored-By: wanghao \u003cwanghao749@huawei.com\u003e"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I1c621c3d33403b197e0b8e99493ef9817d35d8b9"},{"line_number":24,"context_line":"Closes-Bug: #1593588"},{"line_number":25,"context_line":"Closes-Bug: #1592331"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3aaa91ec_d7009636","line":24,"in_reply_to":"3aaa91ec_987bef27","updated":"2016-06-24 15:34:37.000000000","message":"Sorry, LP means...","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"950b2d7cdf1b388bb5fc87a7f29dea53976f5a49","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Co-Authored-By: wanghao \u003cwanghao749@huawei.com\u003e"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I1c621c3d33403b197e0b8e99493ef9817d35d8b9"},{"line_number":24,"context_line":"Closes-Bug: #1593588"},{"line_number":25,"context_line":"Closes-Bug: #1592331"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3aaa91ec_a4bda403","line":24,"in_reply_to":"3aaa91ec_d7009636","updated":"2016-06-27 09:04:33.000000000","message":"LaunchPad","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"27481ebab89fd577b6701e705996aa20aff88734","unresolved":false,"context_lines":[{"line_number":12,"context_line":"/volumes API, so that 500 error will be encountered"},{"line_number":13,"context_line":"while invalid metadata specified."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch tries to add a validation logic for it and meanwhile"},{"line_number":16,"context_line":"add some test cases as well."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Co-Authored-By: wanghao \u003cwanghao749@huawei.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3ac371cc_338a40c0","line":15,"range":{"start_line":15,"start_character":11,"end_line":15,"end_character":25},"updated":"2016-08-16 10:17:34.000000000","message":"nit: replace with \"adds\"","commit_id":"27e9bb5076788f7f883516afc9df04fe1068fb5d"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"27481ebab89fd577b6701e705996aa20aff88734","unresolved":false,"context_lines":[{"line_number":12,"context_line":"/volumes API, so that 500 error will be encountered"},{"line_number":13,"context_line":"while invalid metadata specified."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch tries to add a validation logic for it and meanwhile"},{"line_number":16,"context_line":"add some test cases as well."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Co-Authored-By: wanghao \u003cwanghao749@huawei.com\u003e"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"3ac371cc_138584ac","line":16,"range":{"start_line":15,"start_character":54,"end_line":16,"end_character":3},"updated":"2016-08-16 10:17:34.000000000","message":"nit: Not necessary","commit_id":"27e9bb5076788f7f883516afc9df04fe1068fb5d"}],"cinder/api/openstack/wsgi.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e4c9f08ac65e8fe64a9d7c9521809f78af070234","unresolved":false,"context_lines":[{"line_number":1231,"context_line":"                              \"request body.\") % entity_name)"},{"line_number":1232,"context_line":""},{"line_number":1233,"context_line":"    @staticmethod"},{"line_number":1234,"context_line":"    def validate_name_and_description(body):"},{"line_number":1235,"context_line":"        name \u003d body.get(\u0027name\u0027)"},{"line_number":1236,"context_line":"        if name is not None:"},{"line_number":1237,"context_line":"            if isinstance(name, six.string_types):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_4a7ef0e4","line":1234,"range":{"start_line":1234,"start_character":8,"end_line":1234,"end_character":37},"updated":"2016-06-17 13:57:25.000000000","message":"This method is now validating not just name and description. Can we rename it? \n\nor add a new method validate_metadata and call it from v2/volumes.py.","commit_id":"965dbb2da504dfb41653f129210bdb2eada9e5f5"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"54a4797af61e4f7f4f9630bd725d4fd15159e9cd","unresolved":false,"context_lines":[{"line_number":1231,"context_line":"                              \"request body.\") % entity_name)"},{"line_number":1232,"context_line":""},{"line_number":1233,"context_line":"    @staticmethod"},{"line_number":1234,"context_line":"    def validate_name_and_description(body):"},{"line_number":1235,"context_line":"        name \u003d body.get(\u0027name\u0027)"},{"line_number":1236,"context_line":"        if name is not None:"},{"line_number":1237,"context_line":"            if isinstance(name, six.string_types):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_db3c7131","line":1234,"range":{"start_line":1234,"start_character":8,"end_line":1234,"end_character":37},"in_reply_to":"7aa08908_4a7ef0e4","updated":"2016-06-17 15:36:50.000000000","message":"Exactly. I\u0027ll rename it to validate_name_desc_metadata.\nThanks.","commit_id":"965dbb2da504dfb41653f129210bdb2eada9e5f5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2f2ff208e3892e2e49f522576ad5863eab86c9dc","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"        if metadata is not None:"},{"line_number":1255,"context_line":"            try:"},{"line_number":1256,"context_line":"                utils.check_metadata_properties(metadata)"},{"line_number":1257,"context_line":"            except exception.Invalid as error:"},{"line_number":1258,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"    @staticmethod"},{"line_number":1261,"context_line":"    def validate_string_length(value, entity_name, min_length\u003d0,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_2bf30e75","line":1258,"range":{"start_line":1257,"start_character":12,"end_line":1258,"end_character":69},"updated":"2016-06-22 09:35:09.000000000","message":"-1: This is unnecessary as Invalid exceptions are automatically handled by wsgi and converted to the proper webob error (see line 599 in this file).","commit_id":"20e763f9860d89090029a2956e2e6e6cfcbec629"}],"cinder/api/v2/volumes.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"fe8f71a679995e11c704526ba19e6ffdc2ac0eda","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.validate_name_and_description(volume)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        if \u0027metadata\u0027 in volume:"},{"line_number":190,"context_line":"            utils.check_metadata_properties(volume[\u0027metadata\u0027])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        # NOTE(thingee): v2 API allows name instead of display_name"},{"line_number":193,"context_line":"        if \u0027name\u0027 in volume:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_03ccf968","line":190,"updated":"2016-06-23 09:36:08.000000000","message":"Why do we need to repeat this check? See https://review.openstack.org/#/c/330502/4/cinder/volume/flows/api/create_volume.py","commit_id":"90281ae9dbd591e5268e2255236de2257df63b3e"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"b7d0e9f72fc012452ef402a470d9cd8e7e44e1ec","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        kwargs \u003d {}"},{"line_number":187,"context_line":"        self.validate_name_and_description(volume)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        if \u0027metadata\u0027 in volume:"},{"line_number":190,"context_line":"            utils.check_metadata_properties(volume[\u0027metadata\u0027])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        # NOTE(thingee): v2 API allows name instead of display_name"},{"line_number":193,"context_line":"        if \u0027name\u0027 in volume:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_7180f58b","line":190,"range":{"start_line":189,"start_character":0,"end_line":190,"end_character":63},"updated":"2016-07-30 04:37:13.000000000","message":"This will be moved down to volume/api.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"97af6e25198f4a61c35f5d376cac91ad9d7bbd29","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            if key in volume:"},{"line_number":327,"context_line":"                update_dict[key] \u003d volume[key]"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        self.validate_name_and_description(update_dict)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # NOTE(thingee): v2 API allows name instead of display_name"},{"line_number":332,"context_line":"        if \u0027name\u0027 in update_dict:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_e5472349","line":329,"updated":"2016-07-29 13:03:50.000000000","message":"-1: Missing check here for metadata.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"987b4d5e9152b9dff91bdd065e0f3e95a1e772bc","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            if key in volume:"},{"line_number":327,"context_line":"                update_dict[key] \u003d volume[key]"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        self.validate_name_and_description(update_dict)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # NOTE(thingee): v2 API allows name instead of display_name"},{"line_number":332,"context_line":"        if \u0027name\u0027 in update_dict:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_d6ebec10","line":329,"in_reply_to":"bacf61ea_64d7984b","updated":"2016-08-03 12:59:57.000000000","message":"Ok, if you move L189-190 to volume/api I\u0027m ok with not adding it here, I just want consistency in where we are doing the checks.  :-)","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"b7d0e9f72fc012452ef402a470d9cd8e7e44e1ec","unresolved":false,"context_lines":[{"line_number":326,"context_line":"            if key in volume:"},{"line_number":327,"context_line":"                update_dict[key] \u003d volume[key]"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"        self.validate_name_and_description(update_dict)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # NOTE(thingee): v2 API allows name instead of display_name"},{"line_number":332,"context_line":"        if \u0027name\u0027 in update_dict:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_64d7984b","line":329,"in_reply_to":"bacf61ea_e5472349","updated":"2016-07-30 04:37:13.000000000","message":"Oh, Sounds missed it in the latest version.\nBut, this checking has already be added into volume/api in the fix I3928ffff9aab6a8071d0641fa6b40b10b1f6bc10, so that here it doesn\u0027t need anymore.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"b7d0e9f72fc012452ef402a470d9cd8e7e44e1ec","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            self.volume_api.update(context, volume, update_dict)"},{"line_number":345,"context_line":"        except exception.VolumeNotFound as error:"},{"line_number":346,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":347,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":348,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":349,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":350,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_317afdbd","line":348,"range":{"start_line":347,"start_character":0,"end_line":348,"end_character":65},"updated":"2016-07-30 04:37:13.000000000","message":"Gorka,\nI\u0027m not sure why do we need to remove this except in your fix I09f98921fdc2400cc3f6056e59001100abe06920.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"987b4d5e9152b9dff91bdd065e0f3e95a1e772bc","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            self.volume_api.update(context, volume, update_dict)"},{"line_number":345,"context_line":"        except exception.VolumeNotFound as error:"},{"line_number":346,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":347,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":348,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":349,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":350,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_5646dc21","line":348,"range":{"start_line":347,"start_character":0,"end_line":348,"end_character":65},"in_reply_to":"bacf61ea_317afdbd","updated":"2016-08-03 12:59:57.000000000","message":"Because this code you have added is unnecessary, it will be automatically converted to the right exception, just like all NotFound exceptions.  ;-)","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"dfd1541febb4d504f3feccf8c643ec2c9bc4e00b","unresolved":false,"context_lines":[{"line_number":344,"context_line":"            self.volume_api.update(context, volume, update_dict)"},{"line_number":345,"context_line":"        except exception.VolumeNotFound as error:"},{"line_number":346,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.msg)"},{"line_number":347,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":348,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":349,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":350,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_b82bd72f","line":348,"range":{"start_line":347,"start_character":0,"end_line":348,"end_character":65},"in_reply_to":"bacf61ea_5646dc21","updated":"2016-08-09 02:48:01.000000000","message":"Thanks for your explanation.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f688ec78337d7e59df6c84ab153de7bae98460a2","unresolved":false,"context_lines":[{"line_number":275,"context_line":"                volume.get(\u0027display_name\u0027),"},{"line_number":276,"context_line":"                volume.get(\u0027display_description\u0027),"},{"line_number":277,"context_line":"                **kwargs)"},{"line_number":278,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":279,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":280,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":281,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        retval \u003d self._view_builder.detail(req, new_volume)"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_360fe8e2","line":281,"range":{"start_line":278,"start_character":0,"end_line":281,"end_character":76},"updated":"2016-08-03 13:18:03.000000000","message":"-1: It is unnecessary to catch these exceptions and convert them, they are automatically converted in our WSGI default handler.","commit_id":"f6708bd0dcf180c0734ac685ff081c2027b42fb7"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ff8248f289d1687666a6bc8701c8667eed23e62a","unresolved":false,"context_lines":[{"line_number":275,"context_line":"                volume.get(\u0027display_name\u0027),"},{"line_number":276,"context_line":"                volume.get(\u0027display_description\u0027),"},{"line_number":277,"context_line":"                **kwargs)"},{"line_number":278,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":279,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":280,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":281,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        retval \u003d self._view_builder.detail(req, new_volume)"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad45d7e_b8e2b701","line":281,"range":{"start_line":278,"start_character":0,"end_line":281,"end_character":76},"in_reply_to":"bacf61ea_360fe8e2","updated":"2016-08-09 02:48:16.000000000","message":"Done","commit_id":"f6708bd0dcf180c0734ac685ff081c2027b42fb7"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f688ec78337d7e59df6c84ab153de7bae98460a2","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            volume_utils.notify_about_volume_usage(context, volume,"},{"line_number":333,"context_line":"                                                   \u0027update.start\u0027)"},{"line_number":334,"context_line":"            self.volume_api.update(context, volume, update_dict)"},{"line_number":335,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":336,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":337,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":338,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":339,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_b603d8b7","line":336,"range":{"start_line":335,"start_character":0,"end_line":336,"end_character":65},"updated":"2016-08-03 13:18:03.000000000","message":"-1: It is unnecessary to catch this exception and convert it, as it is automatically converted.","commit_id":"f6708bd0dcf180c0734ac685ff081c2027b42fb7"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ff8248f289d1687666a6bc8701c8667eed23e62a","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            volume_utils.notify_about_volume_usage(context, volume,"},{"line_number":333,"context_line":"                                                   \u0027update.start\u0027)"},{"line_number":334,"context_line":"            self.volume_api.update(context, volume, update_dict)"},{"line_number":335,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":336,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":337,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":338,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":339,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad45d7e_18e823e2","line":336,"range":{"start_line":335,"start_character":0,"end_line":336,"end_character":65},"in_reply_to":"bacf61ea_b603d8b7","updated":"2016-08-09 02:48:16.000000000","message":"Done","commit_id":"f6708bd0dcf180c0734ac685ff081c2027b42fb7"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"33e795dc7b75311a947d6b8289de4d0f8908f37e","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        multiattach \u003d volume.get(\u0027multiattach\u0027, False)"},{"line_number":268,"context_line":"        kwargs[\u0027multiattach\u0027] \u003d multiattach"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        new_volume \u003d self.volume_api.create(context,"},{"line_number":271,"context_line":"                                            size,"},{"line_number":272,"context_line":"                                            volume.get(\u0027display_name\u0027),"},{"line_number":273,"context_line":"                                            volume.get(\u0027display_description\u0027),"},{"line_number":274,"context_line":"                                            **kwargs)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        retval \u003d self._view_builder.detail(req, new_volume)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_b21e4661","line":274,"range":{"start_line":270,"start_character":0,"end_line":274,"end_character":53},"updated":"2016-08-09 09:53:47.000000000","message":"To be consistent, here we should raise TooLarge exception as well, right?\n\n except exception.InvalidVolumeMetadataSize as error:\n     raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)","commit_id":"46f1bb7489e00ce86569f2a433e3e203b039fdac"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"2f0dc23e1b61ba612a5d9f1729e322b020c9954c","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        multiattach \u003d volume.get(\u0027multiattach\u0027, False)"},{"line_number":268,"context_line":"        kwargs[\u0027multiattach\u0027] \u003d multiattach"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        new_volume \u003d self.volume_api.create(context,"},{"line_number":271,"context_line":"                                            size,"},{"line_number":272,"context_line":"                                            volume.get(\u0027display_name\u0027),"},{"line_number":273,"context_line":"                                            volume.get(\u0027display_description\u0027),"},{"line_number":274,"context_line":"                                            **kwargs)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        retval \u003d self._view_builder.detail(req, new_volume)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3ac371cc_6527cf12","line":274,"range":{"start_line":270,"start_character":0,"end_line":274,"end_character":53},"in_reply_to":"3ac371cc_53737c15","updated":"2016-08-16 10:28:58.000000000","message":"Thanks for your explanation.\nI\u0027ll fix it in the next patch.","commit_id":"46f1bb7489e00ce86569f2a433e3e203b039fdac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5b7ae3c277cd9c28b69a7ea6806dab38e6355d36","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        multiattach \u003d volume.get(\u0027multiattach\u0027, False)"},{"line_number":268,"context_line":"        kwargs[\u0027multiattach\u0027] \u003d multiattach"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        new_volume \u003d self.volume_api.create(context,"},{"line_number":271,"context_line":"                                            size,"},{"line_number":272,"context_line":"                                            volume.get(\u0027display_name\u0027),"},{"line_number":273,"context_line":"                                            volume.get(\u0027display_description\u0027),"},{"line_number":274,"context_line":"                                            **kwargs)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        retval \u003d self._view_builder.detail(req, new_volume)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3ac371cc_53737c15","line":274,"range":{"start_line":270,"start_character":0,"end_line":274,"end_character":53},"in_reply_to":"7ac969e8_2dceae5a","updated":"2016-08-16 10:14:37.000000000","message":"I meant \"shouldn\u0027t mix things.\", fortunately you are smart and can see through my mistakes.  :-)","commit_id":"46f1bb7489e00ce86569f2a433e3e203b039fdac"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"1e3303601085ecc02ad1969658bcacc72e08b812","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        multiattach \u003d volume.get(\u0027multiattach\u0027, False)"},{"line_number":268,"context_line":"        kwargs[\u0027multiattach\u0027] \u003d multiattach"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        new_volume \u003d self.volume_api.create(context,"},{"line_number":271,"context_line":"                                            size,"},{"line_number":272,"context_line":"                                            volume.get(\u0027display_name\u0027),"},{"line_number":273,"context_line":"                                            volume.get(\u0027display_description\u0027),"},{"line_number":274,"context_line":"                                            **kwargs)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        retval \u003d self._view_builder.detail(req, new_volume)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7ac969e8_2dceae5a","line":274,"range":{"start_line":270,"start_character":0,"end_line":274,"end_character":53},"in_reply_to":"9ad45d7e_2a24dfc4","updated":"2016-08-13 01:29:15.000000000","message":"\u003eBut I don\u0027t think we should be doing it in this patch, \nGot it.\n\u003ewe should mix things.\nSorry, I think I havent got your point.","commit_id":"46f1bb7489e00ce86569f2a433e3e203b039fdac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6dc42291acebd11b5eed55f94650f6976e0873c2","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        multiattach \u003d volume.get(\u0027multiattach\u0027, False)"},{"line_number":268,"context_line":"        kwargs[\u0027multiattach\u0027] \u003d multiattach"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        new_volume \u003d self.volume_api.create(context,"},{"line_number":271,"context_line":"                                            size,"},{"line_number":272,"context_line":"                                            volume.get(\u0027display_name\u0027),"},{"line_number":273,"context_line":"                                            volume.get(\u0027display_description\u0027),"},{"line_number":274,"context_line":"                                            **kwargs)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        retval \u003d self._view_builder.detail(req, new_volume)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_2a24dfc4","line":274,"range":{"start_line":270,"start_character":0,"end_line":274,"end_character":53},"in_reply_to":"9ad45d7e_b21e4661","updated":"2016-08-12 09:03:46.000000000","message":"Yes we should.  But I don\u0027t think we should be doing it in this patch, we should mix things.","commit_id":"46f1bb7489e00ce86569f2a433e3e203b039fdac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"9d0880323e50c07fffa7ab01cf4017a77454647c","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        volume \u003d self.volume_api.get(context, id, viewable_admin_meta\u003dTrue)"},{"line_number":324,"context_line":"        volume_utils.notify_about_volume_usage(context, volume,"},{"line_number":325,"context_line":"                                               \u0027update.start\u0027)"},{"line_number":326,"context_line":"        self.volume_api.update(context, volume, update_dict)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        volume.update(update_dict)"},{"line_number":329,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_c3cb3371","line":326,"updated":"2016-08-09 09:17:04.000000000","message":"-1: Unfortunately we cannot remove this code yet:\n\n except exception.InvalidVolumeMetadataSize as error:\n     raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)\n\nBecause as you can see it isn\u0027t raising HTTPBadRequest but HTTPRequestEntityTooLarge instead, which carry different status codes.  :-(","commit_id":"46f1bb7489e00ce86569f2a433e3e203b039fdac"}],"cinder/tests/unit/api/openstack/test_wsgi.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"2f2ff208e3892e2e49f522576ad5863eab86c9dc","unresolved":false,"context_lines":[{"line_number":878,"context_line":"                          self.controller.validate_name_desc_metadata,"},{"line_number":879,"context_line":"                          body)"},{"line_number":880,"context_line":""},{"line_number":881,"context_line":"    def test_validate_name_desc_metadata_with_metadata_key_too_long(self):"},{"line_number":882,"context_line":"        body \u003d {\u0027metadata\u0027: {\u0027a\u0027 * 256: \u0027a\u0027}}"},{"line_number":883,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":884,"context_line":"                          self.controller.validate_name_desc_metadata,"},{"line_number":885,"context_line":"                          body)"},{"line_number":886,"context_line":""},{"line_number":887,"context_line":"    def test_validate_name_desc_metadata_with_metadata_val_too_long(self):"},{"line_number":888,"context_line":"        body \u003d {\u0027metadata\u0027: {\u0027a\u0027: \u0027a\u0027 * 256}}"},{"line_number":889,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":890,"context_line":"                          self.controller.validate_name_desc_metadata,"},{"line_number":891,"context_line":"                          body)"},{"line_number":892,"context_line":""},{"line_number":893,"context_line":"    def test_validate_name_desc_metadata_with_metadata_key_zero_len(self):"},{"line_number":894,"context_line":"        body \u003d {\u0027metadata\u0027: {\u0027\u0027: \u0027a\u0027}}"},{"line_number":895,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":896,"context_line":"                          self.controller.validate_name_desc_metadata,"},{"line_number":897,"context_line":"                          body)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"    def test_validate_name_desc_metadata_with_name_as_int(self):"},{"line_number":900,"context_line":"        body \u003d {\u0027name\u0027: 1234}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_2bc14ee5","line":897,"range":{"start_line":881,"start_character":0,"end_line":897,"end_character":31},"updated":"2016-06-22 09:35:09.000000000","message":"nit: It would be better to use ddt library instead.","commit_id":"20e763f9860d89090029a2956e2e6e6cfcbec629"}],"cinder/tests/unit/api/v2/test_volumes.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"85a08d86fc2564cdb80f11c8dcaab5dc5dc87b87","unresolved":false,"context_lines":[{"line_number":737,"context_line":"    @ddt.data({\u0027a\u0027 * 256: \u0027a\u0027},"},{"line_number":738,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":739,"context_line":"              {\u0027\u0027: \u0027a\u0027})"},{"line_number":740,"context_line":"    def test_volume_update_with_invalide_metadata(self, value, mock_validate):"},{"line_number":741,"context_line":"        self.stubs.Set(volume_api.API, \u0027get\u0027, stubs.stub_volume_api_get)"},{"line_number":742,"context_line":"        self.stubs.Set(volume_api.API, \"update\", stubs.stub_volume_update)"},{"line_number":743,"context_line":"        self.stubs.Set(db.sqlalchemy.api, \u0027_volume_type_get_full\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_9525780a","line":740,"range":{"start_line":740,"start_character":32,"end_line":740,"end_character":40},"updated":"2016-06-24 10:29:20.000000000","message":"nit: invalid","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"7e6362030ea20e5882065585c7d9f2439c64a848","unresolved":false,"context_lines":[{"line_number":737,"context_line":"    @ddt.data({\u0027a\u0027 * 256: \u0027a\u0027},"},{"line_number":738,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":739,"context_line":"              {\u0027\u0027: \u0027a\u0027})"},{"line_number":740,"context_line":"    def test_volume_update_with_invalide_metadata(self, value, mock_validate):"},{"line_number":741,"context_line":"        self.stubs.Set(volume_api.API, \u0027get\u0027, stubs.stub_volume_api_get)"},{"line_number":742,"context_line":"        self.stubs.Set(volume_api.API, \"update\", stubs.stub_volume_update)"},{"line_number":743,"context_line":"        self.stubs.Set(db.sqlalchemy.api, \u0027_volume_type_get_full\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_14c33c58","line":740,"range":{"start_line":740,"start_character":32,"end_line":740,"end_character":40},"in_reply_to":"3aaa91ec_9525780a","updated":"2016-06-24 15:34:37.000000000","message":"Done","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"85a08d86fc2564cdb80f11c8dcaab5dc5dc87b87","unresolved":false,"context_lines":[{"line_number":738,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":739,"context_line":"              {\u0027\u0027: \u0027a\u0027})"},{"line_number":740,"context_line":"    def test_volume_update_with_invalide_metadata(self, value, mock_validate):"},{"line_number":741,"context_line":"        self.stubs.Set(volume_api.API, \u0027get\u0027, stubs.stub_volume_api_get)"},{"line_number":742,"context_line":"        self.stubs.Set(volume_api.API, \"update\", stubs.stub_volume_update)"},{"line_number":743,"context_line":"        self.stubs.Set(db.sqlalchemy.api, \u0027_volume_type_get_full\u0027,"},{"line_number":744,"context_line":"                       stubs.stub_volume_type_get)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_55b95078","line":741,"updated":"2016-06-24 10:29:20.000000000","message":"I think we should use mock.patch for the new test code.\n\nSee https://github.com/openstack/cinder/blob/master/cinder/tests/unit/api/v2/test_volumes.py#L223 for example.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"7e6362030ea20e5882065585c7d9f2439c64a848","unresolved":false,"context_lines":[{"line_number":738,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":739,"context_line":"              {\u0027\u0027: \u0027a\u0027})"},{"line_number":740,"context_line":"    def test_volume_update_with_invalide_metadata(self, value, mock_validate):"},{"line_number":741,"context_line":"        self.stubs.Set(volume_api.API, \u0027get\u0027, stubs.stub_volume_api_get)"},{"line_number":742,"context_line":"        self.stubs.Set(volume_api.API, \"update\", stubs.stub_volume_update)"},{"line_number":743,"context_line":"        self.stubs.Set(db.sqlalchemy.api, \u0027_volume_type_get_full\u0027,"},{"line_number":744,"context_line":"                       stubs.stub_volume_type_get)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_541e6470","line":741,"in_reply_to":"3aaa91ec_55b95078","updated":"2016-06-24 15:34:37.000000000","message":"Thanks for your advice.\nBut sounds these mock objects are not necessary for this case anymore, as before calling them we have already raised the expected exception.\nI\u0027ll deleted them in the next version.\nAnd sorry for my mistake.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a2ab46a1f922ec72a10a2922523a5de8f20442d6","unresolved":false,"context_lines":[{"line_number":738,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":739,"context_line":"              {\u0027\u0027: \u0027a\u0027})"},{"line_number":740,"context_line":"    def test_volume_update_with_invalide_metadata(self, value, mock_validate):"},{"line_number":741,"context_line":"        self.stubs.Set(volume_api.API, \u0027get\u0027, stubs.stub_volume_api_get)"},{"line_number":742,"context_line":"        self.stubs.Set(volume_api.API, \"update\", stubs.stub_volume_update)"},{"line_number":743,"context_line":"        self.stubs.Set(db.sqlalchemy.api, \u0027_volume_type_get_full\u0027,"},{"line_number":744,"context_line":"                       stubs.stub_volume_type_get)"},{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        updates \u003d {"},{"line_number":747,"context_line":"            \"metadata\": value"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_b897cb46","line":744,"range":{"start_line":741,"start_character":0,"end_line":744,"end_character":50},"updated":"2016-06-24 10:38:29.000000000","message":"Good catch!\n\nHow could I have missed that!!!  :\u0027-(","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"3125bdcdf585bf10afdecfc304160d372c62aac6","unresolved":false,"context_lines":[{"line_number":771,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":772,"context_line":"              {\u0027\u0027: \u0027a\u0027})"},{"line_number":773,"context_line":"    def test_volume_update_with_invalid_metadata(self, value):"},{"line_number":774,"context_line":"        self.stubs.Set(volume_api.API, \u0027get\u0027, stubs.stub_volume_api_get)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"        updates \u003d {"},{"line_number":777,"context_line":"            \"metadata\": value"}],"source_content_type":"text/x-python","patch_set":16,"id":"3ac371cc_c1eab3ab","line":774,"updated":"2016-08-17 11:54:28.000000000","message":"We should use mock for new test cases.","commit_id":"953187126a2a7a2dd7bcb1592608efee7befde24"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"4f67b04d39149247a38d5667b1ce0fa6be26e05a","unresolved":false,"context_lines":[{"line_number":771,"context_line":"              {\u0027a\u0027: \u0027a\u0027 * 256},"},{"line_number":772,"context_line":"              {\u0027\u0027: \u0027a\u0027})"},{"line_number":773,"context_line":"    def test_volume_update_with_invalid_metadata(self, value):"},{"line_number":774,"context_line":"        self.stubs.Set(volume_api.API, \u0027get\u0027, stubs.stub_volume_api_get)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":"        updates \u003d {"},{"line_number":777,"context_line":"            \"metadata\": value"}],"source_content_type":"text/x-python","patch_set":16,"id":"3ac371cc_f8ccbdbc","line":774,"in_reply_to":"3ac371cc_c1eab3ab","updated":"2016-08-17 12:55:32.000000000","message":"Done.","commit_id":"953187126a2a7a2dd7bcb1592608efee7befde24"}],"cinder/utils.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8baf092d48672f8c5cd34652e03349d73554138d","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if isinstance(v, six.string_types) and len(v) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_91c62f66","line":179,"range":{"start_line":179,"start_character":11,"end_line":179,"end_character":42},"updated":"2016-06-24 09:13:57.000000000","message":"Nice addition!","commit_id":"a0b3ab8fef54a58221949a3cfea12ff603d10f66"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"85a08d86fc2564cdb80f11c8dcaab5dc5dc87b87","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if isinstance(v, six.string_types) and len(v) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_952458c5","line":179,"updated":"2016-06-24 10:29:20.000000000","message":"nit: I think it is better to fix this bug in https://review.openstack.org/#/c/330502","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a2ab46a1f922ec72a10a2922523a5de8f20442d6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if isinstance(v, six.string_types) and len(v) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_d8d617f0","line":179,"in_reply_to":"3aaa91ec_952458c5","updated":"2016-06-24 10:38:29.000000000","message":"That one is very specific on what it does, \"move code\", and I for one prefer it that way.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"bf9d8098272ffa0c7c608fac855d4d67b57c9523","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if isinstance(v, six.string_types) and len(v) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_189c1f0e","line":179,"in_reply_to":"3aaa91ec_d8d617f0","updated":"2016-06-24 10:44:06.000000000","message":"Agreed.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"6ecad05529c55c37676285a885ce916962e2ec6c","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if isinstance(v, six.string_types) and len(v) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_c1a1e947","line":179,"range":{"start_line":179,"start_character":29,"end_line":179,"end_character":41},"updated":"2016-07-07 07:20:36.000000000","message":"If it isn\u0027t a string_type we should fail validation as well, I\u0027d have thought? Is that case even possible through the API?","commit_id":"c4f7919c2d21fbb5028c3387c2baff26d1fa229a"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"51353c5e22af3a445ed53967e96d5da7d3f06966","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if isinstance(v, six.string_types) and len(v) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1aa78d24_8e14244d","line":179,"range":{"start_line":179,"start_character":29,"end_line":179,"end_character":41},"in_reply_to":"1aa78d24_c1a1e947","updated":"2016-07-07 10:10:53.000000000","message":"Hi, Duncan,\nThanks for your review.\nYes, you\u0027re right we should also check the other types.\nBut IIUC, all we need to do is convert values into string type and then make a length checking, i.e. \n    if len(str(v)) \u003e 255:\n\nBecause the values of metadata all are saved as \"String\" into DB.\nhttps://github.com/openstack/cinder/blob/master/cinder/db/sqlalchemy/models.py#L193","commit_id":"c4f7919c2d21fbb5028c3387c2baff26d1fa229a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ca0c6110672c6a9ea1f7641e7936899fb87fda52","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if len(str(v)) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dada55a8_a3cded32","line":179,"updated":"2016-07-20 20:04:44.000000000","message":"Will it work for unicode?","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"b7d0e9f72fc012452ef402a470d9cd8e7e44e1ec","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if len(str(v)) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_ffddd1e0","line":179,"in_reply_to":"bacf61ea_53199887","updated":"2016-07-30 04:37:13.000000000","message":"If there is not this checking, the existed test case will fail:\n      File \"cinder/tests/unit/api/v2/test_volumes.py\", line 675, in test_volume_update_metadata\n        res_dict \u003d self.controller.update(req, fake.VOLUME_ID, body)\n      File \"cinder/api/v2/volumes.py\", line 317, in update\n        utils.check_metadata_properties(volume[\u0027metadata\u0027])\n      File \"cinder/utils.py\", line 175, in check_metadata_properties\n        if len(v) \u003e 255:\n    TypeError: object of type \u0027int\u0027 has no len()\n\nIn opinion, here we\u0027d better keep this checking(with six.text_type()) if we don\u0027t want to change the test case because as unit test, it is reasonable to set that key as int type I think.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"987b4d5e9152b9dff91bdd065e0f3e95a1e772bc","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if len(str(v)) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_76f8407d","line":179,"in_reply_to":"bacf61ea_ffddd1e0","updated":"2016-08-03 12:59:57.000000000","message":"Then the test metadata values need to be updated to be strings, not the other way around.  Changing the code because one test is using the wrong metadata value is unreasonable.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"97af6e25198f4a61c35f5d376cac91ad9d7bbd29","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                    \"characters.\") % k"},{"line_number":177,"context_line":"            LOG.warning(msg)"},{"line_number":178,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":179,"context_line":"        if len(str(v)) \u003e 255:"},{"line_number":180,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":181,"context_line":"                    \"255 characters.\") % k"},{"line_number":182,"context_line":"            LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_53199887","line":179,"in_reply_to":"dada55a8_a3cded32","updated":"2016-07-29 13:03:50.000000000","message":"-1: We don\u0027t need to convert the value to a string, afaik everything we receive in the API will be strings.\n\nFurthermore, regarding e0ne\u0027s comment, if this was indispensable we would use six.text_type(v) instead.","commit_id":"01417a8d0cfe67600bc301862fb078557ad706e5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f688ec78337d7e59df6c84ab153de7bae98460a2","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                    \"characters.\") % k"},{"line_number":173,"context_line":"            LOG.debug(msg)"},{"line_number":174,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":175,"context_line":"        if len(six.text_type(v)) \u003e 255:"},{"line_number":176,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":177,"context_line":"                    \"255 characters.\") % k"},{"line_number":178,"context_line":"            LOG.debug(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_96bfb4a9","line":175,"updated":"2016-08-03 13:18:03.000000000","message":"-1: We don\u0027t need to convert the value to a string, as everything we receive in the API will be strings.","commit_id":"f6708bd0dcf180c0734ac685ff081c2027b42fb7"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"ff8248f289d1687666a6bc8701c8667eed23e62a","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                    \"characters.\") % k"},{"line_number":173,"context_line":"            LOG.debug(msg)"},{"line_number":174,"context_line":"            raise exception.InvalidVolumeMetadataSize(reason\u003dmsg)"},{"line_number":175,"context_line":"        if len(six.text_type(v)) \u003e 255:"},{"line_number":176,"context_line":"            msg \u003d _(\"Metadata property key %s value greater than \""},{"line_number":177,"context_line":"                    \"255 characters.\") % k"},{"line_number":178,"context_line":"            LOG.debug(msg)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9ad45d7e_38efe7e9","line":175,"in_reply_to":"bacf61ea_96bfb4a9","updated":"2016-08-09 02:48:16.000000000","message":"Done","commit_id":"f6708bd0dcf180c0734ac685ff081c2027b42fb7"}],"cinder/volume/flows/api/create_volume.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8baf092d48672f8c5cd34652e03349d73554138d","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            # to make sure we don\u0027t pass empty dict"},{"line_number":442,"context_line":"            specs \u003d None"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        utils.check_metadata_properties(metadata)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        return {"},{"line_number":447,"context_line":"            \u0027size\u0027: size,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_f184d30b","side":"PARENT","line":444,"range":{"start_line":444,"start_character":8,"end_line":444,"end_character":49},"updated":"2016-06-24 09:13:57.000000000","message":"I like that we are moving this to the API.","commit_id":"7aa6d9e6d05b627e59464d3074e224b4cc113202"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"97af6e25198f4a61c35f5d376cac91ad9d7bbd29","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            # to make sure we don\u0027t pass empty dict"},{"line_number":442,"context_line":"            specs \u003d None"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        utils.check_metadata_properties(metadata)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        return {"},{"line_number":447,"context_line":"            \u0027size\u0027: size,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_252adb7e","side":"PARENT","line":444,"updated":"2016-07-29 13:03:50.000000000","message":"I\u0027m not really happy about removing this from the flow, because the volume/api method to create volume could be called from within cinder without going through the wsgi code, but I thinks reasonable to assume that those calls will have proper metadata values.","commit_id":"24e0309ecc45bea775005197cb0103cabd6ef70c"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"b7d0e9f72fc012452ef402a470d9cd8e7e44e1ec","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            # to make sure we don\u0027t pass empty dict"},{"line_number":442,"context_line":"            specs \u003d None"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        utils.check_metadata_properties(metadata)"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        return {"},{"line_number":447,"context_line":"            \u0027size\u0027: size,"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_df0bad28","side":"PARENT","line":444,"in_reply_to":"bacf61ea_252adb7e","updated":"2016-07-30 04:37:13.000000000","message":"I will move the checking logic from api/v2/volumes.py into volume/api, so please don\u0027t worry about this.","commit_id":"24e0309ecc45bea775005197cb0103cabd6ef70c"}],"releasenotes/notes/bug-1593588-d201f350242e8995.yaml":[{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"292b20112cf2f61d77d4b493ec8117d18b10af87","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent /v2/volumes API from"},{"line_number":5,"context_line":"    raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3aaa91ec_35e5aedb","line":4,"range":{"start_line":4,"start_character":26,"end_line":4,"end_character":41},"updated":"2016-06-24 06:30:31.000000000","message":"I think it\u0027s a little mistake since for v3 API, this fix is working too. So I suggest to rephrase this to \"prevent volumes create or update API from....\".","commit_id":"ae57be19ff1955951be05ceb6a47d766867e3a74"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"35ae565d569e68875d976bc5ddbd4360467e5068","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent /v2/volumes API from"},{"line_number":5,"context_line":"    raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3aaa91ec_fbf5d4ec","line":4,"range":{"start_line":4,"start_character":26,"end_line":4,"end_character":41},"in_reply_to":"3aaa91ec_35e5aedb","updated":"2016-06-24 08:24:47.000000000","message":"Done","commit_id":"ae57be19ff1955951be05ceb6a47d766867e3a74"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8baf092d48672f8c5cd34652e03349d73554138d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3aaa91ec_31a2db99","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":10},"updated":"2016-06-24 09:13:57.000000000","message":"nit: remove this a","commit_id":"a0b3ab8fef54a58221949a3cfea12ff603d10f66"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"cf500583bc11ddea47a8c83c93db19b53ee76074","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3aaa91ec_d28b9666","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":10},"in_reply_to":"3aaa91ec_31a2db99","updated":"2016-06-24 09:49:21.000000000","message":"Done","commit_id":"a0b3ab8fef54a58221949a3cfea12ff603d10f66"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8baf092d48672f8c5cd34652e03349d73554138d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3aaa91ec_f1e973b8","line":5,"range":{"start_line":5,"start_character":31,"end_line":5,"end_character":36},"updated":"2016-06-24 09:13:57.000000000","message":"nit: s/while/when","commit_id":"a0b3ab8fef54a58221949a3cfea12ff603d10f66"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"cf500583bc11ddea47a8c83c93db19b53ee76074","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3aaa91ec_32ebfa14","line":5,"range":{"start_line":5,"start_character":31,"end_line":5,"end_character":36},"in_reply_to":"3aaa91ec_f1e973b8","updated":"2016-06-24 09:49:21.000000000","message":"Done","commit_id":"a0b3ab8fef54a58221949a3cfea12ff603d10f66"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8baf092d48672f8c5cd34652e03349d73554138d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3aaa91ec_11fcff70","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":13},"updated":"2016-06-24 09:13:57.000000000","message":"nit: is specified","commit_id":"a0b3ab8fef54a58221949a3cfea12ff603d10f66"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"cf500583bc11ddea47a8c83c93db19b53ee76074","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Add a validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error while invalid metadata"},{"line_number":6,"context_line":"    specified."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3aaa91ec_72f10201","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":13},"in_reply_to":"3aaa91ec_11fcff70","updated":"2016-06-24 09:49:21.000000000","message":"Done","commit_id":"a0b3ab8fef54a58221949a3cfea12ff603d10f66"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"85a08d86fc2564cdb80f11c8dcaab5dc5dc87b87","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error when invalid metadata"},{"line_number":6,"context_line":"    is specified."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3aaa91ec_783f2387","line":3,"updated":"2016-06-24 10:29:20.000000000","message":"Do we need a release note for this bug? As per http://docs.openstack.org/developer/cinder/devref/releasenotes.html we need it only for security fixes and important/ long-standing bugs. I don\u0027t think a validation fix comes under that category.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":16066,"name":"xiexs","email":"xiexs@cn.fujitsu.com","username":"simen"},"change_message_id":"7e6362030ea20e5882065585c7d9f2439c64a848","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error when invalid metadata"},{"line_number":6,"context_line":"    is specified."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3aaa91ec_f72952e7","line":3,"in_reply_to":"3aaa91ec_18809fbf","updated":"2016-06-24 15:34:37.000000000","message":"I\u0027ll remove it in next version as for consistency with https://review.openstack.org/#/c/333322.\nAnd now I know when we need a release note:)","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a2ab46a1f922ec72a10a2922523a5de8f20442d6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error when invalid metadata"},{"line_number":6,"context_line":"    is specified."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3aaa91ec_18809fbf","line":3,"in_reply_to":"3aaa91ec_783f2387","updated":"2016-06-24 10:38:29.000000000","message":"For those bugs it is \"required\", but it doesn\u0027t mean that other bugs cannot have release notes.  Or at least that\u0027s how I interpret it.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"950b2d7cdf1b388bb5fc87a7f29dea53976f5a49","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Add validation logic for volume metadata"},{"line_number":4,"context_line":"    properties to prevent volumes create or update"},{"line_number":5,"context_line":"    API from raising 500 error when invalid metadata"},{"line_number":6,"context_line":"    is specified."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3aaa91ec_64ea9cdc","line":3,"in_reply_to":"3aaa91ec_f72952e7","updated":"2016-06-27 09:04:33.000000000","message":"I don\u0027t think that\u0027s a good comparison, since the patch you reference will have no user visible effect and therefore would *never* have a release note.","commit_id":"ffc89164e050d881d01940aa4c5789456a3f2c32"}]}
