)]}'
{"watcher/applier/actions/volume_migration.py":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"30fe8b39ef37aed9b076b6fab76b3e33be125589","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.input_parameters.get(self.DESTINATION_TYPE)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _cold_migrate(self, volume, dest_node, dest_type):"},{"line_number":98,"context_line":"        cinder_util \u003d cinder_helper.CinderHelper(osc\u003dself.osc)"},{"line_number":99,"context_line":"        if not cinder_util.can_cold(volume, dest_node):"},{"line_number":100,"context_line":"            raise exception.Invalid("},{"line_number":101,"context_line":"                message\u003d(_(\"Invalid state for cold migration\")))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_4eacd08b","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":62},"updated":"2017-06-30 08:37:42.000000000","message":"There are used in many functions.\nIt\u0027s better to remove in __init__()\nself.cinder_util \u003d cinder_helper.CinderHelper(osc\u003dself.osc)","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"d48c13a8e896eae5c1c1056fb963cc593f9c8445","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return self.input_parameters.get(self.DESTINATION_TYPE)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def _cold_migrate(self, volume, dest_node, dest_type):"},{"line_number":98,"context_line":"        cinder_util \u003d cinder_helper.CinderHelper(osc\u003dself.osc)"},{"line_number":99,"context_line":"        if not cinder_util.can_cold(volume, dest_node):"},{"line_number":100,"context_line":"            raise exception.Invalid("},{"line_number":101,"context_line":"                message\u003d(_(\"Invalid state for cold migration\")))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_d7f04ccc","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":62},"in_reply_to":"3f1d235d_4eacd08b","updated":"2017-07-03 01:15:26.000000000","message":"Done","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"30fe8b39ef37aed9b076b6fab76b3e33be125589","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if not volume.attachments:"},{"line_number":116,"context_line":"            return False"},{"line_number":117,"context_line":"        instance_id \u003d volume.attachments[0][\u0027server_id\u0027]"},{"line_number":118,"context_line":"        nova_util \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":119,"context_line":"        instance_status \u003d nova_util.find_instance(instance_id).status"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if (volume.status \u003d\u003d \u0027in-use\u0027 and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_ceb100e4","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":56},"updated":"2017-06-30 08:37:42.000000000","message":"remove in __init__()","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"d48c13a8e896eae5c1c1056fb963cc593f9c8445","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if not volume.attachments:"},{"line_number":116,"context_line":"            return False"},{"line_number":117,"context_line":"        instance_id \u003d volume.attachments[0][\u0027server_id\u0027]"},{"line_number":118,"context_line":"        nova_util \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":119,"context_line":"        instance_status \u003d nova_util.find_instance(instance_id).status"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        if (volume.status \u003d\u003d \u0027in-use\u0027 and"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_97bc14dd","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":56},"in_reply_to":"3f1d235d_ceb100e4","updated":"2017-07-03 01:15:26.000000000","message":"Done","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"30fe8b39ef37aed9b076b6fab76b3e33be125589","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            session\u003dsession,"},{"line_number":141,"context_line":"            endpoint_type\u003dCONF.cinder_client.endpoint_type)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def _swap_volume(self, volume, dest_type):"},{"line_number":144,"context_line":"        if not dest_type:"},{"line_number":145,"context_line":"            raise exception.Invalid("},{"line_number":146,"context_line":"                message\u003d(_(\"destination type is required when \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_58c81654","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":20},"updated":"2017-06-30 08:37:42.000000000","message":"Limitation note: \u0027only for compute libvirt driver\u0027","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"d48c13a8e896eae5c1c1056fb963cc593f9c8445","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            session\u003dsession,"},{"line_number":141,"context_line":"            endpoint_type\u003dCONF.cinder_client.endpoint_type)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def _swap_volume(self, volume, dest_type):"},{"line_number":144,"context_line":"        if not dest_type:"},{"line_number":145,"context_line":"            raise exception.Invalid("},{"line_number":146,"context_line":"                message\u003d(_(\"destination type is required when \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_77bf38d0","line":143,"range":{"start_line":143,"start_character":8,"end_line":143,"end_character":20},"in_reply_to":"3f1d235d_58c81654","updated":"2017-07-03 01:15:26.000000000","message":"Done","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"30fe8b39ef37aed9b076b6fab76b3e33be125589","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            session \u003d keystone_util.create_session("},{"line_number":160,"context_line":"                user.id, self.temp_password)"},{"line_number":161,"context_line":"            cinder \u003d self._get_cinder_client(session)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            # swap volume"},{"line_number":164,"context_line":"            cinder_util \u003d cinder_helper.CinderHelper(osc\u003dself.osc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_eed6fc4f","line":161,"range":{"start_line":161,"start_character":12,"end_line":161,"end_character":18},"updated":"2017-06-30 08:37:42.000000000","message":"It\u0027s confusion, maybe temp_cinder is good","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"d48c13a8e896eae5c1c1056fb963cc593f9c8445","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        try:"},{"line_number":159,"context_line":"            session \u003d keystone_util.create_session("},{"line_number":160,"context_line":"                user.id, self.temp_password)"},{"line_number":161,"context_line":"            cinder \u003d self._get_cinder_client(session)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            # swap volume"},{"line_number":164,"context_line":"            cinder_util \u003d cinder_helper.CinderHelper(osc\u003dself.osc)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_57b67cfc","line":161,"range":{"start_line":161,"start_character":12,"end_line":161,"end_character":18},"in_reply_to":"3f1d235d_eed6fc4f","updated":"2017-07-03 01:15:26.000000000","message":"Done","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"30fe8b39ef37aed9b076b6fab76b3e33be125589","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            new_volume \u003d cinder_util.create_volume("},{"line_number":166,"context_line":"                cinder, volume, dest_type)"},{"line_number":167,"context_line":"            nova_util \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":168,"context_line":"            nova_util.swap_volume(volume, new_volume)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"            # delete old volume"},{"line_number":171,"context_line":"            cinder_util.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_4e1cd069","line":168,"range":{"start_line":168,"start_character":22,"end_line":168,"end_character":33},"updated":"2017-06-30 08:37:42.000000000","message":"if exception while this swap volume process.\nI suggest to delete the new volume.\nfor example:\nexcept:\nif new_volume:\n    cinder_util.delete_volume(new_volume)","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"d48c13a8e896eae5c1c1056fb963cc593f9c8445","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            new_volume \u003d cinder_util.create_volume("},{"line_number":166,"context_line":"                cinder, volume, dest_type)"},{"line_number":167,"context_line":"            nova_util \u003d nova_helper.NovaHelper(osc\u003dself.osc)"},{"line_number":168,"context_line":"            nova_util.swap_volume(volume, new_volume)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"            # delete old volume"},{"line_number":171,"context_line":"            cinder_util.delete_volume(volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_d79e0c62","line":168,"range":{"start_line":168,"start_character":22,"end_line":168,"end_character":33},"in_reply_to":"3f1d235d_4e1cd069","updated":"2017-07-03 01:15:26.000000000","message":"Thanks for suggestion.\nBut typically we can not delete new volume during swapping volume. During swapping, new volume is attaching status which can not be deleted.","commit_id":"0adfb38f0929b5d30b306ab55d1e6078b6711ced"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"d64517fb11fc263c60e21df6a84f091e89ce4e4d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def schema(self):"},{"line_number":67,"context_line":"        return voluptuous.Schema({"},{"line_number":68,"context_line":"            voluptuous.Required(self.RESOURCE_ID):"},{"line_number":69,"context_line":"                self.check_uuid,"},{"line_number":70,"context_line":"            voluptuous.Required("},{"line_number":71,"context_line":"                self.MIGRATION_TYPE, default\u003dself.SWAP):"},{"line_number":72,"context_line":"                    voluptuous.Any("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_df805a8e","line":69,"updated":"2017-07-03 10:43:38.000000000","message":"why json is not used??","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"427a73f7630e7114e80f9ef820881289e597dcc5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def schema(self):"},{"line_number":67,"context_line":"        return voluptuous.Schema({"},{"line_number":68,"context_line":"            voluptuous.Required(self.RESOURCE_ID):"},{"line_number":69,"context_line":"                self.check_uuid,"},{"line_number":70,"context_line":"            voluptuous.Required("},{"line_number":71,"context_line":"                self.MIGRATION_TYPE, default\u003dself.SWAP):"},{"line_number":72,"context_line":"                    voluptuous.Any("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_0f4d6899","line":69,"in_reply_to":"3f1d235d_df805a8e","updated":"2017-07-04 06:40:20.000000000","message":"Done","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"d64517fb11fc263c60e21df6a84f091e89ce4e4d","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                           \"required when migration type is cold\")))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _can_swap(self, volume):"},{"line_number":113,"context_line":"        \"\"\"Judge volume can be swapped\"\"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        if not volume.attachments:"},{"line_number":116,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_7abb94c3","line":113,"updated":"2017-07-03 10:43:38.000000000","message":"just for consistency, can \"can_cold\" be defined here from cinder_helper??","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"427a73f7630e7114e80f9ef820881289e597dcc5","unresolved":false,"context_lines":[{"line_number":110,"context_line":"                           \"required when migration type is cold\")))"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def _can_swap(self, volume):"},{"line_number":113,"context_line":"        \"\"\"Judge volume can be swapped\"\"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        if not volume.attachments:"},{"line_number":116,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_af49d48b","line":113,"in_reply_to":"3f1d235d_7abb94c3","updated":"2017-07-04 06:40:20.000000000","message":"Because _can_swap uses nova_helper and cinder_helper, _can_swap is here.","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"559c4e70dac8e05767ca4bd107a76ac2d69dfffb","unresolved":false,"context_lines":[{"line_number":32,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def randomString(n):"},{"line_number":36,"context_line":"    return \u0027\u0027.join([random.choice("},{"line_number":37,"context_line":"        string.ascii_letters + string.digits) for i in range(n)])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class VolumeMigrate(base.BaseAction):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_a5579a58","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":65},"updated":"2017-07-05 07:32:04.000000000","message":"This name should be \"_random_string\" instead of \"randomString\", I think.\nSee \"_single_leading_underscore\" option in below URL.\nhttps://www.python.org/dev/peps/pep-0008/#descriptive-naming-styles","commit_id":"794a90336f129942108ac38a186955c67bc238d9"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0121bf9a7f0f7ae9f5c9115e2aa58c185fbf6f66","unresolved":false,"context_lines":[{"line_number":32,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def randomString(n):"},{"line_number":36,"context_line":"    return \u0027\u0027.join([random.choice("},{"line_number":37,"context_line":"        string.ascii_letters + string.digits) for i in range(n)])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class VolumeMigrate(base.BaseAction):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_db2367a6","line":37,"range":{"start_line":35,"start_character":0,"end_line":37,"end_character":65},"in_reply_to":"3f1d235d_a5579a58","updated":"2017-07-06 05:48:24.000000000","message":"In addition to taking your comment into consideration, this method moved to watcher.common.utils module.","commit_id":"794a90336f129942108ac38a186955c67bc238d9"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"559c4e70dac8e05767ca4bd107a76ac2d69dfffb","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class VolumeMigrate(base.BaseAction):"},{"line_number":41,"context_line":"    \"\"\"Migrates a volume to destination host or type\"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    MIGRATION_TYPE \u003d \u0027migration_type\u0027"},{"line_number":44,"context_line":"    SWAP \u003d \u0027swap\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_85549e54","line":41,"range":{"start_line":41,"start_character":3,"end_line":41,"end_character":55},"updated":"2017-07-05 07:32:04.000000000","message":"Similarly with other modules in \"watcher.applier.actions\", we should describe Schema structure in addition to this explanatory text.","commit_id":"794a90336f129942108ac38a186955c67bc238d9"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0121bf9a7f0f7ae9f5c9115e2aa58c185fbf6f66","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class VolumeMigrate(base.BaseAction):"},{"line_number":41,"context_line":"    \"\"\"Migrates a volume to destination host or type\"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    MIGRATION_TYPE \u003d \u0027migration_type\u0027"},{"line_number":44,"context_line":"    SWAP \u003d \u0027swap\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_bb3e6bbe","line":41,"range":{"start_line":41,"start_character":3,"end_line":41,"end_character":55},"in_reply_to":"3f1d235d_85549e54","updated":"2017-07-06 05:48:24.000000000","message":"Done","commit_id":"794a90336f129942108ac38a186955c67bc238d9"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"6d9fc9c190e7bfd235a23d8c2052e772e1b1f599","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"           Limitation note: only for compute libvirt driver"},{"line_number":178,"context_line":"        \"\"\""},{"line_number":179,"context_line":"        if not dest_type:"},{"line_number":180,"context_line":"            raise exception.Invalid("},{"line_number":181,"context_line":"                message\u003d(_(\"destination type is required when \""},{"line_number":182,"context_line":"                           \"migration type is swap\")))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_b3ae2b96","line":179,"updated":"2017-07-10 10:14:04.000000000","message":"why dest_type is a compulsory paramater, if not given can we have type same as of source volume??","commit_id":"d8c96ff41f3eb033870fe919213e38f0cd5f7ff9"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"9a0a9156e0f003aa4135d5fedf339ec061407a5b","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"           Limitation note: only for compute libvirt driver"},{"line_number":178,"context_line":"        \"\"\""},{"line_number":179,"context_line":"        if not dest_type:"},{"line_number":180,"context_line":"            raise exception.Invalid("},{"line_number":181,"context_line":"                message\u003d(_(\"destination type is required when \""},{"line_number":182,"context_line":"                           \"migration type is swap\")))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_d061843b","line":179,"in_reply_to":"3f1d235d_b3ae2b96","updated":"2017-07-11 00:46:18.000000000","message":"Yes, technically we can have same type of source volume if dest_type is not given. I assumed that migration_type is done between different type, because storage of different types must be different storage. Storage of same type may be same storage which is not migration at all.","commit_id":"d8c96ff41f3eb033870fe919213e38f0cd5f7ff9"}],"watcher/common/cinder_helper.py":[{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"d64517fb11fc263c60e21df6a84f091e89ce4e4d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                return _volume"},{"line_number":108,"context_line":"        return False"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def judge_exist_deleting_volume(self, volume_id):"},{"line_number":111,"context_line":"        try:"},{"line_number":112,"context_line":"            volume \u003d self.get_volume(volume_id)"},{"line_number":113,"context_line":"            if not volume:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_fad564b8","line":110,"updated":"2017-07-03 10:43:38.000000000","message":"IMHO, can you rename it for better understanding like,\ncheck_original_volume_deleted","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"427a73f7630e7114e80f9ef820881289e597dcc5","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                return _volume"},{"line_number":108,"context_line":"        return False"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def judge_exist_deleting_volume(self, volume_id):"},{"line_number":111,"context_line":"        try:"},{"line_number":112,"context_line":"            volume \u003d self.get_volume(volume_id)"},{"line_number":113,"context_line":"            if not volume:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_8f605803","line":110,"in_reply_to":"3f1d235d_fad564b8","updated":"2017-07-04 06:40:20.000000000","message":"Done","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"d64517fb11fc263c60e21df6a84f091e89ce4e4d","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    time.sleep(retry_interval)"},{"line_number":145,"context_line":"                    retry -\u003d 1"},{"line_number":146,"context_line":"                    LOG.debug(\"retry count: %s\" % retry)"},{"line_number":147,"context_line":"                    LOG.debug(\"wait complete for deleting volume\")"},{"line_number":148,"context_line":"                if self.judge_exist_deleting_volume(delete_id):"},{"line_number":149,"context_line":"                    LOG.error(\"deleting volume failed\")"},{"line_number":150,"context_line":"                    return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_da92a8f6","line":147,"updated":"2017-07-03 10:43:38.000000000","message":"\"waiting to complete deletion of original volume\"","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"427a73f7630e7114e80f9ef820881289e597dcc5","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                    time.sleep(retry_interval)"},{"line_number":145,"context_line":"                    retry -\u003d 1"},{"line_number":146,"context_line":"                    LOG.debug(\"retry count: %s\" % retry)"},{"line_number":147,"context_line":"                    LOG.debug(\"wait complete for deleting volume\")"},{"line_number":148,"context_line":"                if self.judge_exist_deleting_volume(delete_id):"},{"line_number":149,"context_line":"                    LOG.error(\"deleting volume failed\")"},{"line_number":150,"context_line":"                    return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_2f55c41d","line":147,"in_reply_to":"3f1d235d_da92a8f6","updated":"2017-07-04 06:40:20.000000000","message":"Done","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"d64517fb11fc263c60e21df6a84f091e89ce4e4d","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            name\u003dgetattr(volume, \u0027name\u0027),"},{"line_number":205,"context_line":"            volume_type\u003ddest_type,"},{"line_number":206,"context_line":"            availability_zone\u003dgetattr(volume, \u0027availability_zone\u0027))"},{"line_number":207,"context_line":"        while getattr(new_volume, \u0027status\u0027) !\u003d \u0027available\u0027:"},{"line_number":208,"context_line":"            new_volume \u003d cinder.volumes.get(new_volume.id)"},{"line_number":209,"context_line":"            LOG.debug(\u0027Waiting volume creation of {0}\u0027.format(new_volume))"},{"line_number":210,"context_line":"            time.sleep(retry_interval)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_409fcab3","line":207,"updated":"2017-07-03 10:43:38.000000000","message":"how it will come out of loop, when cinder volume is not successfully created??","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"427a73f7630e7114e80f9ef820881289e597dcc5","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            name\u003dgetattr(volume, \u0027name\u0027),"},{"line_number":205,"context_line":"            volume_type\u003ddest_type,"},{"line_number":206,"context_line":"            availability_zone\u003dgetattr(volume, \u0027availability_zone\u0027))"},{"line_number":207,"context_line":"        while getattr(new_volume, \u0027status\u0027) !\u003d \u0027available\u0027:"},{"line_number":208,"context_line":"            new_volume \u003d cinder.volumes.get(new_volume.id)"},{"line_number":209,"context_line":"            LOG.debug(\u0027Waiting volume creation of {0}\u0027.format(new_volume))"},{"line_number":210,"context_line":"            time.sleep(retry_interval)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_0f320811","line":207,"in_reply_to":"3f1d235d_409fcab3","updated":"2017-07-04 06:40:20.000000000","message":"Done","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"d64517fb11fc263c60e21df6a84f091e89ce4e4d","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                self.cinder.volumes.get(volume.id)"},{"line_number":221,"context_line":"                LOG.debug(\u0027Waiting volume deletion of {0}\u0027.format("},{"line_number":222,"context_line":"                    volume))"},{"line_number":223,"context_line":"                time.sleep(retry_interval)"},{"line_number":224,"context_line":"            except cinder_exception.NotFound:"},{"line_number":225,"context_line":"                break"},{"line_number":226,"context_line":"        LOG.debug(\"Volume %s was deleted successfully.\" % volume)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_da07481c","line":223,"updated":"2017-07-03 10:43:38.000000000","message":"same here, if volume gets stucked in deleting state, or volume status is error, then how it will come out of while loop??","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"427a73f7630e7114e80f9ef820881289e597dcc5","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                self.cinder.volumes.get(volume.id)"},{"line_number":221,"context_line":"                LOG.debug(\u0027Waiting volume deletion of {0}\u0027.format("},{"line_number":222,"context_line":"                    volume))"},{"line_number":223,"context_line":"                time.sleep(retry_interval)"},{"line_number":224,"context_line":"            except cinder_exception.NotFound:"},{"line_number":225,"context_line":"                break"},{"line_number":226,"context_line":"        LOG.debug(\"Volume %s was deleted successfully.\" % volume)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f1d235d_ef346cfd","line":223,"in_reply_to":"3f1d235d_da07481c","updated":"2017-07-04 06:40:20.000000000","message":"Done","commit_id":"28abf527349ac83a1e412f752db8ee0ff73353fc"},{"author":{"_account_id":7038,"name":"Akihito INOH","email":"akihito-inou@nec.com","username":"akihito-inoh"},"change_message_id":"559c4e70dac8e05767ca4bd107a76ac2d69dfffb","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        source_node \u003d getattr(volume, \u0027os-vol-host-attr:host\u0027)"},{"line_number":199,"context_line":"        LOG.debug("},{"line_number":200,"context_line":"            \"Instance %s found on host \u0027%s\u0027.\" % ("},{"line_number":201,"context_line":"                volume.id, source_node))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        self.cinder.volumes.retype("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_c537364d","line":200,"range":{"start_line":200,"start_character":13,"end_line":200,"end_character":21},"updated":"2017-07-05 07:32:04.000000000","message":"In this case, should replace \"Instance\" with \"Volume\".","commit_id":"794a90336f129942108ac38a186955c67bc238d9"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"0121bf9a7f0f7ae9f5c9115e2aa58c185fbf6f66","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        source_node \u003d getattr(volume, \u0027os-vol-host-attr:host\u0027)"},{"line_number":199,"context_line":"        LOG.debug("},{"line_number":200,"context_line":"            \"Instance %s found on host \u0027%s\u0027.\" % ("},{"line_number":201,"context_line":"                volume.id, source_node))"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        self.cinder.volumes.retype("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_7b3453de","line":200,"range":{"start_line":200,"start_character":13,"end_line":200,"end_character":21},"in_reply_to":"3f1d235d_c537364d","updated":"2017-07-06 05:48:24.000000000","message":"Done","commit_id":"794a90336f129942108ac38a186955c67bc238d9"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"93135f1d3762d100dd77f558d7621e1ca6abd4c3","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def check_migrated(self, volume, retry\u003d120, retry_interval\u003d10):"},{"line_number":170,"context_line":"        volume \u003d self.get_volume(volume)"},{"line_number":171,"context_line":"        while getattr(volume, \u0027migration_status\u0027) !\u003d \u0027success\u0027 and retry:"},{"line_number":172,"context_line":"            volume \u003d self.get_volume(volume.id)"},{"line_number":173,"context_line":"            LOG.debug(\u0027Waiting the migration of {0}\u0027.format(volume))"},{"line_number":174,"context_line":"            time.sleep(retry_interval)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_b974fcfe","line":171,"range":{"start_line":171,"start_character":8,"end_line":171,"end_character":72},"updated":"2017-07-20 01:31:11.000000000","message":"In my test, it spent more than 30min for migrating a 50G volume. more size,more time.\nso it is difficult to set the retry time.\nmaybe we can wait if the status is \u0027migrating\u0027 ,until it move to \u0027success\u0027 or \u0027error\u0027\n\nlogging:\n2017-07-18 19:55:40.824 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] volume:98b843da-f456-4929-bd16-f3cc13660ac6 calling generic migrate volume\n2017-07-18 19:55:40.830 54247 INFO cinder.rpc [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Automatically selected cinder-volume objects version 1.3 as minimum service version.\n2017-07-18 19:55:40.835 54247 INFO cinder.rpc [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Automatically selected cinder-volume RPC version 2.0 as minimum service version.\n2017-07-18 19:55:40.884 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Migrate volume send to tgt_host:Controller106@RBD-2#rbd2 create new volume:b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31\n2017-07-18 19:55:41.058 54271 INFO cinder.volume.flows.manager.create_volume [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Volume b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31: being created as raw with specification: {\u0027status\u0027: u\u0027creating\u0027, \u0027volume_size\u0027: 50, \u0027volume_name\u0027: \u0027volume-b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31\u0027}\n2017-07-18 19:55:41.382 54271 INFO cinder.volume.flows.manager.create_volume [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Volume volume-b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31 (b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31): created successfully\n2017-07-18 19:55:41.386 54271 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Created volume successfully.\n2017-07-18 19:55:41.973 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Migrate volume copy data from source volume:98b843da-f456-4929-bd16-f3cc13660ac6 to new volume:b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31 start\n2017-07-18 19:55:43.138 54271 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Initialize volume connection completed successfully.\n2017-07-18 19:55:43.601 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Initialize volume connection completed successfully.\n2017-07-18 20:24:50.193 54247 INFO cinder.volume.utils [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Volume copy completed (51200.00 MB at 29.32 MB/s).\n2017-07-18 20:24:50.243 54271 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Terminate volume connection completed successfully.\n2017-07-18 20:24:50.295 54271 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Remove volume export completed successfully.\n2017-07-18 20:24:50.295 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Terminate volume connection completed successfully.\n2017-07-18 20:24:50.338 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Remove volume export completed successfully.\n2017-07-18 20:24:50.497 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Migrate volume copy data from source volume:98b843da-f456-4929-bd16-f3cc13660ac6 to new volume:b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31 end\n2017-07-18 20:24:50.584 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] migrate_volume_completion: completing migration for volume 98b843da-f456-4929-bd16-f3cc13660ac6 (temporary volume b4eb5dd5-f6cc-4de1-9906-c5f1a18b7b31\n2017-07-18 20:24:50.727 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Migrate volume update the metadata to source volume:98b843da-f456-4929-bd16-f3cc13660ac6 db table success\n2017-07-18 20:24:51.379 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Complete-Migrate volume completed successfully.\n2017-07-18 20:24:51.380 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] volume:98b843da-f456-4929-bd16-f3cc13660ac6 migrate to host:Controller106@RBD-2#rbd2 success\n2017-07-18 20:24:51.380 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Migrate volume completed successfully.\n2017-07-18 20:25:07.841 54247 INFO cinder.volume.manager [req-9e65b2ae-27bb-4c17-889a-0df759f99ea7 33d01238ecb94b658a3b8665f8ff6e88 3db3a03b5f5447d6b75f22e0a562774b - - -] Deleted volume successfully.","commit_id":"5c08b092d39d427addf74463831723fce9f18957"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"83f216513565e221af4e4b8e0b7bcd4b1f1ee2bd","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def check_migrated(self, volume, retry\u003d120, retry_interval\u003d10):"},{"line_number":170,"context_line":"        volume \u003d self.get_volume(volume)"},{"line_number":171,"context_line":"        while getattr(volume, \u0027migration_status\u0027) !\u003d \u0027success\u0027 and retry:"},{"line_number":172,"context_line":"            volume \u003d self.get_volume(volume.id)"},{"line_number":173,"context_line":"            LOG.debug(\u0027Waiting the migration of {0}\u0027.format(volume))"},{"line_number":174,"context_line":"            time.sleep(retry_interval)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_432dcda6","line":171,"range":{"start_line":171,"start_character":8,"end_line":171,"end_character":72},"in_reply_to":"1f1a1f67_b974fcfe","updated":"2017-07-21 02:33:22.000000000","message":"Thanks for testing in real environment.\n\nI updated while condition to \"getattr(volume, \u0027migration_status\u0027) \u003d\u003d \u0027migrating\u0027\".","commit_id":"5c08b092d39d427addf74463831723fce9f18957"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"da7db04c1a7abd8eb8f7c58e220a8cfe96c74853","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        volume \u003d self.get_volume(volume)"},{"line_number":208,"context_line":"        dest_backend \u003d self.backendname_from_poolname(dest_node)"},{"line_number":209,"context_line":"        dest_type \u003d self.get_volume_type_by_backendname(dest_backend)"},{"line_number":210,"context_line":"        if volume.volume_type !\u003d dest_type:"},{"line_number":211,"context_line":"            raise exception.Invalid("},{"line_number":212,"context_line":"                message\u003d(_(\"Volume type must be same for migrating\")))"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_d2369803","line":210,"range":{"start_line":210,"start_character":18,"end_line":210,"end_character":29},"updated":"2017-07-19 04:02:50.000000000","message":"volume_type may be None.","commit_id":"5c08b092d39d427addf74463831723fce9f18957"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"83f216513565e221af4e4b8e0b7bcd4b1f1ee2bd","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        volume \u003d self.get_volume(volume)"},{"line_number":208,"context_line":"        dest_backend \u003d self.backendname_from_poolname(dest_node)"},{"line_number":209,"context_line":"        dest_type \u003d self.get_volume_type_by_backendname(dest_backend)"},{"line_number":210,"context_line":"        if volume.volume_type !\u003d dest_type:"},{"line_number":211,"context_line":"            raise exception.Invalid("},{"line_number":212,"context_line":"                message\u003d(_(\"Volume type must be same for migrating\")))"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_034b5587","line":210,"range":{"start_line":210,"start_character":18,"end_line":210,"end_character":29},"in_reply_to":"1f1a1f67_d2369803","updated":"2017-07-21 02:33:22.000000000","message":"get_volume_type_by_backendname method returns empty string if volume.volume_type is None.","commit_id":"5c08b092d39d427addf74463831723fce9f18957"}]}
