)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bd09152f5aad004bc74b5c9641d805b4d7097f24","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add detaching the volume and attaching the volume in \u0027swap_volume\u0027"},{"line_number":10,"context_line":"when \u0027swap_volume\u0027 function is called by users, not called by cinder."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ia66b773b404a974486863bf3d21941d55cc4fdb9"},{"line_number":13,"context_line":"Closes-Bug: #1471098"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a4dcd0f_2e8f8576","line":11,"updated":"2015-08-15 16:14:30.000000000","message":"the patch does a number of things that are not mentioned here and those may be worthwhile splitting into small patches - for example the notifications.","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"c1cb50fc75814474e42e82ab4f3ea011f787d993","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Takashi NATSUME \u003cnatsume.takashi@lab.ntt.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-24 14:47:56 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cinder volume stuck in swap_volume"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add detaching the volume and attaching the volume in \u0027swap_volume\u0027"},{"line_number":10,"context_line":"when \u0027swap_volume\u0027 function is called by users, not called by cinder."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_a1f19dcf","line":7,"updated":"2015-08-27 09:29:41.000000000","message":"Hi,\n\nYou can modify commit message as below:\n\nFix cinder volume stuck in swap_volume\n\nWhen swap_volume is called, old_volume and new_volume are stuck\nin \u0027detaching\u0027 and \u0027attaching\u0027 status respectively.\n\nAdded code in swap_volume api to attach new_volume and detach old_volume.","commit_id":"7eba56d1f4c9b090c2dbf22f4f6ff875f3473693"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"fdf20bae3b38a83be7458feeaefa25c18ce2d0ec","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Takashi NATSUME \u003cnatsume.takashi@lab.ntt.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-24 14:47:56 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cinder volume stuck in swap_volume"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add detaching the volume and attaching the volume in \u0027swap_volume\u0027"},{"line_number":10,"context_line":"when \u0027swap_volume\u0027 function is called by users, not called by cinder."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_a90f17e0","line":7,"in_reply_to":"da20952f_a1f19dcf","updated":"2015-08-28 00:15:06.000000000","message":"Done.\n\nRajesh-san, Thank you.","commit_id":"7eba56d1f4c9b090c2dbf22f4f6ff875f3473693"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4889c36c5c71026f74db4abbd716e4d5107b8d91","unresolved":false,"context_lines":[{"line_number":19,"context_line":"in swap_volume method."},{"line_number":20,"context_line":"As a result, cinder migrate works well,"},{"line_number":21,"context_line":"but nova swap_volume doesn\u0027t work."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ia66b773b404a974486863bf3d21941d55cc4fdb9"},{"line_number":24,"context_line":"Closes-Bug: #1471098"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1a26ad4f_e4b41636","line":22,"updated":"2015-11-02 08:52:38.000000000","message":"Please add a DocImpact here - the reason for this request is that we are changing a API in the virt driver. At the moment only libvirt is using this so it is ok. Guess that is up to you","commit_id":"5f1f64c88a93db23eaa7f1651e0368add45713c7"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"9376fb020d7548cbd74eb1dc3e1ca58890645144","unresolved":false,"context_lines":[{"line_number":19,"context_line":"in swap_volume method."},{"line_number":20,"context_line":"As a result, cinder migrate works well,"},{"line_number":21,"context_line":"but nova swap_volume doesn\u0027t work."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ia66b773b404a974486863bf3d21941d55cc4fdb9"},{"line_number":24,"context_line":"Closes-Bug: #1471098"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"1a26ad4f_94230ba7","line":22,"in_reply_to":"1a26ad4f_e4b41636","updated":"2015-11-02 11:19:08.000000000","message":"Done","commit_id":"5f1f64c88a93db23eaa7f1651e0368add45713c7"}],"nova/compute/manager.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bd09152f5aad004bc74b5c9641d805b4d7097f24","unresolved":false,"context_lines":[{"line_number":4637,"context_line":"        except Exception as e:"},{"line_number":4638,"context_line":"            failed \u003d True"},{"line_number":4639,"context_line":"            info \u003d {\u0027old_volume\u0027: old_volume_id, \u0027new_volume\u0027: new_volume_id}"},{"line_number":4640,"context_line":"            self._notify_about_instance_usage(context, instance,"},{"line_number":4641,"context_line":"                                              \u0027volume.swap.error\u0027,"},{"line_number":4642,"context_line":"                                              extra_usage_info\u003dinfo,"},{"line_number":4643,"context_line":"                                              fault\u003de)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_4e8a1166","line":4640,"updated":"2015-08-15 16:14:30.000000000","message":"this is what i was referring to with the commit message","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"155c61a4fa7ee7d5effe6fae535050a7950bba5a","unresolved":false,"context_lines":[{"line_number":4637,"context_line":"        except Exception as e:"},{"line_number":4638,"context_line":"            failed \u003d True"},{"line_number":4639,"context_line":"            info \u003d {\u0027old_volume\u0027: old_volume_id, \u0027new_volume\u0027: new_volume_id}"},{"line_number":4640,"context_line":"            self._notify_about_instance_usage(context, instance,"},{"line_number":4641,"context_line":"                                              \u0027volume.swap.error\u0027,"},{"line_number":4642,"context_line":"                                              extra_usage_info\u003dinfo,"},{"line_number":4643,"context_line":"                                              fault\u003de)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_987163e3","line":4640,"in_reply_to":"1a4dcd0f_4e8a1166","updated":"2015-08-24 07:20:15.000000000","message":"I removed codes about notification.","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bd09152f5aad004bc74b5c9641d805b4d7097f24","unresolved":false,"context_lines":[{"line_number":4690,"context_line":"        info \u003d {\u0027old_volume\u0027: old_volume_id, \u0027new_volume\u0027: new_volume_id}"},{"line_number":4691,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4692,"context_line":"                                          \u0027volume.swap.start\u0027,"},{"line_number":4693,"context_line":"                                          extra_usage_info\u003dinfo)"},{"line_number":4694,"context_line":""},{"line_number":4695,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("},{"line_number":4696,"context_line":"                context, old_volume_id, instance_uuid\u003dinstance.uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_eee75d44","line":4693,"updated":"2015-08-15 16:14:30.000000000","message":"ditto","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"155c61a4fa7ee7d5effe6fae535050a7950bba5a","unresolved":false,"context_lines":[{"line_number":4690,"context_line":"        info \u003d {\u0027old_volume\u0027: old_volume_id, \u0027new_volume\u0027: new_volume_id}"},{"line_number":4691,"context_line":"        self._notify_about_instance_usage(context, instance,"},{"line_number":4692,"context_line":"                                          \u0027volume.swap.start\u0027,"},{"line_number":4693,"context_line":"                                          extra_usage_info\u003dinfo)"},{"line_number":4694,"context_line":""},{"line_number":4695,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("},{"line_number":4696,"context_line":"                context, old_volume_id, instance_uuid\u003dinstance.uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_3877f7d5","line":4693,"in_reply_to":"1a4dcd0f_eee75d44","updated":"2015-08-24 07:20:15.000000000","message":"I removed codes about notification.","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bd09152f5aad004bc74b5c9641d805b4d7097f24","unresolved":false,"context_lines":[{"line_number":4697,"context_line":"        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":4698,"context_line":""},{"line_number":4699,"context_line":"        resize_to \u003d 0"},{"line_number":4700,"context_line":"        old_volume \u003d self.volume_api.get(context, old_volume_id)"},{"line_number":4701,"context_line":"        new_volume \u003d self.volume_api.get(context, new_volume_id)"},{"line_number":4702,"context_line":"        if new_volume[\u0027size\u0027] \u003e old_volume[\u0027size\u0027]:"},{"line_number":4703,"context_line":"            resize_to \u003d new_volume[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_0eeba913","line":4700,"updated":"2015-08-15 16:14:30.000000000","message":"this change too","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"155c61a4fa7ee7d5effe6fae535050a7950bba5a","unresolved":false,"context_lines":[{"line_number":4697,"context_line":"        connector \u003d self.driver.get_volume_connector(instance)"},{"line_number":4698,"context_line":""},{"line_number":4699,"context_line":"        resize_to \u003d 0"},{"line_number":4700,"context_line":"        old_volume \u003d self.volume_api.get(context, old_volume_id)"},{"line_number":4701,"context_line":"        new_volume \u003d self.volume_api.get(context, new_volume_id)"},{"line_number":4702,"context_line":"        if new_volume[\u0027size\u0027] \u003e old_volume[\u0027size\u0027]:"},{"line_number":4703,"context_line":"            resize_to \u003d new_volume[\u0027size\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_78432f6d","line":4700,"in_reply_to":"1a4dcd0f_0eeba913","updated":"2015-08-24 07:20:15.000000000","message":"This change is needed because \u0027migration_status\u0027 is checked in Line 4737.","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bd09152f5aad004bc74b5c9641d805b4d7097f24","unresolved":false,"context_lines":[{"line_number":4734,"context_line":"        bdm.update(values)"},{"line_number":4735,"context_line":"        bdm.save()"},{"line_number":4736,"context_line":""},{"line_number":4737,"context_line":"        if ((\u0027migration_status\u0027 in old_volume) and"},{"line_number":4738,"context_line":"            (\u0027migration_status\u0027 in new_volume) and"},{"line_number":4739,"context_line":"            not (old_volume[\u0027migration_status\u0027] or"},{"line_number":4740,"context_line":"                 new_volume[\u0027migration_status\u0027])):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_ce7dc16e","line":4737,"updated":"2015-08-15 16:14:30.000000000","message":"you do not need the extra brackets here. this can be:\nif (\u0027migration_status\u0027 in old_volume and ...","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"155c61a4fa7ee7d5effe6fae535050a7950bba5a","unresolved":false,"context_lines":[{"line_number":4734,"context_line":"        bdm.update(values)"},{"line_number":4735,"context_line":"        bdm.save()"},{"line_number":4736,"context_line":""},{"line_number":4737,"context_line":"        if ((\u0027migration_status\u0027 in old_volume) and"},{"line_number":4738,"context_line":"            (\u0027migration_status\u0027 in new_volume) and"},{"line_number":4739,"context_line":"            not (old_volume[\u0027migration_status\u0027] or"},{"line_number":4740,"context_line":"                 new_volume[\u0027migration_status\u0027])):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_58742bce","line":4737,"in_reply_to":"1a4dcd0f_ce7dc16e","updated":"2015-08-24 07:20:15.000000000","message":"Done","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"2425d5e19354d9a490aa5698222be02ebb39da51","unresolved":false,"context_lines":[{"line_number":4777,"context_line":"                                   new_volume[\u0027id\u0027],"},{"line_number":4778,"context_line":"                                   instance.uuid,"},{"line_number":4779,"context_line":"                                   bdm.device_name)"},{"line_number":4780,"context_line":"            self.volume_api.detach(context.elevated(), old_volume[\u0027id\u0027])"},{"line_number":4781,"context_line":""},{"line_number":4782,"context_line":"    @wrap_exception()"},{"line_number":4783,"context_line":"    def remove_volume_connection(self, context, volume_id, instance):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_90002168","line":4780,"updated":"2015-09-10 14:02:34.000000000","message":"you also need to call volume_api.terminate_connection here. Otherwise, the old_volume will still be exported to the compute host.","commit_id":"b7a5165798b473e1fc87ef0da94b92fbb53973bb"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"251324e83dd74cd3174e03561d359efc617e8ac4","unresolved":false,"context_lines":[{"line_number":4777,"context_line":"                                   new_volume[\u0027id\u0027],"},{"line_number":4778,"context_line":"                                   instance.uuid,"},{"line_number":4779,"context_line":"                                   bdm.device_name)"},{"line_number":4780,"context_line":"            self.volume_api.detach(context.elevated(), old_volume[\u0027id\u0027])"},{"line_number":4781,"context_line":""},{"line_number":4782,"context_line":"    @wrap_exception()"},{"line_number":4783,"context_line":"    def remove_volume_connection(self, context, volume_id, instance):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_c8c1f24f","line":4780,"in_reply_to":"da20952f_90002168","updated":"2015-09-11 03:40:55.000000000","message":"agreed","commit_id":"b7a5165798b473e1fc87ef0da94b92fbb53973bb"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"da59b15ac8f425d4f239e9e53ebdd57abb798b40","unresolved":false,"context_lines":[{"line_number":4777,"context_line":"                                   new_volume[\u0027id\u0027],"},{"line_number":4778,"context_line":"                                   instance.uuid,"},{"line_number":4779,"context_line":"                                   bdm.device_name)"},{"line_number":4780,"context_line":"            self.volume_api.detach(context.elevated(), old_volume[\u0027id\u0027])"},{"line_number":4781,"context_line":""},{"line_number":4782,"context_line":"    @wrap_exception()"},{"line_number":4783,"context_line":"    def remove_volume_connection(self, context, volume_id, instance):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_681226b6","line":4780,"in_reply_to":"da20952f_c8c1f24f","updated":"2015-09-11 03:56:11.000000000","message":"Please see line 4743, self._swap_volume is called.\nAnd in _swap_volume method, in line 4707, volume_api.terminate_connection is called.\nSo it need not be called again here.","commit_id":"b7a5165798b473e1fc87ef0da94b92fbb53973bb"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"58ea3ad84596acc7c80a285b1789a13972559a18","unresolved":false,"context_lines":[{"line_number":4746,"context_line":"        old_volume \u003d self.volume_api.get(context, old_volume_id)"},{"line_number":4747,"context_line":"        new_volume \u003d self.volume_api.get(context, new_volume_id)"},{"line_number":4748,"context_line":"        if new_volume[\u0027size\u0027] \u003e old_volume[\u0027size\u0027]:"},{"line_number":4749,"context_line":"            resize_to \u003d new_volume[\u0027size\u0027]"},{"line_number":4750,"context_line":""},{"line_number":4751,"context_line":"        LOG.info(_LI(\u0027Swapping volume %(old_volume)s for %(new_volume)s\u0027),"},{"line_number":4752,"context_line":"                  {\u0027old_volume\u0027: old_volume_id, \u0027new_volume\u0027: new_volume_id},"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_4b7b738c","line":4749,"updated":"2015-09-17 12:46:01.000000000","message":"So this is really unrelated to the patch so you may want to do it separately. Not sure I see a whole lot of value in this though.","commit_id":"1457ba022f59b04fe6da707fe1c808d031218ec7"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"38dc2f01a50283427a2459aa0aa47b888e76ec11","unresolved":false,"context_lines":[{"line_number":4746,"context_line":"        old_volume \u003d self.volume_api.get(context, old_volume_id)"},{"line_number":4747,"context_line":"        new_volume \u003d self.volume_api.get(context, new_volume_id)"},{"line_number":4748,"context_line":"        if new_volume[\u0027size\u0027] \u003e old_volume[\u0027size\u0027]:"},{"line_number":4749,"context_line":"            resize_to \u003d new_volume[\u0027size\u0027]"},{"line_number":4750,"context_line":""},{"line_number":4751,"context_line":"        LOG.info(_LI(\u0027Swapping volume %(old_volume)s for %(new_volume)s\u0027),"},{"line_number":4752,"context_line":"                  {\u0027old_volume\u0027: old_volume_id, \u0027new_volume\u0027: new_volume_id},"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_fbcf8726","line":4749,"in_reply_to":"ba15a1d1_0ff55deb","updated":"2015-09-18 09:12:23.000000000","message":"Right sorry","commit_id":"1457ba022f59b04fe6da707fe1c808d031218ec7"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"271b25aaf25aa37326dddb087820685bff53b291","unresolved":false,"context_lines":[{"line_number":4746,"context_line":"        old_volume \u003d self.volume_api.get(context, old_volume_id)"},{"line_number":4747,"context_line":"        new_volume \u003d self.volume_api.get(context, new_volume_id)"},{"line_number":4748,"context_line":"        if new_volume[\u0027size\u0027] \u003e old_volume[\u0027size\u0027]:"},{"line_number":4749,"context_line":"            resize_to \u003d new_volume[\u0027size\u0027]"},{"line_number":4750,"context_line":""},{"line_number":4751,"context_line":"        LOG.info(_LI(\u0027Swapping volume %(old_volume)s for %(new_volume)s\u0027),"},{"line_number":4752,"context_line":"                  {\u0027old_volume\u0027: old_volume_id, \u0027new_volume\u0027: new_volume_id},"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_0ff55deb","line":4749,"in_reply_to":"ba15a1d1_4b7b738c","updated":"2015-09-18 05:41:31.000000000","message":"This change was done in order to reuse old_volume and new_volume information.\nIn line 4783-4786, old_volume and new_volume are used again.","commit_id":"1457ba022f59b04fe6da707fe1c808d031218ec7"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"58ea3ad84596acc7c80a285b1789a13972559a18","unresolved":false,"context_lines":[{"line_number":4783,"context_line":"        if (\u0027migration_status\u0027 in old_volume and"},{"line_number":4784,"context_line":"            \u0027migration_status\u0027 in new_volume and"},{"line_number":4785,"context_line":"            not (old_volume[\u0027migration_status\u0027] or"},{"line_number":4786,"context_line":"                 new_volume[\u0027migration_status\u0027])):"},{"line_number":4787,"context_line":"            self.volume_api.attach(context,"},{"line_number":4788,"context_line":"                                   new_volume[\u0027id\u0027],"},{"line_number":4789,"context_line":"                                   instance.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_eba8478e","line":4786,"updated":"2015-09-17 12:46:01.000000000","message":"So is this a check for \"has this been initiated by cinder\" - we want to maybe comment or make a method out of it?","commit_id":"1457ba022f59b04fe6da707fe1c808d031218ec7"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"271b25aaf25aa37326dddb087820685bff53b291","unresolved":false,"context_lines":[{"line_number":4783,"context_line":"        if (\u0027migration_status\u0027 in old_volume and"},{"line_number":4784,"context_line":"            \u0027migration_status\u0027 in new_volume and"},{"line_number":4785,"context_line":"            not (old_volume[\u0027migration_status\u0027] or"},{"line_number":4786,"context_line":"                 new_volume[\u0027migration_status\u0027])):"},{"line_number":4787,"context_line":"            self.volume_api.attach(context,"},{"line_number":4788,"context_line":"                                   new_volume[\u0027id\u0027],"},{"line_number":4789,"context_line":"                                   instance.uuid,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_6fb8992a","line":4786,"in_reply_to":"ba15a1d1_eba8478e","updated":"2015-09-18 05:41:31.000000000","message":"Done.\n\nI have added a comment.","commit_id":"1457ba022f59b04fe6da707fe1c808d031218ec7"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"73b6b890e165f0601699665b6959edd0a0b2085c","unresolved":false,"context_lines":[{"line_number":4759,"context_line":"                      \"old: %(old_cinfo)s\","},{"line_number":4760,"context_line":"                      {\u0027new_cinfo\u0027: new_cinfo, \u0027old_cinfo\u0027: old_cinfo},"},{"line_number":4761,"context_line":"                      contex\u003dcontext, instance\u003dinstance)"},{"line_number":4762,"context_line":"            self.driver.swap_volume(old_cinfo, new_cinfo, instance, bdm,"},{"line_number":4763,"context_line":"                                    resize_to)"},{"line_number":4764,"context_line":"        except Exception:"},{"line_number":4765,"context_line":"            failed \u003d True"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a1a9d01_a731710d","line":4762,"updated":"2015-10-05 10:46:34.000000000","message":"This could even be a separate chenge but no big deal really.","commit_id":"9f7defc715032b5d6ff4b06b54154057daf6ac57"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"5bc242cccfb0142268517e040dc35cb067ea9e6a","unresolved":false,"context_lines":[{"line_number":4883,"context_line":"        bdm.save()"},{"line_number":4884,"context_line":""},{"line_number":4885,"context_line":"        # Check whether it was initiated by cinder or not."},{"line_number":4886,"context_line":"        # If not, detach the old volme and attach the new volume"},{"line_number":4887,"context_line":"        if (\u0027migration_status\u0027 in old_volume and"},{"line_number":4888,"context_line":"            \u0027migration_status\u0027 in new_volume and"},{"line_number":4889,"context_line":"            not (old_volume[\u0027migration_status\u0027] or"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a29b11f_a5a1de95","line":4886,"updated":"2015-10-23 06:46:12.000000000","message":"s\\volme\\volume","commit_id":"3f1af6a9ca4fb2c9c07f47b00962953cd8bc9f47"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"bcb6a1de556878ebf6f61d52505829b5b91a41b7","unresolved":false,"context_lines":[{"line_number":4883,"context_line":"        bdm.save()"},{"line_number":4884,"context_line":""},{"line_number":4885,"context_line":"        # Check whether it was initiated by cinder or not."},{"line_number":4886,"context_line":"        # If not, detach the old volme and attach the new volume"},{"line_number":4887,"context_line":"        if (\u0027migration_status\u0027 in old_volume and"},{"line_number":4888,"context_line":"            \u0027migration_status\u0027 in new_volume and"},{"line_number":4889,"context_line":"            not (old_volume[\u0027migration_status\u0027] or"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a26ad4f_5413335b","line":4886,"in_reply_to":"3a29b11f_a5a1de95","updated":"2015-11-02 11:14:35.000000000","message":"Done","commit_id":"3f1af6a9ca4fb2c9c07f47b00962953cd8bc9f47"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"73b6b890e165f0601699665b6959edd0a0b2085c","unresolved":false,"context_lines":[{"line_number":1739,"context_line":"                fake_instance.fake_instance_obj("},{"line_number":1740,"context_line":"                    self.context, **{\u0027uuid\u0027: \u0027fake\u0027}))"},{"line_number":1741,"context_line":"        self.assertTrue(mock_volume_detach.called)"},{"line_number":1742,"context_line":"        self.assertTrue(mock_volume_attach.called)"},{"line_number":1743,"context_line":""},{"line_number":1744,"context_line":"        # Error path1"},{"line_number":1745,"context_line":"        reset_mock()"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a1a9d01_1a78b0c3","line":1742,"updated":"2015-10-05 10:46:34.000000000","message":"So now we stopped testing the \"cinder initiated\" path ? We should really do both I think.","commit_id":"9f7defc715032b5d6ff4b06b54154057daf6ac57"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"398f7bd16bcbe435e3e5ff5dc3a62c02fdca2030","unresolved":false,"context_lines":[{"line_number":1739,"context_line":"                fake_instance.fake_instance_obj("},{"line_number":1740,"context_line":"                    self.context, **{\u0027uuid\u0027: \u0027fake\u0027}))"},{"line_number":1741,"context_line":"        self.assertTrue(mock_volume_detach.called)"},{"line_number":1742,"context_line":"        self.assertTrue(mock_volume_attach.called)"},{"line_number":1743,"context_line":""},{"line_number":1744,"context_line":"        # Error path1"},{"line_number":1745,"context_line":"        reset_mock()"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a1a9d01_4ecaea6f","line":1742,"in_reply_to":"9a1a9d01_1a78b0c3","updated":"2015-10-05 12:25:43.000000000","message":"Done.\nI have added the \"cinder initiated\" path test.","commit_id":"9f7defc715032b5d6ff4b06b54154057daf6ac57"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"b6959c9fad10ade28017eb6c61901140776dc91e","unresolved":false,"context_lines":[{"line_number":1728,"context_line":"        self.compute.swap_volume(self.context, old_volume_id, new_volume_id,"},{"line_number":1729,"context_line":"                fake_instance.fake_instance_obj("},{"line_number":1730,"context_line":"                    self.context, **{\u0027uuid\u0027: \u0027fake\u0027}))"},{"line_number":1731,"context_line":"        self.assertEqual(volumes[old_volume_id][\u0027status\u0027], \u0027in-use\u0027)"},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"        # Error paths"},{"line_number":1734,"context_line":"        volumes[old_volume_id][\u0027status\u0027] \u003d \u0027detaching\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_56543453","side":"PARENT","line":1731,"updated":"2015-10-05 14:09:30.000000000","message":"Should we be removing this line now?","commit_id":"251e09ab69e5dd1ba2c917175bb408c708843f6e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"b57878179704d48aff262af8a6302302f68dbd9a","unresolved":false,"context_lines":[{"line_number":1728,"context_line":"        self.compute.swap_volume(self.context, old_volume_id, new_volume_id,"},{"line_number":1729,"context_line":"                fake_instance.fake_instance_obj("},{"line_number":1730,"context_line":"                    self.context, **{\u0027uuid\u0027: \u0027fake\u0027}))"},{"line_number":1731,"context_line":"        self.assertEqual(volumes[old_volume_id][\u0027status\u0027], \u0027in-use\u0027)"},{"line_number":1732,"context_line":""},{"line_number":1733,"context_line":"        # Error paths"},{"line_number":1734,"context_line":"        volumes[old_volume_id][\u0027status\u0027] \u003d \u0027detaching\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"7a2fa921_2b49f88b","side":"PARENT","line":1731,"in_reply_to":"7a2fa921_56543453","updated":"2015-10-06 00:54:09.000000000","message":"It should not be deleted.\nSo this line is not deleted in PS15.","commit_id":"251e09ab69e5dd1ba2c917175bb408c708843f6e"}],"nova/virt/driver.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"4889c36c5c71026f74db4abbd716e4d5107b8d91","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            \u0027instance\u0027."},{"line_number":511,"context_line":"        :param nova.objects.instance.Instance instance:"},{"line_number":512,"context_line":"            The instance whose volume gets replaced by another one."},{"line_number":513,"context_line":"        :param str mountpoint:"},{"line_number":514,"context_line":"            The mountpoint in the instance where the volume for"},{"line_number":515,"context_line":"            `old_connection_info` is attached to."},{"line_number":516,"context_line":"        :param int resize_to:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a26ad4f_642326a8","line":513,"updated":"2015-11-02 08:52:38.000000000","message":"this needs to be changed to bdm and the comment below needs to be updated accordingly","commit_id":"5f1f64c88a93db23eaa7f1651e0368add45713c7"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"9376fb020d7548cbd74eb1dc3e1ca58890645144","unresolved":false,"context_lines":[{"line_number":510,"context_line":"            \u0027instance\u0027."},{"line_number":511,"context_line":"        :param nova.objects.instance.Instance instance:"},{"line_number":512,"context_line":"            The instance whose volume gets replaced by another one."},{"line_number":513,"context_line":"        :param str mountpoint:"},{"line_number":514,"context_line":"            The mountpoint in the instance where the volume for"},{"line_number":515,"context_line":"            `old_connection_info` is attached to."},{"line_number":516,"context_line":"        :param int resize_to:"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a26ad4f_947f8b65","line":513,"in_reply_to":"1a26ad4f_642326a8","updated":"2015-11-02 11:19:08.000000000","message":"Done","commit_id":"5f1f64c88a93db23eaa7f1651e0368add45713c7"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"58ea3ad84596acc7c80a285b1789a13972559a18","unresolved":false,"context_lines":[{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":"        # Save updates made in connection_info when connect_volume was called"},{"line_number":1189,"context_line":"        if (\u0027data\u0027 in old_connection_info and"},{"line_number":1190,"context_line":"                \u0027volume_id\u0027 in old_connection_info[\u0027data\u0027]):"},{"line_number":1191,"context_line":"            volume_id \u003d old_connection_info[\u0027data\u0027].get(\u0027volume_id\u0027)"},{"line_number":1192,"context_line":"        else:"},{"line_number":1193,"context_line":"            volume_id \u003d old_connection_info.get(\u0027serial\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_762f3788","line":1190,"updated":"2015-09-17 12:46:01.000000000","message":"This could use a comment as well - it\u0027s far from obvious.","commit_id":"1457ba022f59b04fe6da707fe1c808d031218ec7"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"271b25aaf25aa37326dddb087820685bff53b291","unresolved":false,"context_lines":[{"line_number":1187,"context_line":""},{"line_number":1188,"context_line":"        # Save updates made in connection_info when connect_volume was called"},{"line_number":1189,"context_line":"        if (\u0027data\u0027 in old_connection_info and"},{"line_number":1190,"context_line":"                \u0027volume_id\u0027 in old_connection_info[\u0027data\u0027]):"},{"line_number":1191,"context_line":"            volume_id \u003d old_connection_info[\u0027data\u0027].get(\u0027volume_id\u0027)"},{"line_number":1192,"context_line":"        else:"},{"line_number":1193,"context_line":"            volume_id \u003d old_connection_info.get(\u0027serial\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba15a1d1_6fe65945","line":1190,"in_reply_to":"ba15a1d1_762f3788","updated":"2015-09-18 05:41:31.000000000","message":"Done.\nI have added a comment.","commit_id":"1457ba022f59b04fe6da707fe1c808d031218ec7"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"9d196482b9a482045f96b85789138f42e046cbb8","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"        # So check \u0027volume_id\u0027 of \u0027data\u0027 in connection_info."},{"line_number":1192,"context_line":"        if (\u0027data\u0027 in old_connection_info and"},{"line_number":1193,"context_line":"                \u0027volume_id\u0027 in old_connection_info[\u0027data\u0027]):"},{"line_number":1194,"context_line":"            volume_id \u003d old_connection_info[\u0027data\u0027].get(\u0027volume_id\u0027)"},{"line_number":1195,"context_line":"        else:"},{"line_number":1196,"context_line":"            volume_id \u003d old_connection_info.get(\u0027serial\u0027)"},{"line_number":1197,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("}],"source_content_type":"text/x-python","patch_set":11,"id":"ba15a1d1_26e966b7","line":1194,"updated":"2015-09-18 09:28:56.000000000","message":"Not sure we need the get() here - we already know that it\u0027s in the dict, but that\u0027s not a big concern. I am more concerned about why we do this. This looks like something internal to Cinder and I\u0027d really like to either have a clearer comment here that states _when_ will this happen.\n\nAlso looking at the bug - this does not seem to be related to the other issue you are fixing. Is this a different bug?\n\nAlso ultimately - we may want to actually avoid the DB hit altogether by passing in the bdm so we will not have the need to do this at all.","commit_id":"a837387ab848b9ad6cf4ab7c14e52662cbfce6a4"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"120a01f14c2b891f508d63d5eaf576944d23a85f","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"        # So check \u0027volume_id\u0027 of \u0027data\u0027 in connection_info."},{"line_number":1192,"context_line":"        if (\u0027data\u0027 in old_connection_info and"},{"line_number":1193,"context_line":"                \u0027volume_id\u0027 in old_connection_info[\u0027data\u0027]):"},{"line_number":1194,"context_line":"            volume_id \u003d old_connection_info[\u0027data\u0027].get(\u0027volume_id\u0027)"},{"line_number":1195,"context_line":"        else:"},{"line_number":1196,"context_line":"            volume_id \u003d old_connection_info.get(\u0027serial\u0027)"},{"line_number":1197,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("}],"source_content_type":"text/x-python","patch_set":11,"id":"9a1a9d01_8d151a41","line":1194,"in_reply_to":"ba15a1d1_26e966b7","updated":"2015-09-30 02:31:14.000000000","message":"Whether connection_info[\u0027data\u0027][\u0027volume_id\u0027] should be used(it exists) or connection_info[\u0027serial\u0027] should be used depends on cinder drivers(storage products).\n\nSo I wrote in the comment as follows:\nThere are some cases that \u0027serial\u0027 is not the same as the volume id.","commit_id":"a837387ab848b9ad6cf4ab7c14e52662cbfce6a4"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"ca39c0f3e6f4250d04707a6996bec9162b7d3485","unresolved":false,"context_lines":[{"line_number":1181,"context_line":"        # Save updates made in connection_info when connect_volume was called"},{"line_number":1182,"context_line":""},{"line_number":1183,"context_line":"        # There are some cases that \u0027serial\u0027 is not the same as the volume id."},{"line_number":1184,"context_line":"        # So check \u0027volume_id\u0027 of \u0027data\u0027 in connection_info."},{"line_number":1185,"context_line":"        if (\u0027data\u0027 in old_connection_info and"},{"line_number":1186,"context_line":"                \u0027volume_id\u0027 in old_connection_info[\u0027data\u0027]):"},{"line_number":1187,"context_line":"            volume_id \u003d old_connection_info[\u0027data\u0027][\u0027volume_id\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a1a9d01_81649549","line":1184,"updated":"2015-10-02 10:31:43.000000000","message":"Thanks for adding the comment! It still seems like its a different bug though but that\u0027s not a big deal. See below for a suggestion on how to avoiid this altogether.","commit_id":"fa6ee049b2d83aee5866aa65f2ad1c023da1ecaf"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"ca39c0f3e6f4250d04707a6996bec9162b7d3485","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"                \u0027volume_id\u0027 in old_connection_info[\u0027data\u0027]):"},{"line_number":1187,"context_line":"            volume_id \u003d old_connection_info[\u0027data\u0027][\u0027volume_id\u0027]"},{"line_number":1188,"context_line":"        else:"},{"line_number":1189,"context_line":"            volume_id \u003d old_connection_info.get(\u0027serial\u0027)"},{"line_number":1190,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("},{"line_number":1191,"context_line":"            nova_context.get_admin_context(), volume_id)"},{"line_number":1192,"context_line":"        driver_bdm \u003d driver_block_device.DriverVolumeBlockDevice(bdm)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a1a9d01_617861f9","line":1189,"updated":"2015-10-02 10:31:43.000000000","message":"So how about we avoid this completely by passing in the bdm object. AFAICT we don;t need to get it from the DB here at all - we can just pass it in, and call save on it.","commit_id":"fa6ee049b2d83aee5866aa65f2ad1c023da1ecaf"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"d91d91f79203d544b65f8e8d57cd2d34dd6cfaef","unresolved":false,"context_lines":[{"line_number":1186,"context_line":"                \u0027volume_id\u0027 in old_connection_info[\u0027data\u0027]):"},{"line_number":1187,"context_line":"            volume_id \u003d old_connection_info[\u0027data\u0027][\u0027volume_id\u0027]"},{"line_number":1188,"context_line":"        else:"},{"line_number":1189,"context_line":"            volume_id \u003d old_connection_info.get(\u0027serial\u0027)"},{"line_number":1190,"context_line":"        bdm \u003d objects.BlockDeviceMapping.get_by_volume_id("},{"line_number":1191,"context_line":"            nova_context.get_admin_context(), volume_id)"},{"line_number":1192,"context_line":"        driver_bdm \u003d driver_block_device.DriverVolumeBlockDevice(bdm)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a1a9d01_870c6d3c","line":1189,"in_reply_to":"9a1a9d01_617861f9","updated":"2015-10-05 10:00:34.000000000","message":"Done","commit_id":"fa6ee049b2d83aee5866aa65f2ad1c023da1ecaf"}],"nova/volume/cinder.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bd09152f5aad004bc74b5c9641d805b4d7097f24","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    if hasattr(vol, \u0027volume_image_metadata\u0027):"},{"line_number":176,"context_line":"        d[\u0027volume_image_metadata\u0027] \u003d copy.deepcopy(vol.volume_image_metadata)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    if hasattr(vol, \u0027os-vol-mig-status-attr:migstat\u0027):"},{"line_number":179,"context_line":"        d[\u0027migration_status\u0027] \u003d getattr(vol, \u0027os-vol-mig-status-attr:migstat\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    return d"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_cef4e1f2","line":178,"updated":"2015-08-15 16:14:30.000000000","message":"this too","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"155c61a4fa7ee7d5effe6fae535050a7950bba5a","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    if hasattr(vol, \u0027volume_image_metadata\u0027):"},{"line_number":176,"context_line":"        d[\u0027volume_image_metadata\u0027] \u003d copy.deepcopy(vol.volume_image_metadata)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    if hasattr(vol, \u0027os-vol-mig-status-attr:migstat\u0027):"},{"line_number":179,"context_line":"        d[\u0027migration_status\u0027] \u003d getattr(vol, \u0027os-vol-mig-status-attr:migstat\u0027)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    return d"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_182c73aa","line":178,"in_reply_to":"1a4dcd0f_cef4e1f2","updated":"2015-08-24 07:20:15.000000000","message":"This code is needed because of checking \u0027migration_status\u0027.","commit_id":"a8d702f380d9b78fc4400f3e568b0322670f4bf5"}]}
