)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch removes the requirement to specify destination node,"},{"line_number":10,"context_line":"for migrate action. There can be some strategies that wants to rely"},{"line_number":11,"context_line":"on nova-scheduler for destination node. It will not impact any current"},{"line_number":12,"context_line":"strategy behavoir."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia12b2f0b8369e632a7959b28e485d86b6cff83e9"},{"line_number":15,"context_line":"Closes-Bug: #1691056"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_472a7c90","line":12,"range":{"start_line":12,"start_character":9,"end_line":12,"end_character":17},"updated":"2017-07-10 07:36:59.000000000","message":"It should describe \"behavior\" not \"behavoir\".","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"1d94860759557b4dc178e74bd51c2569c8c1260e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch removes the requirement to specify destination node,"},{"line_number":10,"context_line":"for migrate action. There can be some strategies that wants to rely"},{"line_number":11,"context_line":"on nova-scheduler for destination node. It will not impact any current"},{"line_number":12,"context_line":"strategy behavoir."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia12b2f0b8369e632a7959b28e485d86b6cff83e9"},{"line_number":15,"context_line":"Closes-Bug: #1691056"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f1d235d_491a8a17","line":12,"range":{"start_line":12,"start_character":9,"end_line":12,"end_character":17},"in_reply_to":"3f1d235d_472a7c90","updated":"2017-07-10 11:28:56.000000000","message":"Done","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"}],"watcher/applier/actions/migration.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"74c93115850366c8bd53e67193354bf58ee85e64","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def migrate(self, destination\u003dNone):"},{"line_number":156,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":157,"context_line":"        LOG.debug(\"Migrate instance %s to %s\", self.instance_uuid,"},{"line_number":158,"context_line":"                  destination)"},{"line_number":159,"context_line":"        instance \u003d nova.find_instance(self.instance_uuid)"},{"line_number":160,"context_line":"        if instance:"},{"line_number":161,"context_line":"            if self.migration_type \u003d\u003d self.LIVE_MIGRATION:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_978b9b66","line":158,"range":{"start_line":158,"start_character":18,"end_line":158,"end_character":29},"updated":"2017-06-27 01:17:59.000000000","message":"if destination is None, this is not valid.","commit_id":"e5d5a175b804ef951dde409e4e91fbf962662082"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"0530807f7263ef8b8a07f5a42bbfcd39c4ab8cc8","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def migrate(self, destination\u003dNone):"},{"line_number":156,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":157,"context_line":"        LOG.debug(\"Migrate instance %s to %s\", self.instance_uuid,"},{"line_number":158,"context_line":"                  destination)"},{"line_number":159,"context_line":"        instance \u003d nova.find_instance(self.instance_uuid)"},{"line_number":160,"context_line":"        if instance:"},{"line_number":161,"context_line":"            if self.migration_type \u003d\u003d self.LIVE_MIGRATION:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_e0789090","line":158,"range":{"start_line":158,"start_character":18,"end_line":158,"end_character":29},"in_reply_to":"5f201791_978b9b66","updated":"2017-06-28 07:43:28.000000000","message":"I think, we should not remove it as in the case destination node None, it will log \"Migrate instance \u003cinstance uuid\u003e to None\". Other option is we can just log\nLOG.debug(\"Migrating instance %s\", self.instance_uuid)","commit_id":"e5d5a175b804ef951dde409e4e91fbf962662082"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"e770fac853ce9e631d5e9856312b7d8298efb38b","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def migrate(self, destination\u003dNone):"},{"line_number":156,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":157,"context_line":"        LOG.debug(\"Migrate instance %s to %s\", self.instance_uuid,"},{"line_number":158,"context_line":"                  destination)"},{"line_number":159,"context_line":"        instance \u003d nova.find_instance(self.instance_uuid)"},{"line_number":160,"context_line":"        if instance:"},{"line_number":161,"context_line":"            if self.migration_type \u003d\u003d self.LIVE_MIGRATION:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_9acca835","line":158,"range":{"start_line":158,"start_character":18,"end_line":158,"end_character":29},"in_reply_to":"5f201791_e0789090","updated":"2017-06-28 09:26:33.000000000","message":"\"to None\" is too strange.\nHow about \"Migrating instance %s. Destination node will be determined by nova-scheduler\" or something if destination node  is not given?","commit_id":"e5d5a175b804ef951dde409e4e91fbf962662082"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"74c93115850366c8bd53e67193354bf58ee85e64","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            if self.migration_type \u003d\u003d self.LIVE_MIGRATION:"},{"line_number":162,"context_line":"                return self._live_migrate_instance(nova, destination)"},{"line_number":163,"context_line":"            elif self.migration_type \u003d\u003d self.COLD_MIGRATION:"},{"line_number":164,"context_line":"                return self._cold_migrate_instance(nova, destination)"},{"line_number":165,"context_line":"            else:"},{"line_number":166,"context_line":"                raise exception.Invalid("},{"line_number":167,"context_line":"                    message\u003d(_(\"Migration of type \u0027%(migration_type)s\u0027 is not \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_b751f7db","line":164,"range":{"start_line":164,"start_character":27,"end_line":164,"end_character":50},"updated":"2017-06-27 01:17:59.000000000","message":"Bug title is \"Enable live migration to rely on nova-scheduler\". So I assumed only live migrate would rely on nova scheduler. Is this intended? If intended, please add test for this, too.","commit_id":"e5d5a175b804ef951dde409e4e91fbf962662082"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6aa126963bbeedde4e90108bff706aabe2e105cb","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            if self.migration_type \u003d\u003d self.LIVE_MIGRATION:"},{"line_number":162,"context_line":"                return self._live_migrate_instance(nova, destination)"},{"line_number":163,"context_line":"            elif self.migration_type \u003d\u003d self.COLD_MIGRATION:"},{"line_number":164,"context_line":"                return self._cold_migrate_instance(nova, destination)"},{"line_number":165,"context_line":"            else:"},{"line_number":166,"context_line":"                raise exception.Invalid("},{"line_number":167,"context_line":"                    message\u003d(_(\"Migration of type \u0027%(migration_type)s\u0027 is not \""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_fa96e194","line":164,"range":{"start_line":164,"start_character":27,"end_line":164,"end_character":50},"in_reply_to":"5f201791_2558da53","updated":"2017-06-29 06:09:16.000000000","message":"Done","commit_id":"e5d5a175b804ef951dde409e4e91fbf962662082"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"0530807f7263ef8b8a07f5a42bbfcd39c4ab8cc8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            if self.migration_type \u003d\u003d self.LIVE_MIGRATION:"},{"line_number":162,"context_line":"                return self._live_migrate_instance(nova, destination)"},{"line_number":163,"context_line":"            elif self.migration_type \u003d\u003d self.COLD_MIGRATION:"},{"line_number":164,"context_line":"                return self._cold_migrate_instance(nova, destination)"},{"line_number":165,"context_line":"            else:"},{"line_number":166,"context_line":"                raise exception.Invalid("},{"line_number":167,"context_line":"                    message\u003d(_(\"Migration of type \u0027%(migration_type)s\u0027 is not \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f201791_2558da53","line":164,"range":{"start_line":164,"start_character":27,"end_line":164,"end_character":50},"in_reply_to":"5f201791_b751f7db","updated":"2017-06-28 07:43:28.000000000","message":"Added Test case for cold migration","commit_id":"e5d5a175b804ef951dde409e4e91fbf962662082"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"204474ed30bc2f12bbcc8f9e78bf53a2032ef290","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    def migrate(self, destination\u003dNone):"},{"line_number":156,"context_line":"        nova \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":157,"context_line":"        if destination is None:"},{"line_number":158,"context_line":"            LOG.debug(\"Migrating instance %s, destination node will be\""},{"line_number":159,"context_line":"                      \"determined by nova-scheduler\", self.instance_uuid)"},{"line_number":160,"context_line":"        else:"},{"line_number":161,"context_line":"            LOG.debug(\"Migrate instance %s to %s\", self.instance_uuid,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_05693524","line":158,"updated":"2017-06-29 12:37:18.000000000","message":"need blank.","commit_id":"ef0c6722dd9843b5901450d67da4c6e78c4d34e0"}],"watcher/common/nova_helper.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"b874e3141cf5e3d14e18d08db790b33951eb9696","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"                instance.migrate()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"                while getattr(instance, \u0027status\u0027) !\u003d \u0027ACTIVE\u0027 and retry:"},{"line_number":151,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":152,"context_line":"                    time.sleep(1)"},{"line_number":153,"context_line":"                    retry -\u003d 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_ef9dfa66","line":150,"range":{"start_line":150,"start_character":22,"end_line":150,"end_character":61},"updated":"2017-06-29 11:16:33.000000000","message":"This is not the opposite of L156, Actually this action always FAILED in spite of successfully migrated in my environment.\n\nThe following statement is ended with SUCCESS in my environment.\n\nwhile ((host_name \u003d\u003d getattr(instance, \u0027OS-EXT-SRV-ATTR:host\u0027)\n        or getattr(instance, \u0027status\u0027) !\u003d \u0027ACTIVE\u0027) and retry):","commit_id":"ef0c6722dd9843b5901450d67da4c6e78c4d34e0"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"8ebb75f1f64a4b13467c65f81baff9e04b3b975b","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"                instance.migrate()"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"                while getattr(instance, \u0027status\u0027) !\u003d \u0027ACTIVE\u0027 and retry:"},{"line_number":151,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":152,"context_line":"                    time.sleep(1)"},{"line_number":153,"context_line":"                    retry -\u003d 1"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_0f2156b5","line":150,"range":{"start_line":150,"start_character":22,"end_line":150,"end_character":61},"in_reply_to":"3f1d235d_ef9dfa66","updated":"2017-06-29 11:37:23.000000000","message":"Good catch!!, I have used same conditions for cold migration, for cold migration instance will not come to active state, i will refactor it. thanks","commit_id":"ef0c6722dd9843b5901450d67da4c6e78c4d34e0"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"6e59105560c4c40a0dcdf35894d9d1dd31dd4d76","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            # NOTE: If destination host is not specified for live migration"},{"line_number":435,"context_line":"            # let nova scheduler choose the destination host."},{"line_number":436,"context_line":"            if dest_hostname is None:"},{"line_number":437,"context_line":"                while getattr(instance, \u0027status\u0027) !\u003d \u0027ACTIVE\u0027 and retry:"},{"line_number":438,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":439,"context_line":"                    LOG.debug("},{"line_number":440,"context_line":"                        \u0027Waiting the migration of {0} to {1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_b7eef0b1","line":437,"range":{"start_line":437,"start_character":15,"end_line":437,"end_character":71},"updated":"2017-07-03 01:31:26.000000000","message":"Sorry I tested really live migrate rather than cold migrate..\nThe following is piece of the code lively migrated successfully.\nIf we do not update while statement like below, host_name(L450) and new_hostname(L451) return the same hostname, this method returns always False.\n\n434             # NOTE: If destination host is not specified for live migration\n435             # let nova scheduler choose the destination host.\n436             if dest_hostname is None:\n437                 LOG.debug(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d dest_hostname is None \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\")\n438                 while ((host_name \u003d\u003d getattr(instance, \u0027OS-EXT-SRV-ATTR:host\u0027)\n439                         or getattr(instance, \u0027status\u0027) !\u003d \u0027ACTIVE\u0027) and retry):\n440                     instance \u003d self.nova.servers.get(instance.id)\n441                     LOG.debug(\n442                         \u0027Waiting the migration of {0} to {1}\u0027.format(\n443                             instance,\n444                             getattr(instance,\n445                                     \u0027OS-EXT-SRV-ATTR:host\u0027)))\n446                     time.sleep(1)\n447                     retry -\u003d 1\n448                 new_hostname \u003d getattr(instance, \u0027OS-EXT-SRV-ATTR:host\u0027)\n449\n450                 LOG.debug(host_name)\n451                 LOG.debug(new_hostname)\n452                 LOG.debug(instance.status)\n453                 if host_name !\u003d new_hostname and instance.status \u003d\u003d \u0027ACTIVE\u0027:\n454                     LOG.debug(\n455                         \"Live migration succeeded : \"\n456                         \"instance %s is now on host \u0027%s\u0027.\" % (\n457                             instance_id, new_hostname))\n458                     return True\n459                 else:","commit_id":"ef0c6722dd9843b5901450d67da4c6e78c4d34e0"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"be1dd5b6f9ed610620ce802d0277394c4cb987c3","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            # NOTE: If destination host is not specified for live migration"},{"line_number":435,"context_line":"            # let nova scheduler choose the destination host."},{"line_number":436,"context_line":"            if dest_hostname is None:"},{"line_number":437,"context_line":"                while getattr(instance, \u0027status\u0027) !\u003d \u0027ACTIVE\u0027 and retry:"},{"line_number":438,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":439,"context_line":"                    LOG.debug("},{"line_number":440,"context_line":"                        \u0027Waiting the migration of {0} to {1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_711c9dc0","line":437,"range":{"start_line":437,"start_character":15,"end_line":437,"end_character":71},"in_reply_to":"3f1d235d_b7eef0b1","updated":"2017-07-05 07:58:53.000000000","message":"Done","commit_id":"ef0c6722dd9843b5901450d67da4c6e78c4d34e0"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"6c458d56959ed69a8b46bafbb1554845be654aba","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                instance.migrate()"},{"line_number":161,"context_line":"                instance \u003d self.nova.servers.get(instance_id)"},{"line_number":162,"context_line":"                while (getattr(instance, \u0027status\u0027) not in"},{"line_number":163,"context_line":"                       [\"VERIFY_RESIZE\", \"ERROR\"] and retry):"},{"line_number":164,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":165,"context_line":"                    time.sleep(2)"},{"line_number":166,"context_line":"                    retry -\u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_e6eb2a75","line":163,"range":{"start_line":163,"start_character":23,"end_line":163,"end_character":49},"updated":"2017-07-06 06:44:42.000000000","message":"Since I could not find status transition during cold migration, could you show me status transition during cold migration?","commit_id":"ccbd056121e265cff8ddec294f601d61374e38e5"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"8ea440b1d5634134ed898d2faac403c3298a1a4d","unresolved":false,"context_lines":[{"line_number":160,"context_line":"                instance.migrate()"},{"line_number":161,"context_line":"                instance \u003d self.nova.servers.get(instance_id)"},{"line_number":162,"context_line":"                while (getattr(instance, \u0027status\u0027) not in"},{"line_number":163,"context_line":"                       [\"VERIFY_RESIZE\", \"ERROR\"] and retry):"},{"line_number":164,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":165,"context_line":"                    time.sleep(2)"},{"line_number":166,"context_line":"                    retry -\u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_e24d4f3e","line":163,"range":{"start_line":163,"start_character":23,"end_line":163,"end_character":49},"in_reply_to":"3f1d235d_e6eb2a75","updated":"2017-07-06 09:16:41.000000000","message":"hidekazu, for cold migration, when nova server accepts the request it updates task_state to \"RESIZE_PREP\"\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L3350\nwhen cold migration completed, it updates vm_state to \"RESIZED\"\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L4079\nThere is mapping between instance status, vm_state and task_state at https://github.com/openstack/nova/blob/master/nova/api/openstack/common.py#L113\n\nsummarized: \nstatus is \u0027RESIZE\u0027 when cold migration starts, status is \u0027VERIFY_RESIZE\u0027 when cold migration completes.\nwe need to call confirm resize to confirm migration.","commit_id":"ccbd056121e265cff8ddec294f601d61374e38e5"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"6c458d56959ed69a8b46bafbb1554845be654aba","unresolved":false,"context_lines":[{"line_number":452,"context_line":"            # NOTE: If destination host is not specified for live migration"},{"line_number":453,"context_line":"            # let nova scheduler choose the destination host."},{"line_number":454,"context_line":"            if dest_hostname is None:"},{"line_number":455,"context_line":"                while (instance.status not in [\u0027ACTIVE\u0027, \u0027ERROR\u0027] and retry):"},{"line_number":456,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":457,"context_line":"                    LOG.debug("},{"line_number":458,"context_line":"                        \u0027Waiting the migration of {0} to {1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_86fc763e","line":455,"range":{"start_line":455,"start_character":46,"end_line":455,"end_character":65},"updated":"2017-07-06 06:44:42.000000000","message":"Since I could not find status transition during live migration, could you show me status transition during live migration?","commit_id":"ccbd056121e265cff8ddec294f601d61374e38e5"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"8ea440b1d5634134ed898d2faac403c3298a1a4d","unresolved":false,"context_lines":[{"line_number":452,"context_line":"            # NOTE: If destination host is not specified for live migration"},{"line_number":453,"context_line":"            # let nova scheduler choose the destination host."},{"line_number":454,"context_line":"            if dest_hostname is None:"},{"line_number":455,"context_line":"                while (instance.status not in [\u0027ACTIVE\u0027, \u0027ERROR\u0027] and retry):"},{"line_number":456,"context_line":"                    instance \u003d self.nova.servers.get(instance.id)"},{"line_number":457,"context_line":"                    LOG.debug("},{"line_number":458,"context_line":"                        \u0027Waiting the migration of {0} to {1}\u0027.format("}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_c2cdb385","line":455,"range":{"start_line":455,"start_character":46,"end_line":455,"end_character":65},"in_reply_to":"3f1d235d_86fc763e","updated":"2017-07-06 09:16:41.000000000","message":"hidekazu, for live migration Nova updates the instance status to \"MIGRATING\" and when live migration completes instance status sets to \"ACTIVE\", the instance status is derived from task_state and vm_state \nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/common.py#L113\n\nso, in nova code we find only updates for task_state and vm_state\ncheck following for transitions\nhttps://github.com/openstack/nova/blob/master/nova/compute/api.py#L4008\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L5763","commit_id":"ccbd056121e265cff8ddec294f601d61374e38e5"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"6c458d56959ed69a8b46bafbb1554845be654aba","unresolved":false,"context_lines":[{"line_number":457,"context_line":"                    LOG.debug("},{"line_number":458,"context_line":"                        \u0027Waiting the migration of {0} to {1}\u0027.format("},{"line_number":459,"context_line":"                            instance,"},{"line_number":460,"context_line":"                            getattr(instance,"},{"line_number":461,"context_line":"                                    \u0027OS-EXT-SRV-ATTR:host\u0027)))"},{"line_number":462,"context_line":"                    time.sleep(1)"},{"line_number":463,"context_line":"                    retry -\u003d 1"},{"line_number":464,"context_line":"                new_hostname \u003d getattr(instance, \u0027OS-EXT-SRV-ATTR:host\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_266922f8","line":461,"range":{"start_line":460,"start_character":28,"end_line":461,"end_character":60},"updated":"2017-07-06 06:44:42.000000000","message":"Since this is still pointing source hostname, I suggest only \u0027Waiting the migration of {0}\u0027.","commit_id":"ccbd056121e265cff8ddec294f601d61374e38e5"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"8ea440b1d5634134ed898d2faac403c3298a1a4d","unresolved":false,"context_lines":[{"line_number":457,"context_line":"                    LOG.debug("},{"line_number":458,"context_line":"                        \u0027Waiting the migration of {0} to {1}\u0027.format("},{"line_number":459,"context_line":"                            instance,"},{"line_number":460,"context_line":"                            getattr(instance,"},{"line_number":461,"context_line":"                                    \u0027OS-EXT-SRV-ATTR:host\u0027)))"},{"line_number":462,"context_line":"                    time.sleep(1)"},{"line_number":463,"context_line":"                    retry -\u003d 1"},{"line_number":464,"context_line":"                new_hostname \u003d getattr(instance, \u0027OS-EXT-SRV-ATTR:host\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_42a763be","line":461,"range":{"start_line":460,"start_character":28,"end_line":461,"end_character":60},"in_reply_to":"3f1d235d_266922f8","updated":"2017-07-06 09:16:41.000000000","message":"will update","commit_id":"ccbd056121e265cff8ddec294f601d61374e38e5"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if instance.status \u003d\u003d previous_status:"},{"line_number":96,"context_line":"            return True"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            return False"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def wait_for_volume_status(self, volume, status, timeout\u003d60,"},{"line_number":101,"context_line":"                               poll_interval\u003d1):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_ad20114b","line":98,"range":{"start_line":98,"start_character":12,"end_line":98,"end_character":24},"updated":"2017-07-10 07:36:59.000000000","message":"It should add LOG messages. LOG.debug maybe.","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"1d94860759557b4dc178e74bd51c2569c8c1260e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if instance.status \u003d\u003d previous_status:"},{"line_number":96,"context_line":"            return True"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            return False"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def wait_for_volume_status(self, volume, status, timeout\u003d60,"},{"line_number":101,"context_line":"                               poll_interval\u003d1):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_e9d6f627","line":98,"range":{"start_line":98,"start_character":12,"end_line":98,"end_character":24},"in_reply_to":"3f1d235d_ad20114b","updated":"2017-07-10 11:28:56.000000000","message":"Done","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                          retry\u003d120):"},{"line_number":123,"context_line":"        \"\"\"This method migrates a given instance"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        using an image of this instance and creating a new instance"},{"line_number":126,"context_line":"        from this image. It saves some configuration information"},{"line_number":127,"context_line":"        about the original instance : security group, list of networks,"},{"line_number":128,"context_line":"        list of attached volumes, floating IP, ..."},{"line_number":129,"context_line":"        in order to apply the same settings to the new instance."},{"line_number":130,"context_line":"        At the end of the process the original instance is deleted."},{"line_number":131,"context_line":"        It returns True if the migration was successful,"},{"line_number":132,"context_line":"        False otherwise."},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_6d3439df","line":130,"range":{"start_line":125,"start_character":0,"end_line":130,"end_character":67},"updated":"2017-07-10 07:36:59.000000000","message":"If dest_hsotname is None, this method no longer create new instance. So explanatory text should be updated.","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"1d94860759557b4dc178e74bd51c2569c8c1260e","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                          retry\u003d120):"},{"line_number":123,"context_line":"        \"\"\"This method migrates a given instance"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        using an image of this instance and creating a new instance"},{"line_number":126,"context_line":"        from this image. It saves some configuration information"},{"line_number":127,"context_line":"        about the original instance : security group, list of networks,"},{"line_number":128,"context_line":"        list of attached volumes, floating IP, ..."},{"line_number":129,"context_line":"        in order to apply the same settings to the new instance."},{"line_number":130,"context_line":"        At the end of the process the original instance is deleted."},{"line_number":131,"context_line":"        It returns True if the migration was successful,"},{"line_number":132,"context_line":"        False otherwise."},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_c9db3a4d","line":130,"range":{"start_line":125,"start_character":0,"end_line":130,"end_character":67},"in_reply_to":"3f1d235d_6d3439df","updated":"2017-07-10 11:28:56.000000000","message":"Done","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            If this flag is False, a temporary image name is built"},{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        new_image_name \u003d \"\""},{"line_number":141,"context_line":"        LOG.debug("},{"line_number":142,"context_line":"            \"Trying a non-live migrate of instance \u0027%s\u0027 \""},{"line_number":143,"context_line":"            \"using a temporary image ...\" % instance_id)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        # Looking for the instance to migrate"},{"line_number":146,"context_line":"        instance \u003d self.find_instance(instance_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_1f3168ed","line":143,"range":{"start_line":141,"start_character":0,"end_line":143,"end_character":56},"updated":"2017-07-10 07:36:59.000000000","message":"If dest_hsotname is None, this method no longer create new instance. So this message should be updated.","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"1d94860759557b4dc178e74bd51c2569c8c1260e","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            If this flag is False, a temporary image name is built"},{"line_number":139,"context_line":"        \"\"\""},{"line_number":140,"context_line":"        new_image_name \u003d \"\""},{"line_number":141,"context_line":"        LOG.debug("},{"line_number":142,"context_line":"            \"Trying a non-live migrate of instance \u0027%s\u0027 \""},{"line_number":143,"context_line":"            \"using a temporary image ...\" % instance_id)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        # Looking for the instance to migrate"},{"line_number":146,"context_line":"        instance \u003d self.find_instance(instance_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_a9e0fefb","line":143,"range":{"start_line":141,"start_character":0,"end_line":143,"end_character":56},"in_reply_to":"3f1d235d_1f3168ed","updated":"2017-07-10 11:28:56.000000000","message":"Done","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                if (host_name !\u003d new_hostname and"},{"line_number":170,"context_line":"                   instance.status \u003d\u003d \u0027VERIFY_RESIZE\u0027):"},{"line_number":171,"context_line":"                    if not self.confirm_resize(instance, previous_status):"},{"line_number":172,"context_line":"                        return False"},{"line_number":173,"context_line":"                    LOG.debug("},{"line_number":174,"context_line":"                        \"cold migration succeeded : \""},{"line_number":175,"context_line":"                        \"instance %s is now on höst \u0027%s\u0027.\" % ("}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_cde0edfd","line":172,"range":{"start_line":172,"start_character":24,"end_line":172,"end_character":36},"updated":"2017-07-10 07:36:59.000000000","message":"It should add LOG messages. LOG.debug maybe.","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"1d94860759557b4dc178e74bd51c2569c8c1260e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                if (host_name !\u003d new_hostname and"},{"line_number":170,"context_line":"                   instance.status \u003d\u003d \u0027VERIFY_RESIZE\u0027):"},{"line_number":171,"context_line":"                    if not self.confirm_resize(instance, previous_status):"},{"line_number":172,"context_line":"                        return False"},{"line_number":173,"context_line":"                    LOG.debug("},{"line_number":174,"context_line":"                        \"cold migration succeeded : \""},{"line_number":175,"context_line":"                        \"instance %s is now on höst \u0027%s\u0027.\" % ("}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_49ef2ae9","line":172,"range":{"start_line":172,"start_character":24,"end_line":172,"end_character":36},"in_reply_to":"3f1d235d_cde0edfd","updated":"2017-07-10 11:28:56.000000000","message":"added in confirm resize, so no need here","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                        return False"},{"line_number":173,"context_line":"                    LOG.debug("},{"line_number":174,"context_line":"                        \"cold migration succeeded : \""},{"line_number":175,"context_line":"                        \"instance %s is now on höst \u0027%s\u0027.\" % ("},{"line_number":176,"context_line":"                            instance_id, new_hostname))"},{"line_number":177,"context_line":"                    return True"},{"line_number":178,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_32e8dc14","line":175,"range":{"start_line":175,"start_character":47,"end_line":175,"end_character":51},"updated":"2017-07-10 07:36:59.000000000","message":"It should describe \"host\" not \"höst\".","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"1d94860759557b4dc178e74bd51c2569c8c1260e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                        return False"},{"line_number":173,"context_line":"                    LOG.debug("},{"line_number":174,"context_line":"                        \"cold migration succeeded : \""},{"line_number":175,"context_line":"                        \"instance %s is now on höst \u0027%s\u0027.\" % ("},{"line_number":176,"context_line":"                            instance_id, new_hostname))"},{"line_number":177,"context_line":"                    return True"},{"line_number":178,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_09bb72e5","line":175,"range":{"start_line":175,"start_character":47,"end_line":175,"end_character":51},"in_reply_to":"3f1d235d_32e8dc14","updated":"2017-07-10 11:28:56.000000000","message":"Done","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                            instance_id, new_hostname))"},{"line_number":177,"context_line":"                    return True"},{"line_number":178,"context_line":"                else:"},{"line_number":179,"context_line":"                    return False"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"            if not keep_original_image_name:"},{"line_number":182,"context_line":"                # randrange gives you an integral value"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_0d0945dc","line":179,"range":{"start_line":179,"start_character":20,"end_line":179,"end_character":32},"updated":"2017-07-10 07:36:59.000000000","message":"It should add LOG messages. LOG.debug maybe.","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"1d94860759557b4dc178e74bd51c2569c8c1260e","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                            instance_id, new_hostname))"},{"line_number":177,"context_line":"                    return True"},{"line_number":178,"context_line":"                else:"},{"line_number":179,"context_line":"                    return False"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"            if not keep_original_image_name:"},{"line_number":182,"context_line":"                # randrange gives you an integral value"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_c9b45af5","line":179,"range":{"start_line":179,"start_character":20,"end_line":179,"end_character":32},"in_reply_to":"3f1d235d_0d0945dc","updated":"2017-07-10 11:28:56.000000000","message":"Done","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"95f8653aa353010c464487e471e18d02c92b23c6","unresolved":false,"context_lines":[{"line_number":467,"context_line":"                            instance_id, new_hostname))"},{"line_number":468,"context_line":"                    return True"},{"line_number":469,"context_line":"                else:"},{"line_number":470,"context_line":"                    return False"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"            while getattr(instance,"},{"line_number":473,"context_line":"                          \u0027OS-EXT-SRV-ATTR:host\u0027) !\u003d dest_hostname \\"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_0dc02550","line":470,"range":{"start_line":470,"start_character":20,"end_line":470,"end_character":32},"updated":"2017-07-10 07:36:59.000000000","message":"It should add LOG messages. LOG.debug maybe.","commit_id":"40c4ac0cfd027c1ea017975218d49d53a443ee8f"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"f3371fac1238c3f7efc80d18d68504966fefed0d","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        False otherwise."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        :param instance_id: the unique id of the instance to migrate."},{"line_number":436,"context_line":"        :param dest_hostname: the name of the destination compute node."},{"line_number":437,"context_line":"        :param block_migration:  No shared storage is required."},{"line_number":438,"context_line":"        \"\"\""},{"line_number":439,"context_line":"        LOG.debug(\"Trying a live migrate of instance %s to host \u0027%s\u0027\" % ("}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_4c7431cf","line":436,"range":{"start_line":436,"start_character":15,"end_line":436,"end_character":28},"updated":"2017-07-19 02:41:55.000000000","message":"please update the param description, like:\nIf dest_hostname is None, let nova scheduler choose the destination host","commit_id":"715e29d9131446c8c968cbedf9e5601d19c5c978"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"fe77abbbc01b31967172bba51135b244816e31a1","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        False otherwise."},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"        :param instance_id: the unique id of the instance to migrate."},{"line_number":436,"context_line":"        :param dest_hostname: the name of the destination compute node."},{"line_number":437,"context_line":"        :param block_migration:  No shared storage is required."},{"line_number":438,"context_line":"        \"\"\""},{"line_number":439,"context_line":"        LOG.debug(\"Trying a live migrate of instance %s to host \u0027%s\u0027\" % ("}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_592e03fb","line":436,"range":{"start_line":436,"start_character":15,"end_line":436,"end_character":28},"in_reply_to":"1f1a1f67_4c7431cf","updated":"2017-07-20 05:39:15.000000000","message":"Done","commit_id":"715e29d9131446c8c968cbedf9e5601d19c5c978"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"f3371fac1238c3f7efc80d18d68504966fefed0d","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        :param dest_hostname: the name of the destination compute node."},{"line_number":437,"context_line":"        :param block_migration:  No shared storage is required."},{"line_number":438,"context_line":"        \"\"\""},{"line_number":439,"context_line":"        LOG.debug(\"Trying a live migrate of instance %s to host \u0027%s\u0027\" % ("},{"line_number":440,"context_line":"            instance_id, dest_hostname))"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        # Looking for the instance to migrate"},{"line_number":443,"context_line":"        instance \u003d self.find_instance(instance_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_774d763c","line":440,"range":{"start_line":439,"start_character":4,"end_line":440,"end_character":39},"updated":"2017-07-19 02:41:55.000000000","message":"It\u0027s better to separate the logging when dest_hostname is None.","commit_id":"715e29d9131446c8c968cbedf9e5601d19c5c978"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"fe77abbbc01b31967172bba51135b244816e31a1","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        :param dest_hostname: the name of the destination compute node."},{"line_number":437,"context_line":"        :param block_migration:  No shared storage is required."},{"line_number":438,"context_line":"        \"\"\""},{"line_number":439,"context_line":"        LOG.debug(\"Trying a live migrate of instance %s to host \u0027%s\u0027\" % ("},{"line_number":440,"context_line":"            instance_id, dest_hostname))"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        # Looking for the instance to migrate"},{"line_number":443,"context_line":"        instance \u003d self.find_instance(instance_id)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_39334765","line":440,"range":{"start_line":439,"start_character":4,"end_line":440,"end_character":39},"in_reply_to":"1f1a1f67_774d763c","updated":"2017-07-20 05:39:15.000000000","message":"Done","commit_id":"715e29d9131446c8c968cbedf9e5601d19c5c978"}]}
