)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"42b43bb50aadbb9c6728b8cd033bd6ca07d30ece","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Running or Shutoff state."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes Bug : 1456196"},{"line_number":14,"context_line":"Closes Bug : 1425747"},{"line_number":15,"context_line":"Change-Id: Idd4ae27ea0c1a51755c44d14331529ac63b518d7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da20952f_6cd931f3","line":14,"updated":"2015-08-27 12:24:34.000000000","message":"Closes-Bug","commit_id":"888c632d214195c5662b878fa6f99210ed189a53"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b70723684ca6b8e76a760f169265a03657cba1b1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Running or Shutoff state."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug : 1456196"},{"line_number":14,"context_line":"Closes-Bug : 1425747"},{"line_number":15,"context_line":"Change-Id: Idd4ae27ea0c1a51755c44d14331529ac63b518d7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da20952f_b1644649","line":14,"updated":"2015-08-28 12:53:00.000000000","message":"This should be:\n\nCloses-Bug: #1456196\n\nCloses-Bug: #1425747","commit_id":"dc37b4a9ad911b25d2bd49f6d686c1a88c9be7ae"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ec7bee049402302cdf24a7288ee5e618ca297385","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch should not delete a flavors those are"},{"line_number":10,"context_line":"currently used by the instances. Instances may in"},{"line_number":11,"context_line":"Running or Shutoff state."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1456196"},{"line_number":14,"context_line":"Closes-Bug: #1425747"},{"line_number":15,"context_line":"Change-Id: Idd4ae27ea0c1a51755c44d14331529ac63b518d7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da20952f_47000302","line":12,"updated":"2015-09-01 12:03:56.000000000","message":"This requires a DocImpact and UpgradeImpact flag. This changes the existing behavior of the API and it should maybe have a version tag (that I guess is debatable)","commit_id":"db8e0a11e771eae23832a9a192e6676309b0d267"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"fd0473307e30e69d6c28b56ecd2da28167df26bf","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     noelnelson \u003cnoelnelson@onecloudinc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-05 05:34:55 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Delete flavor should raise error, if it is inuse"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch should not delete a flavors those are"},{"line_number":10,"context_line":"currently used by the instances. Instances may in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9a1a9d01_c9b914cd","line":7,"updated":"2015-10-05 12:55:21.000000000","message":"s/inuse/in use/","commit_id":"b38c8f98cf4860f3386d9b9d8cd874bac458ee1d"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"fd0473307e30e69d6c28b56ecd2da28167df26bf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch should not delete a flavors those are"},{"line_number":10,"context_line":"currently used by the instances. Instances may in"},{"line_number":11,"context_line":"Running or Shutoff state."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1456196"},{"line_number":14,"context_line":"Closes-Bug: #1425747"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9a1a9d01_c907d47f","line":11,"updated":"2015-10-05 12:55:21.000000000","message":"I suggest rephrasing the statement:\n\nAvoid deleting flavors which are currently in use by instances either in running or shutoff state.","commit_id":"b38c8f98cf4860f3386d9b9d8cd874bac458ee1d"},{"author":{"_account_id":7007,"name":"Pranav Salunke","email":"dguitarbite@gmail.com","username":"dguitarbite"},"change_message_id":"34dbb9b4b2ac458cd03e71e93352cf1ba899f264","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-10-06 01:51:02 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Avoid deleting flavors which are currently in use"},{"line_number":8,"context_line":"by instances either in running or shutoff state."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"This patch should not delete a flavors those are"},{"line_number":11,"context_line":"currently used by the instances. Instances may in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7a2fa921_b436bc01","line":8,"updated":"2015-10-06 09:53:10.000000000","message":"Please keep the heading short.","commit_id":"faf48eacc643931880fa602d89a44d20c53a5305"}],"nova/api/openstack/compute/flavor_manage.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ec7bee049402302cdf24a7288ee5e618ca297385","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        try:"},{"line_number":52,"context_line":"            flavors.destroy(flavor[\u0027name\u0027])"},{"line_number":53,"context_line":"        except exception.InstanceUsedFlavor as e:"},{"line_number":54,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    # NOTE(oomichi): Return 200 for backwards compatibility but should be 201"},{"line_number":57,"context_line":"    # as this operation complete the creation of flavor resource."}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_ba6fb6c2","line":54,"range":{"start_line":54,"start_character":28,"end_line":54,"end_character":42},"updated":"2015-09-01 12:03:56.000000000","message":"maybe this should be Forbidden\n\nBut I am not sure I agree with this patch and do not see why we need to prevent the deletion of the flavors","commit_id":"db8e0a11e771eae23832a9a192e6676309b0d267"}],"nova/compute/flavors.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"42b43bb50aadbb9c6728b8cd033bd6ca07d30ece","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        flavor \u003d objects.Flavor(context\u003dcontext.get_admin_context(), name\u003dname)"},{"line_number":186,"context_line":"        flavor_name \u003d getattr(flavor, \u0027name\u0027)"},{"line_number":187,"context_line":"        inst_list \u003d objects.InstanceList.get_all_instance("},{"line_number":188,"context_line":"                    context\u003dcontext.get_admin_context(), expected_attrs\u003dNone)"},{"line_number":189,"context_line":"        uuid_list \u003d [li[\u0027uuid\u0027] for li in inst_list]"},{"line_number":190,"context_line":"        for i in uuid_list:"},{"line_number":191,"context_line":"            inst_extra \u003d db.instance_extra_get_by_instance_uuid("}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_ecc1c1e5","line":188,"updated":"2015-08-27 12:24:34.000000000","message":"I think it\u0027s worthy to post to ML, maybe some discussion already there... I would think it\u0027s too heavy ...","commit_id":"888c632d214195c5662b878fa6f99210ed189a53"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"42b43bb50aadbb9c6728b8cd033bd6ca07d30ece","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                if flavor_name \u003d\u003d instance_flavor_name:"},{"line_number":200,"context_line":"                    raise ValueError()"},{"line_number":201,"context_line":"            except ValueError:"},{"line_number":202,"context_line":"                raise exception.FlavorUsingInstance()"},{"line_number":203,"context_line":"        flavor.destroy()"},{"line_number":204,"context_line":"    except (ValueError, exception.NotFound):"},{"line_number":205,"context_line":"        LOG.exception(_LE(\u0027Instance type %s not found for deletion\u0027), name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_acbbc971","line":202,"updated":"2015-08-27 12:24:34.000000000","message":"can we \n\nif flavor_name \u003d\u003d instance_flavor_name:\n     raise exception.FlavorUsingInstance()","commit_id":"888c632d214195c5662b878fa6f99210ed189a53"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b70723684ca6b8e76a760f169265a03657cba1b1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        inst_list \u003d objects.InstanceList.get_all_instance("},{"line_number":188,"context_line":"                    context\u003dcontext.get_admin_context(), expected_attrs\u003dNone)"},{"line_number":189,"context_line":"        uuid_list \u003d [li[\u0027uuid\u0027] for li in inst_list]"},{"line_number":190,"context_line":"        for i in uuid_list:"},{"line_number":191,"context_line":"            inst_extra \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":192,"context_line":"                         context.get_admin_context(), i, columns\u003dNone)"},{"line_number":193,"context_line":"            flavor_details \u003d getattr(inst_extra, \"flavor\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_9196e2ee","line":190,"updated":"2015-08-28 12:53:00.000000000","message":"don\u0027t like variables \u0027i\u0027 and \u0027li\u0027, may be smth better?","commit_id":"dc37b4a9ad911b25d2bd49f6d686c1a88c9be7ae"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"b8229fb23ce938c5de0f0f426567eaaa5c999214","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        flavor \u003d objects.Flavor(context\u003dcontext.get_admin_context(), name\u003dname)"},{"line_number":187,"context_line":"        inst_list \u003d objects.InstanceList.get_all_instance("},{"line_number":188,"context_line":"                    context\u003dcontext.get_admin_context(), expected_attrs\u003dNone)"},{"line_number":189,"context_line":"        uuid_list \u003d [instances_uuid[\u0027uuid\u0027] for instances_uuid in inst_list]"},{"line_number":190,"context_line":"        for uuid_extract in uuid_list:"},{"line_number":191,"context_line":"            inst_extra \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":192,"context_line":"                         context.get_admin_context(), uuid_extract,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_1bbcb1b9","line":189,"updated":"2015-09-01 08:57:02.000000000","message":"It\u0027s a little bit strange when we get \u0027uuid\u0027 field from uuid variable.\nI think you should use something like:\n\nuuid_list \u003d [inst[\u0027uuid\u0027] for inst in inst_list]","commit_id":"1723800706e7375d9e0476e43a2d4ab79353be90"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"b8229fb23ce938c5de0f0f426567eaaa5c999214","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        inst_list \u003d objects.InstanceList.get_all_instance("},{"line_number":188,"context_line":"                    context\u003dcontext.get_admin_context(), expected_attrs\u003dNone)"},{"line_number":189,"context_line":"        uuid_list \u003d [instances_uuid[\u0027uuid\u0027] for instances_uuid in inst_list]"},{"line_number":190,"context_line":"        for uuid_extract in uuid_list:"},{"line_number":191,"context_line":"            inst_extra \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":192,"context_line":"                         context.get_admin_context(), uuid_extract,"},{"line_number":193,"context_line":"                         columns\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_fbdf7d0a","line":190,"updated":"2015-09-01 08:57:02.000000000","message":"I think here you should use just\n\n for uuid in uuid_list:","commit_id":"1723800706e7375d9e0476e43a2d4ab79353be90"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"b8229fb23ce938c5de0f0f426567eaaa5c999214","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                if name \u003d\u003d instance_flavor_name:"},{"line_number":200,"context_line":"                    raise ValueError()"},{"line_number":201,"context_line":"            except ValueError:"},{"line_number":202,"context_line":"                raise exception.FlavorUsingInstance()"},{"line_number":203,"context_line":"        flavor.destroy()"},{"line_number":204,"context_line":"    except (ValueError, exception.NotFound):"},{"line_number":205,"context_line":"        LOG.exception(_LE(\u0027Instance type %s not found for deletion\u0027), name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_fb077dc7","line":202,"updated":"2015-09-01 08:57:02.000000000","message":"I agree with jichenjc, that raise ValueError() is a little bit strange.\nEven you raise ValueError() if and only if any instance currently using the flavor, you can replace it with:\n\n if name \u003d\u003d instance_flavor_name:\n        raise exception.FlavorUsingInstance()\n\nIt will be shorter and understandable for other contributors.","commit_id":"1723800706e7375d9e0476e43a2d4ab79353be90"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ec7bee049402302cdf24a7288ee5e618ca297385","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        flavor \u003d objects.Flavor(context\u003dcontext.get_admin_context(), name\u003dname)"},{"line_number":187,"context_line":"        inst_list \u003d objects.InstanceList.get_all_instance("},{"line_number":188,"context_line":"                    context\u003dcontext.get_admin_context(), expected_attrs\u003dNone)"},{"line_number":189,"context_line":"        uuid_list \u003d [inst[\u0027uuid\u0027] for inst in inst_list]"},{"line_number":190,"context_line":"        for uuid_ext in uuid_list:"},{"line_number":191,"context_line":"            inst_extra \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":192,"context_line":"                         context.get_admin_context(), uuid_ext, columns\u003dNone)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_da9dcabc","line":189,"updated":"2015-09-01 12:03:56.000000000","message":"inst is an object so you can and should use inst.uuid","commit_id":"db8e0a11e771eae23832a9a192e6676309b0d267"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ec7bee049402302cdf24a7288ee5e618ca297385","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        inst_list \u003d objects.InstanceList.get_all_instance("},{"line_number":188,"context_line":"                    context\u003dcontext.get_admin_context(), expected_attrs\u003dNone)"},{"line_number":189,"context_line":"        uuid_list \u003d [inst[\u0027uuid\u0027] for inst in inst_list]"},{"line_number":190,"context_line":"        for uuid_ext in uuid_list:"},{"line_number":191,"context_line":"            inst_extra \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":192,"context_line":"                         context.get_admin_context(), uuid_ext, columns\u003dNone)"},{"line_number":193,"context_line":"            flavor_details \u003d getattr(inst_extra, \"flavor\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_da84ea5e","line":190,"updated":"2015-09-01 12:03:56.000000000","message":"why not inst.flavor?","commit_id":"db8e0a11e771eae23832a9a192e6676309b0d267"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"602b393a890c51c2b5d0db9477b3abc178ed8ef9","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        for extract_uuid in uuid_list:"},{"line_number":192,"context_line":"            inst_extra \u003d db.instance_extra_get_by_instance_uuid("},{"line_number":193,"context_line":"                         context.get_admin_context(),"},{"line_number":194,"context_line":"                         extract_uuid, columns\u003dNone)"},{"line_number":195,"context_line":"            flavor_details \u003d getattr(inst_extra, \"flavor\")"},{"line_number":196,"context_line":"            jsobj \u003d jsonutils.loads(flavor_details)"},{"line_number":197,"context_line":"            instance_flavor_name \u003d jsobj.get(\"cur\", {}).get("}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_3a00ef33","line":194,"updated":"2015-09-11 09:02:45.000000000","message":"This one looks heavy... if we had 1000 uuid list - this code will make 1000 requests.","commit_id":"c1d4d9ca94646d06d65879bc943c7a00149fce85"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"4541396ebae68bd7698b72a4f0d5b4b9c974f2e2","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                    expected_attrs\u003dNone))"},{"line_number":190,"context_line":"        uuid_list \u003d [inst[\u0027uuid\u0027] for inst in inst_list]"},{"line_number":191,"context_line":"        inst_extra \u003d (db.instance_extra_get_by_instance_uuid("},{"line_number":192,"context_line":"                     context.get_admin_context(), extract_uuid, columns\u003dNone)"},{"line_number":193,"context_line":"                     for extract_uuid in uuid_list)"},{"line_number":194,"context_line":"        for extract_inst_extra in inst_extra:"},{"line_number":195,"context_line":"            flavor_details \u003d getattr(extract_inst_extra, \"flavor\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2fa921_b3c7c444","line":192,"updated":"2015-10-05 22:39:55.000000000","message":"same problem as in ps 6, too many queries, could we improve that?","commit_id":"b38c8f98cf4860f3386d9b9d8cd874bac458ee1d"}],"nova/exception.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b70723684ca6b8e76a760f169265a03657cba1b1","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"class InstanceUsedFlavor(NovaException):"},{"line_number":555,"context_line":"    msg_fmt \u003d _(\"Instances currently using this flavors.\")"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class ConstraintNotMet(NovaException):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_31ad9631","line":555,"updated":"2015-08-28 12:53:00.000000000","message":"this flavor or these flavors?","commit_id":"dc37b4a9ad911b25d2bd49f6d686c1a88c9be7ae"}],"nova/objects/instance.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"b70723684ca6b8e76a760f169265a03657cba1b1","unresolved":false,"context_lines":[{"line_number":1095,"context_line":"        \"\"\"Returns all instances on all nodes.\"\"\""},{"line_number":1096,"context_line":"        db_instances \u003d db.instance_get_all(context,"},{"line_number":1097,"context_line":"                         columns_to_join\u003d_expected_cols(expected_attrs))"},{"line_number":1098,"context_line":"        return db_instances"},{"line_number":1099,"context_line":""},{"line_number":1100,"context_line":"    @base.remotable_classmethod"},{"line_number":1101,"context_line":"    def get_hung_in_rebooting(cls, context, reboot_window,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_9132620f","line":1098,"updated":"2015-08-28 12:53:00.000000000","message":"the previous method makes smth similar, is it ok?","commit_id":"dc37b4a9ad911b25d2bd49f6d686c1a88c9be7ae"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"b8229fb23ce938c5de0f0f426567eaaa5c999214","unresolved":false,"context_lines":[{"line_number":1096,"context_line":"        db_instances \u003d db.instance_get_all(context,"},{"line_number":1097,"context_line":"                         columns_to_join\u003d_expected_cols(expected_attrs))"},{"line_number":1098,"context_line":"        return db_instances"},{"line_number":1099,"context_line":""},{"line_number":1100,"context_line":"    @base.remotable_classmethod"},{"line_number":1101,"context_line":"    def get_hung_in_rebooting(cls, context, reboot_window,"},{"line_number":1102,"context_line":"                              expected_attrs\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_9b6be11d","line":1099,"updated":"2015-09-01 08:57:02.000000000","message":"I think you can use method get_all(), instead of creation a new method with almost same name and description.","commit_id":"1723800706e7375d9e0476e43a2d4ab79353be90"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ec7bee049402302cdf24a7288ee5e618ca297385","unresolved":false,"context_lines":[{"line_number":1091,"context_line":"                                   expected_attrs)"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":"    @base.remotable_classmethod"},{"line_number":1094,"context_line":"    def get_all_instance(cls, context, expected_attrs\u003dNone):"},{"line_number":1095,"context_line":"        \"\"\"Returns all instances on all nodes.\"\"\""},{"line_number":1096,"context_line":"        db_instances \u003d db.instance_get_all(context,"},{"line_number":1097,"context_line":"                         columns_to_join\u003d_expected_cols(expected_attrs))"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_9a7af275","line":1094,"updated":"2015-09-01 12:03:56.000000000","message":"this is a new method so it requires a object version bump","commit_id":"db8e0a11e771eae23832a9a192e6676309b0d267"}]}
