)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b36972cdb8d581e1cfa31e7070590c9a6fafff43","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     jichenjc \u003cjichenjc@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-31 12:50:16 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add common function for v2 API flavor_get."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are objects.Flaovr.get_by_flavor_id function in API layer"},{"line_number":10,"context_line":"we need to catch FlavorNotFound every time. This patch make a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1af86dd1_f28e7626","line":7,"updated":"2015-06-12 00:08:41.000000000","message":"the \u0027.\u0027 should be removed.","commit_id":"254082d328aedb1ddfbdaacef3a814b44cf2e825"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"8ae8c589e01f8e4da7002b8bdf2d89f44c5c73a2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add common function for v2 API flavor_get."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are objects.Flaovr.get_by_flavor_id function in API layer"},{"line_number":10,"context_line":"we need to catch FlavorNotFound every time. This patch make a"},{"line_number":11,"context_line":"common function and catch FlavorNotFound in V2 API"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa32b979_bd0e8330","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":24},"updated":"2015-06-22 10:11:16.000000000","message":"Flavor","commit_id":"254082d328aedb1ddfbdaacef3a814b44cf2e825"}],"nova/api/openstack/common.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"4bd5ff0b8cd7da20eae4288c1337a7e541377c31","unresolved":false,"context_lines":[{"line_number":620,"context_line":"    try:"},{"line_number":621,"context_line":"        return objects.Flavor.get_by_flavor_id(context, flavor_id)"},{"line_number":622,"context_line":"    except exception.FlavorNotFound as error:"},{"line_number":623,"context_line":"        raise exc.HTTPNotFound(explanation\u003derror.format_message()) "},{"line_number":624,"context_line":""},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"def check_cells_enabled(function):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_9f90b5ee","line":623,"updated":"2014-11-23 01:51:43.000000000","message":"I think we should keep no  white spaces here.","commit_id":"919fb3a8cd52ddc78340a6851f76e55346c50953"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"e59ac3a99215ecba315198dc5b1c52e728c74256","unresolved":false,"context_lines":[{"line_number":620,"context_line":"    try:"},{"line_number":621,"context_line":"        return objects.Flavor.get_by_flavor_id(context, flavor_id)"},{"line_number":622,"context_line":"    except exception.FlavorNotFound as error:"},{"line_number":623,"context_line":"        raise exc.HTTPNotFound(explanation\u003derror.format_message()) "},{"line_number":624,"context_line":""},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"def check_cells_enabled(function):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_d4bbff0c","line":623,"in_reply_to":"5a890539_9f90b5ee","updated":"2014-11-23 14:23:50.000000000","message":"yes","commit_id":"919fb3a8cd52ddc78340a6851f76e55346c50953"}],"nova/api/openstack/compute/contrib/flavorextraspecs.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"fecc46464515b8102f64b0ed105bfa5feb41af11","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            del flavor.extra_specs[id]"},{"line_number":156,"context_line":"            flavor.save()"},{"line_number":157,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":158,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":159,"context_line":"        except KeyError:"},{"line_number":160,"context_line":"            msg \u003d _(\"Flavor %(flavor_id)s has no extra specs with \""},{"line_number":161,"context_line":"                    \"key %(key)s.\") % dict(flavor_id\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_5b760aa5","side":"PARENT","line":158,"updated":"2014-11-26 03:09:49.000000000","message":"since you said the flavor.save() will raise FlavorNotFound, why we remove it here, but have it on line 129 and 108?","commit_id":"3ada19a650f149c7338e18ab48678a26548e2f91"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"64e5603c8309004dbc291bec7412be2ed62a39c4","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            flavor.save()"},{"line_number":107,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":108,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":109,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":110,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":111,"context_line":"        return body"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_4d0a1e7a","line":109,"updated":"2014-11-24 00:25:57.000000000","message":"should we have this handler since we deal with it in new common function?","commit_id":"80faac461464aeeebaeef1af825b6d6b9c194198"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9b2e03b542e95e8d788e82a915550cfd535408f5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            flavor.save()"},{"line_number":107,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":108,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":109,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":110,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":111,"context_line":"        return body"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_c87efcae","line":109,"in_reply_to":"5a890539_4d0a1e7a","updated":"2014-11-24 03:28:53.000000000","message":"no, some functions will still have this exception in \u0027flavor.save\u0027 function though it\u0027s rare case\n\nthe purpose of the patch set is to make get flavor function in common just like we did for instance","commit_id":"80faac461464aeeebaeef1af825b6d6b9c194198"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"64e5603c8309004dbc291bec7412be2ed62a39c4","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            flavor.save()"},{"line_number":128,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":129,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":130,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":131,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":132,"context_line":"        return body"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_ad24620d","line":130,"updated":"2014-11-24 00:25:57.000000000","message":"ditto","commit_id":"80faac461464aeeebaeef1af825b6d6b9c194198"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"34f9de1cbded6a4426ad7c7a0aaab51e36db8b0a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            flavor.save()"},{"line_number":107,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":108,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":109,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":110,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":111,"context_line":"        return body"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_6d93e34f","line":109,"updated":"2014-12-16 08:13:38.000000000","message":"This exception could be removed now.","commit_id":"f002d278de8105f02790d276974c3773c067fb4b"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f6c2d5b64919c082b3493be1999b0773c45f56fc","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            flavor.save()"},{"line_number":107,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":108,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":109,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":110,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":111,"context_line":"        return body"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_cdd937f6","line":109,"in_reply_to":"3a961159_6d93e34f","updated":"2014-12-16 08:17:53.000000000","message":"Please refer to previous patches, \nflavor.save in some concurrent case still can raise it ...\n\nthanks","commit_id":"f002d278de8105f02790d276974c3773c067fb4b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"f407780d63e358ed24813f020e86665f3ae61518","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            flavor.save()"},{"line_number":107,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":108,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":109,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":110,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":111,"context_line":"        return body"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_ad16ab53","line":109,"in_reply_to":"3a961159_cdd937f6","updated":"2014-12-16 08:23:07.000000000","message":"Right! my fault, maybe it\u0027s good to add a NOTE here...","commit_id":"f002d278de8105f02790d276974c3773c067fb4b"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"34f9de1cbded6a4426ad7c7a0aaab51e36db8b0a","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            flavor.save()"},{"line_number":128,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":129,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":130,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":131,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":132,"context_line":"        return body"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_cdc85759","line":130,"updated":"2014-12-16 08:13:38.000000000","message":"Same here","commit_id":"f002d278de8105f02790d276974c3773c067fb4b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"12b1dd09d6ff1156dd3539d8eb78bf2b408c1d78","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            flavor \u003d objects.Flavor.get_by_flavor_id(context, flavor_id)"},{"line_number":134,"context_line":"            del flavor.extra_specs[id]"},{"line_number":135,"context_line":"            flavor.save()"},{"line_number":136,"context_line":"        except (exception.FlavorNotFound,"},{"line_number":137,"context_line":"                exception.FlavorExtraSpecsNotFound) as e:"},{"line_number":138,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":139,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a0c5dc1_0904407c","side":"PARENT","line":136,"updated":"2015-05-12 09:11:10.000000000","message":"we should keep this. because flavor.save() may raise FlavorNotFound","commit_id":"e8707aa3b5747be91a837030bb8258eafd5df8d8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"94173a1f92ec7aaf0b148df13d4954ce14c1fdf5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":89,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":90,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":91,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":92,"context_line":"        return body"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def update(self, req, flavor_id, id, body):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_0e09a82c","line":91,"updated":"2015-05-27 14:21:17.000000000","message":"This FlavorNotFound is already covered with common.get_flavor(), so the block would be unnecessary.","commit_id":"87f8b093d2e14bc5a97f098242b3b48d420704c0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"2185db672842e7024923cd70c0f8175c9e652598","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":89,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":90,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":91,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":92,"context_line":"        return body"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def update(self, req, flavor_id, id, body):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_b5272362","line":91,"in_reply_to":"7a016987_0e09a82c","updated":"2015-05-29 15:47:36.000000000","message":"yes, I thought line 87 might lead to race condition, but \nseem it won\u0027t , thanks","commit_id":"87f8b093d2e14bc5a97f098242b3b48d420704c0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"94173a1f92ec7aaf0b148df13d4954ce14c1fdf5","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        except exception.FlavorExtraSpecUpdateCreateFailed as e:"},{"line_number":109,"context_line":"            raise exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":110,"context_line":"        except exception.FlavorNotFound as error:"},{"line_number":111,"context_line":"            raise exc.HTTPNotFound(explanation\u003derror.format_message())"},{"line_number":112,"context_line":"        return body"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def show(self, req, flavor_id, id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_6e181c76","line":111,"updated":"2015-05-27 14:21:17.000000000","message":"ditto","commit_id":"87f8b093d2e14bc5a97f098242b3b48d420704c0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"94173a1f92ec7aaf0b148df13d4954ce14c1fdf5","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            del flavor.extra_specs[id]"},{"line_number":136,"context_line":"            flavor.save()"},{"line_number":137,"context_line":"        except (exception.FlavorNotFound,"},{"line_number":138,"context_line":"                exception.FlavorExtraSpecsNotFound) as e:"},{"line_number":139,"context_line":"            raise exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":140,"context_line":"        except KeyError:"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_2e50e409","line":137,"updated":"2015-05-27 14:21:17.000000000","message":"ditto","commit_id":"87f8b093d2e14bc5a97f098242b3b48d420704c0"}]}
