)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"6c8c7829190dbabd3dc96318a1d924788baef62d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"We sort the events by id and not exposing it to the user but the uuid"},{"line_number":13,"context_line":"instead."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: 1261883"},{"line_number":16,"context_line":"Change-Id: I43464c6079bf7631fda0c4ab112b8f874c6190a3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8ou4%3D","line":15,"updated":"2013-12-23 22:28:31.000000000","message":"To be compliant with the standard this needs a # before 1261883\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Including_external_references","commit_id":"69d8b3c0dc2d9687358a9e46dceb44efd197839b"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"c4cc082fef9c14285a99507357ab1c6534161649","unresolved":false,"context_lines":[{"line_number":12,"context_line":"We sort the events by id and not exposing it to the user but the uuid"},{"line_number":13,"context_line":"instead."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: 1261883"},{"line_number":16,"context_line":"Change-Id: I43464c6079bf7631fda0c4ab112b8f874c6190a3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F8oss%3D","line":15,"in_reply_to":"AAAATn%2F8ou4%3D","updated":"2013-12-23 22:40:11.000000000","message":"this seems to be working still without the # but if that\u0027s the standard :)","commit_id":"69d8b3c0dc2d9687358a9e46dceb44efd197839b"},{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"f692a52bbcc83f0744370f552b98e1d4e5ce6962","unresolved":false,"context_lines":[{"line_number":9,"context_line":"To be able to properly sort the events we are now chaning back the id to"},{"line_number":10,"context_line":"an auto incremented id and have the uuid moved to the uuid column."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We sort the events by id and not exposing it to the user but the uuid"},{"line_number":13,"context_line":"instead."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1261883"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAUH%2F%2F98A%3D","line":12,"updated":"2014-01-06 04:05:36.000000000","message":"Does this mean the event id will no longer be exposed to the user? If that is the case, it would break existing uses of Heat API. But I don\u0027t see the event id being taken out in this patch. Is this just a mistake in the commit message?","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"db6ec3f0a28415a1ba737bfe34132015df139d63","unresolved":false,"context_lines":[{"line_number":9,"context_line":"To be able to properly sort the events we are now chaning back the id to"},{"line_number":10,"context_line":"an auto incremented id and have the uuid moved to the uuid column."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We sort the events by id and not exposing it to the user but the uuid"},{"line_number":13,"context_line":"instead."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1261883"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAUH%2F%2F9PE%3D","line":12,"in_reply_to":"AAAAUH%2F%2F90U%3D","updated":"2014-01-06 09:10:42.000000000","message":"That\u0027s correct, we have the same behavior as before, id is kept but as internal and to the user it will be exposed as uuid (like done now)","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"fc46df02972ae65a13a7bdcc9ab92f16f56e909e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"To be able to properly sort the events we are now chaning back the id to"},{"line_number":10,"context_line":"an auto incremented id and have the uuid moved to the uuid column."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We sort the events by id and not exposing it to the user but the uuid"},{"line_number":13,"context_line":"instead."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1261883"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAUH%2F%2F90U%3D","line":12,"in_reply_to":"AAAAUH%2F%2F98A%3D","updated":"2014-01-06 05:13:52.000000000","message":"It is just ambiguity. AFAICT, id in the API will now map to uuid in the event table. I\u0027m o-k with that, as the drivers are far enough divorced from the API that things do not have to match up 100%. The SQL id is just a sequence id that helps us order the rows. If we had another backend that just shoved everything in to swift files and kept an external list of uuids for ordering the term \u0027id\u0027 wouldn\u0027t be necessary, but we would still need it in the API.","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"f2c303c772b903967a061d6849639d105d6443fd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"To be able to properly sort the events we are now chaning back the id to"},{"line_number":10,"context_line":"an auto incremented id and have the uuid moved to the uuid column."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"We sort the events by id and not exposing it to the user but the uuid"},{"line_number":13,"context_line":"instead."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1261883"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAUH%2F%2F4N4%3D","line":12,"in_reply_to":"AAAAUH%2F%2F9PE%3D","updated":"2014-01-07 10:26:40.000000000","message":"ah, I didn\u0027t take a close look. Thanks for the explanation ;)","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"}],"heat/api/openstack/v1/events.py":[{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"f2c303c772b903967a061d6849639d105d6443fd","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"summary_keys \u003d ["},{"line_number":27,"context_line":"    engine_api.EVENT_ID,"},{"line_number":28,"context_line":"    engine_api.EVENT_UUID,"},{"line_number":29,"context_line":"    engine_api.EVENT_TIMESTAMP,"},{"line_number":30,"context_line":"    engine_api.EVENT_RES_NAME,"},{"line_number":31,"context_line":"    engine_api.EVENT_RES_STATUS,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F4Nk%3D","line":28,"updated":"2014-01-07 10:26:40.000000000","message":"If we return the uuid in form of event Id, why do we need this here?","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"summary_keys \u003d ["},{"line_number":27,"context_line":"    engine_api.EVENT_ID,"},{"line_number":28,"context_line":"    engine_api.EVENT_UUID,"},{"line_number":29,"context_line":"    engine_api.EVENT_TIMESTAMP,"},{"line_number":30,"context_line":"    engine_api.EVENT_RES_NAME,"},{"line_number":31,"context_line":"    engine_api.EVENT_RES_STATUS,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEnM%3D","line":28,"updated":"2014-01-30 13:07:39.000000000","message":"Don\u0027t forget to remove this. We don\u0027t want to return \"UUID\", we want the ID in the API to be the UUID.","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"ec724d4231d19f55ce6bfb2dc623525f18147642","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"summary_keys \u003d ["},{"line_number":27,"context_line":"    engine_api.EVENT_ID,"},{"line_number":28,"context_line":"    engine_api.EVENT_UUID,"},{"line_number":29,"context_line":"    engine_api.EVENT_TIMESTAMP,"},{"line_number":30,"context_line":"    engine_api.EVENT_RES_NAME,"},{"line_number":31,"context_line":"    engine_api.EVENT_RES_STATUS,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEOc%3D","line":28,"in_reply_to":"AAAAUH%2F%2BEnM%3D","updated":"2014-01-30 14:38:32.000000000","message":"Done","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"}],"heat/db/sqlalchemy/migrate_repo/versions/033_event_uuid_to_id.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ed41c2a22320607ae33837a6b28e75e57d709815","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    event.c.id.alter(type\u003dsqlalchemy.Integer, primary_key\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    event_uuid \u003d sqlalchemy.Column(\u0027uuid\u0027, sqlalchemy.String(length\u003d36),"},{"line_number":30,"context_line":"                                   default\u003dlambda: str(uuid.uuid4))"},{"line_number":31,"context_line":"    event_uuid.create(event)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2FuxY%3D","line":30,"updated":"2014-01-02 19:02:15.000000000","message":"This tries to make the id column an integer without changing the content, and then generates new UUIDs for the entire table.\n\nThat is wrong. What you need to do is _rename_ the id column to uuid, and then create a new id column which has an auto incrementing ID (I\u0027m not actually sure how to do that but I\u0027m sure sqlalchemy migrate has tools to assist you)","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"db6ec3f0a28415a1ba737bfe34132015df139d63","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    event.c.id.alter(type\u003dsqlalchemy.Integer, primary_key\u003dTrue)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    event_uuid \u003d sqlalchemy.Column(\u0027uuid\u0027, sqlalchemy.String(length\u003d36),"},{"line_number":30,"context_line":"                                   default\u003dlambda: str(uuid.uuid4))"},{"line_number":31,"context_line":"    event_uuid.create(event)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F9EE%3D","line":30,"in_reply_to":"AAAAT3%2F%2FuxY%3D","updated":"2014-01-06 09:10:42.000000000","message":"Yeah sorry to take a long time on this but thomas was mentioning to me as well last week and will do that way.","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"ed41c2a22320607ae33837a6b28e75e57d709815","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    try:"},{"line_number":40,"context_line":"        event.c.id.alter(type\u003dsqlalchemy.String(36), primary_key\u003dTrue,"},{"line_number":41,"context_line":"                         default\u003dlambda: str(uuid.uuid4()))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        event.c.uuid.drop()"},{"line_number":44,"context_line":"    except:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAT3%2F%2FuxQ%3D","line":41,"updated":"2014-01-02 19:02:15.000000000","message":"And in this case, drop the id column, and rename uuid to id.","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"db6ec3f0a28415a1ba737bfe34132015df139d63","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    try:"},{"line_number":40,"context_line":"        event.c.id.alter(type\u003dsqlalchemy.String(36), primary_key\u003dTrue,"},{"line_number":41,"context_line":"                         default\u003dlambda: str(uuid.uuid4()))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        event.c.uuid.drop()"},{"line_number":44,"context_line":"    except:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F9D8%3D","line":41,"in_reply_to":"AAAAT3%2F%2FuxQ%3D","updated":"2014-01-06 09:10:42.000000000","message":"correct thanks.","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"}],"heat/db/sqlalchemy/migrate_repo/versions/034_event_uuid_to_id.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    fake_autoincrement \u003d itertools.count(1)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    event_list \u003d list(event_table.select().order_by("},{"line_number":41,"context_line":"        sqlalchemy.sql.expression.asc(event_table.c.created_at)).execute())"},{"line_number":42,"context_line":"    for event in event_list:"},{"line_number":43,"context_line":"        values \u003d {\u0027tmp_id\u0027: fake_autoincrement.next(), \u0027uuid\u0027: event.id}"},{"line_number":44,"context_line":"        update \u003d event_table.update().where("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEsM%3D","line":41,"updated":"2014-01-30 13:07:39.000000000","message":"Casting this to list() will load _the entire event table into memory_.\n\nYou don\u0027t need to do that. The result set is an iterator. So just remove the list() from this and it will work efficieintly.","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"ec724d4231d19f55ce6bfb2dc623525f18147642","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    fake_autoincrement \u003d itertools.count(1)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    event_list \u003d list(event_table.select().order_by("},{"line_number":41,"context_line":"        sqlalchemy.sql.expression.asc(event_table.c.created_at)).execute())"},{"line_number":42,"context_line":"    for event in event_list:"},{"line_number":43,"context_line":"        values \u003d {\u0027tmp_id\u0027: fake_autoincrement.next(), \u0027uuid\u0027: event.id}"},{"line_number":44,"context_line":"        update \u003d event_table.update().where("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BENs%3D","line":41,"in_reply_to":"AAAAUH%2F%2BEsM%3D","updated":"2014-01-30 14:38:32.000000000","message":"Done","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        sqlalchemy.Column(\u0027created_at\u0027, sqlalchemy.DateTime,"},{"line_number":80,"context_line":"                          default\u003dtimeutils.utcnow),"},{"line_number":81,"context_line":"        sqlalchemy.Column(\u0027updated_at\u0027, sqlalchemy.DateTime,"},{"line_number":82,"context_line":"                          onupdate\u003dtimeutils.utcnow))"},{"line_number":83,"context_line":"    event_table.create()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    #event_table \u003d sqlalchemy.Table(\u0027new_event\u0027, meta)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BErY%3D","line":82,"updated":"2014-01-30 13:07:39.000000000","message":"Oh my. This is not what I thought you meant by \"can I load the model into the migration script\".\n\nThis can all be replaced by\n\n    from heat.db.api.sqlalchemy import models\n    event_table \u003d models.Events()\n\nI suspect that may be the cause of\n\nhttp://logs.openstack.org/39/63839/7/check/check-tempest-dsvm-postgres-full/1c358cb/logs/screen-h-eng.txt.gz#_2014-01-29_22_53_00_972\n\nWhich has the INSERT failing because the id column wasn\u0027t created as a \"SERIAL\" in postgres.","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"ec724d4231d19f55ce6bfb2dc623525f18147642","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        sqlalchemy.Column(\u0027created_at\u0027, sqlalchemy.DateTime,"},{"line_number":80,"context_line":"                          default\u003dtimeutils.utcnow),"},{"line_number":81,"context_line":"        sqlalchemy.Column(\u0027updated_at\u0027, sqlalchemy.DateTime,"},{"line_number":82,"context_line":"                          onupdate\u003dtimeutils.utcnow))"},{"line_number":83,"context_line":"    event_table.create()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    #event_table \u003d sqlalchemy.Table(\u0027new_event\u0027, meta)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEMw%3D","line":82,"in_reply_to":"AAAAUH%2F%2BErY%3D","updated":"2014-01-30 14:38:32.000000000","message":"That was my first idea (import from models), but then I realized that in future migrations the model will change and this migration could fail. I know is ugly but it\u0027s the only way that I found to \u0027freeze\u0027 the model state for this migration.","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    prev_event_table \u003d sqlalchemy.Table(\u0027event\u0027, meta, autoload\u003dTrue)"},{"line_number":90,"context_line":"    event_list \u003d list(prev_event_table.select().order_by("},{"line_number":91,"context_line":"        sqlalchemy.sql.expression.asc(prev_event_table.c.created_at))"},{"line_number":92,"context_line":"        .execute())"},{"line_number":93,"context_line":"    for event in event_list:"},{"line_number":94,"context_line":"        values \u003d {"},{"line_number":95,"context_line":"            \u0027stack_id\u0027: event.stack_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BErA%3D","line":92,"updated":"2014-01-30 13:07:39.000000000","message":"same here, do not cast to list()","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"ec724d4231d19f55ce6bfb2dc623525f18147642","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    prev_event_table \u003d sqlalchemy.Table(\u0027event\u0027, meta, autoload\u003dTrue)"},{"line_number":90,"context_line":"    event_list \u003d list(prev_event_table.select().order_by("},{"line_number":91,"context_line":"        sqlalchemy.sql.expression.asc(prev_event_table.c.created_at))"},{"line_number":92,"context_line":"        .execute())"},{"line_number":93,"context_line":"    for event in event_list:"},{"line_number":94,"context_line":"        values \u003d {"},{"line_number":95,"context_line":"            \u0027stack_id\u0027: event.stack_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEMk%3D","line":92,"in_reply_to":"AAAAUH%2F%2BErA%3D","updated":"2014-01-30 14:38:32.000000000","message":"Done","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                                 default\u003dlambda: str(uuid.uuid4))"},{"line_number":121,"context_line":"    event_id.create(event_table)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    event_list \u003d list(event_table.select().execute())"},{"line_number":124,"context_line":"    for event in event_list:"},{"line_number":125,"context_line":"        values \u003d {\u0027tmp_id\u0027: event.uuid}"},{"line_number":126,"context_line":"        update \u003d event_table.update().where("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEq8%3D","line":123,"updated":"2014-01-30 13:07:39.000000000","message":"and here too","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"ec724d4231d19f55ce6bfb2dc623525f18147642","unresolved":false,"context_lines":[{"line_number":120,"context_line":"                                 default\u003dlambda: str(uuid.uuid4))"},{"line_number":121,"context_line":"    event_id.create(event_table)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    event_list \u003d list(event_table.select().execute())"},{"line_number":124,"context_line":"    for event in event_list:"},{"line_number":125,"context_line":"        values \u003d {\u0027tmp_id\u0027: event.uuid}"},{"line_number":126,"context_line":"        update \u003d event_table.update().where("}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEMg%3D","line":123,"in_reply_to":"AAAAUH%2F%2BEq8%3D","updated":"2014-01-30 14:38:32.000000000","message":"Done","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        sqlalchemy.Column(\u0027created_at\u0027, sqlalchemy.DateTime,"},{"line_number":158,"context_line":"                          default\u003dtimeutils.utcnow),"},{"line_number":159,"context_line":"        sqlalchemy.Column(\u0027updated_at\u0027, sqlalchemy.DateTime,"},{"line_number":160,"context_line":"                          onupdate\u003dtimeutils.utcnow))"},{"line_number":161,"context_line":"    event_table.create()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    prev_event_table \u003d sqlalchemy.Table(\u0027event\u0027, meta, autoload\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEqk%3D","line":160,"updated":"2014-01-30 13:07:39.000000000","message":"same models problem here.","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    event_table.create()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    prev_event_table \u003d sqlalchemy.Table(\u0027event\u0027, meta, autoload\u003dTrue)"},{"line_number":164,"context_line":"    event_list \u003d list(prev_event_table.select().execute())"},{"line_number":165,"context_line":"    for event in event_list:"},{"line_number":166,"context_line":"        values \u003d {"},{"line_number":167,"context_line":"            \u0027id\u0027: event.uuid,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEqg%3D","line":164,"updated":"2014-01-30 13:07:39.000000000","message":"remove list() cast","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"ec724d4231d19f55ce6bfb2dc623525f18147642","unresolved":false,"context_lines":[{"line_number":161,"context_line":"    event_table.create()"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    prev_event_table \u003d sqlalchemy.Table(\u0027event\u0027, meta, autoload\u003dTrue)"},{"line_number":164,"context_line":"    event_list \u003d list(prev_event_table.select().execute())"},{"line_number":165,"context_line":"    for event in event_list:"},{"line_number":166,"context_line":"        values \u003d {"},{"line_number":167,"context_line":"            \u0027id\u0027: event.uuid,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEMM%3D","line":164,"in_reply_to":"AAAAUH%2F%2BEqg%3D","updated":"2014-01-30 14:38:32.000000000","message":"Done","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"f56e0c9ff66dd8e0c77586ab974d980f50700465","unresolved":false,"context_lines":[{"line_number":69,"context_line":"def upgrade_sqlite(migrate_engine):"},{"line_number":70,"context_line":"    meta \u003d sqlalchemy.MetaData(bind\u003dmigrate_engine)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    stack_table \u003d sqlalchemy.Table(\u0027stack\u0027, meta, autoload\u003dTrue)"},{"line_number":73,"context_line":"    event_table \u003d sqlalchemy.Table("},{"line_number":74,"context_line":"        \u0027new_event\u0027, meta,"},{"line_number":75,"context_line":"        sqlalchemy.Column(\u0027id\u0027, sqlalchemy.Integer, primary_key\u003dTrue),"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F%2BCU8%3D","line":72,"updated":"2014-01-30 19:22:54.000000000","message":"It might be worth a comment here to explain why the schema has to be duplicated btw.","commit_id":"22f48d76bf4c907ca386ce1d154c475c620ea559"}],"heat/db/sqlalchemy/models.py":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"6c8c7829190dbabd3dc96318a1d924788baef62d","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                                 sqlalchemy.ForeignKey(\u0027stack.id\u0027),"},{"line_number":185,"context_line":"                                 nullable\u003dFalse)"},{"line_number":186,"context_line":"    uuid \u003d sqlalchemy.Column(sqlalchemy.String(length\u003d36),"},{"line_number":187,"context_line":"                             default\u003dlambda: str(uuid.uuid4()))"},{"line_number":188,"context_line":"    stack \u003d relationship(Stack, backref\u003dbackref(\u0027events\u0027))"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    resource_action \u003d sqlalchemy.Column(sqlalchemy.String(255))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8ouo%3D","line":187,"updated":"2013-12-23 22:28:31.000000000","message":"To be useful this has to be enforced as a unique column.","commit_id":"69d8b3c0dc2d9687358a9e46dceb44efd197839b"},{"author":{"_account_id":866,"name":"Chmouel Boudjnah","email":"chmouel@chmouel.com","username":"chmouel"},"change_message_id":"c4cc082fef9c14285a99507357ab1c6534161649","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                                 sqlalchemy.ForeignKey(\u0027stack.id\u0027),"},{"line_number":185,"context_line":"                                 nullable\u003dFalse)"},{"line_number":186,"context_line":"    uuid \u003d sqlalchemy.Column(sqlalchemy.String(length\u003d36),"},{"line_number":187,"context_line":"                             default\u003dlambda: str(uuid.uuid4()))"},{"line_number":188,"context_line":"    stack \u003d relationship(Stack, backref\u003dbackref(\u0027events\u0027))"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    resource_action \u003d sqlalchemy.Column(sqlalchemy.String(255))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F8osY%3D","line":187,"in_reply_to":"AAAATn%2F8ouo%3D","updated":"2013-12-23 22:40:11.000000000","message":"the uuid? I would expect that to be always unique, right?","commit_id":"69d8b3c0dc2d9687358a9e46dceb44efd197839b"}],"heat/rpc/api.py":[{"author":{"_account_id":7135,"name":"Liang Chen","email":"liangchen.linux@gmail.com","username":"Liang"},"change_message_id":"f2c303c772b903967a061d6849639d105d6443fd","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"EVENT_KEYS \u003d ("},{"line_number":70,"context_line":"    EVENT_ID,"},{"line_number":71,"context_line":"    EVENT_UUID,"},{"line_number":72,"context_line":"    EVENT_STACK_ID, EVENT_STACK_NAME,"},{"line_number":73,"context_line":"    EVENT_TIMESTAMP,"},{"line_number":74,"context_line":"    EVENT_RES_NAME, EVENT_RES_PHYSICAL_ID, EVENT_RES_ACTION,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2F4Mo%3D","line":71,"updated":"2014-01-07 10:26:40.000000000","message":"Do we need to explicitly pass UUID to API server? Isn\u0027t that already included in event_identity?","commit_id":"964c50e09d96bde38e18009362adb02ba93625ee"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"8aea96fe7d747c77795568be3b389340bc2af2c0","unresolved":false,"context_lines":[{"line_number":69,"context_line":"EVENT_KEYS \u003d ("},{"line_number":70,"context_line":"    EVENT_ID,"},{"line_number":71,"context_line":"    EVENT_STACK_ID, EVENT_STACK_NAME,"},{"line_number":72,"context_line":"    EVENT_UUID,"},{"line_number":73,"context_line":"    EVENT_TIMESTAMP,"},{"line_number":74,"context_line":"    EVENT_RES_NAME, EVENT_RES_PHYSICAL_ID, EVENT_RES_ACTION,"},{"line_number":75,"context_line":"    EVENT_RES_STATUS, EVENT_RES_STATUS_DATA, EVENT_RES_TYPE,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEnw%3D","line":72,"updated":"2014-01-30 13:07:39.000000000","message":"We still want to return it as \"ID\" even though it is implemented in the database as \"UUID\".","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"},{"author":{"_account_id":9331,"name":"Pablo Andres Fuente","email":"pablo.andres.fuente@gmail.com","username":"pafuent"},"change_message_id":"ec724d4231d19f55ce6bfb2dc623525f18147642","unresolved":false,"context_lines":[{"line_number":69,"context_line":"EVENT_KEYS \u003d ("},{"line_number":70,"context_line":"    EVENT_ID,"},{"line_number":71,"context_line":"    EVENT_STACK_ID, EVENT_STACK_NAME,"},{"line_number":72,"context_line":"    EVENT_UUID,"},{"line_number":73,"context_line":"    EVENT_TIMESTAMP,"},{"line_number":74,"context_line":"    EVENT_RES_NAME, EVENT_RES_PHYSICAL_ID, EVENT_RES_ACTION,"},{"line_number":75,"context_line":"    EVENT_RES_STATUS, EVENT_RES_STATUS_DATA, EVENT_RES_TYPE,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BEOM%3D","line":72,"in_reply_to":"AAAAUH%2F%2BEnw%3D","updated":"2014-01-30 14:38:32.000000000","message":"Done","commit_id":"caa058b66c8b50531a2ec2c9f47d30a467dde0ae"}]}
