)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a9e420705f9f00b1ffcbb296d624663236d34a7c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch abstracts live migration state machine from the old mixed migration status code."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I6dfce7f6811c01e44b6442191cadf36dc0ea7ce3"},{"line_number":12,"context_line":"Implements: blueprint migration-state-machine"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9aed3d3a_c45c677f","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":45},"updated":"2016-03-01 06:56:28.000000000","message":"Partially-Implements: blueprint migration-state-machine","commit_id":"ff7fb8f0822f6d82073ec3e6422e078ae35d77dd"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"1f59e89507972ef3c4e9a301b1f0bc71d5d8f3db","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch abstracts live migration state machine from the old mixed migration status code."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I6dfce7f6811c01e44b6442191cadf36dc0ea7ce3"},{"line_number":12,"context_line":"Implements: blueprint migration-state-machine"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a122d0e_64a95ddf","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":45},"in_reply_to":"9aed3d3a_c45c677f","updated":"2016-04-19 10:29:09.000000000","message":"Done","commit_id":"ff7fb8f0822f6d82073ec3e6422e078ae35d77dd"}],"nova/objects/migration.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"1a40ae7de5fcb05b7cde8c23731bca4ac4ecdd60","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class LiveMigrationStatusMachine(FiniteMachine):"},{"line_number":34,"context_line":"    \"\"\"Status machine of live migration."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"             +-------------------------------+"},{"line_number":37,"context_line":"             |                               |"},{"line_number":38,"context_line":"             |          init                 |"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_cb45e917","line":35,"updated":"2015-11-07 00:52:56.000000000","message":"What tool did u use to make these. Very nice :)","commit_id":"c03039227ba79a39c22670190b25a22bc457ac94"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"f2bff12d5d4eaee374b69aba0279348b7751dd0e","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class LiveMigrationStatusMachine(FiniteMachine):"},{"line_number":34,"context_line":"    \"\"\"Status machine of live migration."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"             +-------------------------------+"},{"line_number":37,"context_line":"             |                               |"},{"line_number":38,"context_line":"             |          init                 |"}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_d387dfd5","line":35,"in_reply_to":"da85f559_cb45e917","updated":"2015-11-07 11:49:04.000000000","message":"No tools. I just typed it with vim ... :)","commit_id":"c03039227ba79a39c22670190b25a22bc457ac94"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"a9e420705f9f00b1ffcbb296d624663236d34a7c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        return \u0027migration\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class LiveMigrationStateMachine(FiniteMachine):"},{"line_number":35,"context_line":"    \"\"\"State machine of live migration."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    This state machine controls the \"status\" field in class Migration."}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_3f2f1a89","line":34,"range":{"start_line":34,"start_character":6,"end_line":34,"end_character":31},"updated":"2016-03-01 06:56:28.000000000","message":"hmm... the code looks perfect, but I wonder if this the right place to hold this class.\n\nmaybe nova/state_machine/\n\nokay, I am not sure.","commit_id":"ff7fb8f0822f6d82073ec3e6422e078ae35d77dd"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"e66c90ded3cc2f6faa67fdf45fcbccb91276f3fb","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        return \u0027migration\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class LiveMigrationStateMachine(FiniteMachine):"},{"line_number":35,"context_line":"    \"\"\"State machine of live migration."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    This state machine controls the \"status\" field in class Migration."}],"source_content_type":"text/x-python","patch_set":4,"id":"bab6814e_beeb8577","line":34,"range":{"start_line":34,"start_character":6,"end_line":34,"end_character":31},"in_reply_to":"1a122d0e_6445dd15","updated":"2016-05-25 12:32:22.000000000","message":"I would agree - this can go in a place for declaring state machines. You can put this class, its diagram and the definitions of the states and events in a single file in nova/state_machines","commit_id":"ff7fb8f0822f6d82073ec3e6422e078ae35d77dd"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"1f59e89507972ef3c4e9a301b1f0bc71d5d8f3db","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        return \u0027migration\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class LiveMigrationStateMachine(FiniteMachine):"},{"line_number":35,"context_line":"    \"\"\"State machine of live migration."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    This state machine controls the \"status\" field in class Migration."}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_6445dd15","line":34,"range":{"start_line":34,"start_character":6,"end_line":34,"end_character":31},"in_reply_to":"9aed3d3a_3f2f1a89","updated":"2016-04-19 10:29:09.000000000","message":"I\u0027m not sure either. Let\u0027s wait for other core reviewers\u0027 comments. :)","commit_id":"ff7fb8f0822f6d82073ec3e6422e078ae35d77dd"},{"author":{"_account_id":7461,"name":"Paul Murray","email":"pmurray@hpe.com","username":"ptm"},"change_message_id":"3239bd20221e5ae713486fdb71d25957573d6bcb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    This state machine controls the \"status\" field in class Migration."},{"line_number":38,"context_line":"    For a diagram of the state machine, please refer to migration_status.py."},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    state_space \u003d ["},{"line_number":42,"context_line":"        State(Status.INIT, False,"},{"line_number":43,"context_line":"              {Status.EVENT_LIVE_MIGRATION_START: Status.QUEUED,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_fe722de2","line":40,"updated":"2016-05-25 12:33:12.000000000","message":"See comments in PS4","commit_id":"75f768a21b88ccd8bccab9ab763b3a15fb7fcf1d"}],"nova/objects/migration_status.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"6576d750a32b8576c0eb9a7b01e06cb17dfcda8d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"#       +-------------- running --------------+"},{"line_number":44,"context_line":"#                          | (END)"},{"line_number":45,"context_line":"#                          V"},{"line_number":46,"context_line":"#                      completed"},{"line_number":47,"context_line":"#"},{"line_number":48,"context_line":"#    status: statuses of the state machine."},{"line_number":49,"context_line":"#    (EVENT): events triggering the status changing."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_df87bd5f","line":46,"updated":"2015-11-04 09:48:51.000000000","message":"Great diagram! These should be mandatory.\n\nWe probably only want one of them, though, or they\u0027re likely to get out of sync. Could you reference one comment from the other location rather than duplicating it?","commit_id":"c03039227ba79a39c22670190b25a22bc457ac94"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"f2bff12d5d4eaee374b69aba0279348b7751dd0e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"#       +-------------- running --------------+"},{"line_number":44,"context_line":"#                          | (END)"},{"line_number":45,"context_line":"#                          V"},{"line_number":46,"context_line":"#                      completed"},{"line_number":47,"context_line":"#"},{"line_number":48,"context_line":"#    status: statuses of the state machine."},{"line_number":49,"context_line":"#    (EVENT): events triggering the status changing."}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_33aaeb1a","line":46,"in_reply_to":"da85f559_eb046dc7","updated":"2015-11-07 11:49:04.000000000","message":"Thanks for the info. Looking at it. :)","commit_id":"c03039227ba79a39c22670190b25a22bc457ac94"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"f2bff12d5d4eaee374b69aba0279348b7751dd0e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"#       +-------------- running --------------+"},{"line_number":44,"context_line":"#                          | (END)"},{"line_number":45,"context_line":"#                          V"},{"line_number":46,"context_line":"#                      completed"},{"line_number":47,"context_line":"#"},{"line_number":48,"context_line":"#    status: statuses of the state machine."},{"line_number":49,"context_line":"#    (EVENT): events triggering the status changing."}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_139a4715","line":46,"in_reply_to":"fa80f949_df87bd5f","updated":"2015-11-07 11:49:04.000000000","message":"OK, followed. And indeed, keeping only one of them is easier to keep them sync.","commit_id":"c03039227ba79a39c22670190b25a22bc457ac94"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"1a40ae7de5fcb05b7cde8c23731bca4ac4ecdd60","unresolved":false,"context_lines":[{"line_number":43,"context_line":"#       +-------------- running --------------+"},{"line_number":44,"context_line":"#                          | (END)"},{"line_number":45,"context_line":"#                          V"},{"line_number":46,"context_line":"#                      completed"},{"line_number":47,"context_line":"#"},{"line_number":48,"context_line":"#    status: statuses of the state machine."},{"line_number":49,"context_line":"#    (EVENT): events triggering the status changing."}],"source_content_type":"text/x-python","patch_set":1,"id":"da85f559_eb046dc7","line":46,"in_reply_to":"fa80f949_df87bd5f","updated":"2015-11-07 00:52:56.000000000","message":"Or can u do what ironic and taskflow did and put them into a generated file like at:\n\nhttp://docs.openstack.org/developer/ironic/dev/states.html\n\nhttp://docs.openstack.org/developer/taskflow/states.html\n\nI\u0027d personally rather have something like that and generate it via a piece of code like:\n\nhttps://github.com/openstack/ironic/blob/master/tools/states_to_dot.py\n\nThen these don\u0027t become out of date as long as someone periodically runs such a program and submits the documentation review...","commit_id":"c03039227ba79a39c22670190b25a22bc457ac94"}]}
