)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"52bbbf6c82cdfb1241d7d7498dd61048da632f5d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"one doesn\u0027t guarantee that live_migration is not already completed,"},{"line_number":14,"context_line":"also is very small window between api and compute side."},{"line_number":15,"context_line":"Target compute host is now taken from migration object rather"},{"line_number":16,"context_line":"then instance.host field, which allows to guarantee that nova will not"},{"line_number":17,"context_line":"pause already migrated instance."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Ifc55db7ee75c725be5cf211940552df8acc0f0c4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a1ff146_723056e9","line":17,"range":{"start_line":16,"start_character":26,"end_line":17,"end_character":31},"updated":"2017-03-16 07:40:12.000000000","message":"It sounds like some bug solving description. Did you consider to file a bug for this and provide a case which leads to wrong behavior?","commit_id":"48f43b9df4a82f3d62f216ee44c5ea52599bbc85"}],"nova/compute/api.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b7cd4bf2095aa37fd4c1c7984d7b0ca973dfe063","unresolved":false,"context_lines":[{"line_number":3434,"context_line":"                  migration.id, instance\u003dinstance)"},{"line_number":3435,"context_line":""},{"line_number":3436,"context_line":"        if migration.status !\u003d \u0027running\u0027:"},{"line_number":3437,"context_line":"            raise exception.InvalidMigrationState(migration_id\u003dmigration,"},{"line_number":3438,"context_line":"                    instance_uuid\u003dinstance.uuid,"},{"line_number":3439,"context_line":"                    state\u003dmigration.status,"},{"line_number":3440,"context_line":"                    method\u003d\u0027abort live migration\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_34fea038","line":3437,"updated":"2016-04-13 10:37:52.000000000","message":"This is a bit confusing. Does InvalidMigrationState want a migration object or a migration id? The name or the argument and its value don\u0027t really align...","commit_id":"bf99538dc3b6d24b60dc7ef3ca82181dbf056259"}],"nova/compute/manager.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"84279f2041260130109adc6d0c08bde319cb9105","unresolved":false,"context_lines":[{"line_number":5351,"context_line":"        :param context: Security context"},{"line_number":5352,"context_line":"        :param instance: The instance that is being migrated"},{"line_number":5353,"context_line":"        :param migration_id: ID of in-progress live migration; is currently"},{"line_number":5354,"context_line":"        not used, and isn\u0027t removed in sense of backward compatibility"},{"line_number":5355,"context_line":""},{"line_number":5356,"context_line":"        \"\"\""},{"line_number":5357,"context_line":"        self._notify_about_instance_usage("}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_7dcbef53","line":5354,"updated":"2016-04-13 01:09:14.000000000","message":"As mentioned in previous patch, I think we still want to increment the RPC API, even for this backwards-compatible change, and make a note of when the parameter can be fully removed (i.e. RPC API 5.0 I think?)","commit_id":"bf99538dc3b6d24b60dc7ef3ca82181dbf056259"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"52bbbf6c82cdfb1241d7d7498dd61048da632f5d","unresolved":false,"context_lines":[{"line_number":5443,"context_line":"    @wrap_exception()"},{"line_number":5444,"context_line":"    @wrap_instance_event(prefix\u003d\u0027compute\u0027)"},{"line_number":5445,"context_line":"    @wrap_instance_fault"},{"line_number":5446,"context_line":"    def live_migration_abort(self, context, instance, migration_id\u003dNone):"},{"line_number":5447,"context_line":"        \"\"\"Abort an in-progress live migration."},{"line_number":5448,"context_line":""},{"line_number":5449,"context_line":"        :param context: Security context"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_32917e53","line":5446,"updated":"2017-03-16 07:40:12.000000000","message":"It\u0027s not clear for me why not just update rpcapi (remove migration_id) and bump RPC version now?","commit_id":"48f43b9df4a82f3d62f216ee44c5ea52599bbc85"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"946285434b91f3548435de5edf39d84ad51248e1","unresolved":false,"context_lines":[{"line_number":13611,"context_line":"            uuid\u003d\u0027c83a75d4-4d53-4be5-9a40-04d9c0389ff8\u0027)"},{"line_number":13612,"context_line":"        drvr.active_migrations[instance.uuid] \u003d deque()"},{"line_number":13613,"context_line":"        drvr.live_migration_abort(instance)"},{"line_number":13614,"context_line":"        self.assertTrue(drvr.active_migrations[instance.uuid].count(\"abort\"))"},{"line_number":13615,"context_line":""},{"line_number":13616,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dTrue)"},{"line_number":13617,"context_line":"    @mock.patch(\u0027tempfile.mkstemp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_c9b40af4","line":13614,"updated":"2016-04-12 21:49:58.000000000","message":"This should be an assertEqual since count doesn\u0027t return a boolean. I see that this differs from how the test above does it, but I think assertEqual would be better.","commit_id":"bf99538dc3b6d24b60dc7ef3ca82181dbf056259"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"d706186212ca169d254915305a6cd2ef512f9fef","unresolved":false,"context_lines":[{"line_number":13611,"context_line":"            uuid\u003d\u0027c83a75d4-4d53-4be5-9a40-04d9c0389ff8\u0027)"},{"line_number":13612,"context_line":"        drvr.active_migrations[instance.uuid] \u003d deque()"},{"line_number":13613,"context_line":"        drvr.live_migration_abort(instance)"},{"line_number":13614,"context_line":"        self.assertTrue(drvr.active_migrations[instance.uuid].count(\"abort\"))"},{"line_number":13615,"context_line":""},{"line_number":13616,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dTrue)"},{"line_number":13617,"context_line":"    @mock.patch(\u0027tempfile.mkstemp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_ed79b7c9","line":13614,"in_reply_to":"5a18252c_54787cc4","updated":"2016-04-14 11:00:47.000000000","message":"Done","commit_id":"bf99538dc3b6d24b60dc7ef3ca82181dbf056259"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b7cd4bf2095aa37fd4c1c7984d7b0ca973dfe063","unresolved":false,"context_lines":[{"line_number":13611,"context_line":"            uuid\u003d\u0027c83a75d4-4d53-4be5-9a40-04d9c0389ff8\u0027)"},{"line_number":13612,"context_line":"        drvr.active_migrations[instance.uuid] \u003d deque()"},{"line_number":13613,"context_line":"        drvr.live_migration_abort(instance)"},{"line_number":13614,"context_line":"        self.assertTrue(drvr.active_migrations[instance.uuid].count(\"abort\"))"},{"line_number":13615,"context_line":""},{"line_number":13616,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dTrue)"},{"line_number":13617,"context_line":"    @mock.patch(\u0027tempfile.mkstemp\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_54787cc4","line":13614,"in_reply_to":"5a18252c_c9b40af4","updated":"2016-04-13 10:37:52.000000000","message":"+1","commit_id":"bf99538dc3b6d24b60dc7ef3ca82181dbf056259"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"84279f2041260130109adc6d0c08bde319cb9105","unresolved":false,"context_lines":[{"line_number":6264,"context_line":"                        tasks.appendleft(task)"},{"line_number":6265,"context_line":"                        break"},{"line_number":6266,"context_line":"                    try:"},{"line_number":6267,"context_line":"                        dom.abortJob()"},{"line_number":6268,"context_line":"                    except libvirt.libvirtError as e:"},{"line_number":6269,"context_line":"                        LOG.warning(_LW(\"Failed to abort migration %s\"),"},{"line_number":6270,"context_line":"                                 e, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a18252c_5dc6f349","line":6267,"updated":"2016-04-13 01:09:14.000000000","message":"This will be a merge conflict with Sahid\u0027s patch that changes the above interface:\n\nhttps://review.openstack.org/#/c/250738/\n\nJust FYI...","commit_id":"bf99538dc3b6d24b60dc7ef3ca82181dbf056259"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e321959b8cd7b80fa995370d6690494c26269596","unresolved":false,"context_lines":[{"line_number":6246,"context_line":"                    # if it\u0027s not started yet"},{"line_number":6247,"context_line":"                    if (not finish_event.ready() and info.type \u003d\u003d"},{"line_number":6248,"context_line":"                            libvirt.VIR_DOMAIN_JOB_NONE):"},{"line_number":6249,"context_line":"                        LOG.warn(_LW(\"live-migration is not started yet,\""},{"line_number":6250,"context_line":"                                     \"waiting for start event to abort it\"),"},{"line_number":6251,"context_line":"                                 e, instance\u003dinstance)"},{"line_number":6252,"context_line":"                        tasks.appendleft(task)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a18252c_e20a3425","line":6249,"range":{"start_line":6249,"start_character":28,"end_line":6249,"end_character":32},"updated":"2016-04-15 03:08:22.000000000","message":"This should be \u0027warning\u0027.\nSee https://bugs.launchpad.net/magnum/+bug/1508442.","commit_id":"a0799042bd4a13e35a228b0acce69240dffe06f4"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"1b761877c1863e714b7b953536fba6d02ee31a88","unresolved":false,"context_lines":[{"line_number":6246,"context_line":"                    # if it\u0027s not started yet"},{"line_number":6247,"context_line":"                    if (not finish_event.ready() and info.type \u003d\u003d"},{"line_number":6248,"context_line":"                            libvirt.VIR_DOMAIN_JOB_NONE):"},{"line_number":6249,"context_line":"                        LOG.warn(_LW(\"live-migration is not started yet,\""},{"line_number":6250,"context_line":"                                     \"waiting for start event to abort it\"),"},{"line_number":6251,"context_line":"                                 e, instance\u003dinstance)"},{"line_number":6252,"context_line":"                        tasks.appendleft(task)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a1531f4_f4d0f8cb","line":6249,"range":{"start_line":6249,"start_character":28,"end_line":6249,"end_character":32},"in_reply_to":"5a18252c_e20a3425","updated":"2016-04-15 08:28:44.000000000","message":"Done","commit_id":"a0799042bd4a13e35a228b0acce69240dffe06f4"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"688fc705f2513179c8c4477e0568f98f559b8949","unresolved":false,"context_lines":[{"line_number":6270,"context_line":"                    # if it\u0027s not started yet"},{"line_number":6271,"context_line":"                    if (not finish_event.ready() and info.type \u003d\u003d"},{"line_number":6272,"context_line":"                            libvirt.VIR_DOMAIN_JOB_NONE):"},{"line_number":6273,"context_line":"                        LOG.warning(_LW(\"live-migration is not started yet,\""},{"line_number":6274,"context_line":"                                        \"waiting for start event to abort it\"),"},{"line_number":6275,"context_line":"                                    e, instance\u003dinstance)"},{"line_number":6276,"context_line":"                        tasks.appendleft(task)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_66a10e46","line":6273,"updated":"2016-04-20 16:28:30.000000000","message":"It looks like maybe this level of nesting is causing the pep8 failure.","commit_id":"518190e96d598d8a86f844c835e54fc04992b330"},{"author":{"_account_id":12299,"name":"Paweł Koniszewski","email":"pawel.koniszewski@gmail.com","username":"pawel.koniszewski"},"change_message_id":"882b646dce4523a12f94b7981eebfd1421064d27","unresolved":false,"context_lines":[{"line_number":6293,"context_line":"                if task \u003d\u003d \u0027abort\u0027:"},{"line_number":6294,"context_line":"                    # NOTE(tdurakov): special case for live-migration abort,"},{"line_number":6295,"context_line":"                    # if it\u0027s not started yet"},{"line_number":6296,"context_line":"                    if (not finish_event.ready() and info.type \u003d\u003d"},{"line_number":6297,"context_line":"                            libvirt.VIR_DOMAIN_JOB_NONE):"},{"line_number":6298,"context_line":"                        LOG.warning(_LW(\"live-migration is not started yet,\""},{"line_number":6299,"context_line":"                                        \"waiting for start event to abort it\"),"},{"line_number":6300,"context_line":"                                    e, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_e3f9e24f","line":6297,"range":{"start_line":6296,"start_character":20,"end_line":6297,"end_character":57},"updated":"2016-04-25 22:54:46.000000000","message":"If this condition can be met then it means that we are introducing a bug in a previous patch set that will allow to pause VM prior to migration start. Am I missing something?","commit_id":"7047d222a53754afa63144881910ba8b1fc6b8e7"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"17e42082566a897360c164123be738dbd39e04cf","unresolved":false,"context_lines":[{"line_number":6293,"context_line":"                if task \u003d\u003d \u0027abort\u0027:"},{"line_number":6294,"context_line":"                    # NOTE(tdurakov): special case for live-migration abort,"},{"line_number":6295,"context_line":"                    # if it\u0027s not started yet"},{"line_number":6296,"context_line":"                    if (not finish_event.ready() and info.type \u003d\u003d"},{"line_number":6297,"context_line":"                            libvirt.VIR_DOMAIN_JOB_NONE):"},{"line_number":6298,"context_line":"                        LOG.warning(_LW(\"live-migration is not started yet,\""},{"line_number":6299,"context_line":"                                        \"waiting for start event to abort it\"),"},{"line_number":6300,"context_line":"                                    e, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_78a295fd","line":6297,"range":{"start_line":6296,"start_character":20,"end_line":6297,"end_character":57},"in_reply_to":"1a122d0e_e3f9e24f","updated":"2016-04-26 08:34:52.000000000","message":"tbh, I don\u0027t want to merge this change right now. I think its worth to merge prev patch, then move monitor out of driver.py(in progress) and then get back to this one.","commit_id":"7047d222a53754afa63144881910ba8b1fc6b8e7"}],"nova/virt/libvirt/migration.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"52bbbf6c82cdfb1241d7d7498dd61048da632f5d","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                    LOG.warning(_LW(\"Failed to pause instance during \""},{"line_number":456,"context_line":"                                    \"live-migration %s\"),"},{"line_number":457,"context_line":"                                e, instance\u003dinstance)"},{"line_number":458,"context_line":"        elif task \u003d\u003d \u0027abort\u0027:"},{"line_number":459,"context_line":"            try:"},{"line_number":460,"context_line":"                # NOTE(tdurakov): it\u0027s possible here to attempt aborting"},{"line_number":461,"context_line":"                # post-copy switched live-migration, libvirt will prevent such"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_b263ae40","line":458,"updated":"2017-03-16 07:40:12.000000000","message":"Docstring for \"def run_tasks\" should be updated.","commit_id":"48f43b9df4a82f3d62f216ee44c5ea52599bbc85"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"52bbbf6c82cdfb1241d7d7498dd61048da632f5d","unresolved":false,"context_lines":[{"line_number":460,"context_line":"                # NOTE(tdurakov): it\u0027s possible here to attempt aborting"},{"line_number":461,"context_line":"                # post-copy switched live-migration, libvirt will prevent such"},{"line_number":462,"context_line":"                # attempt, which should be fine."},{"line_number":463,"context_line":"                guest.abort_job()"},{"line_number":464,"context_line":"            except libvirt.libvirtError as e:"},{"line_number":465,"context_line":"                LOG.warning(_LW(\"Failed to abort migration %s\"),"},{"line_number":466,"context_line":"                            e, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_127802c4","line":463,"updated":"2017-03-16 07:40:12.000000000","message":"Chances are that we get here with finished migration.\nSo we should be more confident libvirt does not break something. I wonder if there are some tests for that?","commit_id":"48f43b9df4a82f3d62f216ee44c5ea52599bbc85"}]}
