)]}'
{"nova/db/api.py":[{"author":{"_account_id":6495,"name":"Senhua Huang","email":"senhua.huang@gmail.com","username":"senhuang"},"change_message_id":"9fbd73c227f627cc3049b42834afcbe695723597","unresolved":false,"context_lines":[{"line_number":1737,"context_line":"    \"\"\"Get a specific group by id.\"\"\""},{"line_number":1738,"context_line":"    return IMPL.instance_group_get(context, group_id)"},{"line_number":1739,"context_line":""},{"line_number":1740,"context_line":""},{"line_number":1741,"context_line":"def instance_group_update(context, group_id, values):"},{"line_number":1742,"context_line":"    \"\"\"Update the attributes of an group.\"\"\""},{"line_number":1743,"context_line":"    return IMPL.instance_group_update(context, group_id, values)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2F0A%3D","line":1740,"updated":"2013-05-16 20:54:27.000000000","message":"is the \"group_id\" the uuid of the group? maybe a comment here will be helpful.","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":6495,"name":"Senhua Huang","email":"senhua.huang@gmail.com","username":"senhuang"},"change_message_id":"9fbd73c227f627cc3049b42834afcbe695723597","unresolved":false,"context_lines":[{"line_number":1746,"context_line":"def instance_group_delete(context, group_id):"},{"line_number":1747,"context_line":"    \"\"\"Delete an group.\"\"\""},{"line_number":1748,"context_line":"    return IMPL.instance_group_delete(context, group_id)"},{"line_number":1749,"context_line":""},{"line_number":1750,"context_line":""},{"line_number":1751,"context_line":"def instance_group_get_all(context):"},{"line_number":1752,"context_line":"    \"\"\"Get all groups.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAO3%2F%2F70c%3D","line":1749,"updated":"2013-05-16 20:54:27.000000000","message":"Should we check whether the members is empty at API layer or here when deleting an instance group?","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa7b5990c7ac0db2e0c7d1b2e43ae472205c4c9e","unresolved":false,"context_lines":[{"line_number":1746,"context_line":"def instance_group_delete(context, group_id):"},{"line_number":1747,"context_line":"    \"\"\"Delete an group.\"\"\""},{"line_number":1748,"context_line":"    return IMPL.instance_group_delete(context, group_id)"},{"line_number":1749,"context_line":""},{"line_number":1750,"context_line":""},{"line_number":1751,"context_line":"def instance_group_get_all(context):"},{"line_number":1752,"context_line":"    \"\"\"Get all groups.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2B7M%3D","line":1749,"in_reply_to":"AAAAO3%2F%2F70c%3D","updated":"2013-05-17 06:04:36.000000000","message":"I do not think so. The group is used for the placement of the instance. If the user decides to delete the group them I do not think that it should affect the running instance.","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":6495,"name":"Senhua Huang","email":"senhua.huang@gmail.com","username":"senhuang"},"change_message_id":"9fbd73c227f627cc3049b42834afcbe695723597","unresolved":false,"context_lines":[{"line_number":1749,"context_line":""},{"line_number":1750,"context_line":""},{"line_number":1751,"context_line":"def instance_group_get_all(context):"},{"line_number":1752,"context_line":"    \"\"\"Get all groups.\"\"\""},{"line_number":1753,"context_line":"    return IMPL.instance_group_get_all(context)"},{"line_number":1754,"context_line":""},{"line_number":1755,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAO3%2F%2F70w%3D","line":1752,"updated":"2013-05-16 20:54:27.000000000","message":"Will this function return all groups for a given tenant? If the tenant is admin, will it return all groups for all tenants?","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa7b5990c7ac0db2e0c7d1b2e43ae472205c4c9e","unresolved":false,"context_lines":[{"line_number":1749,"context_line":""},{"line_number":1750,"context_line":""},{"line_number":1751,"context_line":"def instance_group_get_all(context):"},{"line_number":1752,"context_line":"    \"\"\"Get all groups.\"\"\""},{"line_number":1753,"context_line":"    return IMPL.instance_group_get_all(context)"},{"line_number":1754,"context_line":""},{"line_number":1755,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2B4M%3D","line":1752,"in_reply_to":"AAAAO3%2F%2F70w%3D","updated":"2013-05-17 06:04:36.000000000","message":"Good point.\n\nI will add a method instance_group_get_all_by_project_id()","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"    return IMPL.archive_deleted_rows_for_table(context, tablename,"},{"line_number":1725,"context_line":"                                               max_rows\u003dmax_rows)"},{"line_number":1726,"context_line":""},{"line_number":1727,"context_line":"####################"},{"line_number":1728,"context_line":""},{"line_number":1729,"context_line":""},{"line_number":1730,"context_line":"def instance_group_create(context, values, policies\u003dNone, metadata\u003dNone,"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7iM%3D","line":1727,"updated":"2013-05-19 17:46:22.000000000","message":"nits probably this method should be together with other instance_* methods \n1 sec fix\u003d)","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"    return IMPL.archive_deleted_rows_for_table(context, tablename,"},{"line_number":1725,"context_line":"                                               max_rows\u003dmax_rows)"},{"line_number":1726,"context_line":""},{"line_number":1727,"context_line":"####################"},{"line_number":1728,"context_line":""},{"line_number":1729,"context_line":""},{"line_number":1730,"context_line":"def instance_group_create(context, values, policies\u003dNone, metadata\u003dNone,"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7Iw%3D","line":1727,"in_reply_to":"AAAAPH%2F%2F7iM%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":5190,"context_line":"        model_query(context,"},{"line_number":5191,"context_line":"                    models.InstanceGroupPolicy, session\u003dsession).\\"},{"line_number":5192,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"},{"line_number":5193,"context_line":"                    soft_delete()"},{"line_number":5194,"context_line":""},{"line_number":5195,"context_line":"        # Delete Metadata"},{"line_number":5196,"context_line":"        model_query(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYz0%3D","line":5193,"updated":"2013-05-11 18:22:26.000000000","message":"This won\u0027t work take a look at migration comments","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":5190,"context_line":"        model_query(context,"},{"line_number":5191,"context_line":"                    models.InstanceGroupPolicy, session\u003dsession).\\"},{"line_number":5192,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"},{"line_number":5193,"context_line":"                    soft_delete()"},{"line_number":5194,"context_line":""},{"line_number":5195,"context_line":"        # Delete Metadata"},{"line_number":5196,"context_line":"        model_query(context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYkA%3D","line":5193,"in_reply_to":"AAAAOn%2F%2FYz0%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":5193,"context_line":"                    soft_delete()"},{"line_number":5194,"context_line":""},{"line_number":5195,"context_line":"        # Delete Metadata"},{"line_number":5196,"context_line":"        model_query(context,"},{"line_number":5197,"context_line":"                    models.InstanceGroupMetadata, session\u003dsession).\\"},{"line_number":5198,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"},{"line_number":5199,"context_line":"                    soft_delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYzw%3D","line":5196,"updated":"2013-05-11 18:22:26.000000000","message":"ditto","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":5193,"context_line":"                    soft_delete()"},{"line_number":5194,"context_line":""},{"line_number":5195,"context_line":"        # Delete Metadata"},{"line_number":5196,"context_line":"        model_query(context,"},{"line_number":5197,"context_line":"                    models.InstanceGroupMetadata, session\u003dsession).\\"},{"line_number":5198,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"},{"line_number":5199,"context_line":"                    soft_delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYj8%3D","line":5196,"in_reply_to":"AAAAOn%2F%2FYzw%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":5199,"context_line":"                    soft_delete()"},{"line_number":5200,"context_line":""},{"line_number":5201,"context_line":"        # Delete Members"},{"line_number":5202,"context_line":"        model_query(context,"},{"line_number":5203,"context_line":"                    models.InstanceGroupMember, session\u003dsession).\\"},{"line_number":5204,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"},{"line_number":5205,"context_line":"                    soft_delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYzs%3D","line":5202,"updated":"2013-05-11 18:22:26.000000000","message":"ditto","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":5199,"context_line":"                    soft_delete()"},{"line_number":5200,"context_line":""},{"line_number":5201,"context_line":"        # Delete Members"},{"line_number":5202,"context_line":"        model_query(context,"},{"line_number":5203,"context_line":"                    models.InstanceGroupMember, session\u003dsession).\\"},{"line_number":5204,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"},{"line_number":5205,"context_line":"                    soft_delete()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYj4%3D","line":5202,"in_reply_to":"AAAAOn%2F%2FYzs%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":5210,"context_line":"    return _instance_group_get_query(context, models.InstanceGroup).all()"},{"line_number":5211,"context_line":""},{"line_number":5212,"context_line":""},{"line_number":5213,"context_line":"def instance_group_model_get_query(context, model_class, group_id,"},{"line_number":5214,"context_line":"                                   session\u003dNone, read_deleted\u003d\u0027yes\u0027):"},{"line_number":5215,"context_line":"    return model_query(context,"},{"line_number":5216,"context_line":"                       model_class,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0k%3D","line":5213,"updated":"2013-05-11 18:22:26.000000000","message":"Don\u0027t use session parameter in public method.\nTake a look at db-session-cleanup","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":5210,"context_line":"    return _instance_group_get_query(context, models.InstanceGroup).all()"},{"line_number":5211,"context_line":""},{"line_number":5212,"context_line":""},{"line_number":5213,"context_line":"def instance_group_model_get_query(context, model_class, group_id,"},{"line_number":5214,"context_line":"                                   session\u003dNone, read_deleted\u003d\u0027yes\u0027):"},{"line_number":5215,"context_line":"    return model_query(context,"},{"line_number":5216,"context_line":"                       model_class,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYj0%3D","line":5213,"in_reply_to":"AAAAOn%2F%2FY0k%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":5227,"context_line":""},{"line_number":5228,"context_line":"    @functools.wraps(f)"},{"line_number":5229,"context_line":"    def wrapper(context, group_id, *args, **kwargs):"},{"line_number":5230,"context_line":"        instance_group_get(context, group_id)"},{"line_number":5231,"context_line":"        return f(context, group_id, *args, **kwargs)"},{"line_number":5232,"context_line":"    return wrapper"},{"line_number":5233,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYz4%3D","line":5230,"updated":"2013-05-11 18:22:26.000000000","message":"Small performance optimization instead of getting ref you should use count() and if count() is 0 raise Exception","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":5272,"context_line":"                                      models.InstanceGroupMetadata.group_id,"},{"line_number":5273,"context_line":"                                      group_id).filter_by(key\u003dkey)"},{"line_number":5274,"context_line":"    if query.first():"},{"line_number":5275,"context_line":"        query.update({\u0027deleted\u0027: True,"},{"line_number":5276,"context_line":"                      \u0027deleted_at\u0027: timeutils.utcnow(),"},{"line_number":5277,"context_line":"                      \u0027updated_at\u0027: timeutils.utcnow()})"},{"line_number":5278,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0I%3D","line":5275,"updated":"2013-05-11 18:22:26.000000000","message":"awful use query.soft_delete. Take a look at migration","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"68679fdc962a9df139b6573a1a54dcc08f04f048","unresolved":false,"context_lines":[{"line_number":5284,"context_line":"def instance_group_metadata_get(context, group_id):"},{"line_number":5285,"context_line":"    rows \u003d model_query(context,"},{"line_number":5286,"context_line":"                       models.InstanceGroupMetadata).\\"},{"line_number":5287,"context_line":"                       filter_by(group_id\u003dgroup_id).all()"},{"line_number":5288,"context_line":"    return dict([(r[\u0027key\u0027], r[\u0027value\u0027]) for r in rows])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYzY%3D","line":5287,"updated":"2013-05-11 18:36:59.000000000","message":"all() is not needed because query could be used as iterator.","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":5284,"context_line":"def instance_group_metadata_get(context, group_id):"},{"line_number":5285,"context_line":"    rows \u003d model_query(context,"},{"line_number":5286,"context_line":"                       models.InstanceGroupMetadata).\\"},{"line_number":5287,"context_line":"                       filter_by(group_id\u003dgroup_id).all()"},{"line_number":5288,"context_line":"    return dict([(r[\u0027key\u0027], r[\u0027value\u0027]) for r in rows])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0A%3D","line":5287,"updated":"2013-05-11 18:22:26.000000000","message":"all() should be on next line","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":5284,"context_line":"def instance_group_metadata_get(context, group_id):"},{"line_number":5285,"context_line":"    rows \u003d model_query(context,"},{"line_number":5286,"context_line":"                       models.InstanceGroupMetadata).\\"},{"line_number":5287,"context_line":"                       filter_by(group_id\u003dgroup_id).all()"},{"line_number":5288,"context_line":"    return dict([(r[\u0027key\u0027], r[\u0027value\u0027]) for r in rows])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYi0%3D","line":5287,"in_reply_to":"AAAAOn%2F%2FYyI%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"855abbff620281fabfa7d45ffc1c99ba42d7faa0","unresolved":false,"context_lines":[{"line_number":5284,"context_line":"def instance_group_metadata_get(context, group_id):"},{"line_number":5285,"context_line":"    rows \u003d model_query(context,"},{"line_number":5286,"context_line":"                       models.InstanceGroupMetadata).\\"},{"line_number":5287,"context_line":"                       filter_by(group_id\u003dgroup_id).all()"},{"line_number":5288,"context_line":"    return dict([(r[\u0027key\u0027], r[\u0027value\u0027]) for r in rows])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYyI%3D","line":5287,"in_reply_to":"AAAAOn%2F%2FYzY%3D","updated":"2013-05-11 18:39:54.000000000","message":"enikanorov\t In nova we are using explicit all() + take a look at the end of line (there is all, and it should be on next line)","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9a88d17fdb7a7ecd5f2cab8d6034616baabc84e5","unresolved":false,"context_lines":[{"line_number":5096,"context_line":"    if uuid is None:"},{"line_number":5097,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":5098,"context_line":"        values[\u0027uuid\u0027] \u003d uuid"},{"line_number":5099,"context_line":"    query \u003d _instance_group_get_query(context,"},{"line_number":5100,"context_line":"                                      models.InstanceGroup,"},{"line_number":5101,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5102,"context_line":"                                      id\u003duuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FYdc%3D","line":5099,"updated":"2013-05-12 09:36:23.000000000","message":"This is not optimal + produce race condition...\n\nYou should:\n\na) add unique constraint on (uuid, deleted) columns\nb) then use approach as in network_create() method (try to create catch UC exception)","commit_id":"abc79022543f9f14cd4293caab1a13f98bd452de"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6d172bb94787888a71dadcf9b5d31396ab25da03","unresolved":false,"context_lines":[{"line_number":5096,"context_line":"    if uuid is None:"},{"line_number":5097,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":5098,"context_line":"        values[\u0027uuid\u0027] \u003d uuid"},{"line_number":5099,"context_line":"    query \u003d _instance_group_get_query(context,"},{"line_number":5100,"context_line":"                                      models.InstanceGroup,"},{"line_number":5101,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5102,"context_line":"                                      id\u003duuid,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FYa8%3D","line":5099,"in_reply_to":"AAAAOn%2F%2FYdc%3D","updated":"2013-05-12 13:13:44.000000000","message":"Done","commit_id":"abc79022543f9f14cd4293caab1a13f98bd452de"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9a88d17fdb7a7ecd5f2cab8d6034616baabc84e5","unresolved":false,"context_lines":[{"line_number":5114,"context_line":"        group._members \u003d []"},{"line_number":5115,"context_line":"    else:"},{"line_number":5116,"context_line":"        raise exception.InstanceGroupIdExists(group_id\u003duuid)"},{"line_number":5117,"context_line":"    if policies:"},{"line_number":5118,"context_line":"        instance_group_policy_add(context, group.uuid, policies)"},{"line_number":5119,"context_line":"    if metadata:"},{"line_number":5120,"context_line":"        instance_group_metadata_add(context, group.uuid, metadata)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FYdY%3D","line":5117,"updated":"2013-05-12 09:36:23.000000000","message":"These all things should be made in one transaction with previous creation, so you should use\n\n  with session.begin() statement","commit_id":"abc79022543f9f14cd4293caab1a13f98bd452de"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6d172bb94787888a71dadcf9b5d31396ab25da03","unresolved":false,"context_lines":[{"line_number":5114,"context_line":"        group._members \u003d []"},{"line_number":5115,"context_line":"    else:"},{"line_number":5116,"context_line":"        raise exception.InstanceGroupIdExists(group_id\u003duuid)"},{"line_number":5117,"context_line":"    if policies:"},{"line_number":5118,"context_line":"        instance_group_policy_add(context, group.uuid, policies)"},{"line_number":5119,"context_line":"    if metadata:"},{"line_number":5120,"context_line":"        instance_group_metadata_add(context, group.uuid, metadata)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOn%2F%2FYZc%3D","line":5117,"in_reply_to":"AAAAOn%2F%2FYdY%3D","updated":"2013-05-12 13:13:44.000000000","message":"ok. i\u0027ll address this tomorrow","commit_id":"abc79022543f9f14cd4293caab1a13f98bd452de"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"047c3031e4b7d756c4d03c3a5256d02a64f03cd1","unresolved":false,"context_lines":[{"line_number":5091,"context_line":"def instance_group_create(context, values, policies\u003dNone, metadata\u003dNone,"},{"line_number":5092,"context_line":"                          members\u003dNone):"},{"line_number":5093,"context_line":"    \"\"\"Create a new group with metadata.\"\"\""},{"line_number":5094,"context_line":"    uuid \u003d values.get(\u0027uuid\u0027, None)"},{"line_number":5095,"context_line":"    if uuid is None:"},{"line_number":5096,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":5097,"context_line":"        values[\u0027uuid\u0027] \u003d uuid"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2FmU%3D","line":5094,"updated":"2013-05-15 10:58:00.000000000","message":"Not sure of a case where uuid would be passed in. To keep it more conformant, I\u0027d handle uuid generation in one place, probably here.","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"85e16743f4bb6c4d0aa8795c6e3e7ace052ebe53","unresolved":false,"context_lines":[{"line_number":5091,"context_line":"def instance_group_create(context, values, policies\u003dNone, metadata\u003dNone,"},{"line_number":5092,"context_line":"                          members\u003dNone):"},{"line_number":5093,"context_line":"    \"\"\"Create a new group with metadata.\"\"\""},{"line_number":5094,"context_line":"    uuid \u003d values.get(\u0027uuid\u0027, None)"},{"line_number":5095,"context_line":"    if uuid is None:"},{"line_number":5096,"context_line":"        uuid \u003d uuidutils.generate_uuid()"},{"line_number":5097,"context_line":"        values[\u0027uuid\u0027] \u003d uuid"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2B5c%3D","line":5094,"in_reply_to":"AAAAO3%2F%2F%2FmU%3D","updated":"2013-05-15 15:59:07.000000000","message":"This is handled below on line 5096.\nPlease note there is also a unit test that tests the passing of the uuid as input.","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"047c3031e4b7d756c4d03c3a5256d02a64f03cd1","unresolved":false,"context_lines":[{"line_number":5097,"context_line":"        values[\u0027uuid\u0027] \u003d uuid"},{"line_number":5098,"context_line":"    session \u003d get_session()"},{"line_number":5099,"context_line":"    with session.begin():"},{"line_number":5100,"context_line":"        query \u003d _instance_group_get_query(context,"},{"line_number":5101,"context_line":"                                          models.InstanceGroup,"},{"line_number":5102,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5103,"context_line":"                                          id\u003duuid,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2FmA%3D","line":5100,"updated":"2013-05-15 10:58:00.000000000","message":"Handling uuid generation inside this method should alleviate the need to check if it exists, since we are creating a new group, unless we want to check for duplicate names.","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"85e16743f4bb6c4d0aa8795c6e3e7ace052ebe53","unresolved":false,"context_lines":[{"line_number":5097,"context_line":"        values[\u0027uuid\u0027] \u003d uuid"},{"line_number":5098,"context_line":"    session \u003d get_session()"},{"line_number":5099,"context_line":"    with session.begin():"},{"line_number":5100,"context_line":"        query \u003d _instance_group_get_query(context,"},{"line_number":5101,"context_line":"                                          models.InstanceGroup,"},{"line_number":5102,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5103,"context_line":"                                          id\u003duuid,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2B5Q%3D","line":5100,"in_reply_to":"AAAAO3%2F%2F%2FmA%3D","updated":"2013-05-15 15:59:07.000000000","message":"As mentioned this is handled above","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"047c3031e4b7d756c4d03c3a5256d02a64f03cd1","unresolved":false,"context_lines":[{"line_number":5146,"context_line":"    too. Similary for the policies and members.\"\"\""},{"line_number":5147,"context_line":"    session \u003d get_session()"},{"line_number":5148,"context_line":"    with session.begin():"},{"line_number":5149,"context_line":"        group \u003d (_instance_group_get_query(context,"},{"line_number":5150,"context_line":"                                           models.InstanceGroup,"},{"line_number":5151,"context_line":"                                           models.InstanceGroup.uuid,"},{"line_number":5152,"context_line":"                                           group_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2Fls%3D","line":5149,"updated":"2013-05-15 10:58:00.000000000","message":"Redundant outer parenthesis can be removed.","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"85e16743f4bb6c4d0aa8795c6e3e7ace052ebe53","unresolved":false,"context_lines":[{"line_number":5146,"context_line":"    too. Similary for the policies and members.\"\"\""},{"line_number":5147,"context_line":"    session \u003d get_session()"},{"line_number":5148,"context_line":"    with session.begin():"},{"line_number":5149,"context_line":"        group \u003d (_instance_group_get_query(context,"},{"line_number":5150,"context_line":"                                           models.InstanceGroup,"},{"line_number":5151,"context_line":"                                           models.InstanceGroup.uuid,"},{"line_number":5152,"context_line":"                                           group_id,"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2B5I%3D","line":5149,"in_reply_to":"AAAAO3%2F%2F%2Fls%3D","updated":"2013-05-15 15:59:07.000000000","message":"Done","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"047c3031e4b7d756c4d03c3a5256d02a64f03cd1","unresolved":false,"context_lines":[{"line_number":5176,"context_line":""},{"line_number":5177,"context_line":"            group.update(values)"},{"line_number":5178,"context_line":"            group.save(session\u003dsession)"},{"line_number":5179,"context_line":"            if policies:"},{"line_number":5180,"context_line":"                values[\u0027policies\u0027] \u003d policies"},{"line_number":5181,"context_line":"            if metadata:"},{"line_number":5182,"context_line":"                values[\u0027metadata\u0027] \u003d metadata"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2FlM%3D","line":5179,"updated":"2013-05-15 10:58:00.000000000","message":"Not sure I understand the need to pop from values and add it back here. Why not just use policies, metadata or members from the values.get()","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"85e16743f4bb6c4d0aa8795c6e3e7ace052ebe53","unresolved":false,"context_lines":[{"line_number":5176,"context_line":""},{"line_number":5177,"context_line":"            group.update(values)"},{"line_number":5178,"context_line":"            group.save(session\u003dsession)"},{"line_number":5179,"context_line":"            if policies:"},{"line_number":5180,"context_line":"                values[\u0027policies\u0027] \u003d policies"},{"line_number":5181,"context_line":"            if metadata:"},{"line_number":5182,"context_line":"                values[\u0027metadata\u0027] \u003d metadata"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2B44%3D","line":5179,"in_reply_to":"AAAAO3%2F%2F%2FlM%3D","updated":"2013-05-15 15:59:07.000000000","message":"The reason for this is that the group update will fail (line 5177) if undefined fields are passed.\n\nThe reason I add them back is to ensure that that the passed input is \"unchanged\"","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5121,"context_line":"                                          session\u003dsession,"},{"line_number":5122,"context_line":"                                          read_deleted\u003d\u0027no\u0027)"},{"line_number":5123,"context_line":"        group \u003d query.first()"},{"line_number":5124,"context_line":"        if not group:"},{"line_number":5125,"context_line":"            group \u003d models.InstanceGroup()"},{"line_number":5126,"context_line":"            group.update(values)"},{"line_number":5127,"context_line":"            group.save(session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bk0%3D","line":5124,"updated":"2013-05-17 11:41:50.000000000","message":"I don\u0027t like this code. You should try to create // And if it already exist then it will raise excpetion DuplicateEntry.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5121,"context_line":"                                          session\u003dsession,"},{"line_number":5122,"context_line":"                                          read_deleted\u003d\u0027no\u0027)"},{"line_number":5123,"context_line":"        group \u003d query.first()"},{"line_number":5124,"context_line":"        if not group:"},{"line_number":5125,"context_line":"            group \u003d models.InstanceGroup()"},{"line_number":5126,"context_line":"            group.update(values)"},{"line_number":5127,"context_line":"            group.save(session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9fw%3D","line":5124,"in_reply_to":"AAAAPH%2F%2F%2Bk0%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5146,"context_line":""},{"line_number":5147,"context_line":"def instance_group_get(context, group_id):"},{"line_number":5148,"context_line":"    \"\"\"Get a specific group by id.\"\"\""},{"line_number":5149,"context_line":"    query \u003d _instance_group_get_query(context,"},{"line_number":5150,"context_line":"                                      models.InstanceGroup,"},{"line_number":5151,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5152,"context_line":"                                      group_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bkw%3D","line":5149,"updated":"2013-05-17 11:41:50.000000000","message":"why query // probably you should create only one local variable","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5146,"context_line":""},{"line_number":5147,"context_line":"def instance_group_get(context, group_id):"},{"line_number":5148,"context_line":"    \"\"\"Get a specific group by id.\"\"\""},{"line_number":5149,"context_line":"    query \u003d _instance_group_get_query(context,"},{"line_number":5150,"context_line":"                                      models.InstanceGroup,"},{"line_number":5151,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5152,"context_line":"                                      group_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9eM%3D","line":5149,"in_reply_to":"AAAAPH%2F%2F%2Bkw%3D","updated":"2013-05-17 18:17:01.000000000","message":"not sure i understand what you mean here. i do not understand what the problem is here. please elaborate","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5146,"context_line":""},{"line_number":5147,"context_line":"def instance_group_get(context, group_id):"},{"line_number":5148,"context_line":"    \"\"\"Get a specific group by id.\"\"\""},{"line_number":5149,"context_line":"    query \u003d _instance_group_get_query(context,"},{"line_number":5150,"context_line":"                                      models.InstanceGroup,"},{"line_number":5151,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5152,"context_line":"                                      group_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8c8%3D","line":5149,"in_reply_to":"AAAAPH%2F%2F9VI%3D","updated":"2013-05-18 09:30:50.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5146,"context_line":""},{"line_number":5147,"context_line":"def instance_group_get(context, group_id):"},{"line_number":5148,"context_line":"    \"\"\"Get a specific group by id.\"\"\""},{"line_number":5149,"context_line":"    query \u003d _instance_group_get_query(context,"},{"line_number":5150,"context_line":"                                      models.InstanceGroup,"},{"line_number":5151,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5152,"context_line":"                                      group_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9VI%3D","line":5149,"in_reply_to":"AAAAPH%2F%2F9eM%3D","updated":"2013-05-17 19:29:27.000000000","message":"sorry didn\u0027t have enough time for long comments.. \nusually in this file we push call on first() to method.. so instead of:\n\n  query \u003d some_method()\n  group \u003d query.first()\n\nwrite\n\n  group \u003d some_method().first()\n\nfor example your next method instance_group_update..","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5168,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5169,"context_line":"                                          group_id,"},{"line_number":5170,"context_line":"                                          session\u003dsession).first()"},{"line_number":5171,"context_line":"        if group:"},{"line_number":5172,"context_line":"            policies \u003d values.get(\u0027policies\u0027)"},{"line_number":5173,"context_line":"            if policies is not None:"},{"line_number":5174,"context_line":"                _instance_group_policies_add(context,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bko%3D","line":5171,"updated":"2013-05-17 11:41:50.000000000","message":"if not group:\n     raise Excpeiton()\n\nand remove else at all (one tab less)","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5168,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5169,"context_line":"                                          group_id,"},{"line_number":5170,"context_line":"                                          session\u003dsession).first()"},{"line_number":5171,"context_line":"        if group:"},{"line_number":5172,"context_line":"            policies \u003d values.get(\u0027policies\u0027)"},{"line_number":5173,"context_line":"            if policies is not None:"},{"line_number":5174,"context_line":"                _instance_group_policies_add(context,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9d4%3D","line":5171,"in_reply_to":"AAAAPH%2F%2F%2Bko%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5216,"context_line":"        if count \u003d\u003d 0:"},{"line_number":5217,"context_line":"            raise exception.InstanceGroupNotFound(group_id\u003dgroup_id)"},{"line_number":5218,"context_line":""},{"line_number":5219,"context_line":"        # Delete Policies"},{"line_number":5220,"context_line":"        model_query(context,"},{"line_number":5221,"context_line":"                    models.InstanceGroupPolicy, session\u003dsession).\\"},{"line_number":5222,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bkg%3D","line":5219,"updated":"2013-05-17 11:41:50.000000000","message":"It may be done in one loop that iterates required models","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5216,"context_line":"        if count \u003d\u003d 0:"},{"line_number":5217,"context_line":"            raise exception.InstanceGroupNotFound(group_id\u003dgroup_id)"},{"line_number":5218,"context_line":""},{"line_number":5219,"context_line":"        # Delete Policies"},{"line_number":5220,"context_line":"        model_query(context,"},{"line_number":5221,"context_line":"                    models.InstanceGroupPolicy, session\u003dsession).\\"},{"line_number":5222,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9dg%3D","line":5219,"in_reply_to":"AAAAPH%2F%2F%2Bkg%3D","updated":"2013-05-17 18:17:01.000000000","message":"i am sorry i do not understand your point.\n\nthis is for a different table","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5216,"context_line":"        if count \u003d\u003d 0:"},{"line_number":5217,"context_line":"            raise exception.InstanceGroupNotFound(group_id\u003dgroup_id)"},{"line_number":5218,"context_line":""},{"line_number":5219,"context_line":"        # Delete Policies"},{"line_number":5220,"context_line":"        model_query(context,"},{"line_number":5221,"context_line":"                    models.InstanceGroupPolicy, session\u003dsession).\\"},{"line_number":5222,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8c4%3D","line":5219,"in_reply_to":"AAAAPH%2F%2F9U8%3D","updated":"2013-05-18 09:30:50.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5216,"context_line":"        if count \u003d\u003d 0:"},{"line_number":5217,"context_line":"            raise exception.InstanceGroupNotFound(group_id\u003dgroup_id)"},{"line_number":5218,"context_line":""},{"line_number":5219,"context_line":"        # Delete Policies"},{"line_number":5220,"context_line":"        model_query(context,"},{"line_number":5221,"context_line":"                    models.InstanceGroupPolicy, session\u003dsession).\\"},{"line_number":5222,"context_line":"                    filter_by(group_id\u003dgroup_id).\\"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9U8%3D","line":5219,"in_reply_to":"AAAAPH%2F%2F9dg%3D","updated":"2013-05-17 19:29:27.000000000","message":"for model in [models.InstanceGroupPolicy, models.InstanceGroupMetdata, ..]:\n    model_query(context, model, session).\\\n       filter_by(group_id\u003dgroup_id).\\\n       soft_delete()","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5248,"context_line":""},{"line_number":5249,"context_line":""},{"line_number":5250,"context_line":"def _instance_group_model_get_query(context, model_class, group_id,"},{"line_number":5251,"context_line":"                                    session\u003dNone, read_deleted\u003d\u0027yes\u0027):"},{"line_number":5252,"context_line":"    return model_query(context,"},{"line_number":5253,"context_line":"                       model_class,"},{"line_number":5254,"context_line":"                       read_deleted\u003dread_deleted,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BkY%3D","line":5251,"updated":"2013-05-17 11:41:50.000000000","message":"why read_deleted by default yes?","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5248,"context_line":""},{"line_number":5249,"context_line":""},{"line_number":5250,"context_line":"def _instance_group_model_get_query(context, model_class, group_id,"},{"line_number":5251,"context_line":"                                    session\u003dNone, read_deleted\u003d\u0027yes\u0027):"},{"line_number":5252,"context_line":"    return model_query(context,"},{"line_number":5253,"context_line":"                       model_class,"},{"line_number":5254,"context_line":"                       read_deleted\u003dread_deleted,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9dY%3D","line":5251,"in_reply_to":"AAAAPH%2F%2F%2BkY%3D","updated":"2013-05-17 18:17:01.000000000","message":"All of the code calling this uses \u0027no\u0027","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5248,"context_line":""},{"line_number":5249,"context_line":""},{"line_number":5250,"context_line":"def _instance_group_model_get_query(context, model_class, group_id,"},{"line_number":5251,"context_line":"                                    session\u003dNone, read_deleted\u003d\u0027yes\u0027):"},{"line_number":5252,"context_line":"    return model_query(context,"},{"line_number":5253,"context_line":"                       model_class,"},{"line_number":5254,"context_line":"                       read_deleted\u003dread_deleted,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8co%3D","line":5251,"in_reply_to":"AAAAPH%2F%2F9Uw%3D","updated":"2013-05-18 09:30:50.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5248,"context_line":""},{"line_number":5249,"context_line":""},{"line_number":5250,"context_line":"def _instance_group_model_get_query(context, model_class, group_id,"},{"line_number":5251,"context_line":"                                    session\u003dNone, read_deleted\u003d\u0027yes\u0027):"},{"line_number":5252,"context_line":"    return model_query(context,"},{"line_number":5253,"context_line":"                       model_class,"},{"line_number":5254,"context_line":"                       read_deleted\u003dread_deleted,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9Uw%3D","line":5251,"in_reply_to":"AAAAPH%2F%2F9dY%3D","updated":"2013-05-17 19:29:27.000000000","message":"so why by default you set it to \u0027yes\u0027? by the way if you don\u0027t put read_deleted value it will be by defualt in model_query set to \u0027no\u0027\n\nSo probably you should remove it at all..","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5258,"context_line":"def _instance_group_id(context, group_id):"},{"line_number":5259,"context_line":"    \"\"\"Returns group database ID for the group UUID.\"\"\""},{"line_number":5260,"context_line":""},{"line_number":5261,"context_line":"    group \u003d instance_group_get(context, group_id)"},{"line_number":5262,"context_line":"    return group[\u0027id\u0027]"},{"line_number":5263,"context_line":""},{"line_number":5264,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BkA%3D","line":5261,"updated":"2013-05-17 11:41:50.000000000","message":"This has very bad performance. The task is to get group.id by group_id. So you may use select id from groups, instead of getting all group with 3 JOINS! and then just use id.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5258,"context_line":"def _instance_group_id(context, group_id):"},{"line_number":5259,"context_line":"    \"\"\"Returns group database ID for the group UUID.\"\"\""},{"line_number":5260,"context_line":""},{"line_number":5261,"context_line":"    group \u003d instance_group_get(context, group_id)"},{"line_number":5262,"context_line":"    return group[\u0027id\u0027]"},{"line_number":5263,"context_line":""},{"line_number":5264,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9co%3D","line":5261,"in_reply_to":"AAAAPH%2F%2F%2BkA%3D","updated":"2013-05-17 18:17:01.000000000","message":"i guess it is late and has been a long week. I do not understand. The additonal table needs to be searched and the fk is the group_id.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5258,"context_line":"def _instance_group_id(context, group_id):"},{"line_number":5259,"context_line":"    \"\"\"Returns group database ID for the group UUID.\"\"\""},{"line_number":5260,"context_line":""},{"line_number":5261,"context_line":"    group \u003d instance_group_get(context, group_id)"},{"line_number":5262,"context_line":"    return group[\u0027id\u0027]"},{"line_number":5263,"context_line":""},{"line_number":5264,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8b0%3D","line":5261,"in_reply_to":"AAAAPH%2F%2F9S4%3D","updated":"2013-05-18 09:30:50.000000000","message":"This does not work. In addition to this we need to check that the group_id is valid.\nAre you referring to the three joins in _instance_group_get_query?","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5258,"context_line":"def _instance_group_id(context, group_id):"},{"line_number":5259,"context_line":"    \"\"\"Returns group database ID for the group UUID.\"\"\""},{"line_number":5260,"context_line":""},{"line_number":5261,"context_line":"    group \u003d instance_group_get(context, group_id)"},{"line_number":5262,"context_line":"    return group[\u0027id\u0027]"},{"line_number":5263,"context_line":""},{"line_number":5264,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9S4%3D","line":5261,"in_reply_to":"AAAAPH%2F%2F9co%3D","updated":"2013-05-17 19:29:27.000000000","message":"Ok I will try to explain, you have table instance_groups it has many columns but there are two interesting: \na) instance_groups.id\nb) instance_groups.uuid\nyou should get value of instance_groups.id by instance_groups.uuid \n// in current code you make exactly this..\n\nso to get id by uuid you are making 3 joins, joins are very very bad for performance..\n\nMy approach is to get from DB only one value from column instance_group.id. \n\nto do it we should write next query: \n\nresult \u003d  model_query(models.InstanceGroup.id, base_model\u003dmodels.InstanceGroup).\\\n    filter_by(uuid\u003dgroup_id).\\\n    first()\n\nreturn result.id","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5294,"context_line":""},{"line_number":5295,"context_line":""},{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bj0%3D","line":5297,"updated":"2013-05-17 11:41:50.000000000","message":"in this case also use subquery instead of result","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5294,"context_line":""},{"line_number":5295,"context_line":""},{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9cU%3D","line":5297,"in_reply_to":"AAAAPH%2F%2F%2Bj0%3D","updated":"2013-05-17 18:17:01.000000000","message":"Please explain","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5294,"context_line":""},{"line_number":5295,"context_line":""},{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8bU%3D","line":5297,"in_reply_to":"AAAAPH%2F%2F9SM%3D","updated":"2013-05-18 09:30:50.000000000","message":"i am not sure that i agree with you. why is this so problematic?","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5294,"context_line":""},{"line_number":5295,"context_line":""},{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9SM%3D","line":5297,"in_reply_to":"AAAAPH%2F%2F9cU%3D","updated":"2013-05-17 19:29:27.000000000","message":"how it works now // you get id by uuid from instance_groups table..\nthen you put it in _instance_group_metdata_add...\nso 2 queries..\n\n\nBut you are able to do it in one query..\n  query_to_get_id \u003d query_that_gets_id_from_group_id(group_id)\n//no request\n\nand then when you create some query for example\nquery \u003d model_query(models.InstanceGroupMetaData) \nthen you are able to do such filtering\nquery \u003d query.filter_by(id\u003dquery_to_get_id)\nand it will work through one query...","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"},{"line_number":5301,"context_line":"                                            set_delete\u003dset_delete,"},{"line_number":5302,"context_line":"                                            session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bjw%3D","line":5299,"updated":"2013-05-17 11:41:50.000000000","message":"why do you create here session?","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"},{"line_number":5301,"context_line":"                                            set_delete\u003dset_delete,"},{"line_number":5302,"context_line":"                                            session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9cY%3D","line":5299,"in_reply_to":"AAAAPH%2F%2F%2Bjw%3D","updated":"2013-05-17 18:17:01.000000000","message":"this was following one of your comments in a previous patch set. This is required.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"},{"line_number":5301,"context_line":"                                            set_delete\u003dset_delete,"},{"line_number":5302,"context_line":"                                            session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8bQ%3D","line":5299,"in_reply_to":"AAAAPH%2F%2F9Rs%3D","updated":"2013-05-18 09:30:50.000000000","message":"Sorry but i still do not understand. So you are saying that this does now not require the session.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5296,"context_line":"def instance_group_metadata_add(context, group_id, metadata, set_delete\u003dFalse):"},{"line_number":5297,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5298,"context_line":"    session \u003d get_session()"},{"line_number":5299,"context_line":"    with session.begin():"},{"line_number":5300,"context_line":"        return _instance_group_metadata_add(context, id, metadata,"},{"line_number":5301,"context_line":"                                            set_delete\u003dset_delete,"},{"line_number":5302,"context_line":"                                            session\u003dsession)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9Rs%3D","line":5299,"in_reply_to":"AAAAPH%2F%2F9cY%3D","updated":"2013-05-17 19:29:27.000000000","message":"Nope, you didn\u0027t understood me..\nI said that if you call some method more then 1 time, and you have to put in it session parameter and it should be also public method, then the standart approach is to create method with same name with prefix \"_\", and call it from public method and places where it is required..\n\nSession parameter is required only when you have to do more then 1 operation in 1 transaction. And here you have only 1 operation..","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5303,"context_line":""},{"line_number":5304,"context_line":""},{"line_number":5305,"context_line":"def instance_group_metadata_delete(context, group_id, key):"},{"line_number":5306,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5307,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5308,"context_line":"                                      models.InstanceGroupMetadata,"},{"line_number":5309,"context_line":"                                      models.InstanceGroupMetadata.group_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bj4%3D","line":5306,"updated":"2013-05-17 11:41:50.000000000","message":"in this case you should use subquery","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5303,"context_line":""},{"line_number":5304,"context_line":""},{"line_number":5305,"context_line":"def instance_group_metadata_delete(context, group_id, key):"},{"line_number":5306,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5307,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5308,"context_line":"                                      models.InstanceGroupMetadata,"},{"line_number":5309,"context_line":"                                      models.InstanceGroupMetadata.group_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9cQ%3D","line":5306,"in_reply_to":"AAAAPH%2F%2F%2Bj4%3D","updated":"2013-05-17 18:17:01.000000000","message":"ditto","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5312,"context_line":"                                      soft_delete()"},{"line_number":5313,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5314,"context_line":"        raise exception.InstanceGroupMetadataNotFound(group_id\u003dgroup_id,"},{"line_number":5315,"context_line":"                                                      metadata_key\u003dkey)"},{"line_number":5316,"context_line":""},{"line_number":5317,"context_line":""},{"line_number":5318,"context_line":"def instance_group_metadata_get(context, group_id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bjs%3D","line":5315,"updated":"2013-05-17 11:41:50.000000000","message":"align this pls","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5312,"context_line":"                                      soft_delete()"},{"line_number":5313,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5314,"context_line":"        raise exception.InstanceGroupMetadataNotFound(group_id\u003dgroup_id,"},{"line_number":5315,"context_line":"                                                      metadata_key\u003dkey)"},{"line_number":5316,"context_line":""},{"line_number":5317,"context_line":""},{"line_number":5318,"context_line":"def instance_group_metadata_get(context, group_id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9cM%3D","line":5315,"in_reply_to":"AAAAPH%2F%2F%2Bjs%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5326,"context_line":""},{"line_number":5327,"context_line":"def _instance_group_members_add(context, id, members, set_delete\u003dFalse,"},{"line_number":5328,"context_line":"                                session\u003dNone):"},{"line_number":5329,"context_line":"    all_members \u003d set(members)"},{"line_number":5330,"context_line":"    query \u003d _instance_group_model_get_query(context,"},{"line_number":5331,"context_line":"                                            models.InstanceGroupMember,"},{"line_number":5332,"context_line":"                                            id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BjQ%3D","line":5329,"updated":"2013-05-17 11:41:50.000000000","message":"it is better to use here\n\n  with session.beign(subtransaction\u003dTrue)\n\nand remove explicit creation of it in 5358 line","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5326,"context_line":""},{"line_number":5327,"context_line":"def _instance_group_members_add(context, id, members, set_delete\u003dFalse,"},{"line_number":5328,"context_line":"                                session\u003dNone):"},{"line_number":5329,"context_line":"    all_members \u003d set(members)"},{"line_number":5330,"context_line":"    query \u003d _instance_group_model_get_query(context,"},{"line_number":5331,"context_line":"                                            models.InstanceGroupMember,"},{"line_number":5332,"context_line":"                                            id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9b0%3D","line":5329,"in_reply_to":"AAAAPH%2F%2F%2BjQ%3D","updated":"2013-05-17 18:17:01.000000000","message":"this is also called by instance_group_create and instance_group_update.\nThe session already exists and is passed as a parameter","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5326,"context_line":""},{"line_number":5327,"context_line":"def _instance_group_members_add(context, id, members, set_delete\u003dFalse,"},{"line_number":5328,"context_line":"                                session\u003dNone):"},{"line_number":5329,"context_line":"    all_members \u003d set(members)"},{"line_number":5330,"context_line":"    query \u003d _instance_group_model_get_query(context,"},{"line_number":5331,"context_line":"                                            models.InstanceGroupMember,"},{"line_number":5332,"context_line":"                                            id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8bM%3D","line":5329,"in_reply_to":"AAAAPH%2F%2F9RQ%3D","updated":"2013-05-18 09:30:50.000000000","message":"This is a private method that has session.begin called prior to calling it","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5326,"context_line":""},{"line_number":5327,"context_line":"def _instance_group_members_add(context, id, members, set_delete\u003dFalse,"},{"line_number":5328,"context_line":"                                session\u003dNone):"},{"line_number":5329,"context_line":"    all_members \u003d set(members)"},{"line_number":5330,"context_line":"    query \u003d _instance_group_model_get_query(context,"},{"line_number":5331,"context_line":"                                            models.InstanceGroupMember,"},{"line_number":5332,"context_line":"                                            id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9RQ%3D","line":5329,"in_reply_to":"AAAAPH%2F%2F9b0%3D","updated":"2013-05-17 19:29:27.000000000","message":"If you avoid usage of sesson.begin then this code runed without session will be done in N transactions...","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5a03a8ed0f317c38980397f8b4cccca32f179082","unresolved":false,"context_lines":[{"line_number":5349,"context_line":"        member_ref \u003d models.InstanceGroupMember()"},{"line_number":5350,"context_line":"        member_ref.update({\u0027instance_id\u0027: instance_id,"},{"line_number":5351,"context_line":"                           \u0027group_id\u0027: id})"},{"line_number":5352,"context_line":"        session.add(member_ref)"},{"line_number":5353,"context_line":""},{"line_number":5354,"context_line":"    return members"},{"line_number":5355,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9RI%3D","line":5352,"updated":"2013-05-17 19:29:27.000000000","message":"also this will produce exception if session is None..","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5349,"context_line":"        member_ref \u003d models.InstanceGroupMember()"},{"line_number":5350,"context_line":"        member_ref.update({\u0027instance_id\u0027: instance_id,"},{"line_number":5351,"context_line":"                           \u0027group_id\u0027: id})"},{"line_number":5352,"context_line":"        session.add(member_ref)"},{"line_number":5353,"context_line":""},{"line_number":5354,"context_line":"    return members"},{"line_number":5355,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8bI%3D","line":5352,"in_reply_to":"AAAAPH%2F%2F9RI%3D","updated":"2013-05-18 09:30:50.000000000","message":"session is never none as it should be passed as a parameter","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5364,"context_line":""},{"line_number":5365,"context_line":""},{"line_number":5366,"context_line":"def instance_group_member_delete(context, group_id, instance_id):"},{"line_number":5367,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5368,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5369,"context_line":"                                      models.InstanceGroupMember,"},{"line_number":5370,"context_line":"                                      models.InstanceGroupMember.group_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BjM%3D","line":5367,"updated":"2013-05-17 11:41:50.000000000","message":"use here subquery instead of query","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5364,"context_line":""},{"line_number":5365,"context_line":""},{"line_number":5366,"context_line":"def instance_group_member_delete(context, group_id, instance_id):"},{"line_number":5367,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5368,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5369,"context_line":"                                      models.InstanceGroupMember,"},{"line_number":5370,"context_line":"                                      models.InstanceGroupMember.group_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9bw%3D","line":5367,"in_reply_to":"AAAAPH%2F%2F%2BjM%3D","updated":"2013-05-17 18:17:01.000000000","message":"same as above","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5379,"context_line":"def instance_group_members_get(context, group_id):"},{"line_number":5380,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5381,"context_line":"    rows \u003d model_query(context,"},{"line_number":5382,"context_line":"                       models.InstanceGroupMember).\\"},{"line_number":5383,"context_line":"                       filter_by(group_id\u003did).\\"},{"line_number":5384,"context_line":"                       all()"},{"line_number":5385,"context_line":"    return [(r[\u0027instance_id\u0027]) for r in rows]"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BjE%3D","line":5382,"updated":"2013-05-17 11:41:50.000000000","message":"I think that you should remove here space previous line with this will be less then 80 sym (didn\u0027t check)","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5379,"context_line":"def instance_group_members_get(context, group_id):"},{"line_number":5380,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5381,"context_line":"    rows \u003d model_query(context,"},{"line_number":5382,"context_line":"                       models.InstanceGroupMember).\\"},{"line_number":5383,"context_line":"                       filter_by(group_id\u003did).\\"},{"line_number":5384,"context_line":"                       all()"},{"line_number":5385,"context_line":"    return [(r[\u0027instance_id\u0027]) for r in rows]"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9bc%3D","line":5382,"in_reply_to":"AAAAPH%2F%2F%2BjE%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5380,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5381,"context_line":"    rows \u003d model_query(context,"},{"line_number":5382,"context_line":"                       models.InstanceGroupMember).\\"},{"line_number":5383,"context_line":"                       filter_by(group_id\u003did).\\"},{"line_number":5384,"context_line":"                       all()"},{"line_number":5385,"context_line":"    return [(r[\u0027instance_id\u0027]) for r in rows]"},{"line_number":5386,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BjI%3D","line":5383,"updated":"2013-05-17 11:41:50.000000000","message":"remove one tab, I thought that you are puting filter_by in model_query as parameter","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5380,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5381,"context_line":"    rows \u003d model_query(context,"},{"line_number":5382,"context_line":"                       models.InstanceGroupMember).\\"},{"line_number":5383,"context_line":"                       filter_by(group_id\u003did).\\"},{"line_number":5384,"context_line":"                       all()"},{"line_number":5385,"context_line":"    return [(r[\u0027instance_id\u0027]) for r in rows]"},{"line_number":5386,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9bU%3D","line":5383,"in_reply_to":"AAAAPH%2F%2F%2BjI%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5386,"context_line":""},{"line_number":5387,"context_line":""},{"line_number":5388,"context_line":"def _instance_group_policies_add(context, id, policies, set_delete\u003dFalse,"},{"line_number":5389,"context_line":"                                 session\u003dNone):"},{"line_number":5390,"context_line":"    all_policies \u003d set(policies)"},{"line_number":5391,"context_line":"    query \u003d _instance_group_model_get_query(context,"},{"line_number":5392,"context_line":"                                            models.InstanceGroupPolicy,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BjA%3D","line":5389,"updated":"2013-05-17 11:41:50.000000000","message":"same as in comment 5329 comment","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5386,"context_line":""},{"line_number":5387,"context_line":""},{"line_number":5388,"context_line":"def _instance_group_policies_add(context, id, policies, set_delete\u003dFalse,"},{"line_number":5389,"context_line":"                                 session\u003dNone):"},{"line_number":5390,"context_line":"    all_policies \u003d set(policies)"},{"line_number":5391,"context_line":"    query \u003d _instance_group_model_get_query(context,"},{"line_number":5392,"context_line":"                                            models.InstanceGroupPolicy,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9bQ%3D","line":5389,"in_reply_to":"AAAAPH%2F%2F%2BjA%3D","updated":"2013-05-17 18:17:01.000000000","message":"ditto","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5415,"context_line":""},{"line_number":5416,"context_line":"def instance_group_policies_add(context, group_id, policies, set_delete\u003dFalse):"},{"line_number":5417,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5418,"context_line":"    session \u003d get_session()"},{"line_number":5419,"context_line":"    with session.begin():"},{"line_number":5420,"context_line":"        return _instance_group_policies_add(context, id, policies,"},{"line_number":5421,"context_line":"                                            set_delete\u003dset_delete,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bi8%3D","line":5418,"updated":"2013-05-17 11:41:50.000000000","message":"if you do 5389 you should remove here this thing","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"043602923047e9e0fd5c67ac4989bd43082e855d","unresolved":false,"context_lines":[{"line_number":5415,"context_line":""},{"line_number":5416,"context_line":"def instance_group_policies_add(context, group_id, policies, set_delete\u003dFalse):"},{"line_number":5417,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5418,"context_line":"    session \u003d get_session()"},{"line_number":5419,"context_line":"    with session.begin():"},{"line_number":5420,"context_line":"        return _instance_group_policies_add(context, id, policies,"},{"line_number":5421,"context_line":"                                            set_delete\u003dset_delete,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F8bE%3D","line":5418,"in_reply_to":"AAAAPH%2F%2F%2Bi8%3D","updated":"2013-05-18 09:30:50.000000000","message":"As previous ly explained. This is required","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5423,"context_line":""},{"line_number":5424,"context_line":""},{"line_number":5425,"context_line":"def instance_group_policy_delete(context, group_id, policy):"},{"line_number":5426,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5427,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5428,"context_line":"                                 models.InstanceGroupPolicy,"},{"line_number":5429,"context_line":"                                 models.InstanceGroupPolicy.group_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bi0%3D","line":5426,"updated":"2013-05-17 11:41:50.000000000","message":"subquery instead of 2 queries..","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5423,"context_line":""},{"line_number":5424,"context_line":""},{"line_number":5425,"context_line":"def instance_group_policy_delete(context, group_id, policy):"},{"line_number":5426,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5427,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5428,"context_line":"                                 models.InstanceGroupPolicy,"},{"line_number":5429,"context_line":"                                 models.InstanceGroupPolicy.group_id,"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9bI%3D","line":5426,"in_reply_to":"AAAAPH%2F%2F%2Bi0%3D","updated":"2013-05-17 18:17:01.000000000","message":"please explain","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":5436,"context_line":""},{"line_number":5437,"context_line":""},{"line_number":5438,"context_line":"def instance_group_policies_get(context, group_id):"},{"line_number":5439,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5440,"context_line":"    rows \u003d model_query(context,"},{"line_number":5441,"context_line":"                       models.InstanceGroupPolicy).\\"},{"line_number":5442,"context_line":"                       filter_by(group_id\u003did).\\"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Biw%3D","line":5439,"updated":"2013-05-17 11:41:50.000000000","message":"subquery instead of 2 queries.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":5436,"context_line":""},{"line_number":5437,"context_line":""},{"line_number":5438,"context_line":"def instance_group_policies_get(context, group_id):"},{"line_number":5439,"context_line":"    id \u003d _instance_group_id(context, group_id)"},{"line_number":5440,"context_line":"    rows \u003d model_query(context,"},{"line_number":5441,"context_line":"                       models.InstanceGroupPolicy).\\"},{"line_number":5442,"context_line":"                       filter_by(group_id\u003did).\\"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9bE%3D","line":5439,"in_reply_to":"AAAAPH%2F%2F%2Biw%3D","updated":"2013-05-17 18:17:01.000000000","message":"ditto","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"839baac42597da2e0fad7d7cb272bf09e44aa7a9","unresolved":false,"context_lines":[{"line_number":5252,"context_line":""},{"line_number":5253,"context_line":"def _instance_group_metadata_add(context, id, metadata, set_delete\u003dFalse,"},{"line_number":5254,"context_line":"                                 session\u003dNone):"},{"line_number":5255,"context_line":"    all_keys \u003d metadata.keys()"},{"line_number":5256,"context_line":"    query \u003d _instance_group_model_get_query(context,"},{"line_number":5257,"context_line":"                                            models.InstanceGroupMetadata,"},{"line_number":5258,"context_line":"                                            id,"}],"source_content_type":"text/x-python","patch_set":25,"id":"AAAAPH%2F%2F8VA%3D","line":5255,"updated":"2013-05-18 11:06:26.000000000","message":"We have discussed in IRC about this place, so I am waiting for new patches that fix it..","commit_id":"b5b80a5298bc5e82d7872a00e6fd2c937f6cd694"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5143,"context_line":"    group \u003d _instance_group_get_query(context,"},{"line_number":5144,"context_line":"                                      models.InstanceGroup,"},{"line_number":5145,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5146,"context_line":"                                      group_uuid).first()"},{"line_number":5147,"context_line":"    if not group:"},{"line_number":5148,"context_line":"        raise exception.InstanceGroupNotFound(group_uuid\u003dgroup_uuid)"},{"line_number":5149,"context_line":"    return group"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Lc%3D","line":5146,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5143,"context_line":"    group \u003d _instance_group_get_query(context,"},{"line_number":5144,"context_line":"                                      models.InstanceGroup,"},{"line_number":5145,"context_line":"                                      models.InstanceGroup.uuid,"},{"line_number":5146,"context_line":"                                      group_uuid).first()"},{"line_number":5147,"context_line":"    if not group:"},{"line_number":5148,"context_line":"        raise exception.InstanceGroupNotFound(group_uuid\u003dgroup_uuid)"},{"line_number":5149,"context_line":"    return group"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8FQ%3D","line":5146,"in_reply_to":"AAAAPH%2F%2F8Lc%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5156,"context_line":"    too. Similary for the policies and members.\"\"\""},{"line_number":5157,"context_line":"    session \u003d get_session()"},{"line_number":5158,"context_line":"    with session.begin():"},{"line_number":5159,"context_line":"        group \u003d _instance_group_get_query(context,"},{"line_number":5160,"context_line":"                                          models.InstanceGroup,"},{"line_number":5161,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5162,"context_line":"                                          group_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8JE%3D","line":5159,"updated":"2013-05-18 16:24:16.000000000","message":"Performance nit:\nHere you are geting instance_group with 3 joins, but don\u0027t use joined data.","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5156,"context_line":"    too. Similary for the policies and members.\"\"\""},{"line_number":5157,"context_line":"    session \u003d get_session()"},{"line_number":5158,"context_line":"    with session.begin():"},{"line_number":5159,"context_line":"        group \u003d _instance_group_get_query(context,"},{"line_number":5160,"context_line":"                                          models.InstanceGroup,"},{"line_number":5161,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5162,"context_line":"                                          group_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Do%3D","line":5159,"in_reply_to":"AAAAPH%2F%2F8JE%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5160,"context_line":"                                          models.InstanceGroup,"},{"line_number":5161,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5162,"context_line":"                                          group_uuid,"},{"line_number":5163,"context_line":"                                          session\u003dsession).first()"},{"line_number":5164,"context_line":"        if not group:"},{"line_number":5165,"context_line":"            raise exception.InstanceGroupNotFound(group_uuid\u003dgroup_uuid)"},{"line_number":5166,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8JA%3D","line":5163,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5160,"context_line":"                                          models.InstanceGroup,"},{"line_number":5161,"context_line":"                                          models.InstanceGroup.uuid,"},{"line_number":5162,"context_line":"                                          group_uuid,"},{"line_number":5163,"context_line":"                                          session\u003dsession).first()"},{"line_number":5164,"context_line":"        if not group:"},{"line_number":5165,"context_line":"            raise exception.InstanceGroupNotFound(group_uuid\u003dgroup_uuid)"},{"line_number":5166,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8FM%3D","line":5163,"in_reply_to":"AAAAPH%2F%2F8JA%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5194,"context_line":"            values[\u0027metadata\u0027] \u003d metadata"},{"line_number":5195,"context_line":"        if members:"},{"line_number":5196,"context_line":"            values[\u0027members\u0027] \u003d members"},{"line_number":5197,"context_line":"        return instance_group_get(context, group.uuid)"},{"line_number":5198,"context_line":""},{"line_number":5199,"context_line":""},{"line_number":5200,"context_line":"def instance_group_delete(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8I4%3D","line":5197,"updated":"2013-05-18 16:24:16.000000000","message":"are you sure that you would like to get one more time instance_group?","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5194,"context_line":"            values[\u0027metadata\u0027] \u003d metadata"},{"line_number":5195,"context_line":"        if members:"},{"line_number":5196,"context_line":"            values[\u0027members\u0027] \u003d members"},{"line_number":5197,"context_line":"        return instance_group_get(context, group.uuid)"},{"line_number":5198,"context_line":""},{"line_number":5199,"context_line":""},{"line_number":5200,"context_line":"def instance_group_delete(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Fs%3D","line":5197,"in_reply_to":"AAAAPH%2F%2F8I4%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5215,"context_line":"                           models.InstanceGroupMember]"},{"line_number":5216,"context_line":"        for model in instance_models:"},{"line_number":5217,"context_line":"            model_query(context, model, session\u003dsession).\\"},{"line_number":5218,"context_line":"                    filter_by(group_id\u003dgroup_uuid).soft_delete()"},{"line_number":5219,"context_line":""},{"line_number":5220,"context_line":""},{"line_number":5221,"context_line":"def instance_group_get_all(context):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8LU%3D","line":5218,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5215,"context_line":"                           models.InstanceGroupMember]"},{"line_number":5216,"context_line":"        for model in instance_models:"},{"line_number":5217,"context_line":"            model_query(context, model, session\u003dsession).\\"},{"line_number":5218,"context_line":"                    filter_by(group_id\u003dgroup_uuid).soft_delete()"},{"line_number":5219,"context_line":""},{"line_number":5220,"context_line":""},{"line_number":5221,"context_line":"def instance_group_get_all(context):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8FI%3D","line":5218,"in_reply_to":"AAAAPH%2F%2F8LU%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5226,"context_line":"def instance_group_get_all_by_project_id(context, project_id):"},{"line_number":5227,"context_line":"    \"\"\"Get all groups.\"\"\""},{"line_number":5228,"context_line":"    return _instance_group_get_query(context, models.InstanceGroup).\\"},{"line_number":5229,"context_line":"                                     filter_by(project_id\u003dproject_id).\\"},{"line_number":5230,"context_line":"                                     all()"},{"line_number":5231,"context_line":""},{"line_number":5232,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8LQ%3D","line":5229,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5226,"context_line":"def instance_group_get_all_by_project_id(context, project_id):"},{"line_number":5227,"context_line":"    \"\"\"Get all groups.\"\"\""},{"line_number":5228,"context_line":"    return _instance_group_get_query(context, models.InstanceGroup).\\"},{"line_number":5229,"context_line":"                                     filter_by(project_id\u003dproject_id).\\"},{"line_number":5230,"context_line":"                                     all()"},{"line_number":5231,"context_line":""},{"line_number":5232,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8FE%3D","line":5229,"in_reply_to":"AAAAPH%2F%2F8LQ%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5235,"context_line":"    return model_query(context,"},{"line_number":5236,"context_line":"                       model_class,"},{"line_number":5237,"context_line":"                       read_deleted\u003dread_deleted,"},{"line_number":5238,"context_line":"                       session\u003dsession).filter_by(group_id\u003dgroup_uuid)"},{"line_number":5239,"context_line":""},{"line_number":5240,"context_line":""},{"line_number":5241,"context_line":"def _instance_group_id(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8LM%3D","line":5238,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5235,"context_line":"    return model_query(context,"},{"line_number":5236,"context_line":"                       model_class,"},{"line_number":5237,"context_line":"                       read_deleted\u003dread_deleted,"},{"line_number":5238,"context_line":"                       session\u003dsession).filter_by(group_id\u003dgroup_uuid)"},{"line_number":5239,"context_line":""},{"line_number":5240,"context_line":""},{"line_number":5241,"context_line":"def _instance_group_id(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8FA%3D","line":5238,"in_reply_to":"AAAAPH%2F%2F8LM%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5243,"context_line":""},{"line_number":5244,"context_line":"    result \u003d model_query(context, models.InstanceGroup.id,"},{"line_number":5245,"context_line":"                         base_model\u003dmodels.InstanceGroup).\\"},{"line_number":5246,"context_line":"                         filter_by(uuid\u003dgroup_uuid).\\"},{"line_number":5247,"context_line":"                         first()"},{"line_number":5248,"context_line":"    if not result:"},{"line_number":5249,"context_line":"        raise exception.InstanceGroupNotFound(group_uuid\u003dgroup_uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8LI%3D","line":5246,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5243,"context_line":""},{"line_number":5244,"context_line":"    result \u003d model_query(context, models.InstanceGroup.id,"},{"line_number":5245,"context_line":"                         base_model\u003dmodels.InstanceGroup).\\"},{"line_number":5246,"context_line":"                         filter_by(uuid\u003dgroup_uuid).\\"},{"line_number":5247,"context_line":"                         first()"},{"line_number":5248,"context_line":"    if not result:"},{"line_number":5249,"context_line":"        raise exception.InstanceGroupNotFound(group_uuid\u003dgroup_uuid)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8E8%3D","line":5246,"in_reply_to":"AAAAPH%2F%2F8LI%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5297,"context_line":"                                      models.InstanceGroupMetadata,"},{"line_number":5298,"context_line":"                                      models.InstanceGroupMetadata.group_id,"},{"line_number":5299,"context_line":"                                      id).\\"},{"line_number":5300,"context_line":"                                      filter_by(key\u003dkey).\\"},{"line_number":5301,"context_line":"                                      soft_delete()"},{"line_number":5302,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5303,"context_line":"        raise exception.InstanceGroupMetadataNotFound(group_uuid\u003dgroup_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8K8%3D","line":5300,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5297,"context_line":"                                      models.InstanceGroupMetadata,"},{"line_number":5298,"context_line":"                                      models.InstanceGroupMetadata.group_id,"},{"line_number":5299,"context_line":"                                      id).\\"},{"line_number":5300,"context_line":"                                      filter_by(key\u003dkey).\\"},{"line_number":5301,"context_line":"                                      soft_delete()"},{"line_number":5302,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5303,"context_line":"        raise exception.InstanceGroupMetadataNotFound(group_uuid\u003dgroup_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8E0%3D","line":5300,"in_reply_to":"AAAAPH%2F%2F8K8%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5301,"context_line":"                                      soft_delete()"},{"line_number":5302,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5303,"context_line":"        raise exception.InstanceGroupMetadataNotFound(group_uuid\u003dgroup_uuid,"},{"line_number":5304,"context_line":"                metadata_key\u003dkey)"},{"line_number":5305,"context_line":""},{"line_number":5306,"context_line":""},{"line_number":5307,"context_line":"def instance_group_metadata_get(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8K4%3D","line":5304,"updated":"2013-05-18 16:24:16.000000000","message":"metadata_key should be aligned to group_uuid","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5301,"context_line":"                                      soft_delete()"},{"line_number":5302,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5303,"context_line":"        raise exception.InstanceGroupMetadataNotFound(group_uuid\u003dgroup_uuid,"},{"line_number":5304,"context_line":"                metadata_key\u003dkey)"},{"line_number":5305,"context_line":""},{"line_number":5306,"context_line":""},{"line_number":5307,"context_line":"def instance_group_metadata_get(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Ew%3D","line":5304,"in_reply_to":"AAAAPH%2F%2F8K4%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5307,"context_line":"def instance_group_metadata_get(context, group_uuid):"},{"line_number":5308,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5309,"context_line":"    rows \u003d model_query(context,"},{"line_number":5310,"context_line":"            models.InstanceGroupMetadata).filter_by(group_id\u003did).all()"},{"line_number":5311,"context_line":"    return dict([(r[\u0027key\u0027], r[\u0027value\u0027]) for r in rows])"},{"line_number":5312,"context_line":""},{"line_number":5313,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8K0%3D","line":5310,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line\n\nmodels.Instace... should be on the same line as context in this case.","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5307,"context_line":"def instance_group_metadata_get(context, group_uuid):"},{"line_number":5308,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5309,"context_line":"    rows \u003d model_query(context,"},{"line_number":5310,"context_line":"            models.InstanceGroupMetadata).filter_by(group_id\u003did).all()"},{"line_number":5311,"context_line":"    return dict([(r[\u0027key\u0027], r[\u0027value\u0027]) for r in rows])"},{"line_number":5312,"context_line":""},{"line_number":5313,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Es%3D","line":5310,"in_reply_to":"AAAAPH%2F%2F8K0%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5325,"context_line":"        if set_delete:"},{"line_number":5326,"context_line":"            query.filter(~models.InstanceGroupMember.instance_id.in_("},{"line_number":5327,"context_line":"                         all_members)).\\"},{"line_number":5328,"context_line":"                         soft_delete(synchronize_session\u003dFalse)"},{"line_number":5329,"context_line":""},{"line_number":5330,"context_line":"        query \u003d query.filter("},{"line_number":5331,"context_line":"                models.InstanceGroupMember.instance_id.in_(all_members))"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Ks%3D","line":5328,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5325,"context_line":"        if set_delete:"},{"line_number":5326,"context_line":"            query.filter(~models.InstanceGroupMember.instance_id.in_("},{"line_number":5327,"context_line":"                         all_members)).\\"},{"line_number":5328,"context_line":"                         soft_delete(synchronize_session\u003dFalse)"},{"line_number":5329,"context_line":""},{"line_number":5330,"context_line":"        query \u003d query.filter("},{"line_number":5331,"context_line":"                models.InstanceGroupMember.instance_id.in_(all_members))"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Eo%3D","line":5328,"in_reply_to":"AAAAPH%2F%2F8Ks%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5348,"context_line":"                               set_delete\u003dFalse):"},{"line_number":5349,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5350,"context_line":"    return _instance_group_members_add(context, id, members,"},{"line_number":5351,"context_line":"                                       set_delete\u003dset_delete)"},{"line_number":5352,"context_line":""},{"line_number":5353,"context_line":""},{"line_number":5354,"context_line":"def instance_group_member_delete(context, group_uuid, instance_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8KI%3D","line":5351,"updated":"2013-05-18 16:24:16.000000000","message":"one more space required here to align set_delete with context","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5348,"context_line":"                               set_delete\u003dFalse):"},{"line_number":5349,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5350,"context_line":"    return _instance_group_members_add(context, id, members,"},{"line_number":5351,"context_line":"                                       set_delete\u003dset_delete)"},{"line_number":5352,"context_line":""},{"line_number":5353,"context_line":""},{"line_number":5354,"context_line":"def instance_group_member_delete(context, group_uuid, instance_id):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Ek%3D","line":5351,"in_reply_to":"AAAAPH%2F%2F8KI%3D","updated":"2013-05-18 17:34:21.000000000","message":"but this is already aligned?","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5357,"context_line":"                                      models.InstanceGroupMember,"},{"line_number":5358,"context_line":"                                      models.InstanceGroupMember.group_id,"},{"line_number":5359,"context_line":"                                      id).\\"},{"line_number":5360,"context_line":"                                      filter_by(instance_id\u003dinstance_id).\\"},{"line_number":5361,"context_line":"                                      soft_delete()"},{"line_number":5362,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5363,"context_line":"        raise exception.InstanceGroupMemberNotFound(group_uuid\u003dgroup_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8KE%3D","line":5360,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5357,"context_line":"                                      models.InstanceGroupMember,"},{"line_number":5358,"context_line":"                                      models.InstanceGroupMember.group_id,"},{"line_number":5359,"context_line":"                                      id).\\"},{"line_number":5360,"context_line":"                                      filter_by(instance_id\u003dinstance_id).\\"},{"line_number":5361,"context_line":"                                      soft_delete()"},{"line_number":5362,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5363,"context_line":"        raise exception.InstanceGroupMemberNotFound(group_uuid\u003dgroup_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Eg%3D","line":5360,"in_reply_to":"AAAAPH%2F%2F8KE%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5367,"context_line":"def instance_group_members_get(context, group_uuid):"},{"line_number":5368,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5369,"context_line":"    rows \u003d model_query(context,"},{"line_number":5370,"context_line":"            models.InstanceGroupMember).filter_by(group_id\u003did).all()"},{"line_number":5371,"context_line":"    return [(r[\u0027instance_id\u0027]) for r in rows]"},{"line_number":5372,"context_line":""},{"line_number":5373,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8J4%3D","line":5370,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line\n\nmodels.InstanceGroup... should be on the same line as context in this case","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5367,"context_line":"def instance_group_members_get(context, group_uuid):"},{"line_number":5368,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5369,"context_line":"    rows \u003d model_query(context,"},{"line_number":5370,"context_line":"            models.InstanceGroupMember).filter_by(group_id\u003did).all()"},{"line_number":5371,"context_line":"    return [(r[\u0027instance_id\u0027]) for r in rows]"},{"line_number":5372,"context_line":""},{"line_number":5373,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Ec%3D","line":5370,"in_reply_to":"AAAAPH%2F%2F8J4%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5384,"context_line":"                                                session\u003dsession)"},{"line_number":5385,"context_line":"        if set_delete:"},{"line_number":5386,"context_line":"            query.filter(~models.InstanceGroupPolicy.policy.in_("},{"line_number":5387,"context_line":"                    all_policies)).soft_delete(synchronize_session\u003dFalse)"},{"line_number":5388,"context_line":""},{"line_number":5389,"context_line":"        query \u003d query.filter(models.InstanceGroupPolicy.policy.in_("},{"line_number":5390,"context_line":"               all_policies))"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Jw%3D","line":5387,"updated":"2013-05-18 16:24:16.000000000","message":"align, take a look at the comment on 5419 line","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5384,"context_line":"                                                session\u003dsession)"},{"line_number":5385,"context_line":"        if set_delete:"},{"line_number":5386,"context_line":"            query.filter(~models.InstanceGroupPolicy.policy.in_("},{"line_number":5387,"context_line":"                    all_policies)).soft_delete(synchronize_session\u003dFalse)"},{"line_number":5388,"context_line":""},{"line_number":5389,"context_line":"        query \u003d query.filter(models.InstanceGroupPolicy.policy.in_("},{"line_number":5390,"context_line":"               all_policies))"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8EY%3D","line":5387,"in_reply_to":"AAAAPH%2F%2F8Jw%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5387,"context_line":"                    all_policies)).soft_delete(synchronize_session\u003dFalse)"},{"line_number":5388,"context_line":""},{"line_number":5389,"context_line":"        query \u003d query.filter(models.InstanceGroupPolicy.policy.in_("},{"line_number":5390,"context_line":"               all_policies))"},{"line_number":5391,"context_line":"        already_existing \u003d set()"},{"line_number":5392,"context_line":"        for policy_ref in query.all():"},{"line_number":5393,"context_line":"            already_existing.add(policy_ref.policy)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Jc%3D","line":5390,"updated":"2013-05-18 16:24:16.000000000","message":"hard to read..","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5387,"context_line":"                    all_policies)).soft_delete(synchronize_session\u003dFalse)"},{"line_number":5388,"context_line":""},{"line_number":5389,"context_line":"        query \u003d query.filter(models.InstanceGroupPolicy.policy.in_("},{"line_number":5390,"context_line":"               all_policies))"},{"line_number":5391,"context_line":"        already_existing \u003d set()"},{"line_number":5392,"context_line":"        for policy_ref in query.all():"},{"line_number":5393,"context_line":"            already_existing.add(policy_ref.policy)"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8EU%3D","line":5390,"in_reply_to":"AAAAPH%2F%2F8Jc%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5413,"context_line":"def instance_group_policy_delete(context, group_uuid, policy):"},{"line_number":5414,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5415,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5416,"context_line":"                                 models.InstanceGroupPolicy,"},{"line_number":5417,"context_line":"                                 models.InstanceGroupPolicy.group_id,"},{"line_number":5418,"context_line":"                                 id).\\"},{"line_number":5419,"context_line":"                                 filter_by(policy\u003dpolicy).\\"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8JI%3D","line":5416,"updated":"2013-05-18 16:24:16.000000000","message":"this and next 2 line should be aligned with context","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5413,"context_line":"def instance_group_policy_delete(context, group_uuid, policy):"},{"line_number":5414,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5415,"context_line":"    count \u003d _instance_group_get_query(context,"},{"line_number":5416,"context_line":"                                 models.InstanceGroupPolicy,"},{"line_number":5417,"context_line":"                                 models.InstanceGroupPolicy.group_id,"},{"line_number":5418,"context_line":"                                 id).\\"},{"line_number":5419,"context_line":"                                 filter_by(policy\u003dpolicy).\\"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8EQ%3D","line":5416,"in_reply_to":"AAAAPH%2F%2F8JI%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5416,"context_line":"                                 models.InstanceGroupPolicy,"},{"line_number":5417,"context_line":"                                 models.InstanceGroupPolicy.group_id,"},{"line_number":5418,"context_line":"                                 id).\\"},{"line_number":5419,"context_line":"                                 filter_by(policy\u003dpolicy).\\"},{"line_number":5420,"context_line":"                                 soft_delete()"},{"line_number":5421,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5422,"context_line":"        raise exception.InstanceGroupPolicyNotFound(group_uuid\u003dgroup_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8MA%3D","line":5419,"updated":"2013-05-18 16:24:16.000000000","message":"about align (it is about all your methods) it should look like: \nhttp://pastebin.com/PKQJmxjY\n\nit will be much easier to read it.","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5416,"context_line":"                                 models.InstanceGroupPolicy,"},{"line_number":5417,"context_line":"                                 models.InstanceGroupPolicy.group_id,"},{"line_number":5418,"context_line":"                                 id).\\"},{"line_number":5419,"context_line":"                                 filter_by(policy\u003dpolicy).\\"},{"line_number":5420,"context_line":"                                 soft_delete()"},{"line_number":5421,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5422,"context_line":"        raise exception.InstanceGroupPolicyNotFound(group_uuid\u003dgroup_uuid,"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8EI%3D","line":5419,"in_reply_to":"AAAAPH%2F%2F8MA%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5420,"context_line":"                                 soft_delete()"},{"line_number":5421,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5422,"context_line":"        raise exception.InstanceGroupPolicyNotFound(group_uuid\u003dgroup_uuid,"},{"line_number":5423,"context_line":"                                                    policy\u003dpolicy)"},{"line_number":5424,"context_line":""},{"line_number":5425,"context_line":""},{"line_number":5426,"context_line":"def instance_group_policies_get(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8L0%3D","line":5423,"updated":"2013-05-18 16:24:16.000000000","message":"algin policy and group_uuid","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5420,"context_line":"                                 soft_delete()"},{"line_number":5421,"context_line":"    if count \u003d\u003d 0:"},{"line_number":5422,"context_line":"        raise exception.InstanceGroupPolicyNotFound(group_uuid\u003dgroup_uuid,"},{"line_number":5423,"context_line":"                                                    policy\u003dpolicy)"},{"line_number":5424,"context_line":""},{"line_number":5425,"context_line":""},{"line_number":5426,"context_line":"def instance_group_policies_get(context, group_uuid):"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8EM%3D","line":5423,"in_reply_to":"AAAAPH%2F%2F8L0%3D","updated":"2013-05-18 17:34:21.000000000","message":"they are already aligned","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5425,"context_line":""},{"line_number":5426,"context_line":"def instance_group_policies_get(context, group_uuid):"},{"line_number":5427,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5428,"context_line":"    rows \u003d model_query(context,"},{"line_number":5429,"context_line":"            models.InstanceGroupPolicy).filter_by(group_id\u003did).all()"},{"line_number":5430,"context_line":"    return [(r[\u0027policy\u0027]) for r in rows]"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Ig%3D","line":5428,"updated":"2013-05-18 16:24:16.000000000","message":"performance, get only policy field from InstanceGroupPolicy (same as in _instance_group_id method)","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c1e3dbff362973c1f688c4c77f69749c3980ba57","unresolved":false,"context_lines":[{"line_number":5425,"context_line":""},{"line_number":5426,"context_line":"def instance_group_policies_get(context, group_uuid):"},{"line_number":5427,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5428,"context_line":"    rows \u003d model_query(context,"},{"line_number":5429,"context_line":"            models.InstanceGroupPolicy).filter_by(group_id\u003did).all()"},{"line_number":5430,"context_line":"    return [(r[\u0027policy\u0027]) for r in rows]"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F7tQ%3D","line":5428,"in_reply_to":"AAAAPH%2F%2F8Ig%3D","updated":"2013-05-19 12:57:33.000000000","message":"Done - same with metadata and members","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9e77d813c5426eb50fef5fdffbb18051cc91d6a","unresolved":false,"context_lines":[{"line_number":5426,"context_line":"def instance_group_policies_get(context, group_uuid):"},{"line_number":5427,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5428,"context_line":"    rows \u003d model_query(context,"},{"line_number":5429,"context_line":"            models.InstanceGroupPolicy).filter_by(group_id\u003did).all()"},{"line_number":5430,"context_line":"    return [(r[\u0027policy\u0027]) for r in rows]"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8Ls%3D","line":5429,"updated":"2013-05-18 16:24:16.000000000","message":"models.InstanceGroupPolicy on the same line and filter_by on next, as in 5419 comment..","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"12e80c70c33ad5c138d033ec170b7b4b745b6e4d","unresolved":false,"context_lines":[{"line_number":5426,"context_line":"def instance_group_policies_get(context, group_uuid):"},{"line_number":5427,"context_line":"    id \u003d _instance_group_id(context, group_uuid)"},{"line_number":5428,"context_line":"    rows \u003d model_query(context,"},{"line_number":5429,"context_line":"            models.InstanceGroupPolicy).filter_by(group_id\u003did).all()"},{"line_number":5430,"context_line":"    return [(r[\u0027policy\u0027]) for r in rows]"}],"source_content_type":"text/x-python","patch_set":28,"id":"AAAAPH%2F%2F8EA%3D","line":5429,"in_reply_to":"AAAAPH%2F%2F8Ls%3D","updated":"2013-05-18 17:34:21.000000000","message":"Done","commit_id":"52078cd96a3f2159e2957a8692da0209ef2feb06"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"519fb3a47bd8f3673c444d90f8c72307779115cd","unresolved":false,"context_lines":[{"line_number":5144,"context_line":"        if rows_archived \u003e\u003d max_rows:"},{"line_number":5145,"context_line":"            break"},{"line_number":5146,"context_line":"    return rows_archived"},{"line_number":5147,"context_line":""},{"line_number":5148,"context_line":"####################"},{"line_number":5149,"context_line":""},{"line_number":5150,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAPX%2F%2F%2BIs%3D","line":5147,"updated":"2013-06-04 21:23:51.000000000","message":"femtonit: To comply with the pattern everywhere else in this file, we need an extra blank line here.","commit_id":"5f36e56740af5ccc09041d5bcd8f6d88aaed14ab"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4692603a33e9250fceb9bab8e63e5f1fe15b45a2","unresolved":false,"context_lines":[{"line_number":5144,"context_line":"        if rows_archived \u003e\u003d max_rows:"},{"line_number":5145,"context_line":"            break"},{"line_number":5146,"context_line":"    return rows_archived"},{"line_number":5147,"context_line":""},{"line_number":5148,"context_line":"####################"},{"line_number":5149,"context_line":""},{"line_number":5150,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAPX%2F%2F9Dw%3D","line":5147,"in_reply_to":"AAAAPX%2F%2F%2BIs%3D","updated":"2013-06-05 09:54:12.000000000","message":"Done","commit_id":"5f36e56740af5ccc09041d5bcd8f6d88aaed14ab"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"519fb3a47bd8f3673c444d90f8c72307779115cd","unresolved":false,"context_lines":[{"line_number":5213,"context_line":"    \"\"\"Update the attributes of an group."},{"line_number":5214,"context_line":""},{"line_number":5215,"context_line":"    If values contains a metadata key, it updates the aggregate metadata"},{"line_number":5216,"context_line":"    too. Similary for the policies and members.\"\"\""},{"line_number":5217,"context_line":"    session \u003d get_session()"},{"line_number":5218,"context_line":"    with session.begin():"},{"line_number":5219,"context_line":"        group \u003d model_query(context,"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAPX%2F%2F%2BIc%3D","line":5216,"updated":"2013-06-04 21:23:51.000000000","message":"For multiline docstrings, I prefer the closing triple-quote to be on a line by itself.","commit_id":"5f36e56740af5ccc09041d5bcd8f6d88aaed14ab"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4692603a33e9250fceb9bab8e63e5f1fe15b45a2","unresolved":false,"context_lines":[{"line_number":5213,"context_line":"    \"\"\"Update the attributes of an group."},{"line_number":5214,"context_line":""},{"line_number":5215,"context_line":"    If values contains a metadata key, it updates the aggregate metadata"},{"line_number":5216,"context_line":"    too. Similary for the policies and members.\"\"\""},{"line_number":5217,"context_line":"    session \u003d get_session()"},{"line_number":5218,"context_line":"    with session.begin():"},{"line_number":5219,"context_line":"        group \u003d model_query(context,"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAPX%2F%2F9Dg%3D","line":5216,"in_reply_to":"AAAAPX%2F%2F%2BIc%3D","updated":"2013-06-05 09:54:12.000000000","message":"Done","commit_id":"5f36e56740af5ccc09041d5bcd8f6d88aaed14ab"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"519fb3a47bd8f3673c444d90f8c72307779115cd","unresolved":false,"context_lines":[{"line_number":5435,"context_line":"                            models.InstanceGroupMember.instance_id,"},{"line_number":5436,"context_line":"                            base_model\u003dmodels.InstanceGroupMember).\\"},{"line_number":5437,"context_line":"                    filter_by(group_id\u003did).all()"},{"line_number":5438,"context_line":"    return [(instance[0]) for instance in instances]"},{"line_number":5439,"context_line":""},{"line_number":5440,"context_line":""},{"line_number":5441,"context_line":"def _instance_group_policies_add(context, id, policies, set_delete\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAPX%2F%2F%2BIQ%3D","line":5438,"updated":"2013-06-04 21:23:51.000000000","message":"Why the parentheses here?  You don\u0027t need them for precedence.  I\u0027m asking just to make sure you weren\u0027t intending to return a list of one-element tuples or something…","commit_id":"5f36e56740af5ccc09041d5bcd8f6d88aaed14ab"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4692603a33e9250fceb9bab8e63e5f1fe15b45a2","unresolved":false,"context_lines":[{"line_number":5435,"context_line":"                            models.InstanceGroupMember.instance_id,"},{"line_number":5436,"context_line":"                            base_model\u003dmodels.InstanceGroupMember).\\"},{"line_number":5437,"context_line":"                    filter_by(group_id\u003did).all()"},{"line_number":5438,"context_line":"    return [(instance[0]) for instance in instances]"},{"line_number":5439,"context_line":""},{"line_number":5440,"context_line":""},{"line_number":5441,"context_line":"def _instance_group_policies_add(context, id, policies, set_delete\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":37,"id":"AAAAPX%2F%2F9DA%3D","line":5438,"in_reply_to":"AAAAPX%2F%2F%2BIQ%3D","updated":"2013-06-05 09:54:12.000000000","message":"Done","commit_id":"5f36e56740af5ccc09041d5bcd8f6d88aaed14ab"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"06a6f65836dcb4c2ad8163fd8c8772173637738c","unresolved":false,"context_lines":[{"line_number":5399,"context_line":"                       models.InstanceGroupMetadata.value,"},{"line_number":5400,"context_line":"                       base_model\u003dmodels.InstanceGroupMetadata).\\"},{"line_number":5401,"context_line":"                filter_by(group_id\u003did).all()"},{"line_number":5402,"context_line":"    return dict([(r[0], r[1]) for r in rows])"},{"line_number":5403,"context_line":""},{"line_number":5404,"context_line":""},{"line_number":5405,"context_line":"def _instance_group_members_add(context, id, members, set_delete\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAPX%2F%2F7kg%3D","line":5402,"updated":"2013-06-05 20:06:12.000000000","message":"No change needed here, but I\u0027ll point out that the square brackets here are redundant.  Right now, you\u0027re passing dict() a list, created from a list comprehension; but dict() can take a generator comprehension directly, e.g.:\n\n    return dict((r[0], r[1]) for r in rows())","commit_id":"5fd168530eebbd876d028347c9fb500efc8a86ee"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6fe6958a57ba29962d15e94bdb37ac952552c6ad","unresolved":false,"context_lines":[{"line_number":5399,"context_line":"                       models.InstanceGroupMetadata.value,"},{"line_number":5400,"context_line":"                       base_model\u003dmodels.InstanceGroupMetadata).\\"},{"line_number":5401,"context_line":"                filter_by(group_id\u003did).all()"},{"line_number":5402,"context_line":"    return dict([(r[0], r[1]) for r in rows])"},{"line_number":5403,"context_line":""},{"line_number":5404,"context_line":""},{"line_number":5405,"context_line":"def _instance_group_members_add(context, id, members, set_delete\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":38,"id":"AAAAPX%2F%2F6WM%3D","line":5402,"in_reply_to":"AAAAPX%2F%2F7kg%3D","updated":"2013-06-06 06:32:54.000000000","message":"Done","commit_id":"5fd168530eebbd876d028347c9fb500efc8a86ee"}],"nova/db/sqlalchemy/migrate_repo/versions/179_add_groups.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    groups \u003d Table(\u0027instance_groups\u0027, meta,"},{"line_number":34,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":35,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":36,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":37,"context_line":"        Column(\u0027deleted\u0027, String(length\u003d36)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0c%3D","line":34,"updated":"2013-05-11 18:22:26.000000000","message":"Add id column and change type of deleted column to type of id (I think here you should use Integer)\n\nThis is very important for:\n1) db archiving\n2) using query.soft_delete","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    groups \u003d Table(\u0027instance_groups\u0027, meta,"},{"line_number":34,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":35,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":36,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":37,"context_line":"        Column(\u0027deleted\u0027, String(length\u003d36)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYf4%3D","line":34,"in_reply_to":"AAAAOn%2F%2FY0c%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    group_metadata \u003d Table(\u0027instance_group_metadata\u0027, meta,"},{"line_number":48,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":49,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":50,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":51,"context_line":"        Column(\u0027deleted\u0027, Boolean),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0Y%3D","line":48,"updated":"2013-05-11 18:22:26.000000000","message":"ditto","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    group_metadata \u003d Table(\u0027instance_group_metadata\u0027, meta,"},{"line_number":48,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":49,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":50,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":51,"context_line":"        Column(\u0027deleted\u0027, Boolean),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYf0%3D","line":48,"in_reply_to":"AAAAOn%2F%2FY0Y%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    )"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    group_policy \u003d Table(\u0027instance_group_policy\u0027, meta,"},{"line_number":63,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":64,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":65,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":66,"context_line":"        Column(\u0027deleted\u0027, Boolean),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0U%3D","line":63,"updated":"2013-05-11 18:22:26.000000000","message":"ditto","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    )"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    group_policy \u003d Table(\u0027instance_group_policy\u0027, meta,"},{"line_number":63,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":64,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":65,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":66,"context_line":"        Column(\u0027deleted\u0027, Boolean),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYfw%3D","line":63,"in_reply_to":"AAAAOn%2F%2FY0U%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":74,"context_line":"    )"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    group_member \u003d Table(\u0027instance_group_member\u0027, meta,"},{"line_number":77,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":78,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":79,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0M%3D","line":76,"updated":"2013-05-11 18:22:26.000000000","message":"ditto","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":74,"context_line":"    )"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    group_member \u003d Table(\u0027instance_group_member\u0027, meta,"},{"line_number":77,"context_line":"        Column(\u0027created_at\u0027, DateTime),"},{"line_number":78,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":79,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYfs%3D","line":76,"in_reply_to":"AAAAOn%2F%2FY0M%3D","updated":"2013-05-12 08:27:26.000000000","message":"Done","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"998004129ce78bd5fd8110f6cd739095da12d08b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    group_metadata.create()"},{"line_number":92,"context_line":"    group_policy.create()"},{"line_number":93,"context_line":"    group_member.create()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"def downgrade(migrate_engine):"},{"line_number":97,"context_line":"    meta \u003d MetaData()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FY0g%3D","line":94,"updated":"2013-05-11 18:22:26.000000000","message":"You should create also shadow_tables for all tables that you have created.\n\nTake a look at db-archiving blue print","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"14206e24024dd07f3e06d9575f7a6ed76e89f2d1","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    group_metadata.create()"},{"line_number":92,"context_line":"    group_policy.create()"},{"line_number":93,"context_line":"    group_member.create()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"def downgrade(migrate_engine):"},{"line_number":97,"context_line":"    meta \u003d MetaData()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYfo%3D","line":94,"in_reply_to":"AAAAOn%2F%2FY0g%3D","updated":"2013-05-12 08:27:26.000000000","message":"How do I do that?","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"df45f031a68f92ff82643e42b21411b0651336b4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    group_metadata.create()"},{"line_number":92,"context_line":"    group_policy.create()"},{"line_number":93,"context_line":"    group_member.create()"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"def downgrade(migrate_engine):"},{"line_number":97,"context_line":"    meta \u003d MetaData()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FYdo%3D","line":94,"in_reply_to":"AAAAOn%2F%2FYfo%3D","updated":"2013-05-12 09:04:58.000000000","message":"take a look at db.sqlalchemy.utils.create_shadow_table() method.","commit_id":"21edb7755690ad74c4e231f12f0e92e62a98f70f"}],"nova/db/sqlalchemy/migrate_repo/versions/180_add_instance_groups.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5c5f2d4753db6e17e9e5feefa979b054c4c09767","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    # create tables"},{"line_number":87,"context_line":"    for table in tables:"},{"line_number":88,"context_line":"        table.create()"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    indexes \u003d ["},{"line_number":91,"context_line":"        Index(\u0027instance_group_uuid_idx\u0027, groups.c.uuid, unique\u003dTrue),"},{"line_number":92,"context_line":"        Index(\u0027instance_group_metadata_key_idx\u0027, group_metadata.c.key),"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAOn%2F%2FUhQ%3D","line":89,"updated":"2013-05-14 19:14:42.000000000","message":"and does it work with shadow tables?","commit_id":"686ec7c1f12cefac690aa457c8bef251c3f29991"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ef20431707b740f95e2c4d4a5e511c580711a5b3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    # create tables"},{"line_number":87,"context_line":"    for table in tables:"},{"line_number":88,"context_line":"        table.create()"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    indexes \u003d ["},{"line_number":91,"context_line":"        Index(\u0027instance_group_uuid_idx\u0027, groups.c.uuid, unique\u003dTrue),"},{"line_number":92,"context_line":"        Index(\u0027instance_group_metadata_key_idx\u0027, group_metadata.c.key),"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAO3%2F%2F%2F5I%3D","line":89,"in_reply_to":"AAAAOn%2F%2FUhQ%3D","updated":"2013-05-15 06:48:07.000000000","message":"I am not sure that I understand the question.\n\nWhen I try to create a shadow table here there are tests that fail. \n\nI did utils.create_shadow_table(migrate_engine, table\u003dtable)\n\nI am not sure what is expected how and how to proceed. Please advise.","commit_id":"686ec7c1f12cefac690aa457c8bef251c3f29991"},{"author":{"_account_id":838,"name":"Nirmal Ranganathan","email":"rnirmal@gmail.com","username":"rnirmal"},"change_message_id":"047c3031e4b7d756c4d03c3a5256d02a64f03cd1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":34,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":35,"context_line":"        Column(\u0027deleted\u0027, Integer),"},{"line_number":36,"context_line":"        Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":37,"context_line":"        Column(\u0027user_id\u0027, String(length\u003d255)),"},{"line_number":38,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":39,"context_line":"        Column(\u0027uuid\u0027, String(length\u003d36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2Fk4%3D","line":36,"updated":"2013-05-15 10:58:00.000000000","message":"Do we need an integer id and a uuid? Can\u0027t the uuid be primary. I understand most of the other tables have it, but that\u0027s more legacy baggage.","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"85e16743f4bb6c4d0aa8795c6e3e7ace052ebe53","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        Column(\u0027updated_at\u0027, DateTime),"},{"line_number":34,"context_line":"        Column(\u0027deleted_at\u0027, DateTime),"},{"line_number":35,"context_line":"        Column(\u0027deleted\u0027, Integer),"},{"line_number":36,"context_line":"        Column(\u0027id\u0027, Integer, primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":37,"context_line":"        Column(\u0027user_id\u0027, String(length\u003d255)),"},{"line_number":38,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":39,"context_line":"        Column(\u0027uuid\u0027, String(length\u003d36), nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2B4U%3D","line":36,"in_reply_to":"AAAAO3%2F%2F%2Fk4%3D","updated":"2013-05-15 15:59:07.000000000","message":"This is a very good question. My understanding is that it was best to keep the id format. This is due to the soft delete mehod (and it takes less place in the database)","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"d09832a1ed0523565f588f6da1023902dd130d6d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":83,"context_line":"    )"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    tables \u003d [groups, group_metadata, group_policy, group_member]"},{"line_number":86,"context_line":"    # create tables"},{"line_number":87,"context_line":"    for table in tables:"},{"line_number":88,"context_line":"        table.create()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2Bq0%3D","line":85,"updated":"2013-05-15 17:56:56.000000000","message":"I think you will also need shadow_ versions of these tables for db-archiving.  (Boris added a test for that to test_migrations.py, since everyone forgets.  But I\u0027m not sure if it\u0027s in master yet or still being reviewed.)","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f9140641a690bf4436f1f0c806c6562e9a056325","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":83,"context_line":"    )"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    tables \u003d [groups, group_metadata, group_policy, group_member]"},{"line_number":86,"context_line":"    # create tables"},{"line_number":87,"context_line":"    for table in tables:"},{"line_number":88,"context_line":"        table.create()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2Bnc%3D","line":85,"in_reply_to":"AAAAO3%2F%2F%2Bq0%3D","updated":"2013-05-15 18:27:38.000000000","message":"It is still not clear how to do the shadow tables. I ave tried using utils.create_shadow_table(migrate_engine, table\u003dtable)\nbut this does not work. Any ideas?","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"d09832a1ed0523565f588f6da1023902dd130d6d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    group_metadata \u003d Table(\u0027instance_group_metadata\u0027, meta, autoload\u003dTrue)"},{"line_number":113,"context_line":"    group_metadata.drop()"},{"line_number":114,"context_line":"    groups \u003d Table(\u0027instance_groups\u0027, meta, autoload\u003dTrue)"},{"line_number":115,"context_line":"    groups.drop()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2Bqw%3D","line":115,"updated":"2013-05-15 17:56:56.000000000","message":"I think you need a test for this DB migration in test_migrations.py","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"30c5288c6e78fa7322d95db0a511c3b156062c9b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    group_metadata \u003d Table(\u0027instance_group_metadata\u0027, meta, autoload\u003dTrue)"},{"line_number":113,"context_line":"    group_metadata.drop()"},{"line_number":114,"context_line":"    groups \u003d Table(\u0027instance_groups\u0027, meta, autoload\u003dTrue)"},{"line_number":115,"context_line":"    groups.drop()"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2Bn8%3D","line":115,"in_reply_to":"AAAAO3%2F%2F%2Bqw%3D","updated":"2013-05-15 18:23:58.000000000","message":"The migrations tests are called. This code is invoked by the tests","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"e95e22605daec52a02331ec61836dd6d58390ff9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        utils.create_shadow_table(migrate_engine, table\u003dtable)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    indexes \u003d ["},{"line_number":96,"context_line":"        Index(\u0027instance_group_uuid_idx\u0027, groups.c.uuid, unique\u003dTrue),"},{"line_number":97,"context_line":"        Index(\u0027instance_group_metadata_key_idx\u0027, group_metadata.c.key),"},{"line_number":98,"context_line":"        Index(\u0027instance_group_member_instance_idx\u0027,"},{"line_number":99,"context_line":"              group_member.c.instance_id),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAO3%2F%2F83c%3D","line":96,"updated":"2013-05-16 11:20:41.000000000","message":"As I said before UC name convention.. And I think that it is better to add uc on (uuid, deleted) columns..","commit_id":"b384f50620ea7a9bf154b918131321e8cd77ddd5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4fd342a131e16797165032d553d409e2f2250d09","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        utils.create_shadow_table(migrate_engine, table\u003dtable)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    indexes \u003d ["},{"line_number":96,"context_line":"        Index(\u0027instance_group_uuid_idx\u0027, groups.c.uuid, unique\u003dTrue),"},{"line_number":97,"context_line":"        Index(\u0027instance_group_metadata_key_idx\u0027, group_metadata.c.key),"},{"line_number":98,"context_line":"        Index(\u0027instance_group_member_instance_idx\u0027,"},{"line_number":99,"context_line":"              group_member.c.instance_id),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAO3%2F%2F82Y%3D","line":96,"in_reply_to":"AAAAO3%2F%2F83c%3D","updated":"2013-05-16 11:34:45.000000000","message":"Done","commit_id":"b384f50620ea7a9bf154b918131321e8cd77ddd5"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        utils.create_shadow_table(migrate_engine, table\u003dtable)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    # Ensure unique constraints"},{"line_number":103,"context_line":"    t \u003d Table(INSTANCE_GROUPS, meta, autoload\u003dTrue)"},{"line_number":104,"context_line":"    uc \u003d UniqueConstraint(*UUID_COLUMNS, table\u003dt, name\u003dUC_UUID)"},{"line_number":105,"context_line":"    uc.create()"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bis%3D","line":103,"updated":"2013-05-17 11:41:50.000000000","message":"pls put UC in table description and remove 103-105 lines","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        utils.create_shadow_table(migrate_engine, table\u003dtable)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    # Ensure unique constraints"},{"line_number":103,"context_line":"    t \u003d Table(INSTANCE_GROUPS, meta, autoload\u003dTrue)"},{"line_number":104,"context_line":"    uc \u003d UniqueConstraint(*UUID_COLUMNS, table\u003dt, name\u003dUC_UUID)"},{"line_number":105,"context_line":"    uc.create()"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F9gg%3D","line":103,"in_reply_to":"AAAAPH%2F%2F%2Bis%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"}],"nova/db/sqlalchemy/migrate_repo/versions/185_add_instance_groups.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"c9da89741cb854dc5d3fca5622aa85ce4d6191b7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":43,"context_line":"        Column(\u0027uuid\u0027, String(length\u003d36), nullable\u003dFalse),"},{"line_number":44,"context_line":"        Column(\u0027name\u0027, String(length\u003d255)),"},{"line_number":45,"context_line":"        UniqueConstraint(\u0027uuid\u0027, \u0027deleted\u0027, name\u003d\u0027uniq_uuid_x_deleted\u0027),"},{"line_number":46,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":47,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":48,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":41,"id":"AAAAPX%2F%2F1%2Bk%3D","line":45,"updated":"2013-06-07 18:45:55.000000000","message":"we have changed unique constraint name convention, so now it should like look: \n\nuniq_instance_groups0uuid0uuid0deleted\nso the pattern is:\nuniq_t0c10c20c3\nwhere t is table name\nand \nc1, c2, c3 are required columns names","commit_id":"09ab1e2356c7aee37cdece84d393a2aa54aaf82f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dada40767a8de685dc955c53fa6db9af68b22375","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":43,"context_line":"        Column(\u0027uuid\u0027, String(length\u003d36), nullable\u003dFalse),"},{"line_number":44,"context_line":"        Column(\u0027name\u0027, String(length\u003d255)),"},{"line_number":45,"context_line":"        UniqueConstraint(\u0027uuid\u0027, \u0027deleted\u0027, name\u003d\u0027uniq_uuid_x_deleted\u0027),"},{"line_number":46,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":47,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":48,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":41,"id":"AAAAPX%2F%2F0YU%3D","line":45,"in_reply_to":"AAAAPX%2F%2F1%2Bk%3D","updated":"2013-06-09 06:05:03.000000000","message":"Done","commit_id":"09ab1e2356c7aee37cdece84d393a2aa54aaf82f"}],"nova/db/sqlalchemy/migrate_repo/versions/186_add_instance_groups.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"1f29145898505b7a4465c1c4462401bf93e37de7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        Column(\u0027uuid\u0027, String(length\u003d36), nullable\u003dFalse),"},{"line_number":44,"context_line":"        Column(\u0027name\u0027, String(length\u003d255)),"},{"line_number":45,"context_line":"        UniqueConstraint(\u0027uuid\u0027, \u0027deleted\u0027,"},{"line_number":46,"context_line":"                         name\u003d\u0027uniq_instance_groups0uuid0uuid0deleted\u0027),"},{"line_number":47,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":48,"context_line":"        mysql_charset\u003d\u0027utf8\u0027,"},{"line_number":49,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":42,"id":"AAAAPX%2F%2F0T0%3D","line":46,"updated":"2013-06-09 08:01:03.000000000","message":"s/uniq_instance_groups0uuid0uuid0deleted/uniq_instance_groups0uuid0deleted/","commit_id":"8465e7dd237e33d1aa98ea62f2b97ad9077a9718"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":6495,"name":"Senhua Huang","email":"senhua.huang@gmail.com","username":"senhuang"},"change_message_id":"9fbd73c227f627cc3049b42834afcbe695723597","unresolved":false,"context_lines":[{"line_number":996,"context_line":""},{"line_number":997,"context_line":"class InstanceGroupMember(BASE, NovaBase):"},{"line_number":998,"context_line":"    \"\"\"Represents the members for an group.\"\"\""},{"line_number":999,"context_line":"    __tablename__ \u003d \u0027instance_group_member\u0027"},{"line_number":1000,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":1001,"context_line":"    instance_id \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":1002,"context_line":"    group_id \u003d Column(Integer, ForeignKey(\u0027instance_groups.id\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2Fz0%3D","line":999,"updated":"2013-05-16 20:54:27.000000000","message":"typo: an group --\u003e an instance group or a group","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa7b5990c7ac0db2e0c7d1b2e43ae472205c4c9e","unresolved":false,"context_lines":[{"line_number":996,"context_line":""},{"line_number":997,"context_line":"class InstanceGroupMember(BASE, NovaBase):"},{"line_number":998,"context_line":"    \"\"\"Represents the members for an group.\"\"\""},{"line_number":999,"context_line":"    __tablename__ \u003d \u0027instance_group_member\u0027"},{"line_number":1000,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":1001,"context_line":"    instance_id \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":1002,"context_line":"    group_id \u003d Column(Integer, ForeignKey(\u0027instance_groups.id\u0027),"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2B7s%3D","line":999,"in_reply_to":"AAAAPH%2F%2F%2Fz0%3D","updated":"2013-05-17 06:04:36.000000000","message":"Done","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":6495,"name":"Senhua Huang","email":"senhua.huang@gmail.com","username":"senhuang"},"change_message_id":"9fbd73c227f627cc3049b42834afcbe695723597","unresolved":false,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"class InstanceGroupMetadata(BASE, NovaBase):"},{"line_number":1016,"context_line":"    \"\"\"Represents a user-provided metadata key/value pair for an group.\"\"\""},{"line_number":1017,"context_line":"    __tablename__ \u003d \u0027instance_group_metadata\u0027"},{"line_number":1018,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":1019,"context_line":"    key \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":1020,"context_line":"    value \u003d Column(String(255), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2Fzs%3D","line":1017,"updated":"2013-05-16 20:54:27.000000000","message":"typo: an group","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa7b5990c7ac0db2e0c7d1b2e43ae472205c4c9e","unresolved":false,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"class InstanceGroupMetadata(BASE, NovaBase):"},{"line_number":1016,"context_line":"    \"\"\"Represents a user-provided metadata key/value pair for an group.\"\"\""},{"line_number":1017,"context_line":"    __tablename__ \u003d \u0027instance_group_metadata\u0027"},{"line_number":1018,"context_line":"    id \u003d Column(Integer, primary_key\u003dTrue, nullable\u003dFalse)"},{"line_number":1019,"context_line":"    key \u003d Column(String(255), nullable\u003dFalse)"},{"line_number":1020,"context_line":"    value \u003d Column(String(255), nullable\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2B7Y%3D","line":1017,"in_reply_to":"AAAAPH%2F%2F%2Fzs%3D","updated":"2013-05-17 06:04:36.000000000","message":"Done","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":6495,"name":"Senhua Huang","email":"senhua.huang@gmail.com","username":"senhuang"},"change_message_id":"9fbd73c227f627cc3049b42834afcbe695723597","unresolved":false,"context_lines":[{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"class InstanceGroup(BASE, NovaBase):"},{"line_number":1026,"context_line":"    \"\"\"Represents a instance grouping."},{"line_number":1027,"context_line":""},{"line_number":1028,"context_line":"    A group will maintain a collection of instances and the relationship"},{"line_number":1029,"context_line":"    between them."},{"line_number":1030,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2Fzk%3D","line":1027,"updated":"2013-05-16 20:54:27.000000000","message":"typo: a instance grouping.","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"fa7b5990c7ac0db2e0c7d1b2e43ae472205c4c9e","unresolved":false,"context_lines":[{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"class InstanceGroup(BASE, NovaBase):"},{"line_number":1026,"context_line":"    \"\"\"Represents a instance grouping."},{"line_number":1027,"context_line":""},{"line_number":1028,"context_line":"    A group will maintain a collection of instances and the relationship"},{"line_number":1029,"context_line":"    between them."},{"line_number":1030,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAPH%2F%2F%2B7U%3D","line":1027,"in_reply_to":"AAAAPH%2F%2F%2Fzk%3D","updated":"2013-05-17 06:04:36.000000000","message":"Done","commit_id":"589c558caf00445da6bfe8a737ccbf7f4c735a0c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"    project_id \u003d Column(String(255))"},{"line_number":1037,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":1038,"context_line":"    name \u003d Column(String(255))"},{"line_number":1039,"context_line":"    _policies \u003d relationship(InstanceGroupPolicy, primaryjoin\u003d\u0027and_(\u0027"},{"line_number":1040,"context_line":"        \u0027InstanceGroup.id \u003d\u003d InstanceGroupPolicy.group_id,\u0027"},{"line_number":1041,"context_line":"        \u0027InstanceGroupPolicy.deleted \u003d\u003d 0,\u0027"},{"line_number":1042,"context_line":"        \u0027InstanceGroup.deleted \u003d\u003d 0)\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2Bk8%3D","line":1039,"updated":"2013-05-17 11:41:50.000000000","message":"probably it should be called policies instead of _policies. Then it will look same as in other places.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":1036,"context_line":"    project_id \u003d Column(String(255))"},{"line_number":1037,"context_line":"    uuid \u003d Column(String(36), nullable\u003dFalse)"},{"line_number":1038,"context_line":"    name \u003d Column(String(255))"},{"line_number":1039,"context_line":"    _policies \u003d relationship(InstanceGroupPolicy, primaryjoin\u003d\u0027and_(\u0027"},{"line_number":1040,"context_line":"        \u0027InstanceGroup.id \u003d\u003d InstanceGroupPolicy.group_id,\u0027"},{"line_number":1041,"context_line":"        \u0027InstanceGroupPolicy.deleted \u003d\u003d 0,\u0027"},{"line_number":1042,"context_line":"        \u0027InstanceGroup.deleted \u003d\u003d 0)\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BEE%3D","line":1039,"in_reply_to":"AAAAPH%2F%2F%2Bk8%3D","updated":"2013-05-17 18:17:01.000000000","message":"why. please look below at the policies in line 1053.\nwhy does that not suffice?","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"d4f45eed706e85f5e20a1597f8cd75a5de9994a9","unresolved":false,"context_lines":[{"line_number":1056,"context_line":""},{"line_number":1057,"context_line":"    @property"},{"line_number":1058,"context_line":"    def metadetails(self):"},{"line_number":1059,"context_line":"        return dict([(m.key, m.value) for m in self._metadata])"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"    @property"},{"line_number":1062,"context_line":"    def members(self):"}],"source_content_type":"text/x-python","patch_set":41,"id":"AAAAPX%2F%2F5Dc%3D","line":1059,"updated":"2013-06-06 16:43:09.000000000","message":"This one also can be converted to a generator comprehension.  (femtonit)","commit_id":"09ab1e2356c7aee37cdece84d393a2aa54aaf82f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"dada40767a8de685dc955c53fa6db9af68b22375","unresolved":false,"context_lines":[{"line_number":1056,"context_line":""},{"line_number":1057,"context_line":"    @property"},{"line_number":1058,"context_line":"    def metadetails(self):"},{"line_number":1059,"context_line":"        return dict([(m.key, m.value) for m in self._metadata])"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"    @property"},{"line_number":1062,"context_line":"    def members(self):"}],"source_content_type":"text/x-python","patch_set":41,"id":"AAAAPX%2F%2F0YQ%3D","line":1059,"in_reply_to":"AAAAPX%2F%2F5Dc%3D","updated":"2013-06-09 06:05:03.000000000","message":"Done","commit_id":"09ab1e2356c7aee37cdece84d393a2aa54aaf82f"}],"nova/tests/test_db_api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5c5f2d4753db6e17e9e5feefa979b054c4c09767","unresolved":false,"context_lines":[{"line_number":3829,"context_line":"    def test_instance_group_create_no_key(self):"},{"line_number":3830,"context_line":"        values \u003d self._get_default_values()"},{"line_number":3831,"context_line":"        result \u003d self._create_instance_group(self.context, values)"},{"line_number":3832,"context_line":"        self.assertEquals(result[\u0027name\u0027], \u0027fake_name\u0027)"},{"line_number":3833,"context_line":"        self.assertEquals(result[\u0027user_id\u0027], \u0027fake_user\u0027)"},{"line_number":3834,"context_line":"        self.assertEquals(result[\u0027project_id\u0027], \u0027fake_project\u0027)"},{"line_number":3835,"context_line":"        self.assertTrue(uuidutils.is_uuid_like(result[\u0027uuid\u0027]))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAOn%2F%2FUhI%3D","line":3832,"updated":"2013-05-14 19:14:42.000000000","message":"To avoid 100500 of assertation there is ModelsObjectComparatorMixin (in this file)","commit_id":"686ec7c1f12cefac690aa457c8bef251c3f29991"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ef20431707b740f95e2c4d4a5e511c580711a5b3","unresolved":false,"context_lines":[{"line_number":3829,"context_line":"    def test_instance_group_create_no_key(self):"},{"line_number":3830,"context_line":"        values \u003d self._get_default_values()"},{"line_number":3831,"context_line":"        result \u003d self._create_instance_group(self.context, values)"},{"line_number":3832,"context_line":"        self.assertEquals(result[\u0027name\u0027], \u0027fake_name\u0027)"},{"line_number":3833,"context_line":"        self.assertEquals(result[\u0027user_id\u0027], \u0027fake_user\u0027)"},{"line_number":3834,"context_line":"        self.assertEquals(result[\u0027project_id\u0027], \u0027fake_project\u0027)"},{"line_number":3835,"context_line":"        self.assertTrue(uuidutils.is_uuid_like(result[\u0027uuid\u0027]))"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAO3%2F%2F%2F5U%3D","line":3832,"in_reply_to":"AAAAOn%2F%2FUhI%3D","updated":"2013-05-15 06:48:07.000000000","message":"Done\n\nActually found a little bug with this ;)","commit_id":"686ec7c1f12cefac690aa457c8bef251c3f29991"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5c5f2d4753db6e17e9e5feefa979b054c4c09767","unresolved":false,"context_lines":[{"line_number":3838,"context_line":"        values \u003d self._get_default_values()"},{"line_number":3839,"context_line":"        values[\u0027uuid\u0027] \u003d \u0027fake_id\u0027"},{"line_number":3840,"context_line":"        result \u003d self._create_instance_group(self.context, values)"},{"line_number":3841,"context_line":"        self.assertEquals(result[\u0027name\u0027], \u0027fake_name\u0027)"},{"line_number":3842,"context_line":"        self.assertEquals(result[\u0027user_id\u0027], \u0027fake_user\u0027)"},{"line_number":3843,"context_line":"        self.assertEquals(result[\u0027project_id\u0027], \u0027fake_project\u0027)"},{"line_number":3844,"context_line":"        self.assertEquals(result[\u0027uuid\u0027], \u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAOn%2F%2FUhE%3D","line":3841,"updated":"2013-05-14 19:14:42.000000000","message":"here also, and all tests under also","commit_id":"686ec7c1f12cefac690aa457c8bef251c3f29991"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"ef20431707b740f95e2c4d4a5e511c580711a5b3","unresolved":false,"context_lines":[{"line_number":3838,"context_line":"        values \u003d self._get_default_values()"},{"line_number":3839,"context_line":"        values[\u0027uuid\u0027] \u003d \u0027fake_id\u0027"},{"line_number":3840,"context_line":"        result \u003d self._create_instance_group(self.context, values)"},{"line_number":3841,"context_line":"        self.assertEquals(result[\u0027name\u0027], \u0027fake_name\u0027)"},{"line_number":3842,"context_line":"        self.assertEquals(result[\u0027user_id\u0027], \u0027fake_user\u0027)"},{"line_number":3843,"context_line":"        self.assertEquals(result[\u0027project_id\u0027], \u0027fake_project\u0027)"},{"line_number":3844,"context_line":"        self.assertEquals(result[\u0027uuid\u0027], \u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAO3%2F%2F%2F5Q%3D","line":3841,"in_reply_to":"AAAAOn%2F%2FUhE%3D","updated":"2013-05-15 06:48:07.000000000","message":"Done","commit_id":"686ec7c1f12cefac690aa457c8bef251c3f29991"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"d09832a1ed0523565f588f6da1023902dd130d6d","unresolved":false,"context_lines":[{"line_number":4086,"context_line":"        result_policies \u003d result[\u0027policies\u0027]"},{"line_number":4087,"context_line":"        self.assertEquals(1, len(result_policies))"},{"line_number":4088,"context_line":"        self.assertEquals(result_policies[0], \u0027policy1\u0027)"},{"line_number":4089,"context_line":"        # test inavlid ID"},{"line_number":4090,"context_line":"        self.assertRaises(exception.InstanceGroupNotFound,"},{"line_number":4091,"context_line":"                          db.instance_group_update, self.context,"},{"line_number":4092,"context_line":"                          \u0027invalid_id\u0027, values)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2Bro%3D","line":4089,"updated":"2013-05-15 17:56:56.000000000","message":"typo","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f9140641a690bf4436f1f0c806c6562e9a056325","unresolved":false,"context_lines":[{"line_number":4086,"context_line":"        result_policies \u003d result[\u0027policies\u0027]"},{"line_number":4087,"context_line":"        self.assertEquals(1, len(result_policies))"},{"line_number":4088,"context_line":"        self.assertEquals(result_policies[0], \u0027policy1\u0027)"},{"line_number":4089,"context_line":"        # test inavlid ID"},{"line_number":4090,"context_line":"        self.assertRaises(exception.InstanceGroupNotFound,"},{"line_number":4091,"context_line":"                          db.instance_group_update, self.context,"},{"line_number":4092,"context_line":"                          \u0027invalid_id\u0027, values)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAO3%2F%2F%2BnY%3D","line":4089,"in_reply_to":"AAAAO3%2F%2F%2Bro%3D","updated":"2013-05-15 18:27:38.000000000","message":"Done","commit_id":"adc2e43f092052ae532acc043039820b323df79c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":4134,"context_line":"        self.assertEqual(num, 1)"},{"line_number":4135,"context_line":""},{"line_number":4136,"context_line":""},{"line_number":4137,"context_line":"class InstanceGroupDBApiTestCase(test.TestCase, ModelsObjectComparatorMixin):"},{"line_number":4138,"context_line":"    def setUp(self):"},{"line_number":4139,"context_line":"        super(InstanceGroupDBApiTestCase, self).setUp()"},{"line_number":4140,"context_line":"        self.user_id \u003d \u0027fake_user\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BlE%3D","line":4137,"updated":"2013-05-17 11:41:50.000000000","message":"pls split tests in 4 classes:\n\nInstanceGroupTestCase\nInstanceGroupPoliciesTestCase\nInstanceGroupMembers TestCase\nand for Metadata","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":4134,"context_line":"        self.assertEqual(num, 1)"},{"line_number":4135,"context_line":""},{"line_number":4136,"context_line":""},{"line_number":4137,"context_line":"class InstanceGroupDBApiTestCase(test.TestCase, ModelsObjectComparatorMixin):"},{"line_number":4138,"context_line":"    def setUp(self):"},{"line_number":4139,"context_line":"        super(InstanceGroupDBApiTestCase, self).setUp()"},{"line_number":4140,"context_line":"        self.user_id \u003d \u0027fake_user\u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F91k%3D","line":4137,"in_reply_to":"AAAAPH%2F%2F%2BlE%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done\n\nPersonally I think that this is an overkill.","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4210,"context_line":"        values \u003d self._get_default_values()"},{"line_number":4211,"context_line":"        result \u003d self._create_instance_group(self.context, values)"},{"line_number":4212,"context_line":"        groups \u003d db.instance_group_get_all(self.context)"},{"line_number":4213,"context_line":"        self.assertEquals(2, len(groups))"},{"line_number":4214,"context_line":""},{"line_number":4215,"context_line":"    def test_instance_group_get_all_by_project_id(self):"},{"line_number":4216,"context_line":"        groups \u003d db.instance_group_get_all_by_project_id(self.context,"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7iI%3D","line":4213,"updated":"2013-05-19 17:46:22.000000000","message":"nits:\nI would prefer to see here usage of _assertEqualListOfObjects instead of comparing only len","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4210,"context_line":"        values \u003d self._get_default_values()"},{"line_number":4211,"context_line":"        result \u003d self._create_instance_group(self.context, values)"},{"line_number":4212,"context_line":"        groups \u003d db.instance_group_get_all(self.context)"},{"line_number":4213,"context_line":"        self.assertEquals(2, len(groups))"},{"line_number":4214,"context_line":""},{"line_number":4215,"context_line":"    def test_instance_group_get_all_by_project_id(self):"},{"line_number":4216,"context_line":"        groups \u003d db.instance_group_get_all_by_project_id(self.context,"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7Gg%3D","line":4213,"in_reply_to":"AAAAPH%2F%2F7iI%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4230,"context_line":"        for project_id in project_ids:"},{"line_number":4231,"context_line":"            groups \u003d db.instance_group_get_all_by_project_id(self.context,"},{"line_number":4232,"context_line":"                                                             project_id)"},{"line_number":4233,"context_line":"            self.assertEquals(1, len(groups))"},{"line_number":4234,"context_line":""},{"line_number":4235,"context_line":"    def test_instance_group_update(self):"},{"line_number":4236,"context_line":"        values \u003d self._get_default_values()"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7iE%3D","line":4233,"updated":"2013-05-19 17:46:22.000000000","message":"ditto","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4230,"context_line":"        for project_id in project_ids:"},{"line_number":4231,"context_line":"            groups \u003d db.instance_group_get_all_by_project_id(self.context,"},{"line_number":4232,"context_line":"                                                             project_id)"},{"line_number":4233,"context_line":"            self.assertEquals(1, len(groups))"},{"line_number":4234,"context_line":""},{"line_number":4235,"context_line":"    def test_instance_group_update(self):"},{"line_number":4236,"context_line":"        values \u003d self._get_default_values()"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7GM%3D","line":4233,"in_reply_to":"AAAAPH%2F%2F7iE%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4254,"context_line":"        result \u003d db.instance_group_get(self.context, id)"},{"line_number":4255,"context_line":"        metadata \u003d result[\u0027metadetails\u0027]"},{"line_number":4256,"context_line":"        self.assertEquals(metadata[\u0027key11\u0027], \u0027value1\u0027)"},{"line_number":4257,"context_line":"        self.assertEquals(metadata[\u0027key12\u0027], \u0027value2\u0027)"},{"line_number":4258,"context_line":"        # update update members"},{"line_number":4259,"context_line":"        values \u003d self._get_default_values()"},{"line_number":4260,"context_line":"        members \u003d [\u0027instance_id1\u0027, \u0027instance_id2\u0027]"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7iA%3D","line":4257,"updated":"2013-05-19 17:46:22.000000000","message":"use _assertEqualObjects","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4254,"context_line":"        result \u003d db.instance_group_get(self.context, id)"},{"line_number":4255,"context_line":"        metadata \u003d result[\u0027metadetails\u0027]"},{"line_number":4256,"context_line":"        self.assertEquals(metadata[\u0027key11\u0027], \u0027value1\u0027)"},{"line_number":4257,"context_line":"        self.assertEquals(metadata[\u0027key12\u0027], \u0027value2\u0027)"},{"line_number":4258,"context_line":"        # update update members"},{"line_number":4259,"context_line":"        values \u003d self._get_default_values()"},{"line_number":4260,"context_line":"        members \u003d [\u0027instance_id1\u0027, \u0027instance_id2\u0027]"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7FU%3D","line":4257,"in_reply_to":"AAAAPH%2F%2F7iA%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4261,"context_line":"        values[\u0027members\u0027] \u003d members"},{"line_number":4262,"context_line":"        db.instance_group_update(self.context, id, values)"},{"line_number":4263,"context_line":"        result \u003d db.instance_group_get(self.context, id)"},{"line_number":4264,"context_line":"        result_members \u003d result[\u0027members\u0027]"},{"line_number":4265,"context_line":"        self.assertEquals(2, len(result_members))"},{"line_number":4266,"context_line":"        self.assertIn(result_members[0], members)"},{"line_number":4267,"context_line":"        self.assertIn(result_members[1], members)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7h8%3D","line":4264,"updated":"2013-05-19 17:46:22.000000000","message":"why not _assertEqualListsOfPrimitivesAsSets(result[\u0027members\u0027], members) ?","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4261,"context_line":"        values[\u0027members\u0027] \u003d members"},{"line_number":4262,"context_line":"        db.instance_group_update(self.context, id, values)"},{"line_number":4263,"context_line":"        result \u003d db.instance_group_get(self.context, id)"},{"line_number":4264,"context_line":"        result_members \u003d result[\u0027members\u0027]"},{"line_number":4265,"context_line":"        self.assertEquals(2, len(result_members))"},{"line_number":4266,"context_line":"        self.assertIn(result_members[0], members)"},{"line_number":4267,"context_line":"        self.assertIn(result_members[1], members)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7FE%3D","line":4264,"in_reply_to":"AAAAPH%2F%2F7h8%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4271,"context_line":"        values[\u0027policies\u0027] \u003d policies"},{"line_number":4272,"context_line":"        db.instance_group_update(self.context, id, values)"},{"line_number":4273,"context_line":"        result \u003d db.instance_group_get(self.context, id)"},{"line_number":4274,"context_line":"        result_policies \u003d result[\u0027policies\u0027]"},{"line_number":4275,"context_line":"        self.assertEquals(1, len(result_policies))"},{"line_number":4276,"context_line":"        self.assertEquals(result_policies[0], \u0027policy1\u0027)"},{"line_number":4277,"context_line":"        # test invalid ID"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7h4%3D","line":4274,"updated":"2013-05-19 17:46:22.000000000","message":"ditto","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4271,"context_line":"        values[\u0027policies\u0027] \u003d policies"},{"line_number":4272,"context_line":"        db.instance_group_update(self.context, id, values)"},{"line_number":4273,"context_line":"        result \u003d db.instance_group_get(self.context, id)"},{"line_number":4274,"context_line":"        result_policies \u003d result[\u0027policies\u0027]"},{"line_number":4275,"context_line":"        self.assertEquals(1, len(result_policies))"},{"line_number":4276,"context_line":"        self.assertEquals(result_policies[0], \u0027policy1\u0027)"},{"line_number":4277,"context_line":"        # test invalid ID"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7FA%3D","line":4274,"in_reply_to":"AAAAPH%2F%2F7h4%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4292,"context_line":"                        \u0027created_at\u0027]"},{"line_number":4293,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":4294,"context_line":"        metadata \u003d result[\u0027metadetails\u0027]"},{"line_number":4295,"context_line":"        self.assertEquals(metadata[\u0027key11\u0027], \u0027value1\u0027)"},{"line_number":4296,"context_line":"        self.assertEquals(metadata[\u0027key12\u0027], \u0027value2\u0027)"},{"line_number":4297,"context_line":""},{"line_number":4298,"context_line":"    def test_instance_group_metadata(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7h0%3D","line":4295,"updated":"2013-05-19 17:46:22.000000000","message":"use _assertEqualObjects, .","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4292,"context_line":"                        \u0027created_at\u0027]"},{"line_number":4293,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":4294,"context_line":"        metadata \u003d result[\u0027metadetails\u0027]"},{"line_number":4295,"context_line":"        self.assertEquals(metadata[\u0027key11\u0027], \u0027value1\u0027)"},{"line_number":4296,"context_line":"        self.assertEquals(metadata[\u0027key12\u0027], \u0027value2\u0027)"},{"line_number":4297,"context_line":""},{"line_number":4298,"context_line":"    def test_instance_group_metadata(self):"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7E8%3D","line":4295,"in_reply_to":"AAAAPH%2F%2F7h0%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4351,"context_line":"                        \u0027created_at\u0027]"},{"line_number":4352,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":4353,"context_line":"        result_members \u003d result[\u0027members\u0027]"},{"line_number":4354,"context_line":"        self.assertEquals(2, len(result_members))"},{"line_number":4355,"context_line":"        self.assertIn(result_members[0], members)"},{"line_number":4356,"context_line":"        self.assertIn(result_members[1], members)"},{"line_number":4357,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7hs%3D","line":4354,"updated":"2013-05-19 17:46:22.000000000","message":"use _assertEqualListsOfPrimitivesAsSets","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4351,"context_line":"                        \u0027created_at\u0027]"},{"line_number":4352,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":4353,"context_line":"        result_members \u003d result[\u0027members\u0027]"},{"line_number":4354,"context_line":"        self.assertEquals(2, len(result_members))"},{"line_number":4355,"context_line":"        self.assertIn(result_members[0], members)"},{"line_number":4356,"context_line":"        self.assertIn(result_members[1], members)"},{"line_number":4357,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7Eg%3D","line":4354,"in_reply_to":"AAAAPH%2F%2F7hs%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4365,"context_line":"        members \u003d [\u0027instance_id1\u0027, \u0027instance_id2\u0027]"},{"line_number":4366,"context_line":"        db.instance_group_members_add(self.context, id, members)"},{"line_number":4367,"context_line":"        members \u003d db.instance_group_members_get(self.context, id)"},{"line_number":4368,"context_line":"        self.assertIn(\u0027instance_id1\u0027, members)"},{"line_number":4369,"context_line":"        self.assertIn(\u0027instance_id2\u0027, members)"},{"line_number":4370,"context_line":"        # check add with existing keys"},{"line_number":4371,"context_line":"        members \u003d [\u0027instance_id1\u0027, \u0027instance_id2\u0027, \u0027instance_id3\u0027]"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7ho%3D","line":4368,"updated":"2013-05-19 17:46:22.000000000","message":"use _assertEqualListsOfPrimitivesAsSets","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4365,"context_line":"        members \u003d [\u0027instance_id1\u0027, \u0027instance_id2\u0027]"},{"line_number":4366,"context_line":"        db.instance_group_members_add(self.context, id, members)"},{"line_number":4367,"context_line":"        members \u003d db.instance_group_members_get(self.context, id)"},{"line_number":4368,"context_line":"        self.assertIn(\u0027instance_id1\u0027, members)"},{"line_number":4369,"context_line":"        self.assertIn(\u0027instance_id2\u0027, members)"},{"line_number":4370,"context_line":"        # check add with existing keys"},{"line_number":4371,"context_line":"        members \u003d [\u0027instance_id1\u0027, \u0027instance_id2\u0027, \u0027instance_id3\u0027]"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7Ec%3D","line":4368,"in_reply_to":"AAAAPH%2F%2F7ho%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4373,"context_line":"        members \u003d db.instance_group_members_get(self.context, id)"},{"line_number":4374,"context_line":"        self.assertIn(\u0027instance_id3\u0027, members)"},{"line_number":4375,"context_line":"        for instance_id in members:"},{"line_number":4376,"context_line":"            db.instance_group_member_delete(self.context, id, instance_id)"},{"line_number":4377,"context_line":"        members \u003d db.instance_group_members_get(self.context, id)"},{"line_number":4378,"context_line":"        self.assertEquals(members, [])"},{"line_number":4379,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7hk%3D","line":4376,"updated":"2013-05-19 17:46:22.000000000","message":"this could be improved if you will check that members are ok on each step of this loop.\nand use pls _assertEqualListsOfPrimitivesAsSets","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4373,"context_line":"        members \u003d db.instance_group_members_get(self.context, id)"},{"line_number":4374,"context_line":"        self.assertIn(\u0027instance_id3\u0027, members)"},{"line_number":4375,"context_line":"        for instance_id in members:"},{"line_number":4376,"context_line":"            db.instance_group_member_delete(self.context, id, instance_id)"},{"line_number":4377,"context_line":"        members \u003d db.instance_group_members_get(self.context, id)"},{"line_number":4378,"context_line":"        self.assertEquals(members, [])"},{"line_number":4379,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7EE%3D","line":4376,"in_reply_to":"AAAAPH%2F%2F7hk%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4405,"context_line":"                        \u0027created_at\u0027]"},{"line_number":4406,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":4407,"context_line":"        result_policies \u003d result[\u0027policies\u0027]"},{"line_number":4408,"context_line":"        self.assertEquals(2, len(result_policies))"},{"line_number":4409,"context_line":"        self.assertIn(result_policies[0], policies)"},{"line_number":4410,"context_line":"        self.assertIn(result_policies[1], policies)"},{"line_number":4411,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7hg%3D","line":4408,"updated":"2013-05-19 17:46:22.000000000","message":"use _assertEqualListsOfPrimitivesAsSets","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4405,"context_line":"                        \u0027created_at\u0027]"},{"line_number":4406,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":4407,"context_line":"        result_policies \u003d result[\u0027policies\u0027]"},{"line_number":4408,"context_line":"        self.assertEquals(2, len(result_policies))"},{"line_number":4409,"context_line":"        self.assertIn(result_policies[0], policies)"},{"line_number":4410,"context_line":"        self.assertIn(result_policies[1], policies)"},{"line_number":4411,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7EA%3D","line":4408,"in_reply_to":"AAAAPH%2F%2F7hg%3D","updated":"2013-05-20 07:30:18.000000000","message":"Done","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"5150223175e8aaf1d28eb84ccaf1ce899aee9930","unresolved":false,"context_lines":[{"line_number":4409,"context_line":"        self.assertIn(result_policies[0], policies)"},{"line_number":4410,"context_line":"        self.assertIn(result_policies[1], policies)"},{"line_number":4411,"context_line":""},{"line_number":4412,"context_line":"    def test_instance_group_policies(self):"},{"line_number":4413,"context_line":"        values \u003d self._get_default_values()"},{"line_number":4414,"context_line":"        values[\u0027uuid\u0027] \u003d \u0027fake_id\u0027"},{"line_number":4415,"context_line":"        result \u003d self._create_instance_group(self.context, values)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7hc%3D","line":4412,"updated":"2013-05-19 17:46:22.000000000","message":"this is really nits and I will be ok if you don\u0027t change it, but probably you should split this method to:\n\ntest_instance_group_policies_add\nand\ntest_instance_group_policies_get\n\nand for other TestCases make the same..","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5fc7bf78285288ab85395a7f9b9e978a8060465","unresolved":false,"context_lines":[{"line_number":4409,"context_line":"        self.assertIn(result_policies[0], policies)"},{"line_number":4410,"context_line":"        self.assertIn(result_policies[1], policies)"},{"line_number":4411,"context_line":""},{"line_number":4412,"context_line":"    def test_instance_group_policies(self):"},{"line_number":4413,"context_line":"        values \u003d self._get_default_values()"},{"line_number":4414,"context_line":"        values[\u0027uuid\u0027] \u003d \u0027fake_id\u0027"},{"line_number":4415,"context_line":"        result \u003d self._create_instance_group(self.context, values)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAPH%2F%2F7D0%3D","line":4412,"in_reply_to":"AAAAPH%2F%2F7hc%3D","updated":"2013-05-20 07:30:18.000000000","message":"The method checks the addition, update and deletion of policies.\n\nI have now split these into three smaller functions. This is starting to get a bit picky with all of these nits.\n\nEvery line of the code added has been addressed by each test case.","commit_id":"68f5df2970adbecdea435368326bdd660dcf26d8"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"bbdad35953d502bbd38462eaf99b025f3261cb67","unresolved":false,"context_lines":[{"line_number":5008,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":5009,"context_line":"        self._assertEqualObjects(metadata, result[\u0027metadetails\u0027])"},{"line_number":5010,"context_line":""},{"line_number":5011,"context_line":"    def test_instance_group_metadatai_add(self):"},{"line_number":5012,"context_line":"        values \u003d self._get_default_values()"},{"line_number":5013,"context_line":"        values[\u0027uuid\u0027] \u003d \u0027fake_id\u0027"},{"line_number":5014,"context_line":"        result \u003d self._create_instance_group(self.context, values)"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAPH%2F%2FgQM%3D","line":5011,"updated":"2013-05-31 18:09:02.000000000","message":"assume this was just supposed to be \u0027metadata_add\u0027... there\u0027s an extra \u0027i\u0027 in there.","commit_id":"9a1fe8c0f1200d4b40b338a4851438bdd813f23f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7b3fa7b3bde3c376fb82c74e4eb24d0aa9dc1f2e","unresolved":false,"context_lines":[{"line_number":5008,"context_line":"        self._assertEqualObjects(result, values, ignored_keys)"},{"line_number":5009,"context_line":"        self._assertEqualObjects(metadata, result[\u0027metadetails\u0027])"},{"line_number":5010,"context_line":""},{"line_number":5011,"context_line":"    def test_instance_group_metadatai_add(self):"},{"line_number":5012,"context_line":"        values \u003d self._get_default_values()"},{"line_number":5013,"context_line":"        values[\u0027uuid\u0027] \u003d \u0027fake_id\u0027"},{"line_number":5014,"context_line":"        result \u003d self._create_instance_group(self.context, values)"}],"source_content_type":"text/x-python","patch_set":32,"id":"AAAAPH%2F%2Fe7g%3D","line":5011,"in_reply_to":"AAAAPH%2F%2FgQM%3D","updated":"2013-06-01 15:14:49.000000000","message":"Done","commit_id":"9a1fe8c0f1200d4b40b338a4851438bdd813f23f"}],"nova/tests/test_migrations.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"4451c557cd5a5598c548b20dbc55ec349225756c","unresolved":false,"context_lines":[{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":"    # addition of the vm instance groups"},{"line_number":1333,"context_line":"    def _pre_upgrade_180(self, engine):"},{"line_number":1334,"context_line":"        self.assertRaises(sqlalchemy.exc.NoSuchTableError,"},{"line_number":1335,"context_line":"                          db_utils.get_table, engine, \u0027instance_groups\u0027)"},{"line_number":1336,"context_line":""},{"line_number":1337,"context_line":"    def _check_180(self, engine, data):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BlU%3D","line":1334,"updated":"2013-05-17 11:41:50.000000000","message":"you are creating 4 tables, so you should check it all","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d930abfbf8b5e1baf664148806cbf2c6f839c53d","unresolved":false,"context_lines":[{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":"    # addition of the vm instance groups"},{"line_number":1333,"context_line":"    def _pre_upgrade_180(self, engine):"},{"line_number":1334,"context_line":"        self.assertRaises(sqlalchemy.exc.NoSuchTableError,"},{"line_number":1335,"context_line":"                          db_utils.get_table, engine, \u0027instance_groups\u0027)"},{"line_number":1336,"context_line":""},{"line_number":1337,"context_line":"    def _check_180(self, engine, data):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAPH%2F%2F%2BDs%3D","line":1334,"in_reply_to":"AAAAPH%2F%2F%2BlU%3D","updated":"2013-05-17 18:17:01.000000000","message":"Done","commit_id":"836f4f6a1397195caad06044357ac3e3bc3bd1fb"}]}
