)]}'
{"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"e3f295703ef325aa6a99f1b22481d6cb7eefef58","unresolved":false,"context_lines":[{"line_number":3282,"context_line":"    {\u0027extra_specs\u0027 : {\u0027k1\u0027: \u0027v1\u0027, \u0027k2\u0027: \u0027v2\u0027, ...}}"},{"line_number":3283,"context_line":""},{"line_number":3284,"context_line":"    \"\"\""},{"line_number":3285,"context_line":"    try:"},{"line_number":3286,"context_line":"        specs \u003d values.get(\u0027extra_specs\u0027)"},{"line_number":3287,"context_line":"        specs_refs \u003d []"},{"line_number":3288,"context_line":"        if specs:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8yA%3D","side":"PARENT","line":3285,"updated":"2011-10-13 00:42:45.000000000","message":"Yeah, kind of odd.  \u0027name\u0027 is a unique key.  \u0027flavorid\u0027 is unique now... although your migration removes it (by accident, i assume) (see comment in your migration).\n\nThe one reason I can think of is to return a better error than letting the \u0027save()\u0027 generate a generic DBError().  Note that it\u0027s kind of pointless to have the above checks because there\u0027s a race condition anyway.  One can sneak in a duplicate name name in another request between the above checks and the below save().\n\nI\u0027m okay with the checks staying for now, since you have that TODO there (and it looks like you merely moved them, anyway)... but they probably should go away in favor of figuring out how to return an InstanceTypeExists exception if the save() fails due to entry already existing.  I\u0027m mostly just rambling here, because I realize this call probably really only comes from an admin using nova-manage.","commit_id":"f5f429bac6446db084ca3f5d86c64127a1e539f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"a8862527931e270f5e2766e95e40198a82179c54","unresolved":false,"context_lines":[{"line_number":3282,"context_line":"    {\u0027extra_specs\u0027 : {\u0027k1\u0027: \u0027v1\u0027, \u0027k2\u0027: \u0027v2\u0027, ...}}"},{"line_number":3283,"context_line":""},{"line_number":3284,"context_line":"    \"\"\""},{"line_number":3285,"context_line":"    try:"},{"line_number":3286,"context_line":"        specs \u003d values.get(\u0027extra_specs\u0027)"},{"line_number":3287,"context_line":"        specs_refs \u003d []"},{"line_number":3288,"context_line":"        if specs:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8xI%3D","side":"PARENT","line":3285,"in_reply_to":"AAAACX%2F%2F8yA%3D","updated":"2011-10-13 01:13:24.000000000","message":"So I added this because my migration broke the uniqueness constraints. Not sure why. I could really use some help figuring that out.","commit_id":"f5f429bac6446db084ca3f5d86c64127a1e539f2"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"e3f295703ef325aa6a99f1b22481d6cb7eefef58","unresolved":false,"context_lines":[{"line_number":3390,"context_line":"                                    filter_by(flavorid\u003did).\\"},{"line_number":3391,"context_line":"                                    first()"},{"line_number":3392,"context_line":"    if not inst_type:"},{"line_number":3393,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003did)"},{"line_number":3394,"context_line":"    else:"},{"line_number":3395,"context_line":"        return _dict_with_extra_specs(inst_type)"},{"line_number":3396,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8yQ%3D","line":3393,"updated":"2011-10-13 00:42:45.000000000","message":"I would have just renamed \u0027id\u0027 to \u0027flavor_id\u0027 as the arg, because this use of \u0027id\u0027 when it\u0027s a built-in is annoying to me.  But, it exists everywhere else.. so I\u0027ll ignore.","commit_id":"55d61c6c679ac1c2779d894d2b5427b97b19479e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"a8862527931e270f5e2766e95e40198a82179c54","unresolved":false,"context_lines":[{"line_number":3390,"context_line":"                                    filter_by(flavorid\u003did).\\"},{"line_number":3391,"context_line":"                                    first()"},{"line_number":3392,"context_line":"    if not inst_type:"},{"line_number":3393,"context_line":"        raise exception.FlavorNotFound(flavor_id\u003did)"},{"line_number":3394,"context_line":"    else:"},{"line_number":3395,"context_line":"        return _dict_with_extra_specs(inst_type)"},{"line_number":3396,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8xc%3D","line":3393,"in_reply_to":"AAAACX%2F%2F8yQ%3D","updated":"2011-10-13 01:13:24.000000000","message":"I would prefer to do this right. Fixed :)","commit_id":"55d61c6c679ac1c2779d894d2b5427b97b19479e"}],"nova/db/sqlalchemy/migrate_repo/versions/054_convert_flavor_id_to_str.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"e3f295703ef325aa6a99f1b22481d6cb7eefef58","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":9,"context_line":"    instance_types \u003d Table(\u0027instance_types\u0027, meta, autoload\u003dTrue)"},{"line_number":10,"context_line":"    string_column \u003d Column(\u0027flavorid_str\u0027, String(255))"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    string_column.create(instance_types)"},{"line_number":13,"context_line":"    integer_column \u003d instance_types.c.flavorid"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8yM%3D","line":11,"updated":"2011-10-13 00:42:45.000000000","message":"\u0027flavorid\u0027 is currently a unique key.  Shouldn\u0027t the replacement column also be unique?","commit_id":"55d61c6c679ac1c2779d894d2b5427b97b19479e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"a8862527931e270f5e2766e95e40198a82179c54","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":9,"context_line":"    instance_types \u003d Table(\u0027instance_types\u0027, meta, autoload\u003dTrue)"},{"line_number":10,"context_line":"    string_column \u003d Column(\u0027flavorid_str\u0027, String(255))"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    string_column.create(instance_types)"},{"line_number":13,"context_line":"    integer_column \u003d instance_types.c.flavorid"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8xM%3D","line":11,"in_reply_to":"AAAACX%2F%2F8yM%3D","updated":"2011-10-13 01:13:24.000000000","message":"see comment in db api.","commit_id":"55d61c6c679ac1c2779d894d2b5427b97b19479e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"0f7897266964ceebc43ee792819ecce6283f1d57","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":9,"context_line":"    instance_types \u003d Table(\u0027instance_types\u0027, meta, autoload\u003dTrue)"},{"line_number":10,"context_line":"    string_column \u003d Column(\u0027flavorid_str\u0027, String(255))"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    string_column.create(instance_types)"},{"line_number":13,"context_line":"    integer_column \u003d instance_types.c.flavorid"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F8wI%3D","line":11,"updated":"2011-10-13 01:33:36.000000000","message":"Adding \u0027unique\u003dTrue\u0027 to Column() didn\u0027t work here?  As far as I can tell, that\u0027s the only thing missing.   I don\u0027t see how you could break uniqueness on \u0027name\u0027, since you don\u0027t modify that Column at all.","commit_id":"35699cf41a4f8992a7af2e108bd8616901ef8e5e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"cae3b2631d46cde0473635bd5da92227e71fbd29","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":9,"context_line":"    instance_types \u003d Table(\u0027instance_types\u0027, meta, autoload\u003dTrue)"},{"line_number":10,"context_line":"    string_column \u003d Column(\u0027flavorid_str\u0027, String(255))"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    string_column.create(instance_types)"},{"line_number":13,"context_line":"    integer_column \u003d instance_types.c.flavorid"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F8v4%3D","line":11,"in_reply_to":"AAAACX%2F%2F8wA%3D","updated":"2011-10-13 01:36:01.000000000","message":"Weird.  I don\u0027t know enough about this either.","commit_id":"35699cf41a4f8992a7af2e108bd8616901ef8e5e"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"ad1a8ec78149ab558515bc367faa54c2ff232f10","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":9,"context_line":"    instance_types \u003d Table(\u0027instance_types\u0027, meta, autoload\u003dTrue)"},{"line_number":10,"context_line":"    string_column \u003d Column(\u0027flavorid_str\u0027, String(255))"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    string_column.create(instance_types)"},{"line_number":13,"context_line":"    integer_column \u003d instance_types.c.flavorid"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F8wA%3D","line":11,"in_reply_to":"AAAACX%2F%2F8wI%3D","updated":"2011-10-13 01:35:11.000000000","message":"Adding unique\u003dTrue makes the migration fail for some reason. I have no idea how it affects name, either.","commit_id":"35699cf41a4f8992a7af2e108bd8616901ef8e5e"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"2be2ee519dff2713b2e8d888d65a4c1a4d06eeec","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    integer_column \u003d sqlalchemy.Column(\u0027flavorid_int\u0027,"},{"line_number":45,"context_line":"                                       sqlalchemy.Integer())"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    integer_column.create(instance_types)"},{"line_number":48,"context_line":"    string_column \u003d instance_types.c.flavorid"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    for instance_type in instance_types.select().execute():"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAACX%2F%2F8oU%3D","line":47,"updated":"2011-10-13 15:14:47.000000000","message":"Need UniqueConstraint here too.","commit_id":"2725df1b9a574353b6281e32602adb4dc980924c"}],"nova/db/sqlalchemy/migrate_repo/versions/055_convert_flavor_id_to_str.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"6d7336c0174cf2519e8d528fc88e84e24292e2bc","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        integer_column \u003d instance_types.c.flavorid"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        for instance_type in instance_types.select().execute():"},{"line_number":36,"context_line":"            flavorid_int \u003d instance_type.flavorid"},{"line_number":37,"context_line":"            instance_types.update()\\"},{"line_number":38,"context_line":"                          .where(integer_column \u003d\u003d flavorid_int)\\"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAACX%2F%2F768%3D","line":35,"updated":"2011-10-19 00:10:34.000000000","message":"you had list() around this in patch 7... I think you accidentally lost some changes.  See below also.","commit_id":"9d6559fdd20d7652c9510c4a0e865c5275706a58"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"60efde89c1a8c4fe9368884aa953e15f16d21b55","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        integer_column \u003d instance_types.c.flavorid"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        for instance_type in instance_types.select().execute():"},{"line_number":36,"context_line":"            flavorid_int \u003d instance_type.flavorid"},{"line_number":37,"context_line":"            instance_types.update()\\"},{"line_number":38,"context_line":"                          .where(integer_column \u003d\u003d flavorid_int)\\"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAACX%2F%2F76I%3D","line":35,"in_reply_to":"AAAACX%2F%2F768%3D","updated":"2011-10-19 01:21:27.000000000","message":"Not sure how I screwed that up. Fixed.","commit_id":"9d6559fdd20d7652c9510c4a0e865c5275706a58"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"6d7336c0174cf2519e8d528fc88e84e24292e2bc","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        string_column \u003d instance_types.c.flavorid"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        for instance_type in instance_types.select().execute():"},{"line_number":65,"context_line":"            flavorid_str \u003d instance_type.flavorid"},{"line_number":66,"context_line":"            try:"},{"line_number":67,"context_line":"                flavorid_int \u003d int(instance_type.flavorid)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAACX%2F%2F77A%3D","line":64,"updated":"2011-10-19 00:10:34.000000000","message":"dropped list() from p7","commit_id":"9d6559fdd20d7652c9510c4a0e865c5275706a58"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"6d7336c0174cf2519e8d528fc88e84e24292e2bc","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    string_column.alter(name\u003d\u0027flavorid_str\u0027)"},{"line_number":83,"context_line":"    integer_column.alter(name\u003d\u0027flavorid\u0027)"},{"line_number":84,"context_line":"    instance_types.drop(string_column)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAACX%2F%2F77E%3D","line":84,"updated":"2011-10-19 00:10:34.000000000","message":"this was string_column.drop() in p7.","commit_id":"9d6559fdd20d7652c9510c4a0e865c5275706a58"}],"nova/db/sqlalchemy/models.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"e3f295703ef325aa6a99f1b22481d6cb7eefef58","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    vcpus \u003d Column(Integer)"},{"line_number":291,"context_line":"    local_gb \u003d Column(Integer)"},{"line_number":292,"context_line":"    flavorid \u003d Column(Integer, unique\u003dTrue)"},{"line_number":293,"context_line":"    swap \u003d Column(Integer, nullable\u003dFalse, default\u003d0)"},{"line_number":294,"context_line":"    rxtx_quota \u003d Column(Integer, nullable\u003dFalse, default\u003d0)"},{"line_number":295,"context_line":"    rxtx_cap \u003d Column(Integer, nullable\u003dFalse, default\u003d0)"},{"line_number":296,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8yI%3D","side":"PARENT","line":293,"updated":"2011-10-13 00:42:45.000000000","message":"There\u0027s no \u0027unique\u0027 in the migration... I assume it needs to be there.  Don\u0027t need to do anything here, if the migration is fixed.  Leaving this commented line for a reason?","commit_id":"f5f429bac6446db084ca3f5d86c64127a1e539f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"a8862527931e270f5e2766e95e40198a82179c54","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    vcpus \u003d Column(Integer)"},{"line_number":291,"context_line":"    local_gb \u003d Column(Integer)"},{"line_number":292,"context_line":"    flavorid \u003d Column(Integer, unique\u003dTrue)"},{"line_number":293,"context_line":"    swap \u003d Column(Integer, nullable\u003dFalse, default\u003d0)"},{"line_number":294,"context_line":"    rxtx_quota \u003d Column(Integer, nullable\u003dFalse, default\u003d0)"},{"line_number":295,"context_line":"    rxtx_cap \u003d Column(Integer, nullable\u003dFalse, default\u003d0)"},{"line_number":296,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8xY%3D","side":"PARENT","line":293,"in_reply_to":"AAAACX%2F%2F8yI%3D","updated":"2011-10-13 01:13:24.000000000","message":"See comment in db api. I\u0027m removing unique\u003dTrue from name and flavorid for now until I or somebody else can figure out what I\u0027m doing wrong in the migration :/ I also didn\u0027t mean to leave in the commented out line.","commit_id":"f5f429bac6446db084ca3f5d86c64127a1e539f2"}],"nova/network/manager.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"e3f295703ef325aa6a99f1b22481d6cb7eefef58","unresolved":false,"context_lines":[{"line_number":64,"context_line":"from nova import rpc"},{"line_number":65,"context_line":"from nova.network import api as network_api"},{"line_number":66,"context_line":"from nova.compute import api as compute_api"},{"line_number":67,"context_line":"import random"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"LOG \u003d logging.getLogger(\"nova.network.manager\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8yE%3D","side":"PARENT","line":67,"updated":"2011-10-13 00:42:45.000000000","message":"If you have to fix the migration... want to fix these according to HACKING?  If not, I\u0027ll ignore in flavor of a later cleanup.","commit_id":"f5f429bac6446db084ca3f5d86c64127a1e539f2"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"a8862527931e270f5e2766e95e40198a82179c54","unresolved":false,"context_lines":[{"line_number":64,"context_line":"from nova import rpc"},{"line_number":65,"context_line":"from nova.network import api as network_api"},{"line_number":66,"context_line":"from nova.compute import api as compute_api"},{"line_number":67,"context_line":"import random"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"LOG \u003d logging.getLogger(\"nova.network.manager\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F8xU%3D","side":"PARENT","line":67,"in_reply_to":"AAAACX%2F%2F8yE%3D","updated":"2011-10-13 01:13:24.000000000","message":"All fixed. Good catch, Christopher.","commit_id":"f5f429bac6446db084ca3f5d86c64127a1e539f2"}],"nova/tests/api/openstack/test_servers.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"6d7336c0174cf2519e8d528fc88e84e24292e2bc","unresolved":false,"context_lines":[{"line_number":2615,"context_line":"            \"hostname\": \"\","},{"line_number":2616,"context_line":"            \"host\": \"\","},{"line_number":2617,"context_line":"            \"instance_type\": {"},{"line_number":2618,"context_line":"               \"flavorid\": \u00271\u0027,"},{"line_number":2619,"context_line":"            },"},{"line_number":2620,"context_line":"            \"user_data\": \"\","},{"line_number":2621,"context_line":"            \"reservation_id\": \"\","}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAACX%2F%2F764%3D","line":2618,"updated":"2011-10-19 00:10:34.000000000","message":"This line is fine.  But.. when I was looking at diff from patch 7 to patch 8, someone violated HACKING recently... so I saw it when you rebased.  lxml is not in 3rd party section... and nova.image* and nova.rpc are in the wrong spots.  Mind fixing since I pointed out the migration thing that needs fixed, anyway?\n(Otherwise, I wouldn\u0027t bother you with this :)","commit_id":"9d6559fdd20d7652c9510c4a0e865c5275706a58"},{"author":{"_account_id":1132,"name":"Brian Waldon","email":"brian@waldon.cc","username":"bcwaldon"},"change_message_id":"60efde89c1a8c4fe9368884aa953e15f16d21b55","unresolved":false,"context_lines":[{"line_number":2615,"context_line":"            \"hostname\": \"\","},{"line_number":2616,"context_line":"            \"host\": \"\","},{"line_number":2617,"context_line":"            \"instance_type\": {"},{"line_number":2618,"context_line":"               \"flavorid\": \u00271\u0027,"},{"line_number":2619,"context_line":"            },"},{"line_number":2620,"context_line":"            \"user_data\": \"\","},{"line_number":2621,"context_line":"            \"reservation_id\": \"\","}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAACX%2F%2F76Q%3D","line":2618,"in_reply_to":"AAAACX%2F%2F764%3D","updated":"2011-10-19 01:21:27.000000000","message":"Done","commit_id":"9d6559fdd20d7652c9510c4a0e865c5275706a58"}]}
