)]}'
{"cinder/tests/unit/volume/drivers/dell_emc/unity/test_adapter.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"5bcbb46000ae34595564fe7f8a29d3c6158c5b4e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.config_group \u003d \u0027test_backend_4\u0027"},{"line_number":84,"context_line":"        self.volume_backend_name \u003d \u0027backend_4\u0027"},{"line_number":85,"context_line":"        self.san_ip \u003d \u00271.2.3.7\u0027"},{"line_number":86,"context_line":"        self.volume_driver \u003d \u0027cinder.volume.drivers.dell_emc.vnx.driver.\u0027 \\"},{"line_number":87,"context_line":"                             \u0027VNXDriver\u0027"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"df33271e_cb99c679","line":86,"range":{"start_line":86,"start_character":74,"end_line":86,"end_character":75},"updated":"2020-03-30 19:22:40.000000000","message":"Please wrap the assignment in () to avoid using \\ to span lines.","commit_id":"93a2e2a8adb50d311f9231e89a59394675bdeae3"}],"cinder/volume/drivers/dell_emc/unity/adapter.py":[{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"d80757185e3f918151f71bf94235651a861e429a","unresolved":false,"context_lines":[{"line_number":814,"context_line":"                                              volume_id)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def _check_volume_attach_status(self, volume, attached_to):"},{"line_number":817,"context_line":"        @retryz.retry(timeout\u003dself.config.unity_op_timeout,"},{"line_number":818,"context_line":"                      wait\u003dself.config.unity_op_interval,"},{"line_number":819,"context_line":"                      on_return\u003dFalse)"},{"line_number":820,"context_line":"        def _do(volume, servers):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_f3d93ff4","line":817,"range":{"start_line":817,"start_character":9,"end_line":817,"end_character":21},"updated":"2019-04-11 06:33:41.000000000","message":"Use retry in cinder/utils.","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"d4f108341ccc55309fe3cfa43646227b109dcf99","unresolved":false,"context_lines":[{"line_number":814,"context_line":"                                              volume_id)"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def _check_volume_attach_status(self, volume, attached_to):"},{"line_number":817,"context_line":"        @retryz.retry(timeout\u003dself.config.unity_op_timeout,"},{"line_number":818,"context_line":"                      wait\u003dself.config.unity_op_interval,"},{"line_number":819,"context_line":"                      on_return\u003dFalse)"},{"line_number":820,"context_line":"        def _do(volume, servers):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_6ca010a7","line":817,"range":{"start_line":817,"start_character":9,"end_line":817,"end_character":21},"in_reply_to":"3fce034c_f3d93ff4","updated":"2019-04-11 09:47:00.000000000","message":"Thanks, I will use retry in cinder.utils, and remove retryz.","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"d80757185e3f918151f71bf94235651a861e429a","unresolved":false,"context_lines":[{"line_number":899,"context_line":"            LOG.debug(\u0027Create replication session.\u0027)"},{"line_number":900,"context_line":"            repli \u003d self.client.create_replication(lun, 60, dst_pool_id,"},{"line_number":901,"context_line":"                                                   remote_system)"},{"line_number":902,"context_line":"            repli.sync()"},{"line_number":903,"context_line":"            repli.delete()"},{"line_number":904,"context_line":""},{"line_number":905,"context_line":"            dst_lun \u003d dst_client.get_lun(name\u003dlun.name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_93d79b24","line":902,"range":{"start_line":902,"start_character":12,"end_line":902,"end_character":24},"updated":"2019-04-11 06:33:41.000000000","message":"`sync` is a sync operation or async?","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"cc71e0f20e83ee6a204fc799a1ab366ccf506e7f","unresolved":false,"context_lines":[{"line_number":899,"context_line":"            LOG.debug(\u0027Create replication session.\u0027)"},{"line_number":900,"context_line":"            repli \u003d self.client.create_replication(lun, 60, dst_pool_id,"},{"line_number":901,"context_line":"                                                   remote_system)"},{"line_number":902,"context_line":"            repli.sync()"},{"line_number":903,"context_line":"            repli.delete()"},{"line_number":904,"context_line":""},{"line_number":905,"context_line":"            dst_lun \u003d dst_client.get_lun(name\u003dlun.name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_2fd0a8f7","line":902,"range":{"start_line":902,"start_character":12,"end_line":902,"end_character":24},"in_reply_to":"3fce034c_93d79b24","updated":"2019-04-12 07:32:55.000000000","message":"sync operation","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"d80757185e3f918151f71bf94235651a861e429a","unresolved":false,"context_lines":[{"line_number":973,"context_line":"        dst_backend_ip \u003d dst_backend_config.get(\u0027san_ip\u0027)"},{"line_number":974,"context_line":"        lun_id \u003d self.get_lun_id(volume)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        if src_backend \u003d\u003d dst_backend or dst_backend_type \u003d\u003d \\"},{"line_number":977,"context_line":"                \u0027unity\u0027 and self.config.san_ip \u003d\u003d dst_backend_ip:"},{"line_number":978,"context_line":"            # Migration in same array."},{"line_number":979,"context_line":"            return self._migrate_in_array(lun_id, host)"},{"line_number":980,"context_line":"        elif dst_backend_type \u003d\u003d \u0027unity\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_b3abb773","line":977,"range":{"start_line":976,"start_character":41,"end_line":977,"end_character":64},"updated":"2019-04-11 06:33:41.000000000","message":"What is the behavior when two backends point to the same pool on the same unity?","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"cc71e0f20e83ee6a204fc799a1ab366ccf506e7f","unresolved":false,"context_lines":[{"line_number":973,"context_line":"        dst_backend_ip \u003d dst_backend_config.get(\u0027san_ip\u0027)"},{"line_number":974,"context_line":"        lun_id \u003d self.get_lun_id(volume)"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"        if src_backend \u003d\u003d dst_backend or dst_backend_type \u003d\u003d \\"},{"line_number":977,"context_line":"                \u0027unity\u0027 and self.config.san_ip \u003d\u003d dst_backend_ip:"},{"line_number":978,"context_line":"            # Migration in same array."},{"line_number":979,"context_line":"            return self._migrate_in_array(lun_id, host)"},{"line_number":980,"context_line":"        elif dst_backend_type \u003d\u003d \u0027unity\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_8f875cd8","line":977,"range":{"start_line":976,"start_character":41,"end_line":977,"end_character":64},"in_reply_to":"3fce034c_b3abb773","updated":"2019-04-12 07:32:55.000000000","message":"There are two scenarios when two backends point to the same pool on the same unity:\n1. Same unity and same pool.\n2. Same unity and different pool.\n\nScenario#1 already handled by current code: call self._migrate_in_array method, create move session to move lun from old pool to new pool.\nI also updated new code to handle scrnario#2: return True, {} directly since no need to move the lun.","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"d80757185e3f918151f71bf94235651a861e429a","unresolved":false,"context_lines":[{"line_number":993,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":994,"context_line":"        else:"},{"line_number":995,"context_line":"            # Migration from Unity to non-Unity array."},{"line_number":996,"context_line":"            LOG.debug(\u0027Volume migration from other array to Unity is not \u0027"},{"line_number":997,"context_line":"                      \u0027supported.\u0027)"},{"line_number":998,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":999,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_f3ca9f4d","line":996,"range":{"start_line":996,"start_character":40,"end_line":996,"end_character":65},"updated":"2019-04-11 06:33:41.000000000","message":"It should be from Unity to non-Unity.","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"d4f108341ccc55309fe3cfa43646227b109dcf99","unresolved":false,"context_lines":[{"line_number":993,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":994,"context_line":"        else:"},{"line_number":995,"context_line":"            # Migration from Unity to non-Unity array."},{"line_number":996,"context_line":"            LOG.debug(\u0027Volume migration from other array to Unity is not \u0027"},{"line_number":997,"context_line":"                      \u0027supported.\u0027)"},{"line_number":998,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":999,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fce034c_6c89f024","line":996,"range":{"start_line":996,"start_character":40,"end_line":996,"end_character":65},"in_reply_to":"3fce034c_f3ca9f4d","updated":"2019-04-11 09:47:00.000000000","message":"Done","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e95bf7c6a040127acb982914afd962c57aada8e3","unresolved":false,"context_lines":[{"line_number":823,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"    def _attach_or_detach_volume(self, op, context, volume_id, server_uuids):"},{"line_number":826,"context_line":"        nova_api \u003d compute.API()"},{"line_number":827,"context_line":"        for server_uuid in server_uuids:"},{"line_number":828,"context_line":"            if op \u003d\u003d \u0027attach\u0027:"},{"line_number":829,"context_line":"                nova_api.create_server_volume(context, server_uuid,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_5dc1172e","line":826,"updated":"2019-06-18 17:39:43.000000000","message":"I\u0027m really not sure that we want to have Nova API call here","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"4be8cc0d93ffc2966ff9de042d75f9c007c02da8","unresolved":false,"context_lines":[{"line_number":823,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"    def _attach_or_detach_volume(self, op, context, volume_id, server_uuids):"},{"line_number":826,"context_line":"        nova_api \u003d compute.API()"},{"line_number":827,"context_line":"        for server_uuid in server_uuids:"},{"line_number":828,"context_line":"            if op \u003d\u003d \u0027attach\u0027:"},{"line_number":829,"context_line":"                nova_api.create_server_volume(context, server_uuid,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_8c66b050","line":826,"in_reply_to":"9fb8cfa7_5dc1172e","updated":"2019-07-02 09:06:30.000000000","message":"Already removed these codes, for cross-arrays migration of in-use volume, falling back to host-assisted migration.","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"287948c720eaba5cf62ea18f17516ab4e491ed88","unresolved":false,"context_lines":[{"line_number":823,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"    def _attach_or_detach_volume(self, op, context, volume_id, server_uuids):"},{"line_number":826,"context_line":"        nova_api \u003d compute.API()"},{"line_number":827,"context_line":"        for server_uuid in server_uuids:"},{"line_number":828,"context_line":"            if op \u003d\u003d \u0027attach\u0027:"},{"line_number":829,"context_line":"                nova_api.create_server_volume(context, server_uuid,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_ec34defd","line":826,"in_reply_to":"9fb8cfa7_5dc1172e","updated":"2019-06-18 19:35:54.000000000","message":"definetely not. Nova might not even exist.","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"4be8cc0d93ffc2966ff9de042d75f9c007c02da8","unresolved":false,"context_lines":[{"line_number":823,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":824,"context_line":""},{"line_number":825,"context_line":"    def _attach_or_detach_volume(self, op, context, volume_id, server_uuids):"},{"line_number":826,"context_line":"        nova_api \u003d compute.API()"},{"line_number":827,"context_line":"        for server_uuid in server_uuids:"},{"line_number":828,"context_line":"            if op \u003d\u003d \u0027attach\u0027:"},{"line_number":829,"context_line":"                nova_api.create_server_volume(context, server_uuid,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2c59c48c","line":826,"in_reply_to":"9fb8cfa7_ec34defd","updated":"2019-07-02 09:06:30.000000000","message":"Already removed these codes, for cross-arrays migration of in-use volume, falling back to host-assisted migration.","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cfadae0b04cafbb410db9ffb8e273c5eeef0b425","unresolved":false,"context_lines":[{"line_number":864,"context_line":"            attached_to\u003d[],"},{"line_number":865,"context_line":"            interval\u003dself.config.unity_op_retry_interval,"},{"line_number":866,"context_line":"            retries\u003dself.config.unity_op_retry_times)"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        # Update provider and host info for volume, otherwise volume won\u0027t"},{"line_number":869,"context_line":"        # be able to attach to nova instances because the lun id may already"},{"line_number":870,"context_line":"        # changed in target array."}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_981d5d11","line":867,"updated":"2019-06-18 18:10:00.000000000","message":"Shouldn\u0027t all of this be done using update_server_volume / \"swap volume\"?\n\nI don\u0027t think we can just detach a volume as part of migration.","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"4be8cc0d93ffc2966ff9de042d75f9c007c02da8","unresolved":false,"context_lines":[{"line_number":864,"context_line":"            attached_to\u003d[],"},{"line_number":865,"context_line":"            interval\u003dself.config.unity_op_retry_interval,"},{"line_number":866,"context_line":"            retries\u003dself.config.unity_op_retry_times)"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        # Update provider and host info for volume, otherwise volume won\u0027t"},{"line_number":869,"context_line":"        # be able to attach to nova instances because the lun id may already"},{"line_number":870,"context_line":"        # changed in target array."}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_2c11c45d","line":867,"in_reply_to":"9fb8cfa7_981d5d11","updated":"2019-07-02 09:06:30.000000000","message":"update_server_volume accept old and new volumes as a parameter to swap connection from old volume to new volume for nova instances, but not support updating one volume which only connection info changed.\n\nAlready removed these codes, for cross-arrays migration of in-use volume, falling back to host-assisted migration.","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e95bf7c6a040127acb982914afd962c57aada8e3","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            dst_pool \u003d dst_client.get_pool_by_name(dst_pool_name)"},{"line_number":916,"context_line":"            dst_pool_id \u003d dst_pool.get_id()"},{"line_number":917,"context_line":"        except Exception:"},{"line_number":918,"context_line":"            LOG.debug(\u0027Failed to connect to target array.\u0027)"},{"line_number":919,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        # Leverage replication functionality for volume migration, steps:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_9dcc6f62","line":918,"updated":"2019-06-18 17:39:43.000000000","message":"Please, add traceback to the log message","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"4be8cc0d93ffc2966ff9de042d75f9c007c02da8","unresolved":false,"context_lines":[{"line_number":915,"context_line":"            dst_pool \u003d dst_client.get_pool_by_name(dst_pool_name)"},{"line_number":916,"context_line":"            dst_pool_id \u003d dst_pool.get_id()"},{"line_number":917,"context_line":"        except Exception:"},{"line_number":918,"context_line":"            LOG.debug(\u0027Failed to connect to target array.\u0027)"},{"line_number":919,"context_line":"            return self.fall_back_to_host_assisted_migration()"},{"line_number":920,"context_line":""},{"line_number":921,"context_line":"        # Leverage replication functionality for volume migration, steps:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_ecb2cc93","line":918,"in_reply_to":"9fb8cfa7_9dcc6f62","updated":"2019-07-02 09:06:30.000000000","message":"Done","commit_id":"6fa9d9dd864ca52e888f43e6db7f11d4db2b4ffc"}],"cinder/volume/drivers/dell_emc/unity/driver.py":[{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"ee87d877d0f64ff991d1c427b8e09aec3510c4ca","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        4.0.0 - Support remove empty host"},{"line_number":70,"context_line":"        4.2.0 - Support compressed volume"},{"line_number":71,"context_line":"        5.0.0 - Support storage assisted volume migration"},{"line_number":72,"context_line":"        5.1.0 - Support cross-arrays storage assisted volume migration:"},{"line_number":73,"context_line":"                Leverage Unity replication functionality to migrate volume"},{"line_number":74,"context_line":"                from Unity to Unity"},{"line_number":75,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fce034c_06df6b0d","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":13},"updated":"2019-04-18 05:27:22.000000000","message":"Change to 6.0.0 for Train release.","commit_id":"b56acd6209efe479f688822557909d8f0cc49443"}],"driver-requirements.txt":[{"author":{"_account_id":18742,"name":"Ryan Liang","email":"ryan.liang@emc.com","username":"RyanLiang"},"change_message_id":"d80757185e3f918151f71bf94235651a861e429a","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Dell EMC VNX and Unity"},{"line_number":40,"context_line":"storops\u003e\u003d0.5.10 # Apache-2.0"},{"line_number":41,"context_line":"retryz\u003e\u003d0.1.9 # Apache-2.0"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# Violin"},{"line_number":44,"context_line":"vmemclient\u003e\u003d1.1.8 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":3,"id":"3fce034c_d3e0c399","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":26},"updated":"2019-04-11 06:33:41.000000000","message":"Use retry in cinder/utils.","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"},{"author":{"_account_id":26114,"name":"Yong Huang","email":"yong.huang@emc.com","username":"yong.huang"},"change_message_id":"d4f108341ccc55309fe3cfa43646227b109dcf99","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Dell EMC VNX and Unity"},{"line_number":40,"context_line":"storops\u003e\u003d0.5.10 # Apache-2.0"},{"line_number":41,"context_line":"retryz\u003e\u003d0.1.9 # Apache-2.0"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"# Violin"},{"line_number":44,"context_line":"vmemclient\u003e\u003d1.1.8 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":3,"id":"3fce034c_ec7c0022","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":26},"in_reply_to":"3fce034c_d3e0c399","updated":"2019-04-11 09:47:00.000000000","message":"Thanks, I will use retry in cinder.utils, and remove retryz.","commit_id":"f2ba5c7299c9e7cda450f0fbe7f0f4ab6e47b77b"}]}
